int pl_l2pi(short *ll_src, int xs, int *px_dst, int npix) {
  int ret_val, i__1, i__2;
  int data, sw0001, otop, i__, lllen, i1, i2, x1, x2, ip, xe, np, op, pv,
      opcode, llfirt;
  int skipwd;
  --px_dst;
  --ll_src;
  if (!(ll_src[3] > 0)) {
    goto L110;
  }
  lllen = ll_src[3];
  llfirt = 4;
  goto L111;
L110:
  lllen = (ll_src[5] << 15) + ll_src[4];
  llfirt = ll_src[2] + 1;
L111:
  if (!(npix <= 0 || lllen <= 0)) {
    goto L120;
  }
  ret_val = 0;
  goto L100;
L120:
  xe = xs + npix - 1;
  skipwd = 0;
  op = 1;
  x1 = 1;
  pv = 1;
  i__1 = lllen;
  for (ip = llfirt; ip <= i__1; ++ip) {
    if (!skipwd) {
      goto L140;
    }
    skipwd = 0;
    goto L130;
  L140:
    opcode = ll_src[ip] / 4096;
    data = ll_src[ip] & 4095;
    sw0001 = opcode;
    goto L150;
  L160:
    x2 = x1 + data - 1;
    i1 = (((x1) > (xs)) ? (x1) : (xs));
    i2 = (((x2) < (xe)) ? (x2) : (xe));
    np = i2 - i1 + 1;
    if (!(np > 0)) {
      goto L170;
    }
    otop = op + np - 1;
    if (!(opcode == 4)) {
      goto L180;
    }
    i__2 = otop;
    for (i__ = op; i__ <= i__2; ++i__) {
      px_dst[i__] = pv;
    }
    goto L181;
  L180:
    i__2 = otop;
    for (i__ = op; i__ <= i__2; ++i__) {
      px_dst[i__] = 0;
    }
    if (!(opcode == 5 && i2 == x2)) {
      goto L210;
    }
    px_dst[otop] = pv;
  L210:
  L181:
    op = otop + 1;
  L170:
    x1 = x2 + 1;
    goto L151;
  L220:
    pv = (ll_src[ip + 1] << 12) + data;
    skipwd = 1;
    goto L151;
  L230:
    pv += data;
    goto L151;
  L240:
    pv -= data;
    goto L151;
  L250:
    pv += data;
    goto L91;
  L260:
    pv -= data;
  L91:
    if (!(x1 >= xs && x1 <= xe)) {
      goto L270;
    }
    px_dst[op] = pv;
    ++op;
  L270:
    ++x1;
    goto L151;
  L150:
    ++sw0001;
    if (sw0001 < 1 || sw0001 > 8) {
      goto L151;
    }
    switch ((int)sw0001) {
    case 1:
      goto L160;
    case 2:
      goto L220;
    case 3:
      goto L230;
    case 4:
      goto L240;
    case 5:
      goto L160;
    case 6:
      goto L160;
    case 7:
      goto L250;
    case 8:
      goto L260;
    }
  L151:
    if (!(x1 > xe)) {
      goto L280;
    }
    goto L131;
  L280:
  L130:;
  }
L131:
  i__1 = npix;
  for (i__ = op; i__ <= i__1; ++i__) {
    px_dst[i__] = 0;
  }
  ret_val = npix;
  goto L100;
L100:
  return ret_val;
}


