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
  %esi.global-to-local = alloca i32, align 4
  %xmm4.global-to-local = alloca i128, align 8
  %v0_0 = load i32, i32* %esi.global-to-local, align 4
  %v1_0 = add i32 %v0_0, -120
  %v2_0 = inttoptr i32 %v1_0 to i128*
  %v3_0 = load i128, i128* %v2_0, align 4
  %v4_0 = call i128 @__asm_movupd(i128 %v3_0)
  %v1_5 = add i32 %v0_0, -104
  %v2_5 = inttoptr i32 %v1_5 to i64*
  %v3_5 = load i64, i64* %v2_5, align 4
  %v4_5 = call i128 @__asm_movsd(i64 %v3_5)
  %v1_a = load i32, i32* @edi, align 8
  %v2_a = add i32 %v1_a, -48
  %v3_a = inttoptr i32 %v2_a to i128*
  %v4_a = load i128, i128* %v3_a, align 4
  %v5_a = call i128 @__asm_mulpd(i128 %v4_0, i128 %v4_a)
  %v1_f = load i32, i32* @edi, align 8
  %v2_f = add i32 %v1_f, -48
  %v3_f = inttoptr i32 %v2_f to i64*
  %v4_f = load i64, i64* %v3_f, align 4
  %v5_f = call i128 @__asm_mulsd(i128 %v4_5, i64 %v4_f)
  %v1_14 = load i32, i32* @edi, align 8
  %v2_14 = add i32 %v1_14, -80
  %v3_14 = inttoptr i32 %v2_14 to i128*
  %v4_14 = load i128, i128* %v3_14, align 4
  %v5_14 = call i128 @__asm_addpd(i128 %v5_a, i128 %v4_14)
  %v1_19 = load i32, i32* @edi, align 8
  %v2_19 = add i32 %v1_19, -64
  %v3_19 = inttoptr i32 %v2_19 to i64*
  %v4_19 = load i64, i64* %v3_19, align 4
  %v5_19 = call i128 @__asm_addsd(i128 %v5_f, i64 %v4_19)
  %v0_1e = load i128, i128* %xmm4.global-to-local, align 8
  %v2_1e = call i128 @__asm_xorpd(i128 %v0_1e, i128 %v0_1e)
  store i128 %v2_1e, i128* %xmm4.global-to-local, align 8
  %v0_22 = load i32, i32* @edi, align 8
  %v1_22 = add i32 %v0_22, -100
  %v2_22 = inttoptr i32 %v1_22 to i32*
  %v3_22 = load i32, i32* %v2_22, align 4
  %v10_22 = icmp eq i32 %v3_22, 0
  br i1 %v10_22, label %dec_label_pc_41, label %dec_label_pc_28

dec_label_pc_28:                                  ; preds = %dec_label_pc_0
  %v0_28 = load i32, i32* %esi.global-to-local, align 4
  %v1_28 = add i32 %v0_28, 112
  %v2_28 = inttoptr i32 %v1_28 to i64*
  %v3_28 = load i64, i64* %v2_28, align 4
  %v4_28 = call i128 @__asm_movsd(i64 %v3_28)
  %v1_2d = load i32, i32* @edi, align 8
  %v2_2d = add i32 %v1_2d, -48
  %v3_2d = inttoptr i32 %v2_2d to i64*
  %v4_2d = load i64, i64* %v3_2d, align 4
  %v5_2d = call i128 @__asm_mulsd(i128 %v4_28, i64 %v4_2d)
  %v0_32 = load i32, i32* %esi.global-to-local, align 4
  %v1_32 = add i32 %v0_32, -120
  %v2_32 = inttoptr i32 %v1_32 to i128*
  %v3_32 = load i128, i128* %v2_32, align 4
  call void @__asm_movupd.1(i128 %v3_32, i128 %v5_14)
  %v1_37 = call i32 @__asm_movsd.2(i128 %v5_19)
  %v3_37 = add i32 %v0_32, -104
  %v4_37 = sext i32 %v1_37 to i64
  %v5_37 = inttoptr i32 %v3_37 to i64*
  store i64 %v4_37, i64* %v5_37, align 4
  %v1_3c = call i32 @__asm_movsd.2(i128 %v5_2d)
  %v2_3c = load i32, i32* %esi.global-to-local, align 4
  %v3_3c = add i32 %v2_3c, 112
  %v4_3c = sext i32 %v1_3c to i64
  %v5_3c = inttoptr i32 %v3_3c to i64*
  store i64 %v4_3c, i64* %v5_3c, align 4
  br label %dec_label_pc_41

