void maxflow_setup_backedges(int ne, const int *edges, int *backedges) {
  int i, n;
  for (i = 0; i < ne; i++)
    backedges[i] = i;
  n = 0;
  while (n < ne) {
    n++;
    i = n - 1;
    while (i > 0) {
      int p = (((i)-1) / 2);
      if (((edges[2 * (backedges[p]) + 1] < edges[2 * (backedges[i]) + 1]) ||
           (edges[2 * (backedges[p]) + 1] == edges[2 * (backedges[i]) + 1] &&
            edges[2 * (backedges[p])] < edges[2 * (backedges[i])]))) {
        do {
          int swaptmp = (backedges[p]);
          (backedges[p]) = (backedges[i]);
          (backedges[i]) = swaptmp;
        } while (0);
        i = p;
      } else
        break;
    }
  }
  while (n > 0) {
    n--;
    do {
      int swaptmp = (backedges[0]);
      (backedges[0]) = (backedges[n]);
      (backedges[n]) = swaptmp;
    } while (0);
    i = 0;
    while (1) {
      int lc, rc;
      lc = (2 * (i) + 1);
      rc = (2 * (i) + 2);
      if (lc >= n)
        break;
      if (rc >= n) {
        if (((edges[2 * (backedges[i]) + 1] < edges[2 * (backedges[lc]) + 1]) ||
             (edges[2 * (backedges[i]) + 1] == edges[2 * (backedges[lc]) + 1] &&
              edges[2 * (backedges[i])] < edges[2 * (backedges[lc])])))
          do {
            int swaptmp = (backedges[i]);
            (backedges[i]) = (backedges[lc]);
            (backedges[lc]) = swaptmp;
          } while (0);
        break;
      } else {
        if (((edges[2 * (backedges[i]) + 1] < edges[2 * (backedges[lc]) + 1]) ||
             (edges[2 * (backedges[i]) + 1] == edges[2 * (backedges[lc]) + 1] &&
              edges[2 * (backedges[i])] < edges[2 * (backedges[lc])])) ||
            ((edges[2 * (backedges[i]) + 1] < edges[2 * (backedges[rc]) + 1]) ||
             (edges[2 * (backedges[i]) + 1] == edges[2 * (backedges[rc]) + 1] &&
              edges[2 * (backedges[i])] < edges[2 * (backedges[rc])]))) {
          if (((edges[2 * (backedges[lc]) + 1] <
                edges[2 * (backedges[rc]) + 1]) ||
               (edges[2 * (backedges[lc]) + 1] ==
                    edges[2 * (backedges[rc]) + 1] &&
                edges[2 * (backedges[lc])] < edges[2 * (backedges[rc])]))) {
            do {
              int swaptmp = (backedges[i]);
              (backedges[i]) = (backedges[rc]);
              (backedges[rc]) = swaptmp;
            } while (0);
            i = rc;
          } else {
            do {
              int swaptmp = (backedges[i]);
              (backedges[i]) = (backedges[lc]);
              (backedges[lc]) = swaptmp;
            } while (0);
            i = lc;
          }
        } else {
          break;
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<maxflow_setup_backedges>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    113e <maxflow_setup_backedges+0x3e>
mov    -0x1c(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1116 <maxflow_setup_backedges+0x16>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    127d <maxflow_setup_backedges+0x17d>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jle    1278 <maxflow_setup_backedges+0x178>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x24(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x1c(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jl     122c <maxflow_setup_backedges+0x12c>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x24(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x1c(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jne    126e <maxflow_setup_backedges+0x16e>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x24(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x1c(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    126e <maxflow_setup_backedges+0x16e>
jmp    1231 <maxflow_setup_backedges+0x131>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    1273 <maxflow_setup_backedges+0x173>
jmp    1278 <maxflow_setup_backedges+0x178>
jmp    1163 <maxflow_setup_backedges+0x63>
jmp    1145 <maxflow_setup_backedges+0x45>
jmp    1282 <maxflow_setup_backedges+0x182>
cmpl   $0x0,-0x20(%rbp)
jle    168a <maxflow_setup_backedges+0x58a>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x2c(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x1,%eax
add    $0x2,%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x20(%rbp),%eax
jl     12ed <maxflow_setup_backedges+0x1ed>
jmp    1685 <maxflow_setup_backedges+0x585>
mov    -0x34(%rbp),%eax
cmp    -0x20(%rbp),%eax
jl     13e8 <maxflow_setup_backedges+0x2e8>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x30(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jl     13a7 <maxflow_setup_backedges+0x2a7>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x30(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jne    13e3 <maxflow_setup_backedges+0x2e3>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x30(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    13e3 <maxflow_setup_backedges+0x2e3>
jmp    13ac <maxflow_setup_backedges+0x2ac>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    13e3 <maxflow_setup_backedges+0x2e3>
jmp    1685 <maxflow_setup_backedges+0x585>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x30(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jl     1544 <maxflow_setup_backedges+0x444>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x30(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jne    1496 <maxflow_setup_backedges+0x396>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x30(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jl     1544 <maxflow_setup_backedges+0x444>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x34(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jl     1544 <maxflow_setup_backedges+0x444>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x34(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jne    1676 <maxflow_setup_backedges+0x576>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x34(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    1676 <maxflow_setup_backedges+0x576>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x34(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jl     15f2 <maxflow_setup_backedges+0x4f2>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x34(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jne    1634 <maxflow_setup_backedges+0x534>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    (%rcx,%rdx,4),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rdx
movslq -0x34(%rbp),%rsi
mov    (%rdx,%rsi,4),%edx
shl    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    1634 <maxflow_setup_backedges+0x534>
jmp    15f7 <maxflow_setup_backedges+0x4f7>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    1671 <maxflow_setup_backedges+0x571>
jmp    1639 <maxflow_setup_backedges+0x539>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    167b <maxflow_setup_backedges+0x57b>
jmp    1685 <maxflow_setup_backedges+0x585>
jmp    1680 <maxflow_setup_backedges+0x580>
jmp    12c4 <maxflow_setup_backedges+0x1c4>
jmp    1282 <maxflow_setup_backedges+0x182>
pop    %rbp
ret

x86 assembly (clang, -O2):
<maxflow_setup_backedges>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
test   %edi,%edi
jle    130d <maxflow_setup_backedges+0x20d>
mov    %edi,%eax
cmp    $0x8,%edi
mov    %rax,-0x10(%rsp)
jae    1125 <maxflow_setup_backedges+0x25>
xor    %ecx,%ecx
jmp    1280 <maxflow_setup_backedges+0x180>
mov    %eax,%ecx
and    $0xfffffff8,%ecx
lea    -0x8(%rcx),%rbp
mov    %rbp,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%r8d
and    $0x3,%r8d
cmp    $0x18,%rbp
jae    1155 <maxflow_setup_backedges+0x55>
movdqa 0xeb2(%rip),%xmm0
xor    %ebx,%ebx
jmp    1228 <maxflow_setup_backedges+0x128>
and    $0xfffffffffffffffc,%rax
movdqa 0xe9f(%rip),%xmm0
xor    %ebx,%ebx
movdqa 0xea4(%rip),%xmm8
movdqa 0xeab(%rip),%xmm9
movdqa 0xeb2(%rip),%xmm10
movdqa 0xeba(%rip),%xmm4
movdqa 0xec2(%rip),%xmm5
movdqa 0xeca(%rip),%xmm6
movdqa 0xed2(%rip),%xmm7
movdqa 0xeda(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
movdqa %xmm0,%xmm2
paddd  %xmm8,%xmm2
movdqu %xmm0,(%rdx,%rbx,4)
movdqu %xmm2,0x10(%rdx,%rbx,4)
movdqa %xmm0,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm0,%xmm3
paddd  %xmm10,%xmm3
movdqu %xmm2,0x20(%rdx,%rbx,4)
movdqu %xmm3,0x30(%rdx,%rbx,4)
movdqa %xmm0,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm0,%xmm3
paddd  %xmm5,%xmm3
movdqu %xmm2,0x40(%rdx,%rbx,4)
movdqu %xmm3,0x50(%rdx,%rbx,4)
movdqa %xmm0,%xmm2
paddd  %xmm6,%xmm2
movdqa %xmm0,%xmm3
paddd  %xmm7,%xmm3
movdqu %xmm2,0x60(%rdx,%rbx,4)
movdqu %xmm3,0x70(%rdx,%rbx,4)
add    $0x20,%rbx
paddd  %xmm1,%xmm0
add    $0xfffffffffffffffc,%rax
jne    11b0 <maxflow_setup_backedges+0xb0>
test   %r8,%r8
je     1270 <maxflow_setup_backedges+0x170>
lea    (%rdx,%rbx,4),%rax
add    $0x10,%rax
shl    $0x5,%r8
xor    %ebp,%ebp
movdqa 0xdcd(%rip),%xmm1
movdqa 0xdd5(%rip),%xmm2
nopl   0x0(%rax,%rax,1)
movdqa %xmm0,%xmm3
paddd  %xmm1,%xmm3
movdqu %xmm0,-0x10(%rax,%rbp,1)
movdqu %xmm3,(%rax,%rbp,1)
paddd  %xmm2,%xmm0
add    $0x20,%rbp
cmp    %rbp,%r8
jne    1250 <maxflow_setup_backedges+0x150>
mov    -0x10(%rsp),%rax
cmp    %rax,%rcx
je     128c <maxflow_setup_backedges+0x18c>
nopw   0x0(%rax,%rax,1)
mov    %ecx,(%rdx,%rcx,4)
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1280 <maxflow_setup_backedges+0x180>
test   %edi,%edi
jle    130d <maxflow_setup_backedges+0x20d>
xor    %r8d,%r8d
jmp    12a5 <maxflow_setup_backedges+0x1a5>
cs nopw 0x0(%rax,%rax,1)
nop
cmp    %edi,%r8d
je     1309 <maxflow_setup_backedges+0x209>
mov    %r8d,%ecx
lea    0x1(%rcx),%r8d
test   %ecx,%ecx
jne    12cd <maxflow_setup_backedges+0x1cd>
jmp    12a0 <maxflow_setup_backedges+0x1a0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %ebp,(%rdx,%rcx,4)
mov    %eax,(%rdx,%r15,4)
cmp    $0x1,%r10d
jbe    12a0 <maxflow_setup_backedges+0x1a0>
lea    -0x1(%rcx),%r10d
mov    %ecx,%r15d
mov    %r10d,%ecx
shr    %ecx
movslq (%rdx,%rcx,4),%rax
lea    (%rax,%rax,1),%r14
movslq (%rdx,%r15,4),%rbp
mov    %rbp,%r11
add    %rbp,%r11
mov    0x4(%rsi,%rbp,8),%ebx
cmp    %ebx,0x4(%rsi,%rax,8)
jl     12c0 <maxflow_setup_backedges+0x1c0>
jne    12a0 <maxflow_setup_backedges+0x1a0>
movslq %r14d,%rbx
mov    (%rsi,%rbx,4),%r14d
movslq %r11d,%rbx
cmp    (%rsi,%rbx,4),%r14d
jl     12c0 <maxflow_setup_backedges+0x1c0>
jmp    12a0 <maxflow_setup_backedges+0x1a0>
test   %edi,%edi
jg     1328 <maxflow_setup_backedges+0x228>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %ecx,(%rdx,%r11,4)
mov    %r9d,(%r14)
nop
cmpq   $0x2,-0x8(%rsp)
jl     130d <maxflow_setup_backedges+0x20d>
mov    -0x10(%rsp),%rbp
lea    -0x1(%rbp),%rdi
mov    (%rdx),%eax
mov    -0x4(%rdx,%rbp,4),%ecx
mov    %ecx,(%rdx)
mov    %eax,-0x4(%rdx,%rbp,4)
mov    %rbp,-0x8(%rsp)
cmp    $0x3,%rbp
mov    %rdi,-0x10(%rsp)
jl     1320 <maxflow_setup_backedges+0x220>
xor    %ecx,%ecx
mov    $0x1,%r10d
mov    $0x2,%r12d
mov    $0x1,%ebp
jmp    139a <maxflow_setup_backedges+0x29a>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %ecx,%ebx
mov    %r14,%rax
mov    %r10d,%r12d
mov    %r12d,%ecx
mov    %ebx,(%rdx,%r11,4)
mov    %r9d,(%rax)
lea    (%rcx,%rcx,1),%r10d
add    $0x1,%r10d
lea    (%rcx,%rcx,1),%r12d
add    $0x2,%r12d
movslq %r10d,%rbp
cmp    %rbp,%rdi
jle    1320 <maxflow_setup_backedges+0x220>
movslq %r12d,%rbx
movslq %ecx,%r11
movslq (%rdx,%r11,4),%r9
lea    (%r9,%r9,1),%r13
movslq (%rdx,%rbp,4),%rcx
lea    (%rcx,%rcx,1),%r15
mov    0x4(%rsi,%r9,8),%eax
lea    (%rdx,%rbp,4),%r14
mov    0x4(%rsi,%rcx,8),%ebp
cmp    %rbx,%rdi
jle    1460 <maxflow_setup_backedges+0x360>
cmp    %ebp,%eax
jl     1420 <maxflow_setup_backedges+0x320>
jne    13e1 <maxflow_setup_backedges+0x2e1>
movslq %r13d,%rdi
mov    (%rsi,%rdi,4),%r8d
movslq %r15d,%rdi
cmp    (%rsi,%rdi,4),%r8d
mov    -0x10(%rsp),%rdi
jl     1420 <maxflow_setup_backedges+0x320>
movslq (%rdx,%rbx,4),%rdi
lea    (%rdi,%rdi,1),%r8
cmp    0x4(%rsi,%rdi,8),%eax
mov    -0x10(%rsp),%rdi
jl     1420 <maxflow_setup_backedges+0x320>
jne    1320 <maxflow_setup_backedges+0x220>
movslq %r13d,%rax
mov    (%rsi,%rax,4),%eax
movslq %r8d,%rdi
cmp    (%rsi,%rdi,4),%eax
mov    -0x10(%rsp),%rdi
jge    1320 <maxflow_setup_backedges+0x220>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    (%rdx,%rbx,4),%rax
movslq (%rdx,%rbx,4),%rbx
lea    (%rbx,%rbx,1),%r8
cmp    0x4(%rsi,%rbx,8),%ebp
jl     1378 <maxflow_setup_backedges+0x278>
jne    1370 <maxflow_setup_backedges+0x270>
movslq %r15d,%rdi
mov    (%rsi,%rdi,4),%edi
movslq %r8d,%rbp
cmp    (%rsi,%rbp,4),%edi
mov    -0x10(%rsp),%rdi
jge    1370 <maxflow_setup_backedges+0x270>
jmp    1378 <maxflow_setup_backedges+0x278>
nopl   0x0(%rax,%rax,1)
cmp    %ebp,%eax
jl     1318 <maxflow_setup_backedges+0x218>
jne    1320 <maxflow_setup_backedges+0x220>
movslq %r13d,%rax
mov    (%rsi,%rax,4),%eax
movslq %r15d,%rbp
cmp    (%rsi,%rbp,4),%eax
jl     1318 <maxflow_setup_backedges+0x218>
jmp    1320 <maxflow_setup_backedges+0x220>

LLVM IR (-O0):
define void @maxflow_setup_backedges(i32 %0, i32* %1, i32* %2) {
%4 = alloca i32
%5 = alloca i32*
%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
store i32 %0, i32* %4
store i32* %1, i32** %5
store i32* %2, i32** %6
store i32 0, i32* %7
br label %17
17: ; preds = %27, %3
%18 = load i32, i32* %7
%19 = load i32, i32* %4
%20 = icmp slt i32 %18, %19
br i1 %20, label %21, label %30
21: ; preds = %17
%22 = load i32, i32* %7
%23 = load i32*, i32** %6
%24 = load i32, i32* %7
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds i32, i32* %23, i64 %25
store i32 %22, i32* %26
br label %27
27: ; preds = %21
%28 = load i32, i32* %7
%29 = add nsw i32 %28, 1
store i32 %29, i32* %7
br label %17
30: ; preds = %17
store i32 0, i32* %8
br label %31
31: ; preds = %141, %30
%32 = load i32, i32* %8
%33 = load i32, i32* %4
%34 = icmp slt i32 %32, %33
br i1 %34, label %35, label %142
35: ; preds = %31
%36 = load i32, i32* %8
%37 = add nsw i32 %36, 1
store i32 %37, i32* %8
%38 = load i32, i32* %8
%39 = sub nsw i32 %38, 1
store i32 %39, i32* %7
br label %40
40: ; preds = %140, %35
%41 = load i32, i32* %7
%42 = icmp sgt i32 %41, 0
br i1 %42, label %43, label %141
43: ; preds = %40
%44 = load i32, i32* %7
%45 = sub nsw i32 %44, 1
%46 = sdiv i32 %45, 2
store i32 %46, i32* %9
%47 = load i32*, i32** %5
%48 = load i32*, i32** %6
%49 = load i32, i32* %9
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds i32, i32* %48, i64 %50
%52 = load i32, i32* %51
%53 = mul nsw i32 2, %52
%54 = add nsw i32 %53, 1
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i32, i32* %47, i64 %55
%57 = load i32, i32* %56
%58 = load i32*, i32** %5
%59 = load i32*, i32** %6
%60 = load i32, i32* %7
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds i32, i32* %59, i64 %61
%63 = load i32, i32* %62
%64 = mul nsw i32 2, %63
%65 = add nsw i32 %64, 1
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds i32, i32* %58, i64 %66
%68 = load i32, i32* %67
%69 = icmp slt i32 %57, %68
br i1 %69, label %116, label %70
70: ; preds = %43
%71 = load i32*, i32** %5
%72 = load i32*, i32** %6
%73 = load i32, i32* %9
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i32, i32* %72, i64 %74
%76 = load i32, i32* %75
%77 = mul nsw i32 2, %76
%78 = add nsw i32 %77, 1
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds i32, i32* %71, i64 %79
%81 = load i32, i32* %80
%82 = load i32*, i32** %5
%83 = load i32*, i32** %6
%84 = load i32, i32* %7
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds i32, i32* %83, i64 %85
%87 = load i32, i32* %86
%88 = mul nsw i32 2, %87
%89 = add nsw i32 %88, 1
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds i32, i32* %82, i64 %90
%92 = load i32, i32* %91
%93 = icmp eq i32 %81, %92
br i1 %93, label %94, label %139
94: ; preds = %70
%95 = load i32*, i32** %5
%96 = load i32*, i32** %6
%97 = load i32, i32* %9
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds i32, i32* %96, i64 %98
%100 = load i32, i32* %99
%101 = mul nsw i32 2, %100
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i32, i32* %95, i64 %102
%104 = load i32, i32* %103
%105 = load i32*, i32** %5
%106 = load i32*, i32** %6
%107 = load i32, i32* %7
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds i32, i32* %106, i64 %108
%110 = load i32, i32* %109
%111 = mul nsw i32 2, %110
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds i32, i32* %105, i64 %112
%114 = load i32, i32* %113
%115 = icmp slt i32 %104, %114
br i1 %115, label %116, label %139
116: ; preds = %94, %43
br label %117
117: ; preds = %116
%118 = load i32*, i32** %6
%119 = load i32, i32* %9
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds i32, i32* %118, i64 %120
%122 = load i32, i32* %121
store i32 %122, i32* %10
%123 = load i32*, i32** %6
%124 = load i32, i32* %7
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds i32, i32* %123, i64 %125
%127 = load i32, i32* %126
%128 = load i32*, i32** %6
%129 = load i32, i32* %9
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds i32, i32* %128, i64 %130
store i32 %127, i32* %131
%132 = load i32, i32* %10
%133 = load i32*, i32** %6
%134 = load i32, i32* %7
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i32, i32* %133, i64 %135
store i32 %132, i32* %136
br label %137
137: ; preds = %117
%138 = load i32, i32* %9
store i32 %138, i32* %7
br label %140
139: ; preds = %94, %70
br label %141
140: ; preds = %137
br label %40
141: ; preds = %139, %40
br label %31
142: ; preds = %31
br label %143
143: ; preds = %534, %142
%144 = load i32, i32* %8
%145 = icmp sgt i32 %144, 0
br i1 %145, label %146, label %535
146: ; preds = %143
%147 = load i32, i32* %8
%148 = add nsw i32 %147, -1
store i32 %148, i32* %8
br label %149
149: ; preds = %146
%150 = load i32*, i32** %6
%151 = getelementptr inbounds i32, i32* %150, i64 0
%152 = load i32, i32* %151
store i32 %152, i32* %11
%153 = load i32*, i32** %6
%154 = load i32, i32* %8
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds i32, i32* %153, i64 %155
%157 = load i32, i32* %156
%158 = load i32*, i32** %6
%159 = getelementptr inbounds i32, i32* %158, i64 0
store i32 %157, i32* %159
%160 = load i32, i32* %11
%161 = load i32*, i32** %6
%162 = load i32, i32* %8
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds i32, i32* %161, i64 %163
store i32 %160, i32* %164
br label %165
165: ; preds = %149
store i32 0, i32* %7
br label %166
166: ; preds = %165, %533
%167 = load i32, i32* %7
%168 = mul nsw i32 2, %167
%169 = add nsw i32 %168, 1
store i32 %169, i32* %12
%170 = load i32, i32* %7
%171 = mul nsw i32 2, %170
%172 = add nsw i32 %171, 2
store i32 %172, i32* %13
%173 = load i32, i32* %12
%174 = load i32, i32* %8
%175 = icmp sge i32 %173, %174
br i1 %175, label %176, label %177
176: ; preds = %166
br label %534
177: ; preds = %166
%178 = load i32, i32* %13
%179 = load i32, i32* %8
%180 = icmp sge i32 %178, %179
br i1 %180, label %181, label %274
181: ; preds = %177
%182 = load i32*, i32** %5
%183 = load i32*, i32** %6
%184 = load i32, i32* %7
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds i32, i32* %183, i64 %185
%187 = load i32, i32* %186
%188 = mul nsw i32 2, %187
%189 = add nsw i32 %188, 1
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds i32, i32* %182, i64 %190
%192 = load i32, i32* %191
%193 = load i32*, i32** %5
%194 = load i32*, i32** %6
%195 = load i32, i32* %12
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds i32, i32* %194, i64 %196
%198 = load i32, i32* %197
%199 = mul nsw i32 2, %198
%200 = add nsw i32 %199, 1
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds i32, i32* %193, i64 %201
%203 = load i32, i32* %202
%204 = icmp slt i32 %192, %203
br i1 %204, label %251, label %205
205: ; preds = %181
%206 = load i32*, i32** %5
%207 = load i32*, i32** %6
%208 = load i32, i32* %7
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds i32, i32* %207, i64 %209
%211 = load i32, i32* %210
%212 = mul nsw i32 2, %211
%213 = add nsw i32 %212, 1
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds i32, i32* %206, i64 %214
%216 = load i32, i32* %215
%217 = load i32*, i32** %5
%218 = load i32*, i32** %6
%219 = load i32, i32* %12
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds i32, i32* %218, i64 %220
%222 = load i32, i32* %221
%223 = mul nsw i32 2, %222
%224 = add nsw i32 %223, 1
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i32, i32* %217, i64 %225
%227 = load i32, i32* %226
%228 = icmp eq i32 %216, %227
br i1 %228, label %229, label %273
229: ; preds = %205
%230 = load i32*, i32** %5
%231 = load i32*, i32** %6
%232 = load i32, i32* %7
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds i32, i32* %231, i64 %233
%235 = load i32, i32* %234
%236 = mul nsw i32 2, %235
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds i32, i32* %230, i64 %237
%239 = load i32, i32* %238
%240 = load i32*, i32** %5
%241 = load i32*, i32** %6
%242 = load i32, i32* %12
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds i32, i32* %241, i64 %243
%245 = load i32, i32* %244
%246 = mul nsw i32 2, %245
%247 = sext i32 %246 to i64
%248 = getelementptr inbounds i32, i32* %240, i64 %247
%249 = load i32, i32* %248
%250 = icmp slt i32 %239, %249
br i1 %250, label %251, label %273
251: ; preds = %229, %181
br label %252
252: ; preds = %251
%253 = load i32*, i32** %6
%254 = load i32, i32* %7
%255 = sext i32 %254 to i64
%256 = getelementptr inbounds i32, i32* %253, i64 %255
%257 = load i32, i32* %256
store i32 %257, i32* %14
%258 = load i32*, i32** %6
%259 = load i32, i32* %12
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds i32, i32* %258, i64 %260
%262 = load i32, i32* %261
%263 = load i32*, i32** %6
%264 = load i32, i32* %7
%265 = sext i32 %264 to i64
%266 = getelementptr inbounds i32, i32* %263, i64 %265
store i32 %262, i32* %266
%267 = load i32, i32* %14
%268 = load i32*, i32** %6
%269 = load i32, i32* %12
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds i32, i32* %268, i64 %270
store i32 %267, i32* %271
br label %272
272: ; preds = %252
br label %273
273: ; preds = %272, %229, %205
br label %534
274: ; preds = %177
%275 = load i32*, i32** %5
%276 = load i32*, i32** %6
%277 = load i32, i32* %7
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds i32, i32* %276, i64 %278
%280 = load i32, i32* %279
%281 = mul nsw i32 2, %280
%282 = add nsw i32 %281, 1
%283 = sext i32 %282 to i64
%284 = getelementptr inbounds i32, i32* %275, i64 %283
%285 = load i32, i32* %284
%286 = load i32*, i32** %5
%287 = load i32*, i32** %6
%288 = load i32, i32* %12
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds i32, i32* %287, i64 %289
%291 = load i32, i32* %290
%292 = mul nsw i32 2, %291
%293 = add nsw i32 %292, 1
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds i32, i32* %286, i64 %294
%296 = load i32, i32* %295
%297 = icmp slt i32 %285, %296
br i1 %297, label %414, label %298
298: ; preds = %274
%299 = load i32*, i32** %5
%300 = load i32*, i32** %6
%301 = load i32, i32* %7
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds i32, i32* %300, i64 %302
%304 = load i32, i32* %303
%305 = mul nsw i32 2, %304
%306 = add nsw i32 %305, 1
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds i32, i32* %299, i64 %307
%309 = load i32, i32* %308
%310 = load i32*, i32** %5
%311 = load i32*, i32** %6
%312 = load i32, i32* %12
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds i32, i32* %311, i64 %313
%315 = load i32, i32* %314
%316 = mul nsw i32 2, %315
%317 = add nsw i32 %316, 1
%318 = sext i32 %317 to i64
%319 = getelementptr inbounds i32, i32* %310, i64 %318
%320 = load i32, i32* %319
%321 = icmp eq i32 %309, %320
br i1 %321, label %322, label %344
322: ; preds = %298
%323 = load i32*, i32** %5
%324 = load i32*, i32** %6
%325 = load i32, i32* %7
%326 = sext i32 %325 to i64
%327 = getelementptr inbounds i32, i32* %324, i64 %326
%328 = load i32, i32* %327
%329 = mul nsw i32 2, %328
%330 = sext i32 %329 to i64
%331 = getelementptr inbounds i32, i32* %323, i64 %330
%332 = load i32, i32* %331
%333 = load i32*, i32** %5
%334 = load i32*, i32** %6
%335 = load i32, i32* %12
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds i32, i32* %334, i64 %336
%338 = load i32, i32* %337
%339 = mul nsw i32 2, %338
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds i32, i32* %333, i64 %340
%342 = load i32, i32* %341
%343 = icmp slt i32 %332, %342
br i1 %343, label %414, label %344
344: ; preds = %322, %298
%345 = load i32*, i32** %5
%346 = load i32*, i32** %6
%347 = load i32, i32* %7
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds i32, i32* %346, i64 %348
%350 = load i32, i32* %349
%351 = mul nsw i32 2, %350
%352 = add nsw i32 %351, 1
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds i32, i32* %345, i64 %353
%355 = load i32, i32* %354
%356 = load i32*, i32** %5
%357 = load i32*, i32** %6
%358 = load i32, i32* %13
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds i32, i32* %357, i64 %359
%361 = load i32, i32* %360
%362 = mul nsw i32 2, %361
%363 = add nsw i32 %362, 1
%364 = sext i32 %363 to i64
%365 = getelementptr inbounds i32, i32* %356, i64 %364
%366 = load i32, i32* %365
%367 = icmp slt i32 %355, %366
br i1 %367, label %414, label %368
368: ; preds = %344
%369 = load i32*, i32** %5
%370 = load i32*, i32** %6
%371 = load i32, i32* %7
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds i32, i32* %370, i64 %372
%374 = load i32, i32* %373
%375 = mul nsw i32 2, %374
%376 = add nsw i32 %375, 1
%377 = sext i32 %376 to i64
%378 = getelementptr inbounds i32, i32* %369, i64 %377
%379 = load i32, i32* %378
%380 = load i32*, i32** %5
%381 = load i32*, i32** %6
%382 = load i32, i32* %13
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds i32, i32* %381, i64 %383
%385 = load i32, i32* %384
%386 = mul nsw i32 2, %385
%387 = add nsw i32 %386, 1
%388 = sext i32 %387 to i64
%389 = getelementptr inbounds i32, i32* %380, i64 %388
%390 = load i32, i32* %389
%391 = icmp eq i32 %379, %390
br i1 %391, label %392, label %531
392: ; preds = %368
%393 = load i32*, i32** %5
%394 = load i32*, i32** %6
%395 = load i32, i32* %7
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds i32, i32* %394, i64 %396
%398 = load i32, i32* %397
%399 = mul nsw i32 2, %398
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds i32, i32* %393, i64 %400
%402 = load i32, i32* %401
%403 = load i32*, i32** %5
%404 = load i32*, i32** %6
%405 = load i32, i32* %13
%406 = sext i32 %405 to i64
%407 = getelementptr inbounds i32, i32* %404, i64 %406
%408 = load i32, i32* %407
%409 = mul nsw i32 2, %408
%410 = sext i32 %409 to i64
%411 = getelementptr inbounds i32, i32* %403, i64 %410
%412 = load i32, i32* %411
%413 = icmp slt i32 %402, %412
br i1 %413, label %414, label %531
414: ; preds = %392, %344, %322, %274
%415 = load i32*, i32** %5
%416 = load i32*, i32** %6
%417 = load i32, i32* %12
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds i32, i32* %416, i64 %418
%420 = load i32, i32* %419
%421 = mul nsw i32 2, %420
%422 = add nsw i32 %421, 1
%423 = sext i32 %422 to i64
%424 = getelementptr inbounds i32, i32* %415, i64 %423
%425 = load i32, i32* %424
%426 = load i32*, i32** %5
%427 = load i32*, i32** %6
%428 = load i32, i32* %13
%429 = sext i32 %428 to i64
%430 = getelementptr inbounds i32, i32* %427, i64 %429
%431 = load i32, i32* %430
%432 = mul nsw i32 2, %431
%433 = add nsw i32 %432, 1
%434 = sext i32 %433 to i64
%435 = getelementptr inbounds i32, i32* %426, i64 %434
%436 = load i32, i32* %435
%437 = icmp slt i32 %425, %436
br i1 %437, label %484, label %438
438: ; preds = %414
%439 = load i32*, i32** %5
%440 = load i32*, i32** %6
%441 = load i32, i32* %12
%442 = sext i32 %441 to i64
%443 = getelementptr inbounds i32, i32* %440, i64 %442
%444 = load i32, i32* %443
%445 = mul nsw i32 2, %444
%446 = add nsw i32 %445, 1
%447 = sext i32 %446 to i64
%448 = getelementptr inbounds i32, i32* %439, i64 %447
%449 = load i32, i32* %448
%450 = load i32*, i32** %5
%451 = load i32*, i32** %6
%452 = load i32, i32* %13
%453 = sext i32 %452 to i64
%454 = getelementptr inbounds i32, i32* %451, i64 %453
%455 = load i32, i32* %454
%456 = mul nsw i32 2, %455
%457 = add nsw i32 %456, 1
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds i32, i32* %450, i64 %458
%460 = load i32, i32* %459
%461 = icmp eq i32 %449, %460
br i1 %461, label %462, label %507
462: ; preds = %438
%463 = load i32*, i32** %5
%464 = load i32*, i32** %6
%465 = load i32, i32* %12
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds i32, i32* %464, i64 %466
%468 = load i32, i32* %467
%469 = mul nsw i32 2, %468
%470 = sext i32 %469 to i64
%471 = getelementptr inbounds i32, i32* %463, i64 %470
%472 = load i32, i32* %471
%473 = load i32*, i32** %5
%474 = load i32*, i32** %6
%475 = load i32, i32* %13
%476 = sext i32 %475 to i64
%477 = getelementptr inbounds i32, i32* %474, i64 %476
%478 = load i32, i32* %477
%479 = mul nsw i32 2, %478
%480 = sext i32 %479 to i64
%481 = getelementptr inbounds i32, i32* %473, i64 %480
%482 = load i32, i32* %481
%483 = icmp slt i32 %472, %482
br i1 %483, label %484, label %507
484: ; preds = %462, %414
br label %485
485: ; preds = %484
%486 = load i32*, i32** %6
%487 = load i32, i32* %7
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds i32, i32* %486, i64 %488
%490 = load i32, i32* %489
store i32 %490, i32* %15
%491 = load i32*, i32** %6
%492 = load i32, i32* %13
%493 = sext i32 %492 to i64
%494 = getelementptr inbounds i32, i32* %491, i64 %493
%495 = load i32, i32* %494
%496 = load i32*, i32** %6
%497 = load i32, i32* %7
%498 = sext i32 %497 to i64
%499 = getelementptr inbounds i32, i32* %496, i64 %498
store i32 %495, i32* %499
%500 = load i32, i32* %15
%501 = load i32*, i32** %6
%502 = load i32, i32* %13
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds i32, i32* %501, i64 %503
store i32 %500, i32* %504
br label %505
505: ; preds = %485
%506 = load i32, i32* %13
store i32 %506, i32* %7
br label %530
507: ; preds = %462, %438
br label %508
508: ; preds = %507
%509 = load i32*, i32** %6
%510 = load i32, i32* %7
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds i32, i32* %509, i64 %511
%513 = load i32, i32* %512
store i32 %513, i32* %16
%514 = load i32*, i32** %6
%515 = load i32, i32* %12
%516 = sext i32 %515 to i64
%517 = getelementptr inbounds i32, i32* %514, i64 %516
%518 = load i32, i32* %517
%519 = load i32*, i32** %6
%520 = load i32, i32* %7
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds i32, i32* %519, i64 %521
store i32 %518, i32* %522
%523 = load i32, i32* %16
%524 = load i32*, i32** %6
%525 = load i32, i32* %12
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds i32, i32* %524, i64 %526
store i32 %523, i32* %527
br label %528
528: ; preds = %508
%529 = load i32, i32* %12
store i32 %529, i32* %7
br label %530
530: ; preds = %528, %505
br label %532
531: ; preds = %392, %368
br label %534
532: ; preds = %530
br label %533
533: ; preds = %532
br label %166
534: ; preds = %531, %273, %176
br label %143
535: ; preds = %143
ret void
}

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