source_filename = "test"
target datalayout = "e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"

@eax = internal unnamed_addr global i32 0, align 8
@ecx = internal unnamed_addr global i32 0, align 8
@edx = internal unnamed_addr global i32 0, align 8

define i32 @function_0(i32 %arg1) local_unnamed_addr {
dec_label_pc_0:
  %ebx.global-to-local = alloca i32, align 4
  %edi.global-to-local = alloca i32, align 4
  %fpsw.global-to-local = alloca i32, align 4
  %fpu_stat_TOP.global-to-local = alloca i3, align 1
  %st4.global-to-local = alloca x86_fp80, align 4
  %st5.global-to-local = alloca x86_fp80, align 4
  %st6.global-to-local = alloca x86_fp80, align 4
  %st7.global-to-local = alloca x86_fp80, align 4
  %v0_3 = load i32, i32* %edi.global-to-local, align 4
  %v0_4 = load i32, i32* %ebx.global-to-local, align 4
  store i32 %arg1, i32* %edi.global-to-local, align 4
  %v0_8 = load i32, i32* @eax, align 8
  store i32 %v0_8, i32* %ebx.global-to-local, align 4
  %v0_a = load i3, i3* %fpu_stat_TOP.global-to-local, align 1
  %v3_a = load double, double* bitcast (i32* @eax to double*), align 8
  %v4_a = fpext double %v3_a to x86_fp80
  store x86_fp80 %v4_a, x86_fp80* %st7.global-to-local, align 4
  %v3_c = load double, double* bitcast (i32* @ecx to double*), align 8
  %v4_c = fpext double %v3_c to x86_fp80
  store x86_fp80 %v4_c, x86_fp80* %st6.global-to-local, align 4
  %v3_e = load double, double* bitcast (i32* @edx to double*), align 8
  %v4_e = fpext double %v3_e to x86_fp80
  %v5_e = add i3 %v0_a, -3
  store x86_fp80 %v4_e, x86_fp80* %st5.global-to-local, align 4
  %v2_12 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %v4_c)
  store x86_fp80 %v2_12, x86_fp80* %st4.global-to-local, align 4
  store i3 %v5_e, i3* %fpu_stat_TOP.global-to-local, align 1
  %v0_1a = load i32, i32* %fpsw.global-to-local, align 4
  %v1_1a = call i16 @__asm_fnstsw(i32 %v0_1a)
  %v2_1a = sext i16 %v1_1a to i32
  %v3_1a = load i32, i32* @eax, align 8
  %v4_1a = and i32 %v3_1a, -65536
  %v1_1c = udiv i32 %v2_1a, 256
  %v2_1c = trunc i32 %v1_1c to i8
  %v3_1c = and i8 %v2_1c, 65
  %v4_1c = icmp eq i8 %v3_1c, 0
  %v9_1c = zext i8 %v3_1c to i32
  %v11_1c = mul i32 %v9_1c, 256
  %v2_1a.masked = and i32 %v2_1a, -65281
  %v12_1c = or i32 %v4_1a, %v2_1a.masked
  %v13_1c = or i32 %v12_1c, %v11_1c
  store i32 %v13_1c, i32* @eax, align 8
  br i1 %v4_1c, label %dec_label_pc_23, label %dec_label_pc_21

dec_label_pc_21:                                  ; preds = %dec_label_pc_0
  %v2_21 = load x86_fp80, x86_fp80* %st5.global-to-local, align 4
  %v3_21 = load x86_fp80, x86_fp80* %st6.global-to-local, align 4
  store x86_fp80 %v3_21, x86_fp80* %st5.global-to-local, align 4
  store x86_fp80 %v2_21, x86_fp80* %st6.global-to-local, align 4
  br label %dec_label_pc_23

dec_label_pc_23:                                  ; preds = %dec_label_pc_21, %dec_label_pc_0
  %v0_25 = load i32, i32* %fpsw.global-to-local, align 4
  %v1_25 = call i16 @__asm_fnstsw(i32 %v0_25)
  %v2_25 = sext i16 %v1_25 to i32
  %v3_25 = load i32, i32* @eax, align 8
  %v4_25 = and i32 %v3_25, -65536
  %tmp243 = udiv i32 %v2_25, 2
  %v12_29 = and i32 %tmp243, 32512
  %v2_25.masked = and i32 %v2_25, -65281
  %v13_29 = or i32 %v4_25, %v2_25.masked
  %v14_29 = or i32 %v13_29, %v12_29
  store i32 %v14_29, i32* @eax, align 8
  %v15_297 = and i32 %v2_25, 256
  %v16_29 = icmp eq i32 %v15_297, 0
  %v1_2d = load x86_fp80, x86_fp80* %st7.global-to-local, align 4
  br i1 %v16_29, label %dec_label_pc_2d, label %dec_label_pc_2f

dec_label_pc_2d:                                  ; preds = %dec_label_pc_23
  %v2_2d = fsub x86_fp80 0xK80000000000000000000, %v1_2d
  store x86_fp80 %v2_2d, x86_fp80* %st7.global-to-local, align 4
  br label %dec_label_pc_2f

