int getrmap3(short *rmap, float *J, int ny, int nx, float *threshJ1, int TR,
             float RSIZE, unsigned char *rmap0, int n2bgrow, float *threshJ2,
             int oldTR, int *appear) {
  float *threshJ3;
  short *rmap1[6];
  int j, k, l, TR2[6], index[6], imgsize;
  imgsize = ny * nx;
  threshJ3 = (float *)calloc(oldTR + 1, sizeof(float));
  for (k = 0; k < 6; k++)
    rmap1[k] = (short *)calloc(imgsize, sizeof(short));
  for (j = 1; j <= oldTR; j++)
    appear[j] = 0;
  for (l = 0; l < imgsize; l++) {
    if (rmap[l] == n2bgrow)
      appear[rmap0[l]] = 1;
  }
  for (j = 1; j <= oldTR; j++) {
    if (appear[j]) {
      for (k = 0; k < 6; k++)
        TR2[k] = 0;
      for (k = 0; k < 6; k++) {
        threshJ3[j] = threshJ1[j] - (k - 2) * 0.2 * threshJ2[j];
        for (l = 0; l < imgsize; l++) {
          if (rmap0[l] == j)
            rmap1[k][l] = rmap[l];
          else
            rmap1[k][l] = -4;
        }
        TR2[k] =
            getrmap1(rmap1[k], J, ny, nx, threshJ3, TR, RSIZE, rmap0, n2bgrow);
      }
      piksrtint(6, TR2, index);
      if (TR2[0] > TR) {
        for (l = 0; l < imgsize; l++) {
          if (rmap0[l] == j)
            rmap[l] = rmap1[index[0]][l];
        }
        TR = TR2[0];
      } else {
        TR++;
        for (l = 0; l < imgsize; l++) {
          if (rmap0[l] == j && rmap[l] == n2bgrow)
            rmap[l] = TR;
        }
      }
    }
  }
  for (k = 0; k < 6; k++)
    free(rmap1[k]);
  free(threshJ3);
  return TR;
}


