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

@edi = internal unnamed_addr global i32 0, align 8

define i32 @function_0() local_unnamed_addr {
dec_label_pc_0:
  %eax.global-to-local = alloca i32, align 4
  %ecx.global-to-local = alloca i32, align 4
  %esi.global-to-local = alloca i32, align 4
  %esp.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
  %st3.global-to-local = alloca x86_fp80, align 4
  %st4.global-to-local = alloca x86_fp80, align 4
  %st6.global-to-local = alloca x86_fp80, align 4
  store i32 0, i32* %esp.global-to-local, align 4
  %stack_var_-36 = alloca i32, align 4
  %v0_0 = load i32, i32* %ecx.global-to-local, align 4
  %v15_1 = ptrtoint i32* %stack_var_-36 to i32
  %v0_4 = load i3, i3* %fpu_stat_TOP.global-to-local, align 1
  %v1_4 = load i32, i32* %esi.global-to-local, align 4
  %v2_4 = add i32 %v1_4, -104
  %v3_4 = inttoptr i32 %v2_4 to double*
  %v4_4 = load double, double* %v3_4, align 4
  %v5_4 = fpext double %v4_4 to x86_fp80
  %v2_7 = load i32, i32* @edi, align 8
  %v3_7 = add i32 %v2_7, -28
  %v4_7 = inttoptr i32 %v3_7 to float*
  %v5_7 = load float, float* %v4_7, align 4
  %v6_7 = fpext float %v5_7 to x86_fp80
  %v7_7 = fsub x86_fp80 %v5_4, %v6_7
  %v2_a = add i32 %v1_4, -112
  %v3_a = inttoptr i32 %v2_a to double*
  %v4_a = load double, double* %v3_a, align 4
  %v5_a = fpext double %v4_a to x86_fp80
  store x86_fp80 %v5_a, x86_fp80* %st6.global-to-local, align 4
  %v3_d = add i32 %v2_7, -24
  %v4_d = inttoptr i32 %v3_d to float*
  %v5_d = load float, float* %v4_d, align 4
  %v6_d = fpext float %v5_d to x86_fp80
  %v7_d = fsub x86_fp80 %v5_a, %v6_d
  store x86_fp80 %v7_d, x86_fp80* %st6.global-to-local, align 4
  %v2_10 = add i32 %v1_4, -120
  %v3_10 = inttoptr i32 %v2_10 to double*
  %v4_10 = load double, double* %v3_10, align 4
  %v5_10 = fpext double %v4_10 to x86_fp80
  %v3_13 = add i32 %v2_7, -20
  %v4_13 = inttoptr i32 %v3_13 to float*
  %v5_13 = load float, float* %v4_13, align 4
  %v6_13 = fpext float %v5_13 to x86_fp80
  %v7_13 = fsub x86_fp80 %v5_10, %v6_13
  store x86_fp80 %v7_13, x86_fp80* %st4.global-to-local, align 4
  %v3_18 = add i32 %v2_7, -68
  %v4_18 = inttoptr i32 %v3_18 to float*
  %v5_18 = load float, float* %v4_18, align 4
  %v6_18 = fpext float %v5_18 to x86_fp80
  %v7_18 = fmul x86_fp80 %v7_13, %v6_18
  store x86_fp80 %v7_18, x86_fp80* %st4.global-to-local, align 4
  %v3_1b = add i3 %v0_4, 3
  store x86_fp80 %v7_d, x86_fp80* %st3.global-to-local, align 4
  %v3_1d = add i32 %v2_7, -72
  %v4_1d = inttoptr i32 %v3_1d to float*
  %v5_1d = load float, float* %v4_1d, align 4
  %v6_1d = fpext float %v5_1d to x86_fp80
  %v7_1d = fmul x86_fp80 %v7_d, %v6_1d
  %v4_20 = fadd x86_fp80 %v7_18, %v7_1d
  store x86_fp80 %v4_20, x86_fp80* %st4.global-to-local, align 4
  store x86_fp80 %v7_7, x86_fp80* %st3.global-to-local, align 4
  %v3_24 = add i32 %v2_7, -76
  %v4_24 = inttoptr i32 %v3_24 to float*
  %v5_24 = load float, float* %v4_24, align 4
  %v6_24 = fpext float %v5_24 to x86_fp80
  %v7_24 = fmul x86_fp80 %v7_7, %v6_24
  %v4_27 = fadd x86_fp80 %v4_20, %v7_24
  store x86_fp80 %v4_27, x86_fp80* %st4.global-to-local, align 4
  store x86_fp80 %v7_13, x86_fp80* %st3.global-to-local, align 4
  %v3_2b = add i32 %v2_7, -44
  %v4_2b = inttoptr i32 %v3_2b to float*
  %v5_2b = load float, float* %v4_2b, align 4
  %v6_2b = fpext float %v5_2b to x86_fp80
  %v7_2b = fmul x86_fp80 %v7_13, %v6_2b
  store x86_fp80 %v7_2b, x86_fp80* %st3.global-to-local, align 4
  %v3_30 = add i32 %v2_7, -48
  %v4_30 = inttoptr i32 %v3_30 to float*
  %v5_30 = load float, float* %v4_30, align 4
  %v6_30 = fpext float %v5_30 to x86_fp80
  %v7_30 = fmul x86_fp80 %v7_d, %v6_30
  %v4_33 = fadd x86_fp80 %v7_2b, %v7_30
  store x86_fp80 %v4_33, x86_fp80* %st3.global-to-local, align 4
  %v3_37 = add i32 %v2_7, -52
  %v4_37 = inttoptr i32 %v3_37 to float*
  %v5_37 = load float, float* %v4_37, align 4
  %v6_37 = fpext float %v5_37 to x86_fp80
  %v7_37 = fmul x86_fp80 %v7_7, %v6_37
  %v4_3a = fadd x86_fp80 %v4_33, %v7_37
  store x86_fp80 %v7_13, x86_fp80* %st3.global-to-local, align 4
  %v3_3e = add i32 %v2_7, -56
  %v4_3e = inttoptr i32 %v3_3e to float*
  %v5_3e = load float, float* %v4_3e, align 4
  %v6_3e = fpext float %v5_3e to x86_fp80
  %v7_3e = fmul x86_fp80 %v7_13, %v6_3e
  store x86_fp80 %v7_d, x86_fp80* %st3.global-to-local, align 4
  store x86_fp80 %v7_3e, x86_fp80* %st6.global-to-local, align 4
  %v3_43 = add i32 %v2_7, -60
  %v4_43 = inttoptr i32 %v3_43 to float*
  %v5_43 = load float, float* %v4_43, align 4
  %v6_43 = fpext float %v5_43 to x86_fp80
  %v7_43 = fmul x86_fp80 %v7_d, %v6_43
  store x86_fp80 %v7_43, x86_fp80* %st3.global-to-local, align 4
  %v4_46 = fadd x86_fp80 %v7_3e, %v7_43
  store x86_fp80 %v4_46, x86_fp80* %st6.global-to-local, align 4
  store x86_fp80 %v7_7, x86_fp80* %st4.global-to-local, align 4
  %v3_4a = add i32 %v2_7, -64
  %v4_4a = inttoptr i32 %v3_4a to float*
  %v5_4a = load float, float* %v4_4a, align 4
  %v6_4a = fpext float %v5_4a to x86_fp80
  %v7_4a = fmul x86_fp80 %v7_7, %v6_4a
  %v4_4d = fadd x86_fp80 %v4_46, %v7_4a
  store x86_fp80 %v4_4d, x86_fp80* %st6.global-to-local, align 4
  %v3_51 = fmul x86_fp80 %v4_4d, %v4_4d
  %v3_55 = fmul x86_fp80 %v4_3a, %v4_3a
  store x86_fp80 %v3_55, x86_fp80* %st3.global-to-local, align 4
  %v4_57 = fadd x86_fp80 %v3_55, %v3_51
  %v2_59 = call x86_fp80 @llvm.sqrt.f80(x86_fp80 %v4_57)
  store x86_fp80 %v2_59, x86_fp80* %st4.global-to-local, align 4
  %v3_5f = add i32 %v2_7, -36
  %v4_5f = inttoptr i32 %v3_5f to float*
  %v5_5f = load float, float* %v4_5f, align 4
  %v6_5f = fpext float %v5_5f to x86_fp80
  %v7_5f = fsub x86_fp80 %v2_59, %v6_5f
  store x86_fp80 %v7_5f, x86_fp80* %st4.global-to-local, align 4
  store i3 %v3_1b, i3* %fpu_stat_TOP.global-to-local, align 1
  %v2_64 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %v4_27)
  store x86_fp80 %v2_64, x86_fp80* %st3.global-to-local, align 4
  %v3_66 = add i32 %v2_7, -32
  %v4_66 = inttoptr i32 %v3_66 to float*
  %v5_66 = load float, float* %v4_66, align 4
  %v6_66 = fpext float %v5_66 to x86_fp80
  %v7_66 = fsub x86_fp80 %v2_64, %v6_66
  store x86_fp80 %v7_66, x86_fp80* %st3.global-to-local, align 4
  %v0_6b = load i32, i32* %fpsw.global-to-local, align 4
  %v1_6b = call i16 @__asm_fnstsw(i32 %v0_6b)
  %v2_6b = sext i16 %v1_6b to i32
  %v3_6b = load i32, i32* %eax.global-to-local, align 4
  %v4_6b = and i32 %v3_6b, -65536
  %tmp251 = udiv i32 %v2_6b, 2
  %v12_6d = and i32 %tmp251, 32512
  %v2_6b.masked = and i32 %v2_6b, -65281
  %v13_6d = or i32 %v4_6b, %v2_6b.masked
  %v14_6d = or i32 %v13_6d, %v12_6d
  store i32 %v14_6d, i32* %eax.global-to-local, align 4
  %v15_6d12 = and i32 %v2_6b, 256
  %v16_6d = icmp eq i32 %v15_6d12, 0
  br i1 %v16_6d, label %dec_label_pc_71, label %dec_label_pc_0.dec_label_pc_73_crit_edge