dec_label_pc_41:                                  ; preds = %dec_label_pc_28, %dec_label_pc_0
  %v3_41 = load i128, i128* bitcast (i32* @edi to i128*), align 8
  %v4_41 = call i128 @__asm_andpd(i128 %v5_14, i128 %v3_41)
  %v3_45 = load i128, i128* bitcast (i32* @edi to i128*), align 8
  %v4_45 = call i128 @__asm_andpd(i128 %v5_19, i128 %v3_45)
  %v1_49 = load i32, i32* @edi, align 8
  %v2_49 = add i32 %v1_49, -32
  %v3_49 = inttoptr i32 %v2_49 to i128*
  %v4_49 = load i128, i128* %v3_49, align 4
  %v5_49 = call i128 @__asm_subpd(i128 %v4_41, i128 %v4_49)
  %v1_4e = load i32, i32* @edi, align 8
  %v2_4e = add i32 %v1_4e, -16
  %v3_4e = inttoptr i32 %v2_4e to i64*
  %v4_4e = load i64, i64* %v3_4e, align 4
  %v5_4e = call i128 @__asm_subsd(i128 %v4_45, i64 %v4_4e)
  %v1_53 = load i32, i32* @edi, align 8
  %v2_53 = add i32 %v1_53, -96
  %v3_53 = inttoptr i32 %v2_53 to i128*
  %v4_53 = load i128, i128* %v3_53, align 4
  %v5_53 = call i128 @__asm_addpd(i128 %v5_49, i128 %v4_53)
  %v1_58 = load i32, i32* @edi, align 8
  %v2_58 = add i32 %v1_58, -96
  %v3_58 = inttoptr i32 %v2_58 to i64*
  %v4_58 = load i64, i64* %v3_58, align 4
  %v5_58 = call i128 @__asm_addsd(i128 %v5_4e, i64 %v4_58)
  %v2_5d = call i128 @__asm_maxpd(i128 %v5_53, i128 %v2_1e)
  %v2_61 = call i128 @__asm_maxsd(i128 %v5_58, i128 %v2_1e)
  %v2_65 = call i128 @__asm_mulpd(i128 %v2_5d, i128 %v2_5d)
  %v2_69 = call i128 @__asm_mulsd.3(i128 %v2_61, i128 %v2_61)
  %v2_6d = call i128 @__asm_addsd.4(i128 %v2_69, i128 %v2_65)
  %v2_71 = call i128 @__asm_shufpd(i128 %v2_65, i128 %v2_65, i32 1)
  %v2_76 = call i128 @__asm_addsd.4(i128 %v2_6d, i128 %v2_71)
  %v1_7a = call i128 @__asm_sqrtsd(i128 %v2_76)
  %v1_7e = load i32, i32* @edi, align 8
  %v2_7e = add i32 %v1_7e, -96
  %v3_7e = inttoptr i32 %v2_7e to i64*
  %v4_7e = load i64, i64* %v3_7e, align 4
  %v5_7e = call i128 @__asm_subsd(i128 %v1_7a, i64 %v4_7e)
  %v0_83 = load i32, i32* @edi, align 8
  %v1_83 = add i32 %v0_83, -100
  %v2_83 = inttoptr i32 %v1_83 to i32*
  %v3_83 = load i32, i32* %v2_83, align 4
  %v10_83 = icmp eq i32 %v3_83, 0
  %v1_87 = icmp eq i1 %v10_83, false
  br i1 %v1_87, label %dec_label_pc_8e, label %dec_label_pc_89

dec_label_pc_89:                                  ; preds = %dec_label_pc_41
  %v2_89 = add i32 %v0_83, -48
  %v3_89 = inttoptr i32 %v2_89 to i64*
  %v4_89 = load i64, i64* %v3_89, align 4
  %v5_89 = call i128 @__asm_divsd(i128 %v5_7e, i64 %v4_89)
  %v0_8e.pre = load i32, i32* @edi, align 8
  br label %dec_label_pc_8e