x86 assembly (clang, -O0):
<pl_l2pi>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
add    $0xfffffffffffffffe,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movswl 0x6(%rax),%eax
cmp    $0x0,%eax
jg     1140 <pl_l2pi+0x40>
jmp    1157 <pl_l2pi+0x57>
mov    -0x8(%rbp),%rax
movswl 0x6(%rax),%eax
mov    %eax,-0x3c(%rbp)
movl   $0x4,-0x68(%rbp)
jmp    117d <pl_l2pi+0x7d>
mov    -0x8(%rbp),%rax
movswl 0xa(%rax),%eax
shl    $0xf,%eax
mov    -0x8(%rbp),%rcx
movswl 0x8(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
movswl 0x4(%rax),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jle    1196 <pl_l2pi+0x96>
cmpl   $0x0,-0x3c(%rbp)
jle    1196 <pl_l2pi+0x96>
jmp    11a2 <pl_l2pi+0xa2>
movl   $0x0,-0x20(%rbp)
jmp    14f3 <pl_l2pi+0x3f3>
mov    -0xc(%rbp),%eax
add    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x54(%rbp)
movl   $0x0,-0x6c(%rbp)
movl   $0x1,-0x5c(%rbp)
movl   $0x1,-0x48(%rbp)
movl   $0x1,-0x60(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x24(%rbp),%eax
jg     14b3 <pl_l2pi+0x3b3>
cmpl   $0x0,-0x6c(%rbp)
jne    11f1 <pl_l2pi+0xf1>
jmp    11fd <pl_l2pi+0xfd>
movl   $0x0,-0x6c(%rbp)
jmp    14a0 <pl_l2pi+0x3a0>
mov    -0x8(%rbp),%rax
movslq -0x50(%rbp),%rcx
movswl (%rax,%rcx,2),%eax
mov    $0x1000,%ecx
cltd
idiv   %ecx
mov    %eax,-0x64(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x50(%rbp),%rcx
movswl (%rax,%rcx,2),%eax
and    $0xfff,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    140d <pl_l2pi+0x30d>
mov    -0x48(%rbp),%eax
add    -0x2c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    1256 <pl_l2pi+0x156>
mov    -0x48(%rbp),%eax
mov    %eax,-0x70(%rbp)
jmp    125c <pl_l2pi+0x15c>
mov    -0xc(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    1279 <pl_l2pi+0x179>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x74(%rbp)
jmp    127f <pl_l2pi+0x17f>
mov    -0x54(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
sub    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
cmpl   $0x0,-0x58(%rbp)
jg     12a0 <pl_l2pi+0x1a0>
jmp    1360 <pl_l2pi+0x260>
mov    -0x5c(%rbp),%eax
add    -0x58(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x4,-0x64(%rbp)
je     12bb <pl_l2pi+0x1bb>
jmp    12f4 <pl_l2pi+0x1f4>
mov    -0x34(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     12ef <pl_l2pi+0x1ef>
mov    -0x60(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    12c7 <pl_l2pi+0x1c7>
jmp    1357 <pl_l2pi+0x257>
mov    -0x34(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     1329 <pl_l2pi+0x229>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1300 <pl_l2pi+0x200>
cmpl   $0x5,-0x64(%rbp)
jne    133f <pl_l2pi+0x23f>
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
je     1344 <pl_l2pi+0x244>
jmp    1352 <pl_l2pi+0x252>
mov    -0x60(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1357 <pl_l2pi+0x257>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1485 <pl_l2pi+0x385>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movswl (%rax,%rcx,2),%eax
shl    $0xc,%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x60(%rbp)
movl   $0x1,-0x6c(%rbp)
jmp    1485 <pl_l2pi+0x385>
mov    -0x2c(%rbp),%eax
add    -0x60(%rbp),%eax
mov    %eax,-0x60(%rbp)
jmp    1485 <pl_l2pi+0x385>
mov    -0x2c(%rbp),%ecx
mov    -0x60(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x60(%rbp)
jmp    1485 <pl_l2pi+0x385>
mov    -0x2c(%rbp),%eax
add    -0x60(%rbp),%eax
mov    %eax,-0x60(%rbp)
jmp    13cb <pl_l2pi+0x2cb>
mov    -0x2c(%rbp),%ecx
mov    -0x60(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x60(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     13e3 <pl_l2pi+0x2e3>
mov    -0x48(%rbp),%eax
cmp    -0x54(%rbp),%eax
jle    13e8 <pl_l2pi+0x2e8>
jmp    13ff <pl_l2pi+0x2ff>
mov    -0x60(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1485 <pl_l2pi+0x385>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x1,-0x30(%rbp)
jl     142a <pl_l2pi+0x32a>
cmpl   $0x8,-0x30(%rbp)
jle    142f <pl_l2pi+0x32f>
jmp    1485 <pl_l2pi+0x385>
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x80(%rbp)
sub    $0x7,%eax
ja     1480 <pl_l2pi+0x380>
mov    -0x80(%rbp),%rax
lea    0xbb1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    1233 <pl_l2pi+0x133>
jmp    136e <pl_l2pi+0x26e>
jmp    1394 <pl_l2pi+0x294>
jmp    13a2 <pl_l2pi+0x2a2>
jmp    1233 <pl_l2pi+0x133>
jmp    1233 <pl_l2pi+0x133>
jmp    13b2 <pl_l2pi+0x2b2>
jmp    13c0 <pl_l2pi+0x2c0>
jmp    1485 <pl_l2pi+0x385>
mov    -0x48(%rbp),%eax
cmp    -0x54(%rbp),%eax
jg     1496 <pl_l2pi+0x396>
jmp    149b <pl_l2pi+0x39b>
jmp    14b8 <pl_l2pi+0x3b8>
jmp    14a0 <pl_l2pi+0x3a0>
jmp    14a5 <pl_l2pi+0x3a5>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    11d6 <pl_l2pi+0xd6>
jmp    14b8 <pl_l2pi+0x3b8>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x24(%rbp),%eax
jg     14ed <pl_l2pi+0x3ed>
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    14c4 <pl_l2pi+0x3c4>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<pl_l2pi>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %rdx,%r11
movzwl 0x4(%rdi),%ebx
test   %bx,%bx
jle    1131 <pl_l2pi+0x21>
mov    $0x4,%edx
jmp    1145 <pl_l2pi+0x35>
movswl 0x8(%rdi),%eax
shl    $0xf,%eax
movswl 0x6(%rdi),%ebx
add    %eax,%ebx
movswl 0x2(%rdi),%edx
add    $0x1,%edx
xor    %eax,%eax
test   %ecx,%ecx
jle    1516 <pl_l2pi+0x406>
test   %ebx,%ebx
jle    1516 <pl_l2pi+0x406>
mov    $0x1,%r15d
cmp    %ebx,%edx
jle    1171 <pl_l2pi+0x61>
cmp    %ecx,%r15d
jle    14f2 <pl_l2pi+0x3e2>
mov    %ecx,%eax
jmp    1516 <pl_l2pi+0x406>
lea    -0x4(%r11),%r10
lea    (%rcx,%rsi,1),%r8d
lea    (%rcx,%rsi,1),%eax
add    $0xffffffff,%eax
mov    %eax,0x44(%rsp)
movslq %edx,%r14
add    $0x1,%ebx
lea    0x6c(%r11),%rax
mov    %rax,0x48(%rsp)
lea    0xc(%r11),%rax
mov    %rax,0x50(%rsp)
movl   $0x1,0x8(%rsp)
xor    %ebp,%ebp
mov    $0x1,%eax
mov    $0x1,%r9d
mov    %r8d,0xc(%rsp)
mov    %rbx,0x10(%rsp)
jmp    11ce <pl_l2pi+0xbe>
nopl   0x0(%rax)
xor    %ebp,%ebp
mov    %eax,%r15d
add    $0x1,%r14
cmp    %rbx,%r14
je     1161 <pl_l2pi+0x51>
test   %ebp,%ebp
jne    11c0 <pl_l2pi+0xb0>
movswl -0x2(%rdi,%r14,2),%r13d
xor    %ebp,%ebp
cmp    $0xfffff001,%r13d
jge    11ee <pl_l2pi+0xde>
mov    %r9d,%r12d
mov    %eax,%r15d
jmp    12cf <pl_l2pi+0x1bf>
lea    0xfff(%r13),%edx
test   %r13w,%r13w
cmovns %r13d,%edx
movswl %dx,%edx
sar    $0xc,%edx
cmp    $0x7,%dx
ja     11e3 <pl_l2pi+0xd3>
mov    %r13d,%r12d
and    $0xfff,%r12d
movzwl %dx,%edx
lea    0xde3(%rip),%rbx
movslq (%rbx,%rdx,4),%rdx
add    %rbx,%rdx
jmp    *%rdx
mov    %r12d,%edx
add    %r9d,%r12d
lea    (%rdx,%r9,1),%r8d
add    $0xffffffff,%r8d
cmp    %esi,%r9d
cmovle %esi,%r9d
mov    0x44(%rsp),%edx
cmp    %edx,%r8d
cmovge %edx,%r8d
mov    %r8d,%edx
sub    %r9d,%edx
js     1298 <pl_l2pi+0x188>
lea    (%rdx,%rax,1),%r15d
add    $0x1,%r15d
lea    (%rdx,%rax,1),%ebx
and    $0xfffff000,%r13d
cmp    $0x4000,%r13d
jne    1325 <pl_l2pi+0x215>
cmp    %ebx,%eax
mov    0x10(%rsp),%rbx
jg     13a1 <pl_l2pi+0x291>
mov    %r10,0x18(%rsp)
mov    %rsi,0x38(%rsp)
movslq %eax,%r10
cmp    $0x7,%edx
jae    13ab <pl_l2pi+0x29b>
mov    %rbx,%r13
jmp    14b1 <pl_l2pi+0x3a1>
mov    %eax,%r15d
mov    0xc(%rsp),%r8d
jmp    12ca <pl_l2pi+0x1ba>
movswl (%rdi,%r14,2),%edx
shl    $0xc,%edx
or     %r12d,%edx
mov    %edx,0x8(%rsp)
mov    $0x1,%ebp
jmp    12c4 <pl_l2pi+0x1b4>
add    %r12d,0x8(%rsp)
jmp    12c4 <pl_l2pi+0x1b4>
sub    %r12d,0x8(%rsp)
mov    %r9d,%r12d
mov    %eax,%r15d
mov    0x10(%rsp),%rbx
mov    %r12d,%r9d
mov    %r15d,%eax
cmp    %r8d,%r12d
jl     11c5 <pl_l2pi+0xb5>
jmp    1161 <pl_l2pi+0x51>
add    %r12d,0x8(%rsp)
cmp    %esi,%r9d
jge    1305 <pl_l2pi+0x1f5>
mov    0x10(%rsp),%rbx
add    $0x1,%r9d
jmp    11e3 <pl_l2pi+0xd3>
sub    %r12d,0x8(%rsp)
cmp    %esi,%r9d
jl     12ed <pl_l2pi+0x1dd>
cmp    %r8d,%r9d
mov    0x10(%rsp),%rbx
jge    131c <pl_l2pi+0x20c>
cltq
mov    0x8(%rsp),%edx
mov    %edx,(%r10,%rax,4)
add    $0x1,%eax
add    $0x1,%r9d
jmp    11e3 <pl_l2pi+0xd3>
mov    %ebx,0x40(%rsp)
cmp    %ebx,%eax
jg     1373 <pl_l2pi+0x263>
cltq
mov    %rdi,0x20(%rsp)
lea    (%r10,%rax,4),%rdi
add    $0x1,%edx
shl    $0x2,%rdx
mov    %rsi,0x38(%rsp)
xor    %esi,%esi
mov    %rcx,0x30(%rsp)
mov    %r11,0x28(%rsp)
mov    %r10,0x18(%rsp)
call   1030 <memset@plt>
mov    0x18(%rsp),%r10
mov    0x20(%rsp),%rdi
mov    0x38(%rsp),%rsi
mov    0x28(%rsp),%r11
mov    0x30(%rsp),%rcx
cmp    $0x5000,%r13d
mov    0x10(%rsp),%rbx
jne    13a1 <pl_l2pi+0x291>
mov    0xc(%rsp),%r8d
cmp    %r8d,%r12d
jg     12cf <pl_l2pi+0x1bf>
movslq 0x40(%rsp),%rax
mov    0x8(%rsp),%edx
mov    %edx,(%r10,%rax,4)
jmp    12cf <pl_l2pi+0x1bf>
mov    0xc(%rsp),%r8d
jmp    12cf <pl_l2pi+0x1bf>
mov    %rdi,0x20(%rsp)
mov    %r11,0x28(%rsp)
mov    %rcx,0x30(%rsp)
mov    %edx,%r13d
add    $0x1,%r13
mov    %r13,%rcx
and    $0xfffffffffffffff8,%rcx
movd   0x8(%rsp),%xmm0
pshufd $0x0,%xmm0,%xmm0
lea    -0x8(%rcx),%rsi
mov    %rsi,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
mov    %edx,%r11d
and    $0x3,%r11d
cmp    $0x18,%rsi
jae    13f3 <pl_l2pi+0x2e3>
xor    %edi,%edi
jmp    1449 <pl_l2pi+0x339>
and    $0xfffffffffffffffc,%rdx
mov    0x48(%rsp),%rsi
lea    (%rsi,%r10,4),%rsi
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movdqu %xmm0,-0x70(%rsi,%rdi,4)
movdqu %xmm0,-0x60(%rsi,%rdi,4)
movdqu %xmm0,-0x50(%rsi,%rdi,4)
movdqu %xmm0,-0x40(%rsi,%rdi,4)
movdqu %xmm0,-0x30(%rsi,%rdi,4)
movdqu %xmm0,-0x20(%rsi,%rdi,4)
movdqu %xmm0,-0x10(%rsi,%rdi,4)
movdqu %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rdx
jne    1410 <pl_l2pi+0x300>
test   %r11,%r11
je     1474 <pl_l2pi+0x364>
add    %r10,%rdi
mov    0x50(%rsp),%rdx
lea    (%rdx,%rdi,4),%rdx
shl    $0x5,%r11
xor    %esi,%esi
movdqu %xmm0,-0x10(%rdx,%rsi,1)
movdqu %xmm0,(%rdx,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%r11
jne    1460 <pl_l2pi+0x350>
cmp    %rcx,%r13
jne    149c <pl_l2pi+0x38c>
mov    0x30(%rsp),%rcx
mov    0x28(%rsp),%r11
mov    0x38(%rsp),%rsi
mov    0x20(%rsp),%rdi
mov    0x18(%rsp),%r10
mov    0xc(%rsp),%r8d
jmp    12cf <pl_l2pi+0x1bf>
mov    %rbx,%r13
add    %rcx,%r10
mov    0x30(%rsp),%rcx
mov    0x28(%rsp),%r11
mov    0x20(%rsp),%rdi
mov    0x18(%rsp),%rdx
lea    (%rdx,%r10,4),%rdx
add    %r8d,%eax
sub    %r9d,%eax
sub    %r10d,%eax
add    $0x1,%eax
xor    %esi,%esi
mov    0x8(%rsp),%ebx
nopl   0x0(%rax)
mov    %ebx,(%rdx,%rsi,4)
add    $0x1,%rsi
cmp    %esi,%eax
jne    14d0 <pl_l2pi+0x3c0>
mov    0x38(%rsp),%rsi
mov    0x18(%rsp),%r10
mov    0xc(%rsp),%r8d
mov    %r13,%rbx
jmp    12cf <pl_l2pi+0x1bf>
movslq %r15d,%rax
lea    (%r11,%rax,4),%rdi
add    $0xfffffffffffffffc,%rdi
mov    %ecx,%eax
sub    %r15d,%eax
lea    0x4(,%rax,4),%rdx
xor    %esi,%esi
mov    %rcx,%rbx
call   1030 <memset@plt>
mov    %ebx,%eax
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @pl_l2pi(i16* nocapture %0, i32 %1, i32* nocapture writeonly %2, i32 %3) {
%5 = getelementptr i32, i32* %2, i64 -1
%6 = getelementptr inbounds i16, i16* %0, i64 -1
%7 = getelementptr inbounds i16, i16* %0, i64 2
%8 = load i16, i16* %7
%9 = icmp sgt i16 %8, 0
br i1 %9, label %10, label %12
10: ; preds = %4
%11 = zext i16 %8 to i32
br label %25
12: ; preds = %4
%13 = getelementptr inbounds i16, i16* %0, i64 4
%14 = load i16, i16* %13
%15 = sext i16 %14 to i32
%16 = shl nsw i32 %15, 15
%17 = getelementptr inbounds i16, i16* %0, i64 3
%18 = load i16, i16* %17
%19 = sext i16 %18 to i32
%20 = add nsw i32 %16, %19
%21 = getelementptr inbounds i16, i16* %0, i64 1
%22 = load i16, i16* %21
%23 = sext i16 %22 to i32
%24 = add nsw i32 %23, 1
br label %25
25: ; preds = %12, %10
%26 = phi i32 [ %11, %10 ], [ %20, %12 ]
%27 = phi i32 [ 4, %10 ], [ %24, %12 ]
%28 = icmp slt i32 %3, 1
%29 = icmp slt i32 %26, 1
%30 = select i1 %28, i1 true, i1 %29
br i1 %30, label %212, label %31
31: ; preds = %25
%32 = add nsw i32 %3, %1
%33 = add nsw i32 %32, -1
%34 = icmp sgt i32 %27, %26
br i1 %34, label %200, label %35
35: ; preds = %31
%36 = sext i32 %27 to i64
%37 = add nuw nsw i32 %26, 1
%38 = zext i32 %37 to i64
br label %39
39: ; preds = %35, %193
%40 = phi i64 [ %36, %35 ], [ %198, %193 ]
%41 = phi i32 [ 0, %35 ], [ %197, %193 ]
%42 = phi i32 [ 1, %35 ], [ %196, %193 ]
%43 = phi i32 [ 1, %35 ], [ %195, %193 ]
%44 = phi i32 [ 1, %35 ], [ %194, %193 ]
%45 = icmp eq i32 %41, 0
br i1 %45, label %46, label %193
46: ; preds = %39
%47 = getelementptr inbounds i16, i16* %6, i64 %40
%48 = load i16, i16* %47
%49 = sext i16 %48 to i32
%50 = and i32 %49, 4095
%51 = icmp slt i16 %48, -4095
br i1 %51, label %187, label %171
52: ; preds = %171, %171, %171
%53 = add nsw i32 %50, %44
%54 = add nsw i32 %53, -1
%55 = icmp sgt i32 %44, %1
%56 = select i1 %55, i32 %44, i32 %1
%57 = icmp slt i32 %54, %33
%58 = select i1 %57, i32 %54, i32 %33
%59 = sub i32 %58, %56
%60 = icmp sgt i32 %59, -1
br i1 %60, label %61, label %187
61: ; preds = %52
%62 = add i32 %43, 1
%63 = add i32 %62, %59
%64 = add i32 %59, %43
%65 = and i32 %49, -4096
%66 = icmp eq i32 %65, 16384
%67 = icmp sgt i32 %43, %64
br i1 %66, label %77, label %68
68: ; preds = %61
br i1 %67, label %152, label %69
69: ; preds = %68
%70 = sext i32 %43 to i64
%71 = getelementptr i32, i32* %5, i64 %70
%72 = bitcast i32* %71 to i8*
%73 = add nsw i32 %58, 1
%74 = sub i32 %73, %56
%75 = zext i32 %74 to i64
%76 = shl nuw nsw i64 %75, 2
br label %152
77: ; preds = %61
br i1 %67, label %187, label %78
78: ; preds = %77
%79 = sext i32 %43 to i64
%80 = add i32 %62, %58
%81 = sub i32 %80, %56
%82 = zext i32 %59 to i64
%83 = add nuw nsw i64 %82, 1
%84 = icmp ult i32 %59, 7
br i1 %84, label %144, label %85
85: ; preds = %78
%86 = and i64 %83, 8589934584
%87 = add nsw i64 %86, %79
%88 = insertelement <4 x i32> poison, i32 %42, i64 0
%89 = shufflevector <4 x i32> %88, <4 x i32> poison, <4 x i32> zeroinitializer
%90 = insertelement <4 x i32> poison, i32 %42, i64 0
%91 = shufflevector <4 x i32> %90, <4 x i32> poison, <4 x i32> zeroinitializer
%92 = add nsw i64 %86, -8
%93 = lshr exact i64 %92, 3
%94 = add nuw nsw i64 %93, 1
%95 = and i64 %94, 3
%96 = icmp ult i64 %92, 24
br i1 %96, label %128, label %97
97: ; preds = %85
%98 = and i64 %94, 4611686018427387900
br label %99
99: ; preds = %99, %97
%100 = phi i64 [ 0, %97 ], [ %125, %99 ]
%101 = phi i64 [ 0, %97 ], [ %126, %99 ]
%102 = add i64 %100, %79
%103 = getelementptr inbounds i32, i32* %5, i64 %102
%104 = bitcast i32* %103 to <4 x i32>*
store <4 x i32> %89, <4 x i32>* %104
%105 = getelementptr inbounds i32, i32* %103, i64 4
%106 = bitcast i32* %105 to <4 x i32>*
store <4 x i32> %91, <4 x i32>* %106
%107 = or i64 %100, 8
%108 = add i64 %107, %79
%109 = getelementptr inbounds i32, i32* %5, i64 %108
%110 = bitcast i32* %109 to <4 x i32>*
store <4 x i32> %89, <4 x i32>* %110
%111 = getelementptr inbounds i32, i32* %109, i64 4
%112 = bitcast i32* %111 to <4 x i32>*
store <4 x i32> %91, <4 x i32>* %112
%113 = or i64 %100, 16
%114 = add i64 %113, %79
%115 = getelementptr inbounds i32, i32* %5, i64 %114
%116 = bitcast i32* %115 to <4 x i32>*
store <4 x i32> %89, <4 x i32>* %116
%117 = getelementptr inbounds i32, i32* %115, i64 4
%118 = bitcast i32* %117 to <4 x i32>*
store <4 x i32> %91, <4 x i32>* %118
%119 = or i64 %100, 24
%120 = add i64 %119, %79
%121 = getelementptr inbounds i32, i32* %5, i64 %120
%122 = bitcast i32* %121 to <4 x i32>*
store <4 x i32> %89, <4 x i32>* %122
%123 = getelementptr inbounds i32, i32* %121, i64 4
%124 = bitcast i32* %123 to <4 x i32>*
store <4 x i32> %91, <4 x i32>* %124
%125 = add nuw i64 %100, 32
%126 = add i64 %101, 4
%127 = icmp eq i64 %126, %98
br i1 %127, label %128, label %99
128: ; preds = %99, %85
%129 = phi i64 [ 0, %85 ], [ %125, %99 ]
%130 = icmp eq i64 %95, 0
br i1 %130, label %142, label %131
131: ; preds = %128, %131
%132 = phi i64 [ %139, %131 ], [ %129, %128 ]
%133 = phi i64 [ %140, %131 ], [ 0, %128 ]
%134 = add i64 %132, %79
%135 = getelementptr inbounds i32, i32* %5, i64 %134
%136 = bitcast i32* %135 to <4 x i32>*
store <4 x i32> %89, <4 x i32>* %136
%137 = getelementptr inbounds i32, i32* %135, i64 4
%138 = bitcast i32* %137 to <4 x i32>*
store <4 x i32> %91, <4 x i32>* %138
%139 = add nuw i64 %132, 8
%140 = add i64 %133, 1
%141 = icmp eq i64 %140, %95
br i1 %141, label %142, label %131
142: ; preds = %131, %128
%143 = icmp eq i64 %83, %86
br i1 %143, label %187, label %144
144: ; preds = %78, %142
%145 = phi i64 [ %79, %78 ], [ %87, %142 ]
br label %146
146: ; preds = %144, %146
%147 = phi i64 [ %149, %146 ], [ %145, %144 ]
%148 = getelementptr inbounds i32, i32* %5, i64 %147
store i32 %42, i32* %148
%149 = add nsw i64 %147, 1
%150 = trunc i64 %149 to i32
%151 = icmp eq i32 %81, %150
br i1 %151, label %187, label %146
152: ; preds = %69, %68
%153 = icmp ne i32 %65, 20480
%154 = icmp sgt i32 %53, %32
%155 = select i1 %153, i1 true, i1 %154
br i1 %155, label %187, label %156
156: ; preds = %152
%157 = sext i32 %64 to i64
%158 = getelementptr inbounds i32, i32* %5, i64 %157
store i32 %42, i32* %158
br label %187
159: ; preds = %185, %183
%160 = phi i32 [ %186, %185 ], [ %184, %183 ]
%161 = icmp sge i32 %44, %1
%162 = icmp slt i32 %44, %32
%163 = select i1 %161, i1 %162, i1 false
br i1 %163, label %164, label %168
164: ; preds = %159
%165 = sext i32 %43 to i64
%166 = getelementptr inbounds i32, i32* %5, i64 %165
store i32 %160, i32* %166
%167 = add nsw i32 %43, 1
br label %168
168: ; preds = %159, %164
%169 = phi i32 [ %167, %164 ], [ %43, %159 ]
%170 = add nsw i32 %44, 1
br label %187
171: ; preds = %46
%172 = sdiv i16 %48, 4096
switch i16 %172, label %187 [
i16 0, label %52
i16 1, label %173
i16 2, label %179
i16 3, label %181
i16 4, label %52
i16 5, label %52
i16 6, label %183
i16 7, label %185
]
173: ; preds = %171
%174 = getelementptr inbounds i16, i16* %0, i64 %40
%175 = load i16, i16* %174
%176 = sext i16 %175 to i32
%177 = shl nsw i32 %176, 12
%178 = or i32 %177, %50
br label %187
179: ; preds = %171
%180 = add nsw i32 %50, %42
br label %187
181: ; preds = %171
%182 = sub nsw i32 %42, %50
br label %187
183: ; preds = %171
%184 = add nsw i32 %50, %42
br label %159
185: ; preds = %171
%186 = sub nsw i32 %42, %50
br label %159
187: ; preds = %146, %142, %77, %52, %156, %152, %171, %46, %168, %181, %179, %173
%188 = phi i32 [ %44, %46 ], [ %44, %171 ], [ %170, %168 ], [ %44, %181 ], [ %44, %179 ], [ %44, %173 ], [ %53, %152 ], [ %53, %156 ], [ %53, %52 ], [ %53, %77 ], [ %53, %142 ], [ %53, %146 ]
%189 = phi i32 [ %43, %46 ], [ %43, %171 ], [ %169, %168 ], [ %43, %181 ], [ %43, %179 ], [ %43, %173 ], [ %63, %152 ], [ %63, %156 ], [ %43, %52 ], [ %63, %77 ], [ %63, %142 ], [ %63, %146 ]
%190 = phi i32 [ %42, %46 ], [ %42, %171 ], [ %160, %168 ], [ %182, %181 ], [ %180, %179 ], [ %178, %173 ], [ %42, %152 ], [ %42, %156 ], [ %42, %52 ], [ %42, %77 ], [ %42, %142 ], [ %42, %146 ]
%191 = phi i32 [ 0, %46 ], [ 0, %171 ], [ 0, %168 ], [ 0, %181 ], [ 0, %179 ], [ 1, %173 ], [ 0, %152 ], [ 0, %156 ], [ 0, %52 ], [ 0, %77 ], [ 0, %142 ], [ 0, %146 ]
%192 = icmp slt i32 %188, %32
br i1 %192, label %193, label %200
193: ; preds = %39, %187
%194 = phi i32 [ %188, %187 ], [ %44, %39 ]
%195 = phi i32 [ %189, %187 ], [ %43, %39 ]
%196 = phi i32 [ %190, %187 ], [ %42, %39 ]
%197 = phi i32 [ %191, %187 ], [ 0, %39 ]
%198 = add nsw i64 %40, 1
%199 = icmp eq i64 %198, %38
br i1 %199, label %200, label %39
200: ; preds = %187, %193, %31
%201 = phi i32 [ 1, %31 ], [ %195, %193 ], [ %189, %187 ]
%202 = icmp sgt i32 %201, %3
br i1 %202, label %212, label %203
203: ; preds = %200
%204 = sext i32 %201 to i64
%205 = add nsw i64 %204, -1
%206 = getelementptr i32, i32* %2, i64 %205
%207 = bitcast i32* %206 to i8*
%208 = sub i32 %3, %201
%209 = zext i32 %208 to i64
%210 = shl nuw nsw i64 %209, 2
%211 = add nuw nsw i64 %210, 4
br label %212
212: ; preds = %203, %200, %25
%213 = phi i32 [ 0, %25 ], [ %3, %200 ], [ %3, %203 ]
ret i32 %213
}