dec_label_pc_0.dec_label_pc_73_crit_edge:         ; preds = %dec_label_pc_0
  %v1_75.pre = load x86_fp80, x86_fp80* %st4.global-to-local, align 4
  br label %dec_label_pc_73

dec_label_pc_71:                                  ; preds = %dec_label_pc_0
  %v2_71 = load x86_fp80, x86_fp80* %st3.global-to-local, align 4
  %v3_71 = load x86_fp80, x86_fp80* %st4.global-to-local, align 4
  store x86_fp80 %v3_71, x86_fp80* %st3.global-to-local, align 4
  store x86_fp80 %v2_71, x86_fp80* %st4.global-to-local, align 4
  br label %dec_label_pc_73

dec_label_pc_73:                                  ; preds = %dec_label_pc_0.dec_label_pc_73_crit_edge, %dec_label_pc_71
  %v1_75 = phi x86_fp80 [ %v1_75.pre, %dec_label_pc_0.dec_label_pc_73_crit_edge ], [ %v2_71, %dec_label_pc_71 ]
  %v0_73 = load i3, i3* %fpu_stat_TOP.global-to-local, align 1
  %v4_73 = add i3 %v0_73, 1
  %v2_77 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %v1_75)
  store x86_fp80 %v2_77, x86_fp80* %st3.global-to-local, align 4
  store i3 %v4_73, i3* %fpu_stat_TOP.global-to-local, align 1
  %v0_80 = load i32, i32* %fpsw.global-to-local, align 4
  %v1_80 = call i16 @__asm_fnstsw(i32 %v0_80)
  %v2_80 = sext i16 %v1_80 to i32
  %v3_80 = load i32, i32* %eax.global-to-local, align 4
  %v4_80 = and i32 %v3_80, -65536
  %tmp252 = udiv i32 %v2_80, 2
  %v12_82 = and i32 %tmp252, 32512
  %v2_80.masked = and i32 %v2_80, -65281
  %v13_82 = or i32 %v4_80, %v2_80.masked
  %v14_82 = or i32 %v13_82, %v12_82
  store i32 %v14_82, i32* %eax.global-to-local, align 4
  %v15_8213 = and i32 %v2_80, 256
  %v16_82 = icmp ne i32 %v15_8213, 0
  %v1_84 = icmp eq i1 %v16_82, false
  %v1_92 = load x86_fp80, x86_fp80* %st4.global-to-local, align 4
  br i1 %v1_84, label %dec_label_pc_92, label %dec_label_pc_86

