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
  %v0_0 = load i32, i32* %esi.global-to-local, align 4
  %v1_0 = add i32 %v0_0, -112
  %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, -120
  %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, -64
  %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, -72
  %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 i32, i32* @edi, align 8
  %v1_1e = add i32 %v0_1e, -92
  %v2_1e = inttoptr i32 %v1_1e to i32*
  %v3_1e = load i32, i32* %v2_1e, align 4
  %v10_1e = icmp eq i32 %v3_1e, 0
  br i1 %v10_1e, label %dec_label_pc_3d, label %dec_label_pc_24

dec_label_pc_24:                                  ; preds = %dec_label_pc_0
  %v0_24 = load i32, i32* %esi.global-to-local, align 4
  %v1_24 = add i32 %v0_24, 112
  %v2_24 = inttoptr i32 %v1_24 to i64*
  %v3_24 = load i64, i64* %v2_24, align 4
  %v4_24 = call i128 @__asm_movsd(i64 %v3_24)
  %v1_29 = load i32, i32* @edi, align 8
  %v2_29 = add i32 %v1_29, -48
  %v3_29 = inttoptr i32 %v2_29 to i64*
  %v4_29 = load i64, i64* %v3_29, align 4
  %v5_29 = call i128 @__asm_mulsd(i128 %v4_24, i64 %v4_29)
  %v0_2e = load i32, i32* %esi.global-to-local, align 4
  %v1_2e = add i32 %v0_2e, -112
  %v2_2e = inttoptr i32 %v1_2e to i128*
  %v3_2e = load i128, i128* %v2_2e, align 4
  call void @__asm_movupd.1(i128 %v3_2e, i128 %v5_14)
  %v1_33 = call i32 @__asm_movsd.2(i128 %v5_19)
  %v3_33 = add i32 %v0_2e, -120
  %v4_33 = sext i32 %v1_33 to i64
  %v5_33 = inttoptr i32 %v3_33 to i64*
  store i64 %v4_33, i64* %v5_33, align 4
  %v1_38 = call i32 @__asm_movsd.2(i128 %v5_29)
  %v2_38 = load i32, i32* %esi.global-to-local, align 4
  %v3_38 = add i32 %v2_38, 112
  %v4_38 = sext i32 %v1_38 to i64
  %v5_38 = inttoptr i32 %v3_38 to i64*
  store i64 %v4_38, i64* %v5_38, align 4
  br label %dec_label_pc_3d

dec_label_pc_3d:                                  ; preds = %dec_label_pc_24, %dec_label_pc_0
  %v1_3d = call i128 @__asm_movapd(i128 %v5_19)
  %v2_41 = call i128 @__asm_mulpd(i128 %v5_14, i128 %v5_14)
  %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 = call i128 @__asm_pshufd(i128 %v2_41, i32 78)
  %v1_4e = call i128 @__asm_movapd(i128 %v4_45)
  %v1_52 = load i32, i32* @edi, align 8
  %v2_52 = add i32 %v1_52, -32
  %v3_52 = inttoptr i32 %v2_52 to i64*
  %v4_52 = load i64, i64* %v3_52, align 4
  %v5_52 = call i128 @__asm_subsd(i128 %v4_45, i64 %v4_52)
  %v2_57 = call i128 @__asm_addsd.3(i128 %v2_41, i128 %v1_49)
  %v1_5b = load i32, i32* @edi, align 8
  %v2_5b = add i32 %v1_5b, -32
  %v3_5b = inttoptr i32 %v2_5b to i64*
  %v4_5b = load i64, i64* %v3_5b, align 4
  %v5_5b = call i128 @__asm_minsd(i128 %v1_4e, i64 %v4_5b)
  %v1_60 = load i32, i32* @edi, align 8
  %v2_60 = add i32 %v1_60, -88
  %v3_60 = inttoptr i32 %v2_60 to i64*
  %v4_60 = load i64, i64* %v3_60, align 4
  %v5_60 = call i128 @__asm_mulsd(i128 %v1_3d, i64 %v4_60)
  %v2_65 = call i128 @__asm_mulsd.4(i128 %v5_5b, i128 %v5_5b)
  %v1_69 = call i128 @__asm_sqrtsd(i128 %v2_57)
  %v0_6d = load i32, i32* @edi, align 8
  %v1_6d = add i32 %v0_6d, -112
  %v2_6d = inttoptr i32 %v1_6d to i64*
  %v3_6d = load i64, i64* %v2_6d, align 4
  %v4_6d = call i128 @__asm_movsd(i64 %v3_6d)
  %v1_72 = load i32, i32* @edi, align 8
  %v2_72 = add i32 %v1_72, -80
  %v3_72 = inttoptr i32 %v2_72 to i64*
  %v4_72 = load i64, i64* %v3_72, align 4
  %v5_72 = call i128 @__asm_mulsd(i128 %v2_65, i64 %v4_72)
  %v2_77 = call i128 @__asm_subsd.5(i128 %v4_6d, i128 %v1_69)
  %v1_7b = load i32, i32* @edi, align 8
  %v2_7b = add i32 %v1_7b, -16
  %v3_7b = inttoptr i32 %v2_7b to i64*
  %v4_7b = load i64, i64* %v3_7b, align 4
  %v5_7b = call i128 @__asm_subsd(i128 %v1_69, i64 %v4_7b)
  %v2_80 = call i128 @__asm_subsd.5(i128 %v2_77, i128 %v5_72)
  %v2_84 = call i128 @__asm_addsd.3(i128 %v5_7b, i128 %v5_72)
  %v2_88 = call i128 @__asm_subsd.5(i128 %v2_80, i128 %v5_60)
  %v2_8c = call i128 @__asm_addsd.3(i128 %v2_84, i128 %v5_60)
  %v2_90 = call i128 @__asm_maxsd(i128 %v2_8c, i128 %v2_88)
  %v2_94 = call i128 @__asm_maxsd(i128 %v2_90, i128 %v5_52)
  %v0_98 = load i32, i32* @edi, align 8
  %v1_98 = add i32 %v0_98, -92
  %v2_98 = inttoptr i32 %v1_98 to i32*
  %v3_98 = load i32, i32* %v2_98, align 4
  %v10_98 = icmp eq i32 %v3_98, 0
  %v1_9c = icmp eq i1 %v10_98, false
  br i1 %v1_9c, label %dec_label_pc_a3, label %dec_label_pc_9e

