int mcontrlabel(zmap, jmax, kmax, conval, ncon, cutoff, sc, xo, yo)
double **zmap, sc;
double cutoff, xo, yo;
double conval[20];
int jmax, kmax, ncon;
{
  double xscal, yscal;
  register int jj, kk, l;
  double x1, y1, z1, z2;
  int quarter;
  quarter = jmax / 4;
  xscal = sc;
  yscal = -sc;
  SetColor(0x07000000L);
  for (jj = 0; jj < 3; jj++) {
    for (kk = 5; kk < kmax - 5; kk++) {
      z1 = zmap[quarter][kk - 1];
      z2 = zmap[quarter][kk];
      for (l = 0; l < ncon; l++) {
        if (z1 < cutoff && z2 < cutoff) {
          if ((z1 < conval[l + 1] && z2 >= conval[l + 1]) ||
              (z1 >= conval[l + 1] && z2 < conval[l + 1])) {
            y1 = yo - (kk * yscal);
            x1 = xo + (quarter * xscal);
            number(x1 - 0.25, y1, 0.15, conval[l + 1], 0.0, -1);
          }
        }
      }
    }
    quarter += quarter;
  }
  SetColor(0x07000000L);
  penSize(1, 1);
  return (1);
}


x86 assembly (clang, -O0):
<mcontrlabel>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
movsd  %xmm0,-0x28(%rbp)
movsd  %xmm1,-0x30(%rbp)
movsd  %xmm2,-0x38(%rbp)
movsd  %xmm3,-0x40(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x84(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    $0x7000000,%edi
mov    $0x0,%al
call   1030 <SetColor@plt>
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    13a4 <mcontrlabel+0x274>
movl   $0x5,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x5,%ecx
cmp    %ecx,%eax
jge    1384 <mcontrlabel+0x254>
mov    -0x8(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x58(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x58(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1371 <mcontrlabel+0x241>
movsd  -0x78(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    135e <mcontrlabel+0x22e>
movsd  -0x80(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    135e <mcontrlabel+0x22e>
movsd  -0x78(%rbp),%xmm1
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    128a <mcontrlabel+0x15a>
movsd  -0x80(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jae    12c8 <mcontrlabel+0x198>
movsd  -0x78(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jb     1359 <mcontrlabel+0x229>
movsd  -0x80(%rbp),%xmm1
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1359 <mcontrlabel+0x229>
movsd  -0x40(%rbp),%xmm1
cvtsi2sdl -0x58(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm1
cvtsi2sdl -0x84(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  0xce1(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  -0x70(%rbp),%xmm1
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm3
movsd  0xcb6(%rip),%xmm2
xorps  %xmm4,%xmm4
mov    $0xffffffff,%edi
mov    $0x5,%al
call   1050 <number@plt>
jmp    135e <mcontrlabel+0x22e>
jmp    1363 <mcontrlabel+0x233>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1218 <mcontrlabel+0xe8>
jmp    1376 <mcontrlabel+0x246>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    11c1 <mcontrlabel+0x91>
mov    -0x84(%rbp),%eax
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    11b0 <mcontrlabel+0x80>
mov    $0x7000000,%edi
mov    $0x0,%al
call   1030 <SetColor@plt>
mov    $0x1,%esi
mov    %esi,%edi
mov    $0x0,%al
call   1040 <penSize@plt>
mov    $0x1,%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mcontrlabel>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
movsd  %xmm3,0x50(%rsp)
movsd  %xmm2,0x30(%rsp)
movsd  %xmm1,0x10(%rsp)
movsd  %xmm0,0x48(%rsp)
mov    %r8d,0x4(%rsp)
mov    %rcx,%r15
mov    %edx,%ebp
mov    %rdi,0x40(%rsp)
lea    0x3(%rsi),%ebx
test   %esi,%esi
cmovns %esi,%ebx
mov    $0x7000000,%edi
xor    %eax,%eax
call   1030 <SetColor@plt>
movsd  0x30(%rsp),%xmm1
cmp    $0xb,%ebp
jl     1526 <mcontrlabel+0x3f6>
sar    $0x2,%ebx
mov    %rbp,0x58(%rsp)
lea    -0x5(%rbp),%eax
mov    %rbx,0x60(%rsp)
movslq %ebx,%rdx
mov    %rdx,%rcx
mov    %rdx,0x38(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  %xmm1,%xmm0
addsd  0xe44(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
mov    %eax,%r13d
mov    0x4(%rsp),%ebp
mov    $0x5,%r14d
jmp    11ed <mcontrlabel+0xbd>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r14
cmp    %r13,%r14
je     12cd <mcontrlabel+0x19d>
cmpl   $0x0,0x4(%rsp)
jle    11e0 <mcontrlabel+0xb0>
mov    0x40(%rsp),%rax
mov    0x38(%rsp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  -0x8(%rax,%r14,8),%xmm2
movsd  (%rax,%r14,8),%xmm3
movsd  0x48(%rsp),%xmm0
ucomisd %xmm2,%xmm0
seta   %al
movsd  %xmm3,0x8(%rsp)
ucomisd %xmm3,%xmm0
seta   %r12b
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
and    %al,%r12b
mulsd  0x10(%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
xor    %ebx,%ebx
movsd  %xmm2,0x28(%rsp)
jmp    1298 <mcontrlabel+0x168>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
xorps  %xmm4,%xmm4
movsd  0x18(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movsd  0xd91(%rip),%xmm2
mov    $0xffffffff,%edi
mov    $0x5,%al
call   1050 <number@plt>
movsd  0x28(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
cmp    %rbx,%rbp
je     11e0 <mcontrlabel+0xb0>
mov    %rbx,%rax
add    $0x1,%rbx
test   %r12b,%r12b
je     128f <mcontrlabel+0x15f>
movsd  0x8(%r15,%rax,8),%xmm3
ucomisd %xmm2,%xmm3
jbe    12bd <mcontrlabel+0x18d>
movsd  0x8(%rsp),%xmm0
ucomisd %xmm3,%xmm0
jae    1260 <mcontrlabel+0x130>
ucomisd %xmm3,%xmm2
jb     128f <mcontrlabel+0x15f>
ucomisd 0x8(%rsp),%xmm3
ja     1260 <mcontrlabel+0x130>
jmp    128f <mcontrlabel+0x15f>
cmpl   $0xb,0x58(%rsp)
mov    0x60(%rsp),%rax
jl     1526 <mcontrlabel+0x3f6>
add    %eax,%eax
movslq %eax,%rcx
mov    %rcx,%rax
mov    %rcx,0x38(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  %xmm1,%xmm0
addsd  0xcfd(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
mov    $0x5,%r14d
jmp    132d <mcontrlabel+0x1fd>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r14
cmp    %r13,%r14
je     13fc <mcontrlabel+0x2cc>
cmpl   $0x0,0x4(%rsp)
jle    1320 <mcontrlabel+0x1f0>
mov    0x40(%rsp),%rax
mov    0x38(%rsp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  -0x8(%rax,%r14,8),%xmm2
movsd  (%rax,%r14,8),%xmm3
movsd  0x48(%rsp),%xmm0
ucomisd %xmm2,%xmm0
seta   %al
movsd  %xmm3,0x8(%rsp)
ucomisd %xmm3,%xmm0
seta   %bl
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
and    %al,%bl
mulsd  0x10(%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
xor    %r12d,%r12d
movsd  %xmm2,0x28(%rsp)
jmp    13c8 <mcontrlabel+0x298>
xorps  %xmm4,%xmm4
movsd  0x18(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
movsd  0xc61(%rip),%xmm2
mov    $0xffffffff,%edi
mov    $0x5,%al
call   1050 <number@plt>
movsd  0x28(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
cmp    %r12,%rbp
je     1320 <mcontrlabel+0x1f0>
mov    %r12,%rax
add    $0x1,%r12
test   %bl,%bl
je     13bf <mcontrlabel+0x28f>
movsd  0x8(%r15,%rax,8),%xmm3
ucomisd %xmm2,%xmm3
jbe    13ec <mcontrlabel+0x2bc>
movsd  0x8(%rsp),%xmm0
ucomisd %xmm3,%xmm0
jae    1390 <mcontrlabel+0x260>
ucomisd %xmm3,%xmm2
jb     13bf <mcontrlabel+0x28f>
ucomisd 0x8(%rsp),%xmm3
ja     1390 <mcontrlabel+0x260>
jmp    13bf <mcontrlabel+0x28f>
cmpl   $0xb,0x58(%rsp)
mov    0x60(%rsp),%rax
jl     1526 <mcontrlabel+0x3f6>
shl    $0x2,%eax
movslq %eax,%rcx
mov    %rcx,%rax
mov    %rcx,0x18(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  %xmm1,%xmm0
addsd  0xbcd(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
mov    $0x5,%r14d
jmp    145d <mcontrlabel+0x32d>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r14
cmp    %r13,%r14
je     1526 <mcontrlabel+0x3f6>
cmpl   $0x0,0x4(%rsp)
jle    1450 <mcontrlabel+0x320>
mov    0x40(%rsp),%rax
mov    0x18(%rsp),%rcx
mov    (%rax,%rcx,8),%rax
movsd  -0x8(%rax,%r14,8),%xmm1
movsd  (%rax,%r14,8),%xmm2
movsd  0x48(%rsp),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
movsd  %xmm2,0x8(%rsp)
ucomisd %xmm2,%xmm0
seta   %bl
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
and    %al,%bl
mulsd  0x10(%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
xor    %r12d,%r12d
movsd  %xmm1,0x30(%rsp)
jmp    14f2 <mcontrlabel+0x3c2>
xorps  %xmm4,%xmm4
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0xb31(%rip),%xmm2
mov    $0xffffffff,%edi
mov    $0x5,%al
call   1050 <number@plt>
movsd  0x30(%rsp),%xmm1
cmp    %r12,%rbp
je     1450 <mcontrlabel+0x320>
mov    %r12,%rax
add    $0x1,%r12
test   %bl,%bl
je     14e9 <mcontrlabel+0x3b9>
movsd  0x8(%r15,%rax,8),%xmm3
ucomisd %xmm1,%xmm3
jbe    1516 <mcontrlabel+0x3e6>
movsd  0x8(%rsp),%xmm0
ucomisd %xmm3,%xmm0
jae    14c0 <mcontrlabel+0x390>
ucomisd %xmm3,%xmm1
jb     14e9 <mcontrlabel+0x3b9>
ucomisd 0x8(%rsp),%xmm3
ja     14c0 <mcontrlabel+0x390>
jmp    14e9 <mcontrlabel+0x3b9>
mov    $0x7000000,%edi
xor    %eax,%eax
call   1030 <SetColor@plt>
mov    $0x1,%edi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <penSize@plt>
mov    $0x1,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @mcontrlabel(double** %0, i32 %1, i32 %2, double* %3, i32 %4, double %5, double %6, double %7, double %8) {
%10 = alloca double**
%11 = alloca i32
%12 = alloca i32
%13 = alloca double*
%14 = alloca i32
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca i32
store double** %0, double*** %10
store i32 %1, i32* %11
store i32 %2, i32* %12
store double* %3, double** %13
store i32 %4, i32* %14
store double %5, double* %15
store double %6, double* %16
store double %7, double* %17
store double %8, double* %18
%29 = load i32, i32* %11
%30 = sdiv i32 %29, 4
store i32 %30, i32* %28
%31 = load double, double* %16
store double %31, double* %19
%32 = load double, double* %16
%33 = fneg double %32
store double %33, double* %20
%34 = call i32 (i64, ...) bitcast (i32 (...)* @SetColor to i32 (i64, ...)*)(i64 117440512)
store i32 0, i32* %21
br label %35
35: ; preds = %147, %9
%36 = load i32, i32* %21
%37 = icmp slt i32 %36, 3
br i1 %37, label %38, label %150
38: ; preds = %35
store i32 5, i32* %22
br label %39
39: ; preds = %140, %38
%40 = load i32, i32* %22
%41 = load i32, i32* %12
%42 = sub nsw i32 %41, 5
%43 = icmp slt i32 %40, %42
br i1 %43, label %44, label %143
44: ; preds = %39
%45 = load double**, double*** %10
%46 = load i32, i32* %28
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds double*, double** %45, i64 %47
%49 = load double*, double** %48
%50 = load i32, i32* %22
%51 = sub nsw i32 %50, 1
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds double, double* %49, i64 %52
%54 = load double, double* %53
store double %54, double* %26
%55 = load double**, double*** %10
%56 = load i32, i32* %28
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds double*, double** %55, i64 %57
%59 = load double*, double** %58
%60 = load i32, i32* %22
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds double, double* %59, i64 %61
%63 = load double, double* %62
store double %63, double* %27
store i32 0, i32* %23
br label %64
64: ; preds = %136, %44
%65 = load i32, i32* %23
%66 = load i32, i32* %14
%67 = icmp slt i32 %65, %66
br i1 %67, label %68, label %139
68: ; preds = %64
%69 = load double, double* %26
%70 = load double, double* %15
%71 = fcmp olt double %69, %70
br i1 %71, label %72, label %135
72: ; preds = %68
%73 = load double, double* %27
%74 = load double, double* %15
%75 = fcmp olt double %73, %74
br i1 %75, label %76, label %135
76: ; preds = %72
%77 = load double, double* %26
%78 = load double*, double** %13
%79 = load i32, i32* %23
%80 = add nsw i32 %79, 1
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds double, double* %78, i64 %81
%83 = load double, double* %82
%84 = fcmp olt double %77, %83
br i1 %84, label %85, label %94
85: ; preds = %76
%86 = load double, double* %27
%87 = load double*, double** %13
%88 = load i32, i32* %23
%89 = add nsw i32 %88, 1
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds double, double* %87, i64 %90
%92 = load double, double* %91
%93 = fcmp oge double %86, %92
br i1 %93, label %112, label %94
94: ; preds = %85, %76
%95 = load double, double* %26
%96 = load double*, double** %13
%97 = load i32, i32* %23
%98 = add nsw i32 %97, 1
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds double, double* %96, i64 %99
%101 = load double, double* %100
%102 = fcmp oge double %95, %101
br i1 %102, label %103, label %134
103: ; preds = %94
%104 = load double, double* %27
%105 = load double*, double** %13
%106 = load i32, i32* %23
%107 = add nsw i32 %106, 1
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds double, double* %105, i64 %108
%110 = load double, double* %109
%111 = fcmp olt double %104, %110
br i1 %111, label %112, label %134
112: ; preds = %103, %85
%113 = load double, double* %18
%114 = load i32, i32* %22
%115 = sitofp i32 %114 to double
%116 = load double, double* %20
%117 = fneg double %115
%118 = call double @llvm.fmuladd.f64(double %117, double %116, double %113)
store double %118, double* %25
%119 = load double, double* %17
%120 = load i32, i32* %28
%121 = sitofp i32 %120 to double
%122 = load double, double* %19
%123 = call double @llvm.fmuladd.f64(double %121, double %122, double %119)
store double %123, double* %24
%124 = load double, double* %24
%125 = fsub double %124, 2.500000e-01
%126 = load double, double* %25
%127 = load double*, double** %13
%128 = load i32, i32* %23
%129 = add nsw i32 %128, 1
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds double, double* %127, i64 %130
%132 = load double, double* %131
%133 = call i32 (double, double, double, double, double, i32, ...) bitcast (i32 (...)* @number to i32 (double, double, double, double, double, i32, ...)*)(double %125, double %126, double 1.500000e-01, double %132, double 0.000000e+00, i32 -1)
br label %134
134: ; preds = %112, %103, %94
br label %135
135: ; preds = %134, %72, %68
br label %136
136: ; preds = %135
%137 = load i32, i32* %23
%138 = add nsw i32 %137, 1
store i32 %138, i32* %23
br label %64
139: ; preds = %64
br label %140
140: ; preds = %139
%141 = load i32, i32* %22
%142 = add nsw i32 %141, 1
store i32 %142, i32* %22
br label %39
143: ; preds = %39
%144 = load i32, i32* %28
%145 = load i32, i32* %28
%146 = add nsw i32 %145, %144
store i32 %146, i32* %28
br label %147
147: ; preds = %143
%148 = load i32, i32* %21
%149 = add nsw i32 %148, 1
store i32 %149, i32* %21
br label %35
150: ; preds = %35
%151 = call i32 (i64, ...) bitcast (i32 (...)* @SetColor to i32 (i64, ...)*)(i64 117440512)
%152 = call i32 (i32, i32, ...) bitcast (i32 (...)* @penSize to i32 (i32, i32, ...)*)(i32 1, i32 1)
ret i32 1
}

LLVM IR (-O2):
define i32 @mcontrlabel(double** nocapture %0, i32 %1, i32 %2, double* nocapture %3, i32 %4, double %5, double %6, double %7, double %8) {
%10 = sdiv i32 %1, 4
%11 = tail call i32 (i64, ...) bitcast (i32 (...)* @SetColor to i32 (i64, ...)*)(i64 117440512)
%12 = add i32 %2, -5
%13 = icmp sgt i32 %2, 10
%14 = icmp sgt i32 %4, 0
br i1 %13, label %15, label %148
15: ; preds = %9
%16 = sext i32 %10 to i64
%17 = getelementptr inbounds double*, double** %0, i64 %16
%18 = sitofp i32 %10 to double
%19 = tail call double @llvm.fmuladd.f64(double %18, double %6, double %7)
%20 = fadd double %19, -2.500000e-01
%21 = zext i32 %12 to i64
%22 = zext i32 %4 to i64
br label %23
23: ; preds = %15, %55
%24 = phi i64 [ 5, %15 ], [ %56, %55 ]
%25 = load double*, double** %17
%26 = add nsw i64 %24, -1
%27 = getelementptr inbounds double, double* %25, i64 %26
%28 = load double, double* %27
%29 = getelementptr inbounds double, double* %25, i64 %24
%30 = load double, double* %29
br i1 %14, label %31, label %55
31: ; preds = %23
%32 = fcmp olt double %28, %5
%33 = fcmp olt double %30, %5
%34 = select i1 %32, i1 %33, i1 false
%35 = trunc i64 %24 to i32
%36 = sitofp i32 %35 to double
%37 = tail call double @llvm.fmuladd.f64(double %36, double %6, double %8)
br label %38
38: ; preds = %31, %53
%39 = phi i64 [ 0, %31 ], [ %40, %53 ]
%40 = add nuw nsw i64 %39, 1
br i1 %34, label %41, label %53
41: ; preds = %38
%42 = getelementptr inbounds double, double* %3, i64 %40
%43 = load double, double* %42
%44 = fcmp uge double %28, %43
%45 = fcmp ult double %30, %43
%46 = select i1 %44, i1 true, i1 %45
br i1 %46, label %47, label %51
47: ; preds = %41
%48 = fcmp oge double %28, %43
%49 = fcmp olt double %30, %43
%50 = select i1 %48, i1 %49, i1 false
br i1 %50, label %51, label %53
51: ; preds = %47, %41
%52 = tail call i32 (double, double, double, double, double, i32, ...) bitcast (i32 (...)* @number to i32 (double, double, double, double, double, i32, ...)*)(double %20, double %37, double 1.500000e-01, double %43, double 0.000000e+00, i32 -1)
br label %53
53: ; preds = %38, %51, %47
%54 = icmp eq i64 %40, %22
br i1 %54, label %55, label %38
55: ; preds = %53, %23
%56 = add nuw nsw i64 %24, 1
%57 = icmp eq i64 %56, %21
br i1 %57, label %58, label %23
58: ; preds = %55
%59 = shl nsw i32 %10, 1
br i1 %13, label %60, label %148
60: ; preds = %58
%61 = sext i32 %59 to i64
%62 = getelementptr inbounds double*, double** %0, i64 %61
%63 = sitofp i32 %59 to double
%64 = tail call double @llvm.fmuladd.f64(double %63, double %6, double %7)
%65 = fadd double %64, -2.500000e-01
%66 = zext i32 %12 to i64
%67 = zext i32 %4 to i64
br label %68
68: ; preds = %100, %60
%69 = phi i64 [ 5, %60 ], [ %101, %100 ]
%70 = load double*, double** %62
%71 = add nsw i64 %69, -1
%72 = getelementptr inbounds double, double* %70, i64 %71
%73 = load double, double* %72
%74 = getelementptr inbounds double, double* %70, i64 %69
%75 = load double, double* %74
br i1 %14, label %76, label %100
76: ; preds = %68
%77 = fcmp olt double %73, %5
%78 = fcmp olt double %75, %5
%79 = select i1 %77, i1 %78, i1 false
%80 = trunc i64 %69 to i32
%81 = sitofp i32 %80 to double
%82 = tail call double @llvm.fmuladd.f64(double %81, double %6, double %8)
br label %83
83: ; preds = %98, %76
%84 = phi i64 [ 0, %76 ], [ %85, %98 ]
%85 = add nuw nsw i64 %84, 1
br i1 %79, label %86, label %98
86: ; preds = %83
%87 = getelementptr inbounds double, double* %3, i64 %85
%88 = load double, double* %87
%89 = fcmp uge double %73, %88
%90 = fcmp ult double %75, %88
%91 = select i1 %89, i1 true, i1 %90
br i1 %91, label %92, label %96
92: ; preds = %86
%93 = fcmp oge double %73, %88
%94 = fcmp olt double %75, %88
%95 = select i1 %93, i1 %94, i1 false
br i1 %95, label %96, label %98
96: ; preds = %92, %86
%97 = tail call i32 (double, double, double, double, double, i32, ...) bitcast (i32 (...)* @number to i32 (double, double, double, double, double, i32, ...)*)(double %65, double %82, double 1.500000e-01, double %88, double 0.000000e+00, i32 -1)
br label %98
98: ; preds = %83, %96, %92
%99 = icmp eq i64 %85, %67
br i1 %99, label %100, label %83
100: ; preds = %98, %68
%101 = add nuw nsw i64 %69, 1
%102 = icmp eq i64 %101, %66
br i1 %102, label %103, label %68
103: ; preds = %100
%104 = shl nsw i32 %10, 2
br i1 %13, label %105, label %148
105: ; preds = %103
%106 = sext i32 %104 to i64
%107 = getelementptr inbounds double*, double** %0, i64 %106
%108 = sitofp i32 %104 to double
%109 = tail call double @llvm.fmuladd.f64(double %108, double %6, double %7)
%110 = fadd double %109, -2.500000e-01
%111 = zext i32 %12 to i64
%112 = zext i32 %4 to i64
br label %113
113: ; preds = %145, %105
%114 = phi i64 [ 5, %105 ], [ %146, %145 ]
%115 = load double*, double** %107
%116 = add nsw i64 %114, -1
%117 = getelementptr inbounds double, double* %115, i64 %116
%118 = load double, double* %117
%119 = getelementptr inbounds double, double* %115, i64 %114
%120 = load double, double* %119
br i1 %14, label %121, label %145
121: ; preds = %113
%122 = fcmp olt double %118, %5
%123 = fcmp olt double %120, %5
%124 = select i1 %122, i1 %123, i1 false
%125 = trunc i64 %114 to i32
%126 = sitofp i32 %125 to double
%127 = tail call double @llvm.fmuladd.f64(double %126, double %6, double %8)
br label %128
128: ; preds = %143, %121
%129 = phi i64 [ 0, %121 ], [ %130, %143 ]
%130 = add nuw nsw i64 %129, 1
br i1 %124, label %131, label %143
131: ; preds = %128
%132 = getelementptr inbounds double, double* %3, i64 %130
%133 = load double, double* %132
%134 = fcmp uge double %118, %133
%135 = fcmp ult double %120, %133
%136 = select i1 %134, i1 true, i1 %135
br i1 %136, label %137, label %141
137: ; preds = %131
%138 = fcmp oge double %118, %133
%139 = fcmp olt double %120, %133
%140 = select i1 %138, i1 %139, i1 false
br i1 %140, label %141, label %143
141: ; preds = %137, %131
%142 = tail call i32 (double, double, double, double, double, i32, ...) bitcast (i32 (...)* @number to i32 (double, double, double, double, double, i32, ...)*)(double %110, double %127, double 1.500000e-01, double %133, double 0.000000e+00, i32 -1)
br label %143
143: ; preds = %128, %141, %137
%144 = icmp eq i64 %130, %112
br i1 %144, label %145, label %128
145: ; preds = %143, %113
%146 = add nuw nsw i64 %114, 1
%147 = icmp eq i64 %146, %111
br i1 %147, label %148, label %113
148: ; preds = %145, %9, %58, %103
%149 = tail call i32 (i64, ...) bitcast (i32 (...)* @SetColor to i32 (i64, ...)*)(i64 117440512)
%150 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @penSize to i32 (i32, i32, ...)*)(i32 1, i32 1)
ret i32 1
}