int lucas_cost(int multiplier, double v) {
  int nbrMultiplications;
  int e;
  int d = multiplier;
  double dr = ((double)d / v) + 0.5;
  int r = (int)dr;
  if (r >= multiplier) {
    return (6 * multiplier);
  }
  d = multiplier - r;
  e = (2 * r) - multiplier;
  nbrMultiplications = 5 + 6;
  while (d != e) {
    if (d < e) {
      r = d;
      d = e;
      e = r;
    }
    if (((4 * d) <= (5 * e)) && (((d + e) % 3) == 0)) {
      r = ((2 * d) - e) / 3;
      e = ((2 * e) - d) / 3;
      d = r;
      nbrMultiplications += 3 * 6;
    } else if (((4 * d) <= (5 * e)) && (((d - e) % 6) == 0)) {
      d = (d - e) / 2;
      nbrMultiplications += 6 + 5;
    } else if (d <= (4 * e)) {
      d -= e;
      nbrMultiplications += 6;
    } else if (((d + e) % 2) == 0) {
      d = (d - e) / 2;
      nbrMultiplications += 6 + 5;
    } else if ((d % 2) == 0) {
      d /= 2;
      nbrMultiplications += 6 + 5;
    } else if ((d % 3) == 0) {
      d = (d / 3) - e;
      nbrMultiplications += (3 * 6) + 5;
    } else if (((d + e) % 3) == 0) {
      d = (d - (2 * e)) / 3;
      nbrMultiplications += (3 * 6) + 5;
    } else if (((d - e) % 3) == 0) {
      d = (d - e) / 3;
      nbrMultiplications += (3 * 6) + 5;
    } else if ((e % 2) == 0) {
      e /= 2;
      nbrMultiplications += 6 + 5;
    } else {
    }
  }
  return nbrMultiplications;
}