dec_label_pc_9e:                                  ; preds = %dec_label_pc_3d
  %v2_9e = add i32 %v0_98, -48
  %v3_9e = inttoptr i32 %v2_9e to i64*
  %v4_9e = load i64, i64* %v3_9e, align 4
  %v5_9e = call i128 @__asm_divsd(i128 %v2_94, i64 %v4_9e)
  %v0_a3.pre = load i32, i32* @edi, align 8
  br label %dec_label_pc_a3

dec_label_pc_a3:                                  ; preds = %dec_label_pc_9e, %dec_label_pc_3d
  %v0_a6 = phi i128 [ %v5_9e, %dec_label_pc_9e ], [ %v2_94, %dec_label_pc_3d ]
  %v0_a3 = phi i32 [ %v0_a3.pre, %dec_label_pc_9e ], [ %v0_98, %dec_label_pc_3d ]
  %v1_a3 = add i32 %v0_a3, -96
  %v2_a3 = inttoptr i32 %v1_a3 to i32*
  %v3_a3 = load i32, i32* %v2_a3, align 4
  store i32 %v3_a3, i32* %eax.global-to-local, align 4
  %v1_a6 = call i32 @__asm_movsd.2(i128 %v0_a6)
  %v2_a6 = load i32, i32* %esi.global-to-local, align 4
  %v3_a6 = add i32 %v2_a6, -32
  %v4_a6 = sext i32 %v1_a6 to i64
  %v5_a6 = inttoptr i32 %v3_a6 to i64*
  store i64 %v4_a6, i64* %v5_a6, align 4
  %v0_ab = load i32, i32* %eax.global-to-local, align 4
  %v1_ab = urem i32 %v0_ab, 4
  store i32 %v1_ab, i32* %eax.global-to-local, align 4
  %v3_ae = mul i32 %v1_ab, 8
  %v4_ae = or i32 %v3_ae, -128
  %v5_ae = add i32 %v4_ae, %v2_a6
  %v6_ae = inttoptr i32 %v5_ae to double*
  %v7_ae = load double, double* %v6_ae, align 4
  %v8_ae = fpext double %v7_ae to x86_fp80
  %v2_b2 = load i32, i32* @edi, align 8
  %v3_b2 = add i32 %v2_b2, -104
  %v4_b2 = inttoptr i32 %v3_b2 to float*
  %v5_b2 = load float, float* %v4_b2, align 4
  %v6_b2 = fpext float %v5_b2 to x86_fp80
  %v7_b2 = fmul x86_fp80 %v8_ae, %v6_b2
  %v3_b5 = add i32 %v2_b2, -100
  %v4_b5 = inttoptr i32 %v3_b5 to float*
  %v5_b5 = load float, float* %v4_b5, align 4
  %v6_b5 = fpext float %v5_b5 to x86_fp80
  %v7_b5 = fadd x86_fp80 %v7_b2, %v6_b5
  %v3_b8 = add i32 %v2_a6, 128
  %v4_b8 = fptrunc x86_fp80 %v7_b5 to double
  %v5_b8 = inttoptr i32 %v3_b8 to double*
  store double %v4_b8, double* %v5_b8, align 4
  ret i32 %v1_ab
}

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 void @__asm_movupd.1(i128, i128) local_unnamed_addr

declare i32 @__asm_movsd.2(i128) local_unnamed_addr

declare i128 @__asm_movapd(i128) local_unnamed_addr

declare i128 @__asm_andpd(i128, i128) local_unnamed_addr

declare i128 @__asm_pshufd(i128, i32) local_unnamed_addr

declare i128 @__asm_subsd(i128, i64) local_unnamed_addr

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

declare i128 @__asm_minsd(i128, i64) local_unnamed_addr

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

declare i128 @__asm_sqrtsd(i128) local_unnamed_addr

declare i128 @__asm_subsd.5(i128, i128) local_unnamed_addr

declare i128 @__asm_maxsd(i128, i128) local_unnamed_addr

declare i128 @__asm_divsd(i128, i64) local_unnamed_addr