x86 assembly (clang, -O0):
<getrmap3>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movss  %xmm0,-0x28(%rbp)
mov    -0x14(%rbp),%eax
imul   -0x18(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    0x28(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rdi
mov    $0x4,%esi
call   1060 <calloc@plt>
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x68(%rbp)
cmpl   $0x6,-0x68(%rbp)
jge    11d8 <getrmap3+0x98>
movslq -0xb4(%rbp),%rdi
mov    $0x2,%esi
call   1060 <calloc@plt>
mov    %rax,%rcx
movslq -0x68(%rbp),%rax
mov    %rcx,-0x60(%rbp,%rax,8)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    11a3 <getrmap3+0x63>
movl   $0x1,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     1208 <getrmap3+0xc8>
mov    0x30(%rbp),%rax
movslq -0x64(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    11df <getrmap3+0x9f>
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0xb4(%rbp),%eax
jge    125d <getrmap3+0x11d>
mov    -0x8(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movswl (%rax,%rcx,2),%eax
cmp    0x18(%rbp),%eax
jne    124a <getrmap3+0x10a>
mov    0x30(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq -0x6c(%rbp),%rdx
movzbl (%rcx,%rdx,1),%ecx
movl   $0x1,(%rax,%rcx,4)
jmp    124f <getrmap3+0x10f>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    120f <getrmap3+0xcf>
movl   $0x1,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     1511 <getrmap3+0x3d1>
mov    0x30(%rbp),%rax
movslq -0x64(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     14fe <getrmap3+0x3be>
movl   $0x0,-0x68(%rbp)
cmpl   $0x6,-0x68(%rbp)
jge    12b0 <getrmap3+0x170>
movslq -0x68(%rbp),%rax
movl   $0x0,-0x90(%rbp,%rax,4)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1289 <getrmap3+0x149>
movl   $0x0,-0x68(%rbp)
cmpl   $0x6,-0x68(%rbp)
jge    13f1 <getrmap3+0x2b1>
mov    -0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
mov    -0x68(%rbp),%eax
sub    $0x2,%eax
cvtsi2sd %eax,%xmm0
movsd  0xd1c(%rip),%xmm2
mulsd  %xmm2,%xmm0
mov    0x20(%rbp),%rax
movslq -0x64(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm2
cvtss2sd %xmm2,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x64(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0xb4(%rbp),%eax
jge    139c <getrmap3+0x25c>
mov    0x10(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    -0x64(%rbp),%eax
jne    1376 <getrmap3+0x236>
mov    -0x8(%rbp),%rax
movslq -0x6c(%rbp),%rcx
mov    (%rax,%rcx,2),%dx
movslq -0x68(%rbp),%rax
mov    -0x60(%rbp,%rax,8),%rax
movslq -0x6c(%rbp),%rcx
mov    %dx,(%rax,%rcx,2)
jmp    1389 <getrmap3+0x249>
movslq -0x68(%rbp),%rax
mov    -0x60(%rbp,%rax,8),%rax
movslq -0x6c(%rbp),%rcx
movw   $0xfffc,(%rax,%rcx,2)
jmp    138e <getrmap3+0x24e>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1330 <getrmap3+0x1f0>
movslq -0x68(%rbp),%rax
mov    -0x60(%rbp,%rax,8),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x30(%rbp),%r8
mov    -0x24(%rbp),%r9d
movss  -0x28(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x10(%rbp),%r10
mov    0x18(%rbp),%eax
mov    %r10,(%rsp)
mov    %eax,0x8(%rsp)
mov    $0x1,%al
call   1050 <getrmap1@plt>
mov    %eax,%ecx
movslq -0x68(%rbp),%rax
mov    %ecx,-0x90(%rbp,%rax,4)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    12b7 <getrmap3+0x177>
lea    -0x90(%rbp),%rsi
lea    -0xb0(%rbp),%rdx
mov    $0x6,%edi
mov    $0x0,%al
call   1040 <piksrtint@plt>
mov    -0x90(%rbp),%eax
cmp    -0x24(%rbp),%eax
jle    1486 <getrmap3+0x346>
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0xb4(%rbp),%eax
jge    1478 <getrmap3+0x338>
mov    0x10(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    -0x64(%rbp),%eax
jne    1465 <getrmap3+0x325>
movslq -0xb0(%rbp),%rax
mov    -0x60(%rbp,%rax,8),%rax
movslq -0x6c(%rbp),%rcx
mov    (%rax,%rcx,2),%dx
mov    -0x8(%rbp),%rax
movslq -0x6c(%rbp),%rcx
mov    %dx,(%rax,%rcx,2)
jmp    146a <getrmap3+0x32a>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1421 <getrmap3+0x2e1>
mov    -0x90(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    14f9 <getrmap3+0x3b9>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0xb4(%rbp),%eax
jge    14f4 <getrmap3+0x3b4>
mov    0x10(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    -0x64(%rbp),%eax
jne    14e1 <getrmap3+0x3a1>
mov    -0x8(%rbp),%rax
movslq -0x6c(%rbp),%rcx
movswl (%rax,%rcx,2),%eax
cmp    0x18(%rbp),%eax
jne    14e1 <getrmap3+0x3a1>
mov    -0x24(%rbp),%eax
mov    %ax,%dx
mov    -0x8(%rbp),%rax
movslq -0x6c(%rbp),%rcx
mov    %dx,(%rax,%rcx,2)
jmp    14e6 <getrmap3+0x3a6>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1496 <getrmap3+0x356>
jmp    14f9 <getrmap3+0x3b9>
jmp    14fe <getrmap3+0x3be>
jmp    1503 <getrmap3+0x3c3>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1264 <getrmap3+0x124>
movl   $0x0,-0x68(%rbp)
cmpl   $0x6,-0x68(%rbp)
jge    153e <getrmap3+0x3fe>
movslq -0x68(%rbp),%rax
mov    -0x60(%rbp,%rax,8),%rdi
call   1030 <free@plt>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1518 <getrmap3+0x3d8>
mov    -0x30(%rbp),%rdi
call   1030 <free@plt>
mov    -0x24(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<getrmap3>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xe8,%rsp
movss  %xmm0,0xc(%rsp)
mov    %r9d,%ebx
mov    %r8,0xa8(%rsp)
mov    %rsi,0xa0(%rsp)
mov    %rdi,%rbp
mov    0x140(%rsp),%r14
mov    0x138(%rsp),%r13d
mov    %ecx,0x24(%rsp)
mov    %ecx,%r12d
mov    %edx,0x20(%rsp)
imul   %edx,%r12d
lea    0x1(%r13),%r15d
movslq %r15d,%rdi
mov    $0x4,%esi
call   1070 <calloc@plt>
mov    %rax,0x28(%rsp)
mov    %r12d,0x8(%rsp)
movslq %r12d,%r12
mov    $0x2,%esi
mov    %r12,%rdi
call   1070 <calloc@plt>
mov    %rax,0x88(%rsp)
mov    %rax,0x30(%rsp)
mov    $0x2,%esi
mov    %r12,%rdi
call   1070 <calloc@plt>
mov    %rax,0x80(%rsp)
mov    %rax,0x38(%rsp)
mov    $0x2,%esi
mov    %r12,%rdi
call   1070 <calloc@plt>
mov    %rax,0x78(%rsp)
mov    %rax,0x40(%rsp)
mov    $0x2,%esi
mov    %r12,%rdi
call   1070 <calloc@plt>
mov    %rax,0x70(%rsp)
mov    %rax,0x48(%rsp)
mov    $0x2,%esi
mov    %r12,%rdi
call   1070 <calloc@plt>
mov    %rax,0x68(%rsp)
mov    %rax,0x50(%rsp)
mov    $0x2,%esi
mov    %r12,%rdi
call   1070 <calloc@plt>
mov    %rax,0x60(%rsp)
mov    %rax,0x58(%rsp)
test   %r13d,%r13d
jle    1261 <getrmap3+0x111>
lea    0x4(%r14),%rdi
mov    %r13d,%edx
shl    $0x2,%rdx
xor    %esi,%esi
call   1060 <memset@plt>
mov    0x128(%rsp),%esi
mov    0x120(%rsp),%r12
mov    0x8(%rsp),%eax
mov    %eax,%ecx
mov    %rcx,0x10(%rsp)
test   %eax,%eax
jle    12a9 <getrmap3+0x159>
cmpl   $0x1,0x8(%rsp)
jne    169d <getrmap3+0x54d>
xor    %eax,%eax
testb  $0x1,0x10(%rsp)
je     12a9 <getrmap3+0x159>
movswl 0x0(%rbp,%rax,2),%ecx
cmp    %esi,%ecx
jne    12a9 <getrmap3+0x159>
movzbl (%r12,%rax,1),%eax
movl   $0x1,(%r14,%rax,4)
test   %r13d,%r13d
jle    1639 <getrmap3+0x4e9>
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x98(%rsp)
mov    %r15d,%eax
mov    %rax,0x90(%rsp)
mov    0x10(%rsp),%r13
lea    -0x1(%r13),%rax
mov    %rax,0x18(%rsp)
and    $0xfffffffe,%r13d
mov    $0x1,%r15d
jmp    1306 <getrmap3+0x1b6>
nopw   0x0(%rax,%rax,1)
mov    %ebx,%edi
add    $0x1,%r15
mov    %edi,%ebx
cmp    0x90(%rsp),%r15
je     163b <getrmap3+0x4eb>
cmpl   $0x0,(%r14,%r15,4)
je     12f0 <getrmap3+0x1a0>
mov    %ebx,0xc(%rsp)
xorps  %xmm0,%xmm0
movaps %xmm0,0xb0(%rsp)
movq   $0x0,0xc0(%rsp)
xor    %r14d,%r14d
mov    0x28(%rsp),%rbx
jmp    1395 <getrmap3+0x245>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x30(%rsp,%r14,8),%rdi
mov    0x128(%rsp),%ebx
mov    %rbx,%r10
mov    0xa0(%rsp),%rsi
mov    0x20(%rsp),%edx
mov    0x24(%rsp),%ecx
mov    %r8,%rbx
mov    0xc(%rsp),%r9d
movsd  0x98(%rsp),%xmm0
mov    $0x1,%al
push   %r10
push   %r12
call   1050 <getrmap1@plt>
add    $0x10,%rsp
mov    %eax,0xb0(%rsp,%r14,4)
add    $0x1,%r14
cmp    $0x6,%r14
je     1490 <getrmap3+0x340>
lea    -0x2(%r14),%eax
mov    0xa8(%rsp),%rcx
movss  (%rcx,%r15,4),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mov    0x130(%rsp),%rax
movss  (%rax,%r15,4),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  0xc34(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,(%rbx,%r15,4)
cmpl   $0x0,0x8(%rsp)
mov    %rbx,%r8
jle    1340 <getrmap3+0x1f0>
cmpq   $0x0,0x18(%rsp)
je     1450 <getrmap3+0x300>
mov    0x30(%rsp,%r14,8),%rdi
xor    %eax,%eax
mov    0x128(%rsp),%ebx
mov    %rbx,%r10
jmp    141e <getrmap3+0x2ce>
nopw   0x0(%rax,%rax,1)
mov    %cx,0x2(%rdi,%rax,2)
add    $0x2,%rax
cmp    %rax,%r13
je     145c <getrmap3+0x30c>
movzbl (%r12,%rax,1),%esi
mov    $0xfffc,%cx
mov    $0xfffc,%dx
cmp    %rsi,%r15
jne    1435 <getrmap3+0x2e5>
movzwl 0x0(%rbp,%rax,2),%edx
mov    %dx,(%rdi,%rax,2)
movzbl 0x1(%r12,%rax,1),%edx
cmp    %rdx,%r15
jne    1410 <getrmap3+0x2c0>
movzwl 0x2(%rbp,%rax,2),%ecx
jmp    1410 <getrmap3+0x2c0>
nopl   0x0(%rax,%rax,1)
xor    %eax,%eax
mov    0x128(%rsp),%ebx
mov    %rbx,%r10
testb  $0x1,0x10(%rsp)
je     134f <getrmap3+0x1ff>
movzbl (%r12,%rax,1),%edx
mov    $0xfffc,%cx
cmp    %rdx,%r15
jne    147a <getrmap3+0x32a>
movzwl 0x0(%rbp,%rax,2),%ecx
mov    0x30(%rsp,%r14,8),%rdi
mov    %cx,(%rdi,%rax,2)
jmp    134f <getrmap3+0x1ff>
nopl   0x0(%rax,%rax,1)
mov    $0x6,%edi
lea    0xb0(%rsp),%rsi
lea    0xd0(%rsp),%rdx
xor    %eax,%eax
call   1040 <piksrtint@plt>
mov    0xb0(%rsp),%edi
mov    0xc(%rsp),%esi
cmp    %esi,%edi
jle    1540 <getrmap3+0x3f0>
cmpl   $0x0,0x8(%rsp)
jle    15b0 <getrmap3+0x460>
movslq 0xd0(%rsp),%rax
cmpq   $0x0,0x18(%rsp)
je     15cc <getrmap3+0x47c>
xor    %ecx,%ecx
mov    0x140(%rsp),%r14
jmp    14fd <getrmap3+0x3ad>
nopw   0x0(%rax,%rax,1)
add    $0x2,%rcx
cmp    %rcx,%r13
je     15d6 <getrmap3+0x486>
movzbl (%r12,%rcx,1),%edx
cmp    %rdx,%r15
jne    1515 <getrmap3+0x3c5>
mov    0x30(%rsp,%rax,8),%rdx
movzwl (%rdx,%rcx,2),%edx
mov    %dx,0x0(%rbp,%rcx,2)
movzbl 0x1(%r12,%rcx,1),%edx
cmp    %rdx,%r15
jne    14f0 <getrmap3+0x3a0>
mov    0x30(%rsp,%rax,8),%rdx
movzwl 0x2(%rdx,%rcx,2),%edx
mov    %dx,0x2(%rbp,%rcx,2)
jmp    14f0 <getrmap3+0x3a0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%esi
cmpl   $0x0,0x8(%rsp)
jle    15bd <getrmap3+0x46d>
cmpq   $0x0,0x18(%rsp)
je     1602 <getrmap3+0x4b2>
xor    %eax,%eax
mov    0x140(%rsp),%r14
mov    0x128(%rsp),%edx
jmp    157d <getrmap3+0x42d>
nopl   0x0(%rax)
add    $0x2,%rax
cmp    %rax,%r13
je     1613 <getrmap3+0x4c3>
movzbl (%r12,%rax,1),%ecx
cmp    %rcx,%r15
jne    1595 <getrmap3+0x445>
movswl 0x0(%rbp,%rax,2),%ecx
cmp    %edx,%ecx
jne    1595 <getrmap3+0x445>
mov    %si,0x0(%rbp,%rax,2)
movzbl 0x1(%r12,%rax,1),%ecx
cmp    %rcx,%r15
jne    1570 <getrmap3+0x420>
movswl 0x2(%rbp,%rax,2),%ecx
cmp    %edx,%ecx
jne    1570 <getrmap3+0x420>
mov    %si,0x2(%rbp,%rax,2)
jmp    1570 <getrmap3+0x420>
mov    0x140(%rsp),%r14
jmp    12f2 <getrmap3+0x1a2>
mov    %esi,%edi
mov    0x140(%rsp),%r14
jmp    12f2 <getrmap3+0x1a2>
xor    %ecx,%ecx
mov    0x140(%rsp),%r14
testb  $0x1,0x10(%rsp)
je     12f2 <getrmap3+0x1a2>
movzbl (%r12,%rcx,1),%edx
cmp    %rdx,%r15
jne    12f2 <getrmap3+0x1a2>
mov    0x30(%rsp,%rax,8),%rax
movzwl (%rax,%rcx,2),%eax
mov    %ax,0x0(%rbp,%rcx,2)
jmp    12f2 <getrmap3+0x1a2>
xor    %eax,%eax
mov    0x140(%rsp),%r14
mov    0x128(%rsp),%edx
testb  $0x1,0x10(%rsp)
je     1632 <getrmap3+0x4e2>
movzbl (%r12,%rax,1),%ecx
cmp    %rcx,%r15
jne    1632 <getrmap3+0x4e2>
movswl 0x0(%rbp,%rax,2),%ecx
cmp    %edx,%ecx
jne    1632 <getrmap3+0x4e2>
mov    %si,0x0(%rbp,%rax,2)
mov    %esi,%edi
jmp    12f2 <getrmap3+0x1a2>
mov    %ebx,%edi
mov    %edi,%ebx
mov    0x88(%rsp),%rdi
call   1030 <free@plt>
mov    0x80(%rsp),%rdi
call   1030 <free@plt>
mov    0x78(%rsp),%rdi
call   1030 <free@plt>
mov    0x70(%rsp),%rdi
call   1030 <free@plt>
mov    0x68(%rsp),%rdi
call   1030 <free@plt>
mov    0x60(%rsp),%rdi
call   1030 <free@plt>
mov    0x28(%rsp),%rdi
call   1030 <free@plt>
mov    %ebx,%eax
add    $0xe8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x10(%rsp),%rcx
and    $0xfffffffe,%ecx
xor    %eax,%eax
jmp    16bd <getrmap3+0x56d>
nopl   0x0(%rax)
add    $0x2,%rax
cmp    %rax,%rcx
je     128c <getrmap3+0x13c>
movswl 0x0(%rbp,%rax,2),%edx
cmp    %esi,%edx
jne    16d3 <getrmap3+0x583>
movzbl (%r12,%rax,1),%edx
movl   $0x1,(%r14,%rdx,4)
movswl 0x2(%rbp,%rax,2),%edx
cmp    %esi,%edx
jne    16b0 <getrmap3+0x560>
movzbl 0x1(%r12,%rax,1),%edx
movl   $0x1,(%r14,%rdx,4)
jmp    16b0 <getrmap3+0x560>

LLVM IR (-O0):
define i32 @getrmap3(i16* %0, float* %1, i32 %2, i32 %3, float* %4, i32 %5, float %6, i8* %7, i32 %8, float* %9, i32 %10, i32* %11) {
%13 = alloca i16*
%14 = alloca float*
%15 = alloca i32
%16 = alloca i32
%17 = alloca float*
%18 = alloca i32
%19 = alloca float
%20 = alloca i8*
%21 = alloca i32
%22 = alloca float*
%23 = alloca i32
%24 = alloca i32*
%25 = alloca float*
%26 = alloca [6 x i16*]
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca [6 x i32]
%31 = alloca [6 x i32]
%32 = alloca i32
store i16* %0, i16** %13
store float* %1, float** %14
store i32 %2, i32* %15
store i32 %3, i32* %16
store float* %4, float** %17
store i32 %5, i32* %18
store float %6, float* %19
store i8* %7, i8** %20
store i32 %8, i32* %21
store float* %9, float** %22
store i32 %10, i32* %23
store i32* %11, i32** %24
%33 = load i32, i32* %15
%34 = load i32, i32* %16
%35 = mul nsw i32 %33, %34
store i32 %35, i32* %32
%36 = load i32, i32* %23
%37 = add nsw i32 %36, 1
%38 = sext i32 %37 to i64
%39 = call i8* @calloc(i64 %38, i64 4)
%40 = bitcast i8* %39 to float*
store float* %40, float** %25
store i32 0, i32* %28
br label %41
41: ; preds = %52, %12
%42 = load i32, i32* %28
%43 = icmp slt i32 %42, 6
br i1 %43, label %44, label %55
44: ; preds = %41
%45 = load i32, i32* %32
%46 = sext i32 %45 to i64
%47 = call i8* @calloc(i64 %46, i64 2)
%48 = bitcast i8* %47 to i16*
%49 = load i32, i32* %28
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [6 x i16*], [6 x i16*]* %26, i64 0, i64 %50
store i16* %48, i16** %51
br label %52
52: ; preds = %44
%53 = load i32, i32* %28
%54 = add nsw i32 %53, 1
store i32 %54, i32* %28
br label %41
55: ; preds = %41
store i32 1, i32* %27
br label %56
56: ; preds = %65, %55
%57 = load i32, i32* %27
%58 = load i32, i32* %23
%59 = icmp sle i32 %57, %58
br i1 %59, label %60, label %68
60: ; preds = %56
%61 = load i32*, i32** %24
%62 = load i32, i32* %27
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i32, i32* %61, i64 %63
store i32 0, i32* %64
br label %65
65: ; preds = %60
%66 = load i32, i32* %27
%67 = add nsw i32 %66, 1
store i32 %67, i32* %27
br label %56
68: ; preds = %56
store i32 0, i32* %29
br label %69
69: ; preds = %92, %68
%70 = load i32, i32* %29
%71 = load i32, i32* %32
%72 = icmp slt i32 %70, %71
br i1 %72, label %73, label %95
73: ; preds = %69
%74 = load i16*, i16** %13
%75 = load i32, i32* %29
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds i16, i16* %74, i64 %76
%78 = load i16, i16* %77
%79 = sext i16 %78 to i32
%80 = load i32, i32* %21
%81 = icmp eq i32 %79, %80
br i1 %81, label %82, label %91
82: ; preds = %73
%83 = load i32*, i32** %24
%84 = load i8*, i8** %20
%85 = load i32, i32* %29
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i8, i8* %84, i64 %86
%88 = load i8, i8* %87
%89 = zext i8 %88 to i64
%90 = getelementptr inbounds i32, i32* %83, i64 %89
store i32 1, i32* %90
br label %91
91: ; preds = %82, %73
br label %92
92: ; preds = %91
%93 = load i32, i32* %29
%94 = add nsw i32 %93, 1
store i32 %94, i32* %29
br label %69
95: ; preds = %69
store i32 1, i32* %27
br label %96
96: ; preds = %287, %95
%97 = load i32, i32* %27
%98 = load i32, i32* %23
%99 = icmp sle i32 %97, %98
br i1 %99, label %100, label %290
100: ; preds = %96
%101 = load i32*, i32** %24
%102 = load i32, i32* %27
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds i32, i32* %101, i64 %103
%105 = load i32, i32* %104
%106 = icmp ne i32 %105, 0
br i1 %106, label %107, label %286
107: ; preds = %100
store i32 0, i32* %28
br label %108
108: ; preds = %115, %107
%109 = load i32, i32* %28
%110 = icmp slt i32 %109, 6
br i1 %110, label %111, label %118
111: ; preds = %108
%112 = load i32, i32* %28
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [6 x i32], [6 x i32]* %30, i64 0, i64 %113
store i32 0, i32* %114
br label %115
115: ; preds = %111
%116 = load i32, i32* %28
%117 = add nsw i32 %116, 1
store i32 %117, i32* %28
br label %108
118: ; preds = %108
store i32 0, i32* %28
br label %119
119: ; preds = %202, %118
%120 = load i32, i32* %28
%121 = icmp slt i32 %120, 6
br i1 %121, label %122, label %205
122: ; preds = %119
%123 = load float*, float** %17
%124 = load i32, i32* %27
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds float, float* %123, i64 %125
%127 = load float, float* %126
%128 = fpext float %127 to double
%129 = load i32, i32* %28
%130 = sub nsw i32 %129, 2
%131 = sitofp i32 %130 to double
%132 = fmul double %131, 2.000000e-01
%133 = load float*, float** %22
%134 = load i32, i32* %27
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds float, float* %133, i64 %135
%137 = load float, float* %136
%138 = fpext float %137 to double
%139 = fneg double %132
%140 = call double @llvm.fmuladd.f64(double %139, double %138, double %128)
%141 = fptrunc double %140 to float
%142 = load float*, float** %25
%143 = load i32, i32* %27
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds float, float* %142, i64 %144
store float %141, float* %145
store i32 0, i32* %29
br label %146
146: ; preds = %181, %122
%147 = load i32, i32* %29
%148 = load i32, i32* %32
%149 = icmp slt i32 %147, %148
br i1 %149, label %150, label %184
150: ; preds = %146
%151 = load i8*, i8** %20
%152 = load i32, i32* %29
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds i8, i8* %151, i64 %153
%155 = load i8, i8* %154
%156 = zext i8 %155 to i32
%157 = load i32, i32* %27
%158 = icmp eq i32 %156, %157
br i1 %158, label %159, label %172
159: ; preds = %150
%160 = load i16*, i16** %13
%161 = load i32, i32* %29
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds i16, i16* %160, i64 %162
%164 = load i16, i16* %163
%165 = load i32, i32* %28
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds [6 x i16*], [6 x i16*]* %26, i64 0, i64 %166
%168 = load i16*, i16** %167
%169 = load i32, i32* %29
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds i16, i16* %168, i64 %170
store i16 %164, i16* %171
br label %180
172: ; preds = %150
%173 = load i32, i32* %28
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds [6 x i16*], [6 x i16*]* %26, i64 0, i64 %174
%176 = load i16*, i16** %175
%177 = load i32, i32* %29
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds i16, i16* %176, i64 %178
store i16 -4, i16* %179
br label %180
180: ; preds = %172, %159
br label %181
181: ; preds = %180
%182 = load i32, i32* %29
%183 = add nsw i32 %182, 1
store i32 %183, i32* %29
br label %146
184: ; preds = %146
%185 = load i32, i32* %28
%186 = sext i32 %185 to i64
%187 = getelementptr inbounds [6 x i16*], [6 x i16*]* %26, i64 0, i64 %186
%188 = load i16*, i16** %187
%189 = load float*, float** %14
%190 = load i32, i32* %15
%191 = load i32, i32* %16
%192 = load float*, float** %25
%193 = load i32, i32* %18
%194 = load float, float* %19
%195 = fpext float %194 to double
%196 = load i8*, i8** %20
%197 = load i32, i32* %21
%198 = call i32 (i16*, float*, i32, i32, float*, i32, double, i8*, i32, ...) bitcast (i32 (...)* @getrmap1 to i32 (i16*, float*, i32, i32, float*, i32, double, i8*, i32, ...)*)(i16* %188, float* %189, i32 %190, i32 %191, float* %192, i32 %193, double %195, i8* %196, i32 %197)
%199 = load i32, i32* %28
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [6 x i32], [6 x i32]* %30, i64 0, i64 %200
store i32 %198, i32* %201
br label %202
202: ; preds = %184
%203 = load i32, i32* %28
%204 = add nsw i32 %203, 1
store i32 %204, i32* %28
br label %119
205: ; preds = %119
%206 = getelementptr inbounds [6 x i32], [6 x i32]* %30, i64 0, i64 0
%207 = getelementptr inbounds [6 x i32], [6 x i32]* %31, i64 0, i64 0
%208 = call i32 (i32, i32*, i32*, ...) bitcast (i32 (...)* @piksrtint to i32 (i32, i32*, i32*, ...)*)(i32 6, i32* %206, i32* %207)
%209 = getelementptr inbounds [6 x i32], [6 x i32]* %30, i64 0, i64 0
%210 = load i32, i32* %209
%211 = load i32, i32* %18
%212 = icmp sgt i32 %210, %211
br i1 %212, label %213, label %248
213: ; preds = %205
store i32 0, i32* %29
br label %214
214: ; preds = %242, %213
%215 = load i32, i32* %29
%216 = load i32, i32* %32
%217 = icmp slt i32 %215, %216
br i1 %217, label %218, label %245
218: ; preds = %214
%219 = load i8*, i8** %20
%220 = load i32, i32* %29
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds i8, i8* %219, i64 %221
%223 = load i8, i8* %222
%224 = zext i8 %223 to i32
%225 = load i32, i32* %27
%226 = icmp eq i32 %224, %225
br i1 %226, label %227, label %241
227: ; preds = %218
%228 = getelementptr inbounds [6 x i32], [6 x i32]* %31, i64 0, i64 0
%229 = load i32, i32* %228
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds [6 x i16*], [6 x i16*]* %26, i64 0, i64 %230
%232 = load i16*, i16** %231
%233 = load i32, i32* %29
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds i16, i16* %232, i64 %234
%236 = load i16, i16* %235
%237 = load i16*, i16** %13
%238 = load i32, i32* %29
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds i16, i16* %237, i64 %239
store i16 %236, i16* %240
br label %241
241: ; preds = %227, %218
br label %242
242: ; preds = %241
%243 = load i32, i32* %29
%244 = add nsw i32 %243, 1
store i32 %244, i32* %29
br label %214
245: ; preds = %214
%246 = getelementptr inbounds [6 x i32], [6 x i32]* %30, i64 0, i64 0
%247 = load i32, i32* %246
store i32 %247, i32* %18
br label %285
248: ; preds = %205
%249 = load i32, i32* %18
%250 = add nsw i32 %249, 1
store i32 %250, i32* %18
store i32 0, i32* %29
br label %251
251: ; preds = %281, %248
%252 = load i32, i32* %29
%253 = load i32, i32* %32
%254 = icmp slt i32 %252, %253
br i1 %254, label %255, label %284
255: ; preds = %251
%256 = load i8*, i8** %20
%257 = load i32, i32* %29
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds i8, i8* %256, i64 %258
%260 = load i8, i8* %259
%261 = zext i8 %260 to i32
%262 = load i32, i32* %27
%263 = icmp eq i32 %261, %262
br i1 %263, label %264, label %280
264: ; preds = %255
%265 = load i16*, i16** %13
%266 = load i32, i32* %29
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds i16, i16* %265, i64 %267
%269 = load i16, i16* %268
%270 = sext i16 %269 to i32
%271 = load i32, i32* %21
%272 = icmp eq i32 %270, %271
br i1 %272, label %273, label %280
273: ; preds = %264
%274 = load i32, i32* %18
%275 = trunc i32 %274 to i16
%276 = load i16*, i16** %13
%277 = load i32, i32* %29
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds i16, i16* %276, i64 %278
store i16 %275, i16* %279
br label %280
280: ; preds = %273, %264, %255
br label %281
281: ; preds = %280
%282 = load i32, i32* %29
%283 = add nsw i32 %282, 1
store i32 %283, i32* %29
br label %251
284: ; preds = %251
br label %285
285: ; preds = %284, %245
br label %286
286: ; preds = %285, %100
br label %287
287: ; preds = %286
%288 = load i32, i32* %27
%289 = add nsw i32 %288, 1
store i32 %289, i32* %27
br label %96
290: ; preds = %96
store i32 0, i32* %28
br label %291
291: ; preds = %300, %290
%292 = load i32, i32* %28
%293 = icmp slt i32 %292, 6
br i1 %293, label %294, label %303
294: ; preds = %291
%295 = load i32, i32* %28
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds [6 x i16*], [6 x i16*]* %26, i64 0, i64 %296
%298 = load i16*, i16** %297
%299 = bitcast i16* %298 to i8*
br label %300
300: ; preds = %294
%301 = load i32, i32* %28
%302 = add nsw i32 %301, 1
store i32 %302, i32* %28
br label %291
303: ; preds = %291
%304 = load float*, float** %25
%305 = bitcast float* %304 to i8*
%306 = load i32, i32* %18
ret i32 %306
}

LLVM IR (-O2):
define i32 @getrmap3(i16* nocapture %0, float* %1, i32 %2, i32 %3, float* nocapture %4, i32 %5, float %6, i8* %7, i32 %8, float* nocapture %9, i32 %10, i32* nocapture %11) {
%13 = alloca [6 x i16*]
%14 = alloca [6 x i32]
%15 = bitcast [6 x i32]* %14 to i8*
%16 = alloca [6 x i32]
%17 = bitcast [6 x i16*]* %13 to i8*
%18 = bitcast [6 x i32]* %16 to i8*
%19 = mul nsw i32 %3, %2
%20 = add i32 %10, 1
%21 = sext i32 %20 to i64
%22 = tail call i8* @calloc(i64 %21, i64 4)
%23 = sext i32 %19 to i64
%24 = tail call i8* @calloc(i64 %23, i64 2)
%25 = bitcast [6 x i16*]* %13 to i8**
store i8* %24, i8** %25
%26 = tail call i8* @calloc(i64 %23, i64 2)
%27 = getelementptr inbounds [6 x i16*], [6 x i16*]* %13, i64 0, i64 1
%28 = bitcast i16** %27 to i8**
store i8* %26, i8** %28
%29 = tail call i8* @calloc(i64 %23, i64 2)
%30 = getelementptr inbounds [6 x i16*], [6 x i16*]* %13, i64 0, i64 2
%31 = bitcast i16** %30 to i8**
store i8* %29, i8** %31
%32 = tail call i8* @calloc(i64 %23, i64 2)
%33 = getelementptr inbounds [6 x i16*], [6 x i16*]* %13, i64 0, i64 3
%34 = bitcast i16** %33 to i8**
store i8* %32, i8** %34
%35 = tail call i8* @calloc(i64 %23, i64 2)
%36 = getelementptr inbounds [6 x i16*], [6 x i16*]* %13, i64 0, i64 4
%37 = bitcast i16** %36 to i8**
store i8* %35, i8** %37
%38 = tail call i8* @calloc(i64 %23, i64 2)
%39 = getelementptr inbounds [6 x i16*], [6 x i16*]* %13, i64 0, i64 5
%40 = bitcast i16** %39 to i8**
store i8* %38, i8** %40
%41 = bitcast i8* %22 to float*
%42 = icmp slt i32 %10, 1
br i1 %42, label %48, label %43
43: ; preds = %12
%44 = getelementptr i32, i32* %11, i64 1
%45 = bitcast i32* %44 to i8*
%46 = zext i32 %10 to i64
%47 = shl nuw nsw i64 %46, 2
br label %48
48: ; preds = %43, %12
%49 = icmp sgt i32 %19, 0
br i1 %49, label %50, label %69
50: ; preds = %48
%51 = zext i32 %19 to i64
%52 = and i64 %51, 1
%53 = icmp eq i32 %19, 1
br i1 %53, label %56, label %54
54: ; preds = %50
%55 = and i64 %51, 4294967294
br label %89
56: ; preds = %112, %50
%57 = phi i64 [ 0, %50 ], [ %113, %112 ]
%58 = icmp eq i64 %52, 0
br i1 %58, label %69, label %59
59: ; preds = %56
%60 = getelementptr inbounds i16, i16* %0, i64 %57
%61 = load i16, i16* %60
%62 = sext i16 %61 to i32
%63 = icmp eq i32 %62, %8
br i1 %63, label %64, label %69
64: ; preds = %59
%65 = getelementptr inbounds i8, i8* %7, i64 %57
%66 = load i8, i8* %65
%67 = zext i8 %66 to i64
%68 = getelementptr inbounds i32, i32* %11, i64 %67
store i32 1, i32* %68
br label %69
69: ; preds = %56, %64, %59, %48
br i1 %42, label %116, label %70
70: ; preds = %69
%71 = fpext float %6 to double
%72 = getelementptr inbounds [6 x i32], [6 x i32]* %14, i64 0, i64 0
%73 = getelementptr inbounds [6 x i32], [6 x i32]* %16, i64 0, i64 0
%74 = zext i32 %20 to i64
%75 = zext i32 %19 to i64
%76 = add nsw i64 %75, -1
%77 = and i64 %75, 1
%78 = icmp eq i64 %76, 0
%79 = and i64 %75, 4294967294
%80 = icmp eq i64 %77, 0
%81 = and i64 %75, 1
%82 = icmp eq i64 %76, 0
%83 = and i64 %75, 4294967294
%84 = icmp eq i64 %81, 0
%85 = and i64 %75, 1
%86 = icmp eq i64 %76, 0
%87 = and i64 %75, 4294967294
%88 = icmp eq i64 %85, 0
br label %118
89: ; preds = %112, %54
%90 = phi i64 [ 0, %54 ], [ %113, %112 ]
%91 = phi i64 [ 0, %54 ], [ %114, %112 ]
%92 = getelementptr inbounds i16, i16* %0, i64 %90
%93 = load i16, i16* %92
%94 = sext i16 %93 to i32
%95 = icmp eq i32 %94, %8
br i1 %95, label %96, label %101
96: ; preds = %89
%97 = getelementptr inbounds i8, i8* %7, i64 %90
%98 = load i8, i8* %97
%99 = zext i8 %98 to i64
%100 = getelementptr inbounds i32, i32* %11, i64 %99
store i32 1, i32* %100
br label %101
101: ; preds = %89, %96
%102 = or i64 %90, 1
%103 = getelementptr inbounds i16, i16* %0, i64 %102
%104 = load i16, i16* %103
%105 = sext i16 %104 to i32
%106 = icmp eq i32 %105, %8
br i1 %106, label %107, label %112
107: ; preds = %101
%108 = getelementptr inbounds i8, i8* %7, i64 %102
%109 = load i8, i8* %108
%110 = zext i8 %109 to i64
%111 = getelementptr inbounds i32, i32* %11, i64 %110
store i32 1, i32* %111
br label %112
112: ; preds = %107, %101
%113 = add nuw nsw i64 %90, 2
%114 = add i64 %91, 2
%115 = icmp eq i64 %114, %55
br i1 %115, label %56, label %89
116: ; preds = %289, %69
%117 = phi i32 [ %5, %69 ], [ %290, %289 ]
ret i32 %117
118: ; preds = %70, %289
%119 = phi i64 [ 1, %70 ], [ %291, %289 ]
%120 = phi i32 [ %5, %70 ], [ %290, %289 ]
%121 = getelementptr inbounds i32, i32* %11, i64 %119
%122 = load i32, i32* %121
%123 = icmp eq i32 %122, 0
br i1 %123, label %289, label %124
124: ; preds = %118
%125 = getelementptr inbounds float, float* %4, i64 %119
%126 = getelementptr inbounds float, float* %9, i64 %119
%127 = getelementptr inbounds float, float* %41, i64 %119
br label %128
128: ; preds = %124, %189
%129 = phi i64 [ 0, %124 ], [ %193, %189 ]
%130 = load float, float* %125
%131 = fpext float %130 to double
%132 = trunc i64 %129 to i32
%133 = add i32 %132, -2
%134 = sitofp i32 %133 to double
%135 = load float, float* %126
%136 = fpext float %135 to double
%137 = fmul double %134, -2.000000e-01
%138 = call double @llvm.fmuladd.f64(double %137, double %136, double %131)
%139 = fptrunc double %138 to float
store float %139, float* %127
%140 = getelementptr inbounds [6 x i16*], [6 x i16*]* %13, i64 0, i64 %129
br i1 %49, label %141, label %145
141: ; preds = %128
br i1 %78, label %174, label %142
142: ; preds = %141
%143 = load i16*, i16** %140
%144 = load i16*, i16** %140
br label %147
145: ; preds = %128
%146 = load i16*, i16** %140
br label %189
147: ; preds = %168, %142
%148 = phi i64 [ 0, %142 ], [ %171, %168 ]
%149 = phi i64 [ 0, %142 ], [ %172, %168 ]
%150 = getelementptr inbounds i8, i8* %7, i64 %148
%151 = load i8, i8* %150
%152 = zext i8 %151 to i64
%153 = icmp eq i64 %119, %152
br i1 %153, label %154, label %157
154: ; preds = %147
%155 = getelementptr inbounds i16, i16* %0, i64 %148
%156 = load i16, i16* %155
br label %157
157: ; preds = %147, %154
%158 = phi i16 [ %156, %154 ], [ -4, %147 ]
%159 = getelementptr inbounds i16, i16* %143, i64 %148
store i16 %158, i16* %159
%160 = or i64 %148, 1
%161 = getelementptr inbounds i8, i8* %7, i64 %160
%162 = load i8, i8* %161
%163 = zext i8 %162 to i64
%164 = icmp eq i64 %119, %163
br i1 %164, label %165, label %168
165: ; preds = %157
%166 = getelementptr inbounds i16, i16* %0, i64 %160
%167 = load i16, i16* %166
br label %168
168: ; preds = %165, %157
%169 = phi i16 [ %167, %165 ], [ -4, %157 ]
%170 = getelementptr inbounds i16, i16* %144, i64 %160
store i16 %169, i16* %170
%171 = add nuw nsw i64 %148, 2
%172 = add i64 %149, 2
%173 = icmp eq i64 %172, %79
br i1 %173, label %174, label %147
174: ; preds = %168, %141
%175 = phi i16* [ undef, %141 ], [ %144, %168 ]
%176 = phi i64 [ 0, %141 ], [ %171, %168 ]
br i1 %80, label %189, label %177
177: ; preds = %174
%178 = getelementptr inbounds i8, i8* %7, i64 %176
%179 = load i8, i8* %178
%180 = zext i8 %179 to i64
%181 = icmp eq i64 %119, %180
br i1 %181, label %182, label %185
182: ; preds = %177
%183 = getelementptr inbounds i16, i16* %0, i64 %176
%184 = load i16, i16* %183
br label %185
185: ; preds = %182, %177
%186 = phi i16 [ %184, %182 ], [ -4, %177 ]
%187 = load i16*, i16** %140
%188 = getelementptr inbounds i16, i16* %187, i64 %176
store i16 %186, i16* %188
br label %189
189: ; preds = %185, %174, %145
%190 = phi i16* [ %146, %145 ], [ %175, %174 ], [ %187, %185 ]
%191 = call i32 (i16*, float*, i32, i32, float*, i32, double, i8*, i32, ...) bitcast (i32 (...)* @getrmap1 to i32 (i16*, float*, i32, i32, float*, i32, double, i8*, i32, ...)*)(i16* %190, float* %1, i32 %2, i32 %3, float* %41, i32 %120, double %71, i8* %7, i32 %8)
%192 = getelementptr inbounds [6 x i32], [6 x i32]* %14, i64 0, i64 %129
store i32 %191, i32* %192
%193 = add nuw nsw i64 %129, 1
%194 = icmp eq i64 %193, 6
br i1 %194, label %195, label %128
195: ; preds = %189
%196 = call i32 (i32, i32*, i32*, ...) bitcast (i32 (...)* @piksrtint to i32 (i32, i32*, i32*, ...)*)(i32 6, i32* %72, i32* %73)
%197 = load i32, i32* %72
%198 = icmp sgt i32 %197, %120
br i1 %198, label %199, label %231
199: ; preds = %195
br i1 %49, label %200, label %289
200: ; preds = %199
%201 = load i32, i32* %73
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds [6 x i16*], [6 x i16*]* %13, i64 0, i64 %202
br i1 %86, label %264, label %204
204: ; preds = %200, %227
%205 = phi i64 [ %228, %227 ], [ 0, %200 ]
%206 = phi i64 [ %229, %227 ], [ 0, %200 ]
%207 = getelementptr inbounds i8, i8* %7, i64 %205
%208 = load i8, i8* %207
%209 = zext i8 %208 to i64
%210 = icmp eq i64 %119, %209
br i1 %210, label %211, label %216
211: ; preds = %204
%212 = load i16*, i16** %203
%213 = getelementptr inbounds i16, i16* %212, i64 %205
%214 = load i16, i16* %213
%215 = getelementptr inbounds i16, i16* %0, i64 %205
store i16 %214, i16* %215
br label %216
216: ; preds = %204, %211
%217 = or i64 %205, 1
%218 = getelementptr inbounds i8, i8* %7, i64 %217
%219 = load i8, i8* %218
%220 = zext i8 %219 to i64
%221 = icmp eq i64 %119, %220
br i1 %221, label %222, label %227
222: ; preds = %216
%223 = load i16*, i16** %203
%224 = getelementptr inbounds i16, i16* %223, i64 %217
%225 = load i16, i16* %224
%226 = getelementptr inbounds i16, i16* %0, i64 %217
store i16 %225, i16* %226
br label %227
227: ; preds = %222, %216
%228 = add nuw nsw i64 %205, 2
%229 = add i64 %206, 2
%230 = icmp eq i64 %229, %87
br i1 %230, label %264, label %204
231: ; preds = %195
%232 = add nsw i32 %120, 1
br i1 %49, label %233, label %289
233: ; preds = %231
%234 = trunc i32 %232 to i16
br i1 %82, label %276, label %235
235: ; preds = %233, %260
%236 = phi i64 [ %261, %260 ], [ 0, %233 ]
%237 = phi i64 [ %262, %260 ], [ 0, %233 ]
%238 = getelementptr inbounds i8, i8* %7, i64 %236
%239 = load i8, i8* %238
%240 = zext i8 %239 to i64
%241 = icmp eq i64 %119, %240
br i1 %241, label %242, label %248
242: ; preds = %235
%243 = getelementptr inbounds i16, i16* %0, i64 %236
%244 = load i16, i16* %243
%245 = sext i16 %244 to i32
%246 = icmp eq i32 %245, %8
br i1 %246, label %247, label %248
247: ; preds = %242
store i16 %234, i16* %243
br label %248
248: ; preds = %235, %242, %247
%249 = or i64 %236, 1
%250 = getelementptr inbounds i8, i8* %7, i64 %249
%251 = load i8, i8* %250
%252 = zext i8 %251 to i64
%253 = icmp eq i64 %119, %252
br i1 %253, label %254, label %260
254: ; preds = %248
%255 = getelementptr inbounds i16, i16* %0, i64 %249
%256 = load i16, i16* %255
%257 = sext i16 %256 to i32
%258 = icmp eq i32 %257, %8
br i1 %258, label %259, label %260
259: ; preds = %254
store i16 %234, i16* %255
br label %260
260: ; preds = %259, %254, %248
%261 = add nuw nsw i64 %236, 2
%262 = add i64 %237, 2
%263 = icmp eq i64 %262, %83
br i1 %263, label %276, label %235
264: ; preds = %227, %200
%265 = phi i64 [ 0, %200 ], [ %228, %227 ]
br i1 %88, label %289, label %266
266: ; preds = %264
%267 = getelementptr inbounds i8, i8* %7, i64 %265
%268 = load i8, i8* %267
%269 = zext i8 %268 to i64
%270 = icmp eq i64 %119, %269
br i1 %270, label %271, label %289
271: ; preds = %266
%272 = load i16*, i16** %203
%273 = getelementptr inbounds i16, i16* %272, i64 %265
%274 = load i16, i16* %273
%275 = getelementptr inbounds i16, i16* %0, i64 %265
store i16 %274, i16* %275
br label %289
276: ; preds = %260, %233
%277 = phi i64 [ 0, %233 ], [ %261, %260 ]
br i1 %84, label %289, label %278
278: ; preds = %276
%279 = getelementptr inbounds i8, i8* %7, i64 %277
%280 = load i8, i8* %279
%281 = zext i8 %280 to i64
%282 = icmp eq i64 %119, %281
br i1 %282, label %283, label %289
283: ; preds = %278
%284 = getelementptr inbounds i16, i16* %0, i64 %277
%285 = load i16, i16* %284
%286 = sext i16 %285 to i32
%287 = icmp eq i32 %286, %8
br i1 %287, label %288, label %289
288: ; preds = %283
store i16 %234, i16* %284
br label %289
289: ; preds = %276, %288, %283, %278, %264, %271, %266, %231, %199, %118
%290 = phi i32 [ %120, %118 ], [ %197, %199 ], [ %232, %231 ], [ %197, %266 ], [ %197, %271 ], [ %197, %264 ], [ %232, %278 ], [ %232, %283 ], [ %232, %288 ], [ %232, %276 ]
%291 = add nuw nsw i64 %119, 1
%292 = icmp eq i64 %291, %74
br i1 %292, label %116, label %118
}