dec_label_pc_86:                                  ; preds = %dec_label_pc_73
  %v0_92 = load i3, i3* %fpu_stat_TOP.global-to-local, align 1
  %v2_86 = load i32, i32* %esi.global-to-local, align 4
  %v3_86 = add i32 %v2_86, -32
  %v4_86 = fptrunc x86_fp80 %v1_92 to double
  %v5_86 = inttoptr i32 %v3_86 to double*
  store double %v4_86, double* %v5_86, align 4
  %v4_8b = xor i3 %v0_92, -4
  store i3 %v4_8b, i3* %fpu_stat_TOP.global-to-local, align 1
  store i32 %v0_0, i32* %ecx.global-to-local, align 4
  ret i32 %v14_82

dec_label_pc_92:                                  ; preds = %dec_label_pc_73
  %v2_96 = load x86_fp80, x86_fp80* %st6.global-to-local, align 4
  store x86_fp80 %v2_96, x86_fp80* %st4.global-to-local, align 4
  %v2_98 = call i32 @__asm_fpatan(x86_fp80 %v1_92)
  store i32 %v2_98, i32* %eax.global-to-local, align 4
  %v4_9a = load double, double* bitcast (i32* @edi to double*), align 8
  %v5_9a = fpext double %v4_9a to x86_fp80
  %v6_9a = fmul x86_fp80 %v2_96, %v5_9a
  store x86_fp80 %v6_9a, x86_fp80* %st4.global-to-local, align 4
  %v0_9c = load i3, i3* %fpu_stat_TOP.global-to-local, align 1
  %v4_9c = fptrunc x86_fp80 %v6_9a to float
  %v5_9c = bitcast float %v4_9c to i32
  store i32 %v5_9c, i32* %stack_var_-36, align 4
  %v1_a1 = load x86_fp80, x86_fp80* %st6.global-to-local, align 4
  %v6_a1 = fmul x86_fp80 %v1_a1, %v5_9a
  store x86_fp80 %v6_a1, x86_fp80* %st6.global-to-local, align 4
  %tmp253 = bitcast double %v4_9a to i64
  %tmp254 = trunc i64 %tmp253 to i32
  %v3_a3 = add i32 %tmp254, -36
  %v4_a3 = inttoptr i32 %v3_a3 to float*
  %v5_a3 = load float, float* %v4_a3, align 4
  %v6_a3 = fpext float %v5_a3 to x86_fp80
  %v7_a3 = fdiv x86_fp80 %v6_a1, %v6_a3
  store x86_fp80 %v7_a3, x86_fp80* %st6.global-to-local, align 4
  %v6_a6 = add i3 %v0_9c, 3
  store i32 %v15_1, i32* %eax.global-to-local, align 4
  store i32 %v15_1, i32* %ecx.global-to-local, align 4
  %v1_b7 = add i32 %tmp254, -16
  %v2_b7 = inttoptr i32 %v1_b7 to i32*
  %v3_b7 = load i32, i32* %v2_b7, align 4
  %v1_ba = urem i32 %v3_b7, 4
  store i32 %v1_ba, i32* %ecx.global-to-local, align 4
  %v1_bd = load i32, i32* %esp.global-to-local, align 4
  %v3_bd = mul i32 %v1_ba, 8
  %v4_bd = add i32 %v1_bd, %v3_bd
  %v5_bd = inttoptr i32 %v4_bd to double*
  %v6_bd = load double, double* %v5_bd, align 4
  %v7_bd = fpext double %v6_bd to x86_fp80
  store x86_fp80 %v7_bd, x86_fp80* %st6.global-to-local, align 4
  %v3_c0 = add i32 %tmp254, -8
  %v4_c0 = inttoptr i32 %v3_c0 to double*
  %v5_c0 = load double, double* %v4_c0, align 4
  %v6_c0 = fpext double %v5_c0 to x86_fp80
  %v7_c0 = fsub x86_fp80 %v7_bd, %v6_c0
  store x86_fp80 %v7_c0, x86_fp80* %st6.global-to-local, align 4
  %v3_c3 = add i32 %tmp254, -40
  %v4_c3 = inttoptr i32 %v3_c3 to float*
  %v5_c3 = load float, float* %v4_c3, align 4
  %v6_c3 = fpext float %v5_c3 to x86_fp80
  %v7_c3 = fmul x86_fp80 %v7_c0, %v6_c3
  %v7_c6 = fmul x86_fp80 %v7_c3, %v2_59
  %v7_ca = fsub x86_fp80 %v1_92, %v7_c6
  store x86_fp80 %v7_ca, x86_fp80* %st6.global-to-local, align 4
  %v2_ce = load i32, i32* %esi.global-to-local, align 4
  %v3_ce = add i32 %v2_ce, -32
  %v4_ce = fptrunc x86_fp80 %v7_ca to double
  %v5_ce = inttoptr i32 %v3_ce to double*
  store double %v4_ce, double* %v5_ce, align 4
  %v0_d1 = load i32, i32* @edi, align 8
  %v1_d1 = add i32 %v0_d1, -80
  %v2_d1 = inttoptr i32 %v1_d1 to i32*
  %v3_d1 = load i32, i32* %v2_d1, align 4
  %v1_d4 = urem i32 %v3_d1, 4
  store i32 %v1_d4, i32* %ecx.global-to-local, align 4
  %v3_d7 = mul i32 %v1_d4, 8
  %v4_d7 = add i32 %v3_d7, %v1_bd
  %v5_d7 = inttoptr i32 %v4_d7 to double*
  %v6_d7 = load double, double* %v5_d7, align 4
  %v7_d7 = fpext double %v6_d7 to x86_fp80
  store x86_fp80 %v7_d7, x86_fp80* %st6.global-to-local, align 4
  %v3_da = add i32 %v0_d1, -84
  %v4_da = inttoptr i32 %v3_da to float*
  %v5_da = load float, float* %v4_da, align 4
  %v6_da = fpext float %v5_da to x86_fp80
  %v7_da = fadd x86_fp80 %v7_d7, %v6_da
  store x86_fp80 %v7_da, x86_fp80* %st6.global-to-local, align 4
  %v3_dd = add i32 %v0_d1, -88
  %v4_dd = inttoptr i32 %v3_dd to float*
  %v5_dd = load float, float* %v4_dd, align 4
  %v6_dd = fpext float %v5_dd to x86_fp80
  %v7_dd = fmul x86_fp80 %v7_da, %v6_dd
  store x86_fp80 %v7_dd, x86_fp80* %st6.global-to-local, align 4
  %v3_e0 = add i32 %v2_ce, 128
  %v4_e0 = fptrunc x86_fp80 %v7_dd to double
  %v5_e0 = inttoptr i32 %v3_e0 to double*
  store double %v4_e0, double* %v5_e0, align 4
  store i3 %v6_a6, i3* %fpu_stat_TOP.global-to-local, align 1
  store i32 %v0_0, i32* %ecx.global-to-local, align 4
  ret i32 %v15_1
}

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

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

declare i16 @__asm_fnstsw(i32) local_unnamed_addr

declare i32 @__asm_fpatan(x86_fp80) local_unnamed_addr

attributes #0 = { nounwind readnone speculatable }