x86 assembly (clang, -O0):
<lucas_cost>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
movsd  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cvtsi2sdl -0x1c(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0xedc(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
cvttsd2si -0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     114d <lucas_cost+0x4d>
imul   $0x6,-0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    13dc <lucas_cost+0x2dc>
mov    -0x8(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x2c(%rbp),%eax
shl    $0x1,%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0x18(%rbp)
movl   $0xb,-0x14(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x18(%rbp),%eax
je     13d6 <lucas_cost+0x2d6>
mov    -0x1c(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    1193 <lucas_cost+0x93>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x2,%eax
imul   $0x5,-0x18(%rbp),%ecx
cmp    %ecx,%eax
jg     11f8 <lucas_cost+0xf8>
mov    -0x1c(%rbp),%eax
add    -0x18(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    11f8 <lucas_cost+0xf8>
mov    -0x1c(%rbp),%eax
shl    $0x1,%eax
sub    -0x18(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
shl    $0x1,%eax
sub    -0x1c(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x12,%eax
mov    %eax,-0x14(%rbp)
jmp    13d1 <lucas_cost+0x2d1>
mov    -0x1c(%rbp),%eax
shl    $0x2,%eax
imul   $0x5,-0x18(%rbp),%ecx
cmp    %ecx,%eax
jg     1240 <lucas_cost+0x140>
mov    -0x1c(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0x6,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1240 <lucas_cost+0x140>
mov    -0x1c(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0x14(%rbp)
jmp    13cc <lucas_cost+0x2cc>
mov    -0x1c(%rbp),%eax
mov    -0x18(%rbp),%ecx
shl    $0x2,%ecx
cmp    %ecx,%eax
jg     126a <lucas_cost+0x16a>
mov    -0x18(%rbp),%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0x14(%rbp)
jmp    13c7 <lucas_cost+0x2c7>
mov    -0x1c(%rbp),%eax
add    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    12a0 <lucas_cost+0x1a0>
mov    -0x1c(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0x14(%rbp)
jmp    13c2 <lucas_cost+0x2c2>
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    12d0 <lucas_cost+0x1d0>
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0x14(%rbp)
jmp    13bd <lucas_cost+0x2bd>
mov    -0x1c(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1303 <lucas_cost+0x203>
mov    -0x1c(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
sub    -0x18(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x17,%eax
mov    %eax,-0x14(%rbp)
jmp    13b8 <lucas_cost+0x2b8>
mov    -0x1c(%rbp),%eax
add    -0x18(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    133e <lucas_cost+0x23e>
mov    -0x1c(%rbp),%eax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
sub    %ecx,%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x17,%eax
mov    %eax,-0x14(%rbp)
jmp    13b3 <lucas_cost+0x2b3>
mov    -0x1c(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1374 <lucas_cost+0x274>
mov    -0x1c(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x17,%eax
mov    %eax,-0x14(%rbp)
jmp    13ae <lucas_cost+0x2ae>
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    13a4 <lucas_cost+0x2a4>
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0x14(%rbp)
jmp    13a9 <lucas_cost+0x2a9>
jmp    13a9 <lucas_cost+0x2a9>
jmp    13ae <lucas_cost+0x2ae>
jmp    13b3 <lucas_cost+0x2b3>
jmp    13b8 <lucas_cost+0x2b8>
jmp    13bd <lucas_cost+0x2bd>
jmp    13c2 <lucas_cost+0x2c2>
jmp    13c7 <lucas_cost+0x2c7>
jmp    13cc <lucas_cost+0x2cc>
jmp    13d1 <lucas_cost+0x2d1>
jmp    1169 <lucas_cost+0x69>
mov    -0x14(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<lucas_cost>:
cvtsi2sd %edi,%xmm1
divsd  %xmm0,%xmm1
addsd  0xef0(%rip),%xmm1
cvttsd2si %xmm1,%ecx
cmp    %edi,%ecx
jge    112a <lucas_cost+0x2a>
mov    %edi,%edx
sub    %ecx,%edx
add    %ecx,%ecx
sub    %edi,%ecx
mov    $0xb,%eax
cmp    %ecx,%edx
jne    1130 <lucas_cost+0x30>
ret
add    %edi,%edi
lea    (%rdi,%rdi,2),%eax
ret
mov    $0xb,%eax
jmp    1149 <lucas_cost+0x49>
nopw   0x0(%rax,%rax,1)
sub    %ecx,%edx
add    $0x6,%eax
cmp    %ecx,%edx
je     1129 <lucas_cost+0x29>
mov    %ecx,%esi
cmp    %ecx,%edx
cmovl  %edx,%ecx
cmovl  %esi,%edx
lea    0x0(,%rdx,4),%esi
lea    (%rcx,%rcx,4),%edi
cmp    %edi,%esi
jg     1192 <lucas_cost+0x92>
lea    (%rdx,%rcx,1),%esi
imul   $0xaaaaaaab,%esi,%esi
add    $0x2aaaaaaa,%esi
cmp    $0x55555554,%esi
jbe    11aa <lucas_cost+0xaa>
mov    %edx,%esi
sub    %ecx,%esi
imul   $0xaaaaaaab,%esi,%edi
add    $0x2aaaaaaa,%edi
ror    %edi
cmp    $0x2aaaaaaa,%edi
jbe    1201 <lucas_cost+0x101>
lea    0x0(,%rcx,4),%esi
cmp    %esi,%edx
jle    1140 <lucas_cost+0x40>
lea    (%rdx,%rcx,1),%esi
test   $0x1,%sil
jne    11e9 <lucas_cost+0xe9>
sub    %ecx,%edx
jmp    11ee <lucas_cost+0xee>
lea    (%rdx,%rdx,1),%esi
sub    %ecx,%esi
movslq %esi,%rsi
add    %ecx,%ecx
sub    %edx,%ecx
imul   $0x55555556,%rsi,%rdx
mov    %rdx,%rsi
shr    $0x3f,%rsi
shr    $0x20,%rdx
add    %esi,%edx
movslq %ecx,%rcx
imul   $0x55555556,%rcx,%rcx
mov    %rcx,%rsi
shr    $0x3f,%rsi
shr    $0x20,%rcx
add    %esi,%ecx
add    $0x12,%eax
jmp    1145 <lucas_cost+0x45>
test   $0x1,%dl
jne    1212 <lucas_cost+0x112>
mov    %edx,%esi
shr    $0x1f,%esi
add    %edx,%esi
sar    %esi
add    $0xb,%eax
mov    %esi,%edx
jmp    1145 <lucas_cost+0x45>
mov    %esi,%edx
shr    $0x1f,%edx
add    %esi,%edx
sar    %edx
add    $0xb,%eax
jmp    1145 <lucas_cost+0x45>
imul   $0xaaaaaaab,%edx,%edi
add    $0x2aaaaaaa,%edi
cmp    $0x55555554,%edi
jbe    126e <lucas_cost+0x16e>
imul   $0xaaaaaaab,%esi,%esi
add    $0x2aaaaaaa,%esi
cmp    $0x55555554,%esi
jbe    128f <lucas_cost+0x18f>
mov    %edx,%esi
sub    %ecx,%esi
imul   $0xaaaaaaab,%esi,%edi
add    $0x2aaaaaaa,%edi
cmp    $0x55555554,%edi
jbe    1298 <lucas_cost+0x198>
test   $0x1,%cl
jne    1145 <lucas_cost+0x45>
mov    %ecx,%esi
shr    $0x1f,%esi
add    %ecx,%esi
sar    %esi
add    $0xb,%eax
mov    %esi,%ecx
jmp    1145 <lucas_cost+0x45>
movslq %edx,%rdx
imul   $0x55555556,%rdx,%rdx
mov    %rdx,%rsi
shr    $0x3f,%rsi
shr    $0x20,%rdx
add    %esi,%edx
sub    %ecx,%edx
add    $0x17,%eax
jmp    1145 <lucas_cost+0x45>
sub    %ecx,%edx
sub    %ecx,%edx
movslq %edx,%rdx
jmp    129b <lucas_cost+0x19b>
movslq %esi,%rdx
imul   $0x55555556,%rdx,%rdx
mov    %rdx,%rsi
shr    $0x3f,%rsi
shr    $0x20,%rdx
add    %esi,%edx
add    $0x17,%eax
jmp    1145 <lucas_cost+0x45>

LLVM IR (-O0):
define i32 @lucas_cost(i32 %0, double %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca double
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca double
%10 = alloca i32
store i32 %0, i32* %4
store double %1, double* %5
%11 = load i32, i32* %4
store i32 %11, i32* %8
%12 = load i32, i32* %8
%13 = sitofp i32 %12 to double
%14 = load double, double* %5
%15 = fdiv double %13, %14
%16 = fadd double %15, 5.000000e-01
store double %16, double* %9
%17 = load double, double* %9
%18 = fptosi double %17 to i32
store i32 %18, i32* %10
%19 = load i32, i32* %10
%20 = load i32, i32* %4
%21 = icmp sge i32 %19, %20
br i1 %21, label %22, label %25
22: ; preds = %2
%23 = load i32, i32* %4
%24 = mul nsw i32 6, %23
store i32 %24, i32* %3
br label %182
25: ; preds = %2
%26 = load i32, i32* %4
%27 = load i32, i32* %10
%28 = sub nsw i32 %26, %27
store i32 %28, i32* %8
%29 = load i32, i32* %10
%30 = mul nsw i32 2, %29
%31 = load i32, i32* %4
%32 = sub nsw i32 %30, %31
store i32 %32, i32* %7
store i32 11, i32* %6
br label %33
33: ; preds = %179, %25
%34 = load i32, i32* %8
%35 = load i32, i32* %7
%36 = icmp ne i32 %34, %35
br i1 %36, label %37, label %180
37: ; preds = %33
%38 = load i32, i32* %8
%39 = load i32, i32* %7
%40 = icmp slt i32 %38, %39
br i1 %40, label %41, label %45
41: ; preds = %37
%42 = load i32, i32* %8
store i32 %42, i32* %10
%43 = load i32, i32* %7
store i32 %43, i32* %8
%44 = load i32, i32* %10
store i32 %44, i32* %7
br label %45
45: ; preds = %41, %37
%46 = load i32, i32* %8
%47 = mul nsw i32 4, %46
%48 = load i32, i32* %7
%49 = mul nsw i32 5, %48
%50 = icmp sle i32 %47, %49
br i1 %50, label %51, label %71
51: ; preds = %45
%52 = load i32, i32* %8
%53 = load i32, i32* %7
%54 = add nsw i32 %52, %53
%55 = srem i32 %54, 3
%56 = icmp eq i32 %55, 0
br i1 %56, label %57, label %71
57: ; preds = %51
%58 = load i32, i32* %8
%59 = mul nsw i32 2, %58
%60 = load i32, i32* %7
%61 = sub nsw i32 %59, %60
%62 = sdiv i32 %61, 3
store i32 %62, i32* %10
%63 = load i32, i32* %7
%64 = mul nsw i32 2, %63
%65 = load i32, i32* %8
%66 = sub nsw i32 %64, %65
%67 = sdiv i32 %66, 3
store i32 %67, i32* %7
%68 = load i32, i32* %10
store i32 %68, i32* %8
%69 = load i32, i32* %6
%70 = add nsw i32 %69, 18
store i32 %70, i32* %6
br label %179
71: ; preds = %51, %45
%72 = load i32, i32* %8
%73 = mul nsw i32 4, %72
%74 = load i32, i32* %7
%75 = mul nsw i32 5, %74
%76 = icmp sle i32 %73, %75
br i1 %76, label %77, label %90
77: ; preds = %71
%78 = load i32, i32* %8
%79 = load i32, i32* %7
%80 = sub nsw i32 %78, %79
%81 = srem i32 %80, 6
%82 = icmp eq i32 %81, 0
br i1 %82, label %83, label %90
83: ; preds = %77
%84 = load i32, i32* %8
%85 = load i32, i32* %7
%86 = sub nsw i32 %84, %85
%87 = sdiv i32 %86, 2
store i32 %87, i32* %8
%88 = load i32, i32* %6
%89 = add nsw i32 %88, 11
store i32 %89, i32* %6
br label %178
90: ; preds = %77, %71
%91 = load i32, i32* %8
%92 = load i32, i32* %7
%93 = mul nsw i32 4, %92
%94 = icmp sle i32 %91, %93
br i1 %94, label %95, label %101
95: ; preds = %90
%96 = load i32, i32* %7
%97 = load i32, i32* %8
%98 = sub nsw i32 %97, %96
store i32 %98, i32* %8
%99 = load i32, i32* %6
%100 = add nsw i32 %99, 6
store i32 %100, i32* %6
br label %177
101: ; preds = %90
%102 = load i32, i32* %8
%103 = load i32, i32* %7
%104 = add nsw i32 %102, %103
%105 = srem i32 %104, 2
%106 = icmp eq i32 %105, 0
br i1 %106, label %107, label %114
107: ; preds = %101
%108 = load i32, i32* %8
%109 = load i32, i32* %7
%110 = sub nsw i32 %108, %109
%111 = sdiv i32 %110, 2
store i32 %111, i32* %8
%112 = load i32, i32* %6
%113 = add nsw i32 %112, 11
store i32 %113, i32* %6
br label %176
114: ; preds = %101
%115 = load i32, i32* %8
%116 = srem i32 %115, 2
%117 = icmp eq i32 %116, 0
br i1 %117, label %118, label %123
118: ; preds = %114
%119 = load i32, i32* %8
%120 = sdiv i32 %119, 2
store i32 %120, i32* %8
%121 = load i32, i32* %6
%122 = add nsw i32 %121, 11
store i32 %122, i32* %6
br label %175
123: ; preds = %114
%124 = load i32, i32* %8
%125 = srem i32 %124, 3
%126 = icmp eq i32 %125, 0
br i1 %126, label %127, label %134
127: ; preds = %123
%128 = load i32, i32* %8
%129 = sdiv i32 %128, 3
%130 = load i32, i32* %7
%131 = sub nsw i32 %129, %130
store i32 %131, i32* %8
%132 = load i32, i32* %6
%133 = add nsw i32 %132, 23
store i32 %133, i32* %6
br label %174
134: ; preds = %123
%135 = load i32, i32* %8
%136 = load i32, i32* %7
%137 = add nsw i32 %135, %136
%138 = srem i32 %137, 3
%139 = icmp eq i32 %138, 0
br i1 %139, label %140, label %148
140: ; preds = %134
%141 = load i32, i32* %8
%142 = load i32, i32* %7
%143 = mul nsw i32 2, %142
%144 = sub nsw i32 %141, %143
%145 = sdiv i32 %144, 3
store i32 %145, i32* %8
%146 = load i32, i32* %6
%147 = add nsw i32 %146, 23
store i32 %147, i32* %6
br label %173
148: ; preds = %134
%149 = load i32, i32* %8
%150 = load i32, i32* %7
%151 = sub nsw i32 %149, %150
%152 = srem i32 %151, 3
%153 = icmp eq i32 %152, 0
br i1 %153, label %154, label %161
154: ; preds = %148
%155 = load i32, i32* %8
%156 = load i32, i32* %7
%157 = sub nsw i32 %155, %156
%158 = sdiv i32 %157, 3
store i32 %158, i32* %8
%159 = load i32, i32* %6
%160 = add nsw i32 %159, 23
store i32 %160, i32* %6
br label %172
161: ; preds = %148
%162 = load i32, i32* %7
%163 = srem i32 %162, 2
%164 = icmp eq i32 %163, 0
br i1 %164, label %165, label %170
165: ; preds = %161
%166 = load i32, i32* %7
%167 = sdiv i32 %166, 2
store i32 %167, i32* %7
%168 = load i32, i32* %6
%169 = add nsw i32 %168, 11
store i32 %169, i32* %6
br label %171
170: ; preds = %161
br label %171
171: ; preds = %170, %165
br label %172
172: ; preds = %171, %154
br label %173
173: ; preds = %172, %140
br label %174
174: ; preds = %173, %127
br label %175
175: ; preds = %174, %118
br label %176
176: ; preds = %175, %107
br label %177
177: ; preds = %176, %95
br label %178
178: ; preds = %177, %83
br label %179
179: ; preds = %178, %57
br label %33
180: ; preds = %33
%181 = load i32, i32* %6
store i32 %181, i32* %3
br label %182
182: ; preds = %180, %22
%183 = load i32, i32* %3
ret i32 %183
}

LLVM IR (-O2):
define i32 @lucas_cost(i32 %0, double %1) {
%3 = sitofp i32 %0 to double
%4 = fdiv double %3, %1
%5 = fadd double %4, 5.000000e-01
%6 = fptosi double %5 to i32
%7 = icmp slt i32 %6, %0
br i1 %7, label %10, label %8
8: ; preds = %2
%9 = mul nsw i32 %0, 6
br label %97
10: ; preds = %2
%11 = sub nsw i32 %0, %6
%12 = shl nsw i32 %6, 1
%13 = sub nsw i32 %12, %0
%14 = icmp eq i32 %11, %13
br i1 %14, label %97, label %15
15: ; preds = %10, %92
%16 = phi i32 [ %95, %92 ], [ %11, %10 ]
%17 = phi i32 [ %94, %92 ], [ %13, %10 ]
%18 = phi i32 [ %93, %92 ], [ 11, %10 ]
%19 = icmp slt i32 %16, %17
%20 = select i1 %19, i32 %16, i32 %17
%21 = select i1 %19, i32 %17, i32 %16
%22 = shl nsw i32 %21, 2
%23 = mul nsw i32 %20, 5
%24 = icmp sgt i32 %22, %23
br i1 %24, label %44, label %25
25: ; preds = %15
%26 = add nsw i32 %21, %20
%27 = srem i32 %26, 3
%28 = icmp eq i32 %27, 0
br i1 %28, label %29, label %37
29: ; preds = %25
%30 = shl nsw i32 %21, 1
%31 = sub nsw i32 %30, %20
%32 = sdiv i32 %31, 3
%33 = shl nsw i32 %20, 1
%34 = sub nsw i32 %33, %21
%35 = sdiv i32 %34, 3
%36 = add nsw i32 %18, 18
br label %92
37: ; preds = %25
%38 = sub nsw i32 %21, %20
%39 = srem i32 %38, 6
%40 = icmp eq i32 %39, 0
br i1 %40, label %41, label %44
41: ; preds = %37
%42 = sdiv i32 %38, 2
%43 = add nsw i32 %18, 11
br label %92
44: ; preds = %15, %37
%45 = shl nsw i32 %20, 2
%46 = icmp sgt i32 %21, %45
br i1 %46, label %50, label %47
47: ; preds = %44
%48 = sub nsw i32 %21, %20
%49 = add nsw i32 %18, 6
br label %92
50: ; preds = %44
%51 = add nsw i32 %21, %20
%52 = and i32 %51, 1
%53 = icmp eq i32 %52, 0
br i1 %53, label %54, label %58
54: ; preds = %50
%55 = sub nsw i32 %21, %20
%56 = sdiv i32 %55, 2
%57 = add nsw i32 %18, 11
br label %92
58: ; preds = %50
%59 = and i32 %21, 1
%60 = icmp eq i32 %59, 0
br i1 %60, label %61, label %64
61: ; preds = %58
%62 = sdiv i32 %21, 2
%63 = add nsw i32 %18, 11
br label %92
64: ; preds = %58
%65 = srem i32 %21, 3
%66 = sdiv i32 %21, 3
%67 = icmp eq i32 %65, 0
br i1 %67, label %68, label %71
68: ; preds = %64
%69 = sub nsw i32 %66, %20
%70 = add nsw i32 %18, 23
br label %92
71: ; preds = %64
%72 = srem i32 %51, 3
%73 = icmp eq i32 %72, 0
br i1 %73, label %74, label %79
74: ; preds = %71
%75 = mul i32 %20, -2
%76 = add i32 %75, %21
%77 = sdiv i32 %76, 3
%78 = add nsw i32 %18, 23
br label %92
79: ; preds = %71
%80 = sub nsw i32 %21, %20
%81 = srem i32 %80, 3
%82 = sdiv i32 %80, 3
%83 = icmp eq i32 %81, 0
br i1 %83, label %84, label %86
84: ; preds = %79
%85 = add nsw i32 %18, 23
br label %92
86: ; preds = %79
%87 = and i32 %20, 1
%88 = icmp eq i32 %87, 0
br i1 %88, label %89, label %92
89: ; preds = %86
%90 = sdiv i32 %20, 2
%91 = add nsw i32 %18, 11
br label %92
92: ; preds = %41, %54, %68, %84, %86, %89, %74, %61, %47, %29
%93 = phi i32 [ %36, %29 ], [ %43, %41 ], [ %49, %47 ], [ %57, %54 ], [ %63, %61 ], [ %70, %68 ], [ %78, %74 ], [ %85, %84 ], [ %91, %89 ], [ %18, %86 ]
%94 = phi i32 [ %35, %29 ], [ %20, %41 ], [ %20, %47 ], [ %20, %54 ], [ %20, %61 ], [ %20, %68 ], [ %20, %74 ], [ %20, %84 ], [ %90, %89 ], [ %20, %86 ]
%95 = phi i32 [ %32, %29 ], [ %42, %41 ], [ %48, %47 ], [ %56, %54 ], [ %62, %61 ], [ %69, %68 ], [ %77, %74 ], [ %82, %84 ], [ %21, %89 ], [ %21, %86 ]
%96 = icmp eq i32 %95, %94
br i1 %96, label %97, label %15
97: ; preds = %92, %10, %8
%98 = phi i32 [ %9, %8 ], [ 11, %10 ], [ %93, %92 ]
ret i32 %98
}