dec_label_pc_8e:                                  ; preds = %dec_label_pc_89, %dec_label_pc_41
  %v0_91 = phi i128 [ %v5_89, %dec_label_pc_89 ], [ %v5_7e, %dec_label_pc_41 ]
  %v0_8e = phi i32 [ %v0_8e.pre, %dec_label_pc_89 ], [ %v0_83, %dec_label_pc_41 ]
  %v1_8e = add i32 %v0_8e, -104
  %v2_8e = inttoptr i32 %v1_8e to i32*
  %v3_8e = load i32, i32* %v2_8e, align 4
  store i32 %v3_8e, i32* %eax.global-to-local, align 4
  %v1_91 = call i32 @__asm_movsd.2(i128 %v0_91)
  %v2_91 = load i32, i32* %esi.global-to-local, align 4
  %v3_91 = add i32 %v2_91, -32
  %v4_91 = sext i32 %v1_91 to i64
  %v5_91 = inttoptr i32 %v3_91 to i64*
  store i64 %v4_91, i64* %v5_91, align 4
  %v0_96 = load i32, i32* %eax.global-to-local, align 4
  %v1_96 = urem i32 %v0_96, 4
  store i32 %v1_96, i32* %eax.global-to-local, align 4
  %v3_99 = mul i32 %v1_96, 8
  %v4_99 = or i32 %v3_99, -128
  %v5_99 = add i32 %v4_99, %v2_91
  %v6_99 = inttoptr i32 %v5_99 to double*
  %v7_99 = load double, double* %v6_99, align 4
  %v8_99 = fpext double %v7_99 to x86_fp80
  %v2_9d = load i32, i32* @edi, align 8
  %v3_9d = add i32 %v2_9d, -112
  %v4_9d = inttoptr i32 %v3_9d to float*
  %v5_9d = load float, float* %v4_9d, align 4
  %v6_9d = fpext float %v5_9d to x86_fp80
  %v7_9d = fmul x86_fp80 %v8_99, %v6_9d
  %v3_a0 = add i32 %v2_9d, -108
  %v4_a0 = inttoptr i32 %v3_a0 to float*
  %v5_a0 = load float, float* %v4_a0, align 4
  %v6_a0 = fpext float %v5_a0 to x86_fp80
  %v7_a0 = fadd x86_fp80 %v7_9d, %v6_a0
  %v3_a3 = add i32 %v2_91, 128
  %v4_a3 = fptrunc x86_fp80 %v7_a0 to double
  %v5_a3 = inttoptr i32 %v3_a3 to double*
  store double %v4_a3, double* %v5_a3, align 4
  ret i32 %v1_96
}

declare i128 @__asm_movupd(i128) local_unnamed_addr

declare i128 @__asm_movsd(i64) local_unnamed_addr

declare i128 @__asm_mulpd(i128, i128) local_unnamed_addr

declare i128 @__asm_mulsd(i128, i64) local_unnamed_addr

declare i128 @__asm_addpd(i128, i128) local_unnamed_addr

declare i128 @__asm_addsd(i128, i64) local_unnamed_addr

declare i128 @__asm_xorpd(i128, i128) local_unnamed_addr

declare void @__asm_movupd.1(i128, i128) local_unnamed_addr

declare i32 @__asm_movsd.2(i128) local_unnamed_addr

declare i128 @__asm_andpd(i128, i128) local_unnamed_addr

declare i128 @__asm_subpd(i128, i128) local_unnamed_addr

declare i128 @__asm_subsd(i128, i64) local_unnamed_addr

declare i128 @__asm_maxpd(i128, i128) local_unnamed_addr

declare i128 @__asm_maxsd(i128, i128) local_unnamed_addr

declare i128 @__asm_mulsd.3(i128, i128) local_unnamed_addr

declare i128 @__asm_addsd.4(i128, i128) local_unnamed_addr

declare i128 @__asm_shufpd(i128, i128, i32) local_unnamed_addr

declare i128 @__asm_sqrtsd(i128) local_unnamed_addr

declare i128 @__asm_divsd(i128, i64) local_unnamed_addr