dec_label_pc_2f:                                  ; preds = %dec_label_pc_23, %dec_label_pc_2d
  %v2_3a = phi x86_fp80 [ %v2_2d, %dec_label_pc_2d ], [ %v1_2d, %dec_label_pc_23 ]
  %v0_2f = load i3, i3* %fpu_stat_TOP.global-to-local, align 1
  %v3_31 = fmul x86_fp80 %v2_3a, %v2_3a
  store x86_fp80 %v3_31, x86_fp80* %st6.global-to-local, align 4
  %v2_33 = load i32, i32* %edi.global-to-local, align 4
  %v3_33 = add i32 %v2_33, 56
  %v4_33 = inttoptr i32 %v3_33 to double*
  %v5_33 = load double, double* %v4_33, align 4
  %v6_33 = fpext double %v5_33 to x86_fp80
  %v7_33 = fdiv x86_fp80 %v3_31, %v6_33
  %v4_38 = fsub x86_fp80 0xK3FFF8000000000000000, %v7_33
  store x86_fp80 %v4_38, x86_fp80* %st6.global-to-local, align 4
  store x86_fp80 %v3_31, x86_fp80* %st5.global-to-local, align 4
  store x86_fp80 %v3_31, x86_fp80* %st4.global-to-local, align 4
  %v4_44 = fsub x86_fp80 %v3_31, %v3_31
  %v4_46 = fmul x86_fp80 %v4_44, %v4_38
  %v3_48 = add i32 %v2_33, 24
  %v4_48 = inttoptr i32 %v3_48 to double*
  %v5_48 = load double, double* %v4_48, align 4
  %v6_48 = fpext double %v5_48 to x86_fp80
  %v7_48 = fadd x86_fp80 %v4_46, %v6_48
  %v2_4b = load i32, i32* %ebx.global-to-local, align 4
  %v3_4b = fptrunc x86_fp80 %v7_48 to double
  %v4_4b = inttoptr i32 %v2_4b to double*
  store double %v3_4b, double* %v4_4b, align 4
  %v2_4d = load x86_fp80, x86_fp80* %st4.global-to-local, align 4
  %v3_4d = load x86_fp80, x86_fp80* %st5.global-to-local, align 4
  %v4_4d = fadd x86_fp80 %v2_4d, %v3_4d
  %v2_4f = call x86_fp80 @llvm.sqrt.f80(x86_fp80 %v4_4d)
  store x86_fp80 %v2_4f, x86_fp80* %st5.global-to-local, align 4
  %v3_51 = load x86_fp80, x86_fp80* %st7.global-to-local, align 4
  %v4_51 = fmul x86_fp80 %v2_4f, %v3_51
  %v2_53 = load x86_fp80, x86_fp80* %st6.global-to-local, align 4
  %v4_53 = fmul x86_fp80 %v4_51, %v2_53
  %v4_55 = fmul x86_fp80 %v4_53, %v4_53
  %v3_57 = fadd x86_fp80 %v4_55, %v4_55
  store x86_fp80 %v3_57, x86_fp80* %st7.global-to-local, align 4
  %v2_59 = load i32, i32* @ecx, align 8
  %v3_59 = fptrunc x86_fp80 %v3_57 to double
  %v4_59 = inttoptr i32 %v2_59 to double*
  store double %v3_59, double* %v4_59, align 4
  %v1_5b = add i32 %v2_33, 48
  %v2_5b = inttoptr i32 %v1_5b to i32*
  %v3_5b = load i32, i32* %v2_5b, align 4
  %v1_5e = load x86_fp80, x86_fp80* %st7.global-to-local, align 4
  %v3_5e = fadd x86_fp80 %v1_5e, %v1_5e
  store x86_fp80 %v3_5e, x86_fp80* %st7.global-to-local, align 4
  %v3_60 = add i32 %v3_5b, -16
  %v4_60 = inttoptr i32 %v3_60 to double*
  %v5_60 = load double, double* %v4_60, align 4
  %v6_60 = fpext double %v5_60 to x86_fp80
  %v7_60 = fmul x86_fp80 %v3_5e, %v6_60
  store x86_fp80 %v7_60, x86_fp80* %st7.global-to-local, align 4
  %v3_63 = add i32 %v2_33, 32
  %v4_63 = inttoptr i32 %v3_63 to double*
  %v5_63 = load double, double* %v4_63, align 4
  %v6_63 = fpext double %v5_63 to x86_fp80
  %v7_63 = fadd x86_fp80 %v7_60, %v6_63
  store x86_fp80 %v7_63, x86_fp80* %st7.global-to-local, align 4
  %v2_66 = load i32, i32* @edx, align 8
  %v3_66 = fptrunc x86_fp80 %v7_63 to double
  %v4_66 = inttoptr i32 %v2_66 to double*
  store double %v3_66, double* %v4_66, align 4
  %v5_66 = add i3 %v0_2f, 3
  store i3 %v5_66, i3* %fpu_stat_TOP.global-to-local, align 1
  store i32 %v0_4, i32* %ebx.global-to-local, align 4
  store i32 %v0_3, i32* %edi.global-to-local, align 4
  %v0_6b = load i32, i32* @eax, align 8
  ret i32 %v0_6b
}

; Function Attrs: nounwind readnone speculatable
declare x86_fp80 @llvm.fabs.f80(x86_fp80) #0

declare i16 @__asm_fnstsw(i32) local_unnamed_addr

; Function Attrs: nounwind readnone speculatable
declare x86_fp80 @llvm.sqrt.f80(x86_fp80) #0

attributes #0 = { nounwind readnone speculatable }
