void lineTwoStep(int x0, int y0, int x1, int y1) {
  int dy = y1 - y0;
  int dx = x1 - x0;
  int stepx, stepy;
  if (dy < 0) {
    dy = -dy;
    stepy = -1;
  } else {
    stepy = 1;
  }
  if (dx < 0) {
    dx = -dx;
    stepx = -1;
  } else {
    stepx = 1;
  }
  lpoint(x0, y0);
  if (dx == 0 && dy == 0)
    return;
  lpoint(x1, y1);
  if (dx > dy) {
    int length = (dx - 1) >> 2;
    int extras = (dx - 1) & 3;
    int incr2 = (dy << 2) - (dx << 1);
    if (incr2 < 0) {
      int c = dy << 1;
      int incr1 = c << 1;
      int d = incr1 - dx;
      int i;
      for (i = 0; i < length; i++) {
        x0 += stepx;
        x1 -= stepx;
        if (d < 0) {
          lpoint(x0, y0);
          lpoint(x0 += stepx, y0);
          lpoint(x1, y1);
          lpoint(x1 -= stepx, y1);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0, y0 += stepy);
            lpoint(x0 += stepx, y0);
            lpoint(x1, y1 -= stepy);
            lpoint(x1 -= stepx, y1);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d < 0) {
          lpoint(x0 += stepx, y0);
          if (extras > 1)
            lpoint(x0 += stepx, y0);
          if (extras > 2)
            lpoint(x1 -= stepx, y1);
        } else if (d < c) {
          lpoint(x0 += stepx, y0);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        }
      }
    } else {
      int c = (dy - dx) << 1;
      int incr1 = c << 1;
      int d = incr1 + dx;
      int i;
      for (i = 0; i < length; i++) {
        x0 += stepx;
        x1 -= stepx;
        if (d > 0) {
          lpoint(x0, y0 += stepy);
          lpoint(x0 += stepx, y0 += stepy);
          lpoint(x1, y1 -= stepy);
          lpoint(x1 -= stepx, y1 -= stepy);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0, y0 += stepy);
            lpoint(x0 += stepx, y0);
            lpoint(x1, y1 -= stepy);
            lpoint(x1 -= stepx, y1);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d > 0) {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        } else if (d < c) {
          lpoint(x0 += stepx, y0);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0);
          if (extras > 2) {
            if (d > c)
              lpoint(x1 -= stepx, y1 -= stepy);
            else
              lpoint(x1 -= stepx, y1);
          }
        }
      }
    }
  } else {
    int length = (dy - 1) >> 2;
    int extras = (dy - 1) & 3;
    int incr2 = (dx << 2) - (dy << 1);
    if (incr2 < 0) {
      int c = dx << 1;
      int incr1 = c << 1;
      int d = incr1 - dy;
      int i;
      for (i = 0; i < length; i++) {
        y0 += stepy;
        y1 -= stepy;
        if (d < 0) {
          lpoint(x0, y0);
          lpoint(x0, y0 += stepy);
          lpoint(x1, y1);
          lpoint(x1, y1 -= stepy);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0 += stepx, y0);
            lpoint(x0, y0 += stepy);
            lpoint(x1 -= stepx, y1);
            lpoint(x1, y1 -= stepy);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d < 0) {
          lpoint(x0, y0 += stepy);
          if (extras > 1)
            lpoint(x0, y0 += stepy);
          if (extras > 2)
            lpoint(x1, y1 -= stepy);
        } else if (d < c) {
          lpoint(x0, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1, y1 -= stepy);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        }
      }
    } else {
      int c = (dx - dy) << 1;
      int incr1 = c << 1;
      int d = incr1 + dy;
      int i;
      for (i = 0; i < length; i++) {
        y0 += stepy;
        y1 -= stepy;
        if (d > 0) {
          lpoint(x0 += stepx, y0);
          lpoint(x0 += stepx, y0 += stepy);
          lpoint(x1 -= stepy, y1);
          lpoint(x1 -= stepx, y1 -= stepy);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0 += stepx, y0);
            lpoint(x0, y0 += stepy);
            lpoint(x1 -= stepx, y1);
            lpoint(x1, y1 -= stepy);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d > 0) {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        } else if (d < c) {
          lpoint(x0, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1, y1 -= stepy);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0, y0 += stepy);
          if (extras > 2) {
            if (d > c)
              lpoint(x1 -= stepx, y1 -= stepy);
            else
              lpoint(x1, y1 -= stepy);
          }
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<lineTwoStep>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x4(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x14(%rbp)
jge    1157 <lineTwoStep+0x47>
xor    %eax,%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
movl   $0xffffffff,-0x20(%rbp)
jmp    115e <lineTwoStep+0x4e>
movl   $0x1,-0x20(%rbp)
cmpl   $0x0,-0x18(%rbp)
jge    117c <lineTwoStep+0x6c>
xor    %eax,%eax
sub    -0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
movl   $0xffffffff,-0x1c(%rbp)
jmp    1183 <lineTwoStep+0x73>
movl   $0x1,-0x1c(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x0,-0x18(%rbp)
jne    11a9 <lineTwoStep+0x99>
cmpl   $0x0,-0x14(%rbp)
jne    11a9 <lineTwoStep+0x99>
jmp    1d8e <lineTwoStep+0xc7e>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x18(%rbp),%eax
cmp    -0x14(%rbp),%eax
jle    17a8 <lineTwoStep+0x698>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
sar    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x28(%rbp)
mov    -0x14(%rbp),%eax
shl    $0x2,%eax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jge    149d <lineTwoStep+0x38d>
mov    -0x14(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    %eax,-0x38(%rbp)
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    135e <lineTwoStep+0x24e>
mov    -0x1c(%rbp),%eax
add    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x1c(%rbp),%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x0,-0x38(%rbp)
jge    1291 <lineTwoStep+0x181>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    134b <lineTwoStep+0x23b>
mov    -0x38(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    12f2 <lineTwoStep+0x1e2>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1342 <lineTwoStep+0x232>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x2c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1350 <lineTwoStep+0x240>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1217 <lineTwoStep+0x107>
cmpl   $0x0,-0x28(%rbp)
jle    1498 <lineTwoStep+0x388>
cmpl   $0x0,-0x38(%rbp)
jge    13c6 <lineTwoStep+0x2b6>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x28(%rbp)
jle    13a2 <lineTwoStep+0x292>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x28(%rbp)
jle    13c1 <lineTwoStep+0x2b1>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1493 <lineTwoStep+0x383>
mov    -0x38(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    142c <lineTwoStep+0x31c>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x28(%rbp)
jle    1408 <lineTwoStep+0x2f8>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x28(%rbp)
jle    1427 <lineTwoStep+0x317>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    148e <lineTwoStep+0x37e>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x28(%rbp)
jle    1462 <lineTwoStep+0x352>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x28(%rbp)
jle    1489 <lineTwoStep+0x379>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    148e <lineTwoStep+0x37e>
jmp    1493 <lineTwoStep+0x383>
jmp    1498 <lineTwoStep+0x388>
jmp    17a3 <lineTwoStep+0x693>
mov    -0x14(%rbp),%eax
sub    -0x18(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1625 <lineTwoStep+0x515>
mov    -0x1c(%rbp),%eax
add    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x1c(%rbp),%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x0,-0x48(%rbp)
jle    1558 <lineTwoStep+0x448>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x44(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x48(%rbp)
jmp    1612 <lineTwoStep+0x502>
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    15b9 <lineTwoStep+0x4a9>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1609 <lineTwoStep+0x4f9>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x2c(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x48(%rbp)
jmp    1617 <lineTwoStep+0x507>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    14c2 <lineTwoStep+0x3b2>
cmpl   $0x0,-0x28(%rbp)
jle    179e <lineTwoStep+0x68e>
cmpl   $0x0,-0x48(%rbp)
jle    16a1 <lineTwoStep+0x591>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x28(%rbp)
jle    1675 <lineTwoStep+0x565>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x28(%rbp)
jle    169c <lineTwoStep+0x58c>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1799 <lineTwoStep+0x689>
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    1707 <lineTwoStep+0x5f7>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x28(%rbp)
jle    16e3 <lineTwoStep+0x5d3>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x28(%rbp)
jle    1702 <lineTwoStep+0x5f2>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1794 <lineTwoStep+0x684>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x28(%rbp)
jle    173d <lineTwoStep+0x62d>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x28(%rbp)
jle    178f <lineTwoStep+0x67f>
mov    -0x48(%rbp),%eax
cmp    -0x40(%rbp),%eax
jle    1775 <lineTwoStep+0x665>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    178a <lineTwoStep+0x67a>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    178f <lineTwoStep+0x67f>
jmp    1794 <lineTwoStep+0x684>
jmp    1799 <lineTwoStep+0x689>
jmp    179e <lineTwoStep+0x68e>
jmp    17a3 <lineTwoStep+0x693>
jmp    1d8e <lineTwoStep+0xc7e>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
sar    $0x2,%eax
mov    %eax,-0x50(%rbp)
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x54(%rbp)
mov    -0x18(%rbp),%eax
shl    $0x2,%eax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x58(%rbp)
cmpl   $0x0,-0x58(%rbp)
jge    1a83 <lineTwoStep+0x973>
mov    -0x18(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x64(%rbp)
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x50(%rbp),%eax
jge    1944 <lineTwoStep+0x834>
mov    -0x20(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x0,-0x64(%rbp)
jge    1877 <lineTwoStep+0x767>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x60(%rbp),%eax
add    -0x64(%rbp),%eax
mov    %eax,-0x64(%rbp)
jmp    1931 <lineTwoStep+0x821>
mov    -0x64(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jge    18d8 <lineTwoStep+0x7c8>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1928 <lineTwoStep+0x818>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x58(%rbp),%eax
add    -0x64(%rbp),%eax
mov    %eax,-0x64(%rbp)
jmp    1936 <lineTwoStep+0x826>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    17fd <lineTwoStep+0x6ed>
cmpl   $0x0,-0x54(%rbp)
jle    1a7e <lineTwoStep+0x96e>
cmpl   $0x0,-0x64(%rbp)
jge    19ac <lineTwoStep+0x89c>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x54(%rbp)
jle    1988 <lineTwoStep+0x878>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x54(%rbp)
jle    19a7 <lineTwoStep+0x897>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1a79 <lineTwoStep+0x969>
mov    -0x64(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jge    1a12 <lineTwoStep+0x902>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x54(%rbp)
jle    19ee <lineTwoStep+0x8de>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x54(%rbp)
jle    1a0d <lineTwoStep+0x8fd>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1a74 <lineTwoStep+0x964>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x54(%rbp)
jle    1a48 <lineTwoStep+0x938>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x54(%rbp)
jle    1a6f <lineTwoStep+0x95f>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1a74 <lineTwoStep+0x964>
jmp    1a79 <lineTwoStep+0x969>
jmp    1a7e <lineTwoStep+0x96e>
jmp    1d89 <lineTwoStep+0xc79>
mov    -0x18(%rbp),%eax
sub    -0x14(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x74(%rbp)
movl   $0x0,-0x78(%rbp)
mov    -0x78(%rbp),%eax
cmp    -0x50(%rbp),%eax
jge    1c0b <lineTwoStep+0xafb>
mov    -0x20(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x10(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x0,-0x74(%rbp)
jle    1b3e <lineTwoStep+0xa2e>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x20(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x70(%rbp),%eax
add    -0x74(%rbp),%eax
mov    %eax,-0x74(%rbp)
jmp    1bf8 <lineTwoStep+0xae8>
mov    -0x74(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    1b9f <lineTwoStep+0xa8f>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1bef <lineTwoStep+0xadf>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x8(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x10(%rbp),%esi
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
mov    -0x58(%rbp),%eax
add    -0x74(%rbp),%eax
mov    %eax,-0x74(%rbp)
jmp    1bfd <lineTwoStep+0xaed>
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    1aa8 <lineTwoStep+0x998>
cmpl   $0x0,-0x54(%rbp)
jle    1d84 <lineTwoStep+0xc74>
cmpl   $0x0,-0x74(%rbp)
jle    1c87 <lineTwoStep+0xb77>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x54(%rbp)
jle    1c5b <lineTwoStep+0xb4b>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x54(%rbp)
jle    1c82 <lineTwoStep+0xb72>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1d7f <lineTwoStep+0xc6f>
mov    -0x74(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jge    1ced <lineTwoStep+0xbdd>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x54(%rbp)
jle    1cc9 <lineTwoStep+0xbb9>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x54(%rbp)
jle    1ce8 <lineTwoStep+0xbd8>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1d7a <lineTwoStep+0xc6a>
mov    -0x1c(%rbp),%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x1,-0x54(%rbp)
jle    1d23 <lineTwoStep+0xc13>
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
add    -0x8(%rbp),%esi
mov    %esi,-0x8(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
cmpl   $0x2,-0x54(%rbp)
jle    1d75 <lineTwoStep+0xc65>
mov    -0x74(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jle    1d5b <lineTwoStep+0xc4b>
mov    -0x1c(%rbp),%eax
mov    -0xc(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0xc(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1d70 <lineTwoStep+0xc60>
mov    -0xc(%rbp),%edi
mov    -0x20(%rbp),%eax
mov    -0x10(%rbp),%esi
sub    %eax,%esi
mov    %esi,-0x10(%rbp)
mov    $0x0,%al
call   1030 <lpoint@plt>
jmp    1d75 <lineTwoStep+0xc65>
jmp    1d7a <lineTwoStep+0xc6a>
jmp    1d7f <lineTwoStep+0xc6f>
jmp    1d84 <lineTwoStep+0xc74>
jmp    1d89 <lineTwoStep+0xc79>
jmp    1d8e <lineTwoStep+0xc7e>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<lineTwoStep>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %ecx,0x10(%rsp)
mov    %ecx,%ebp
sub    %esi,%ebp
mov    %edx,0x18(%rsp)
mov    %edx,%ebx
sub    %edi,%ebx
mov    %ebp,%r14d
neg    %r14d
cmovs  %ebp,%r14d
mov    %ebx,%r12d
neg    %r12d
cmovs  %ebx,%r12d
mov    %edi,0x14(%rsp)
mov    %esi,0x8(%rsp)
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    %r12d,%eax
or     %r14d,%eax
jne    1168 <lineTwoStep+0x58>
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
not    %ebp
shr    $0x1f,%ebp
lea    -0x1(%rbp,%rbp,1),%eax
mov    %eax,0xc(%rsp)
not    %ebx
shr    $0x1f,%ebx
lea    (%rbx,%rbx,1),%r13d
add    $0xffffffff,%r13d
mov    0x18(%rsp),%r15d
mov    %r15d,%edi
mov    0x10(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    %r12d,%eax
sub    %r14d,%eax
mov    %r13d,0x4(%rsp)
jle    136b <lineTwoStep+0x25b>
lea    -0x1(%r12),%ecx
mov    %ecx,%eax
sar    $0x2,%eax
and    $0x3,%ecx
mov    %ecx,0x20(%rsp)
lea    0x0(,%r14,4),%ebp
lea    (%r12,%r12,1),%ecx
mov    %ebp,%edx
sub    %ecx,%edx
mov    %edx,0x1c(%rsp)
js     15ee <lineTwoStep+0x4de>
sub    %r12d,%r14d
lea    (%r14,%r14,1),%ecx
mov    %ecx,0x28(%rsp)
lea    (%r12,%r14,4),%ebp
cmp    $0x5,%r12d
jb     151b <lineTwoStep+0x40b>
shl    $0x2,%r14d
mov    %r14,0x30(%rsp)
cmp    $0x2,%eax
mov    $0x1,%r14d
cmovge %eax,%r14d
jmp    1293 <lineTwoStep+0x183>
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x10(%rsp),%r13d
mov    %ebp,0x18(%rsp)
mov    %r15d,%r12d
mov    0xc(%rsp),%r15d
mov    0x8(%rsp),%ebx
add    %r15d,%ebx
mov    %ebx,%esi
mov    %edi,%ebp
xor    %eax,%eax
call   1030 <lpoint@plt>
add    0x4(%rsp),%ebp
add    %r15d,%ebx
mov    %ebp,0x14(%rsp)
mov    %ebp,%edi
mov    %ebx,0x8(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r15d,%r13d
mov    %r12d,%edi
mov    %r13d,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    0x4(%rsp),%r12d
sub    %r15d,%r13d
mov    %r12d,%r15d
mov    0x18(%rsp),%ebp
mov    %r13d,%esi
mov    0x4(%rsp),%r13d
mov    %r12d,%edi
mov    %esi,0x10(%rsp)
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x30(%rsp),%rax
add    %eax,%ebp
add    $0xffffffff,%r14d
je     151b <lineTwoStep+0x40b>
mov    0x14(%rsp),%edi
add    %r13d,%edi
sub    %r13d,%r15d
test   %ebp,%ebp
jg     1210 <lineTwoStep+0x100>
cmp    0x28(%rsp),%ebp
jge    1305 <lineTwoStep+0x1f5>
mov    0x8(%rsp),%ebx
mov    %ebx,%esi
mov    %ebp,0x18(%rsp)
mov    %r15d,%ebp
mov    %edi,%r12d
xor    %eax,%eax
call   1030 <lpoint@plt>
add    %r13d,%r12d
mov    0x18(%rsp),%ebp
mov    0xc(%rsp),%r13d
add    %r13d,%ebx
mov    %r12d,0x14(%rsp)
mov    %r12d,%edi
mov    %ebx,0x8(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    %r15d,%edi
mov    0x10(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    0x4(%rsp),%r15d
sub    %r13d,%ebx
mov    0x4(%rsp),%r13d
jmp    1352 <lineTwoStep+0x242>
mov    0xc(%rsp),%r13d
mov    0x8(%rsp),%ebx
add    %r13d,%ebx
mov    %ebx,%esi
mov    %edi,%r12d
xor    %eax,%eax
call   1030 <lpoint@plt>
add    0x4(%rsp),%r12d
mov    %r12d,0x14(%rsp)
mov    %r12d,%edi
mov    %ebx,0x8(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x10(%rsp),%ebx
sub    %r13d,%ebx
mov    0x4(%rsp),%r13d
mov    %r15d,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r13d,%r15d
mov    %r15d,%edi
mov    %ebx,0x10(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x1c(%rsp),%eax
jmp    1287 <lineTwoStep+0x177>
mov    %rax,%rdi
lea    -0x1(%r14),%edx
mov    %edx,%eax
sar    $0x2,%eax
and    $0x3,%edx
lea    0x0(,%r12,4),%ebp
lea    (%r14,%r14,1),%ecx
mov    %ebp,%esi
sub    %ecx,%esi
mov    %esi,0x30(%rsp)
mov    %edx,0x24(%rsp)
js     175a <lineTwoStep+0x64a>
lea    (%rdi,%rdi,1),%ecx
mov    %ecx,0x1c(%rsp)
mov    %r14,%rcx
lea    (%r14,%rdi,4),%r14d
cmp    $0x5,%ecx
jl     157e <lineTwoStep+0x46e>
shl    $0x2,%edi
mov    %rdi,0x28(%rsp)
cmp    $0x2,%eax
mov    $0x1,%r12d
cmovge %eax,%r12d
jmp    1446 <lineTwoStep+0x336>
nopl   0x0(%rax)
mov    0x14(%rsp),%ebp
add    %r13d,%ebp
mov    %ebp,%edi
mov    0x8(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
add    %r13d,%ebp
add    %r15d,%ebx
mov    %ebp,0x14(%rsp)
mov    %ebp,%edi
mov    %ebx,0x8(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x18(%rsp),%ebp
sub    %r15d,%ebp
mov    %ebp,%edi
mov    0x10(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    0x4(%rsp),%ebp
sub    %r15d,%ebx
mov    %ebp,0x18(%rsp)
mov    %ebp,%edi
mov    0x4(%rsp),%r13d
mov    %ebx,0x10(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x28(%rsp),%rax
add    %eax,%r14d
add    $0xffffffff,%r12d
je     157e <lineTwoStep+0x46e>
mov    0xc(%rsp),%r15d
add    %r15d,0x8(%rsp)
sub    %r15d,0x10(%rsp)
test   %r14d,%r14d
jg     13d0 <lineTwoStep+0x2c0>
cmp    0x1c(%rsp),%r14d
jge    14af <lineTwoStep+0x39f>
mov    0x14(%rsp),%ebx
mov    %ebx,%edi
mov    0x8(%rsp),%ebp
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
add    %r13d,%ebx
mov    0xc(%rsp),%r15d
add    %r15d,%ebp
mov    %ebx,0x14(%rsp)
mov    %ebx,%edi
mov    %ebp,0x8(%rsp)
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x18(%rsp),%ebp
mov    %ebp,%edi
mov    0x10(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    0x4(%rsp),%ebp
jmp    14f7 <lineTwoStep+0x3e7>
mov    0x14(%rsp),%ebx
add    %r13d,%ebx
mov    %ebx,%edi
mov    0x8(%rsp),%ebp
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0xc(%rsp),%r15d
add    %r15d,%ebp
mov    %ebx,0x14(%rsp)
mov    %ebx,%edi
mov    %ebp,0x8(%rsp)
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x18(%rsp),%ebp
sub    0x4(%rsp),%ebp
mov    %ebp,%edi
mov    0x10(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r15d,%ebx
mov    %ebp,0x18(%rsp)
mov    %ebp,%edi
mov    0x4(%rsp),%r13d
mov    %ebx,0x10(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x30(%rsp),%eax
jmp    1439 <lineTwoStep+0x329>
mov    0x10(%rsp),%r13d
cmpl   $0x0,0x20(%rsp)
je     1159 <lineTwoStep+0x49>
test   %ebp,%ebp
jle    1986 <lineTwoStep+0x876>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
mov    0x8(%rsp),%esi
add    0xc(%rsp),%esi
mov    %edi,%r14d
mov    %esi,%ebp
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x20(%rsp),%ebx
cmp    $0x2,%ebx
jb     1159 <lineTwoStep+0x49>
mov    %r14d,%edi
add    0x4(%rsp),%edi
mov    %ebp,%esi
add    0xc(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebx
jne    1159 <lineTwoStep+0x49>
mov    %r15d,%edi
jmp    15de <lineTwoStep+0x4ce>
mov    0x10(%rsp),%r13d
mov    0x24(%rsp),%ebx
test   %ebx,%ebx
je     1159 <lineTwoStep+0x49>
test   %r14d,%r14d
jle    19c2 <lineTwoStep+0x8b2>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
mov    0x8(%rsp),%esi
add    0xc(%rsp),%esi
mov    %edi,%r14d
mov    %esi,%ebp
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x2,%ebx
jb     1159 <lineTwoStep+0x49>
mov    %r14d,%edi
add    0x4(%rsp),%edi
mov    %ebp,%esi
add    0xc(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebx
jne    1159 <lineTwoStep+0x49>
mov    0x18(%rsp),%edi
sub    0x4(%rsp),%edi
mov    %r13d,%esi
sub    0xc(%rsp),%esi
jmp    1bd8 <lineTwoStep+0xac8>
add    %r14d,%r14d
mov    %r12,%rcx
mov    %ebp,%r12d
sub    %ecx,%r12d
cmp    $0x5,%ecx
jb     18c7 <lineTwoStep+0x7b7>
cmp    $0x2,%eax
mov    $0x1,%ecx
cmovge %eax,%ecx
mov    %r14,0x30(%rsp)
mov    %ebp,0x24(%rsp)
jmp    167a <lineTwoStep+0x56a>
nopl   0x0(%rax)
mov    0x8(%rsp),%ebx
mov    %ebx,%esi
mov    %edi,%r14d
xor    %eax,%eax
call   1030 <lpoint@plt>
add    %r13d,%r14d
mov    %r14d,0x14(%rsp)
mov    %r14d,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    %r15d,%edi
mov    0x10(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r13d,%r15d
mov    %r15d,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    %ebp,%eax
add    %eax,%r12d
mov    0x28(%rsp),%ecx
add    $0xffffffff,%ecx
mov    0x30(%rsp),%r14
je     18c7 <lineTwoStep+0x7b7>
mov    0x14(%rsp),%edi
add    %r13d,%edi
sub    %r13d,%r15d
test   %r12d,%r12d
mov    %ecx,0x28(%rsp)
js     1620 <lineTwoStep+0x510>
mov    %r15d,0x18(%rsp)
cmp    %r14d,%r12d
jge    16f0 <lineTwoStep+0x5e0>
mov    0x8(%rsp),%r14d
mov    %r14d,%esi
mov    %edi,%ebp
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    %r14d,%esi
mov    0x4(%rsp),%r13d
add    %r13d,%ebp
mov    0xc(%rsp),%r15d
add    %r15d,%esi
mov    %esi,0x8(%rsp)
mov    %ebp,0x14(%rsp)
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x18(%rsp),%ebp
mov    %ebp,%edi
mov    0x10(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r13d,%ebp
sub    %r15d,%ebx
mov    %ebp,%r15d
mov    %ebp,%edi
jmp    1740 <lineTwoStep+0x630>
nopl   0x0(%rax)
mov    0xc(%rsp),%r15d
mov    0x8(%rsp),%ebp
add    %r15d,%ebp
mov    %ebp,%esi
mov    %edi,%ebx
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x4(%rsp),%r13d
add    %r13d,%ebx
mov    %ebx,0x14(%rsp)
mov    %ebx,%edi
mov    %ebp,0x8(%rsp)
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x10(%rsp),%ebx
sub    %r15d,%ebx
mov    0x18(%rsp),%r15d
mov    %r15d,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r13d,%r15d
mov    %r15d,%edi
mov    %ebx,0x10(%rsp)
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x1c(%rsp),%eax
mov    0x24(%rsp),%ebp
jmp    1665 <lineTwoStep+0x555>
add    %r12d,%r12d
mov    %ebp,%r15d
sub    %r14d,%r15d
cmp    $0x5,%r14d
mov    %r12,0x28(%rsp)
jl     1930 <lineTwoStep+0x820>
mov    %ebp,0x1c(%rsp)
cmp    $0x2,%eax
mov    $0x1,%r12d
cmovge %eax,%r12d
jmp    17f0 <lineTwoStep+0x6e0>
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x14(%rsp),%r14d
mov    %r14d,%edi
mov    0x8(%rsp),%r13d
mov    %r13d,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
add    %ebx,%r13d
mov    %r14d,%edi
mov    %r13d,0x8(%rsp)
mov    %r13d,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x18(%rsp),%r13d
mov    %r13d,%edi
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %ebx,%ebp
mov    %r13d,%edi
mov    %ebp,0x10(%rsp)
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x1c(%rsp),%eax
add    %eax,%r15d
add    $0xffffffff,%r12d
je     1930 <lineTwoStep+0x820>
mov    0xc(%rsp),%ebx
add    %ebx,0x8(%rsp)
mov    0x10(%rsp),%ebp
sub    %ebx,%ebp
test   %r15d,%r15d
js     1790 <lineTwoStep+0x680>
mov    %ebp,0x10(%rsp)
cmp    0x28(%rsp),%r15d
mov    0x14(%rsp),%ebp
jge    1860 <lineTwoStep+0x750>
mov    %ebp,%edi
mov    0x8(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x4(%rsp),%r14d
add    %r14d,%ebp
mov    0xc(%rsp),%r13d
add    %r13d,%ebx
mov    %ebx,0x8(%rsp)
mov    %ebp,0x14(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x18(%rsp),%ebx
mov    %ebx,%edi
mov    0x10(%rsp),%ebp
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r14d,%ebx
jmp    18a8 <lineTwoStep+0x798>
nopl   0x0(%rax)
mov    0x8(%rsp),%ebx
mov    0x4(%rsp),%r14d
add    %r14d,%ebp
mov    %ebp,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0xc(%rsp),%r13d
add    %r13d,%ebx
mov    %ebx,0x8(%rsp)
mov    %ebp,0x14(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x18(%rsp),%ebx
sub    %r14d,%ebx
mov    %ebx,%edi
mov    0x10(%rsp),%ebp
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
sub    %r13d,%ebp
mov    %ebx,0x18(%rsp)
mov    %ebx,%edi
mov    %ebp,0x10(%rsp)
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x30(%rsp),%eax
jmp    17e3 <lineTwoStep+0x6d3>
mov    0x10(%rsp),%r13d
cmpl   $0x0,0x20(%rsp)
je     1159 <lineTwoStep+0x49>
test   %r12d,%r12d
js     1a10 <lineTwoStep+0x900>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
cmp    %r14d,%r12d
jge    1a9c <lineTwoStep+0x98c>
mov    %edi,%r14d
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x20(%rsp),%ebx
cmp    $0x2,%ebx
jb     1159 <lineTwoStep+0x49>
mov    %r14d,%edi
add    0x4(%rsp),%edi
mov    0x8(%rsp),%esi
add    0xc(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebx
jne    1159 <lineTwoStep+0x49>
jmp    1a4c <lineTwoStep+0x93c>
mov    0x24(%rsp),%ebp
test   %ebp,%ebp
mov    0x28(%rsp),%rax
je     1159 <lineTwoStep+0x49>
test   %r15d,%r15d
js     1a5b <lineTwoStep+0x94b>
cmp    %eax,%r15d
mov    0xc(%rsp),%eax
jge    1ae7 <lineTwoStep+0x9d7>
mov    0x8(%rsp),%esi
add    %eax,%esi
mov    0x14(%rsp),%edi
mov    %esi,%ebx
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x2,%ebp
jb     1159 <lineTwoStep+0x49>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
mov    %ebx,%esi
add    0xc(%rsp),%esi
jmp    1a83 <lineTwoStep+0x973>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
cmp    0x28(%rsp),%ebp
jge    1b34 <lineTwoStep+0xa24>
mov    %edi,%ebx
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x20(%rsp),%ebp
cmp    $0x2,%ebp
jb     1159 <lineTwoStep+0x49>
mov    %ebx,%edi
add    0x4(%rsp),%edi
mov    0x8(%rsp),%esi
add    0xc(%rsp),%esi
jmp    1a3c <lineTwoStep+0x92c>
cmp    0x1c(%rsp),%r14d
mov    0xc(%rsp),%eax
jge    1b86 <lineTwoStep+0xa76>
mov    0x8(%rsp),%esi
add    %eax,%esi
mov    0x14(%rsp),%edi
mov    %esi,%ebp
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x2,%ebx
jb     1159 <lineTwoStep+0x49>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
mov    %ebp,%esi
add    0xc(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebx
je     1bcd <lineTwoStep+0xabd>
jmp    1159 <lineTwoStep+0x49>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
mov    %edi,%ebx
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x20(%rsp),%ebp
cmp    $0x2,%ebp
jb     1159 <lineTwoStep+0x49>
mov    %ebx,%edi
add    0x4(%rsp),%edi
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebp
jne    1159 <lineTwoStep+0x49>
mov    %r15d,%edi
sub    0x4(%rsp),%edi
mov    %r13d,%esi
jmp    1bd8 <lineTwoStep+0xac8>
mov    0x8(%rsp),%esi
add    0xc(%rsp),%esi
mov    0x14(%rsp),%edi
mov    %esi,%ebx
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x2,%ebp
jb     1159 <lineTwoStep+0x49>
mov    %ebx,%esi
add    0xc(%rsp),%esi
mov    0x14(%rsp),%edi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebp
jne    1159 <lineTwoStep+0x49>
mov    0x10(%rsp),%esi
jmp    1bd0 <lineTwoStep+0xac0>
mov    0x8(%rsp),%esi
add    0xc(%rsp),%esi
mov    %edi,%ebx
mov    %esi,%r14d
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x20(%rsp),%ebp
cmp    $0x2,%ebp
jb     1159 <lineTwoStep+0x49>
mov    %ebx,%edi
add    0x4(%rsp),%edi
mov    %r14d,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebp
jne    1159 <lineTwoStep+0x49>
mov    %r15d,%edi
sub    0x4(%rsp),%edi
sub    0xc(%rsp),%r13d
jmp    1b81 <lineTwoStep+0xa71>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
mov    0x8(%rsp),%esi
add    %eax,%esi
mov    %edi,%r14d
mov    %esi,%ebx
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x2,%ebp
jb     1159 <lineTwoStep+0x49>
mov    %ebx,%esi
add    0xc(%rsp),%esi
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebp
jne    1159 <lineTwoStep+0x49>
mov    0x18(%rsp),%edi
sub    0x4(%rsp),%edi
mov    0x10(%rsp),%esi
jmp    15e5 <lineTwoStep+0x4d5>
mov    0x8(%rsp),%esi
add    0xc(%rsp),%esi
mov    %edi,%r12d
mov    %esi,%r14d
xor    %eax,%eax
call   1030 <lpoint@plt>
mov    0x20(%rsp),%ebx
cmp    $0x2,%ebx
jb     1159 <lineTwoStep+0x49>
mov    %r12d,%edi
add    0x4(%rsp),%edi
mov    %r14d,%esi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebx
jne    1159 <lineTwoStep+0x49>
mov    %r15d,%edi
sub    0x4(%rsp),%edi
cmp    0x28(%rsp),%ebp
jg     15e2 <lineTwoStep+0x4d2>
mov    %r13d,%esi
jmp    1bd8 <lineTwoStep+0xac8>
mov    0x14(%rsp),%edi
add    0x4(%rsp),%edi
mov    0x8(%rsp),%esi
add    %eax,%esi
mov    %edi,%r15d
mov    %esi,%ebp
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x2,%ebx
jb     1159 <lineTwoStep+0x49>
mov    %ebp,%esi
add    0xc(%rsp),%esi
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <lpoint@plt>
cmp    $0x3,%ebx
jne    1159 <lineTwoStep+0x49>
cmp    0x1c(%rsp),%r14d
jg     15da <lineTwoStep+0x4ca>
mov    %r13d,%esi
sub    0xc(%rsp),%esi
mov    0x18(%rsp),%edi
xor    %eax,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <lpoint@plt>

LLVM IR (-O0):
define void @lineTwoStep(i32 %0, i32 %1, i32 %2, i32 %3) {
%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
%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
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
store i32 %0, i32* %5
store i32 %1, i32* %6
store i32 %2, i32* %7
store i32 %3, i32* %8
%35 = load i32, i32* %8
%36 = load i32, i32* %6
%37 = sub nsw i32 %35, %36
store i32 %37, i32* %9
%38 = load i32, i32* %7
%39 = load i32, i32* %5
%40 = sub nsw i32 %38, %39
store i32 %40, i32* %10
%41 = load i32, i32* %9
%42 = icmp slt i32 %41, 0
br i1 %42, label %43, label %46
43: ; preds = %4
%44 = load i32, i32* %9
%45 = sub nsw i32 0, %44
store i32 %45, i32* %9
store i32 -1, i32* %12
br label %47
46: ; preds = %4
store i32 1, i32* %12
br label %47
47: ; preds = %46, %43
%48 = load i32, i32* %10
%49 = icmp slt i32 %48, 0
br i1 %49, label %50, label %53
50: ; preds = %47
%51 = load i32, i32* %10
%52 = sub nsw i32 0, %51
store i32 %52, i32* %10
store i32 -1, i32* %11
br label %54
53: ; preds = %47
store i32 1, i32* %11
br label %54
54: ; preds = %53, %50
%55 = load i32, i32* %5
%56 = load i32, i32* %6
%57 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %55, i32 %56)
%58 = load i32, i32* %10
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %64
60: ; preds = %54
%61 = load i32, i32* %9
%62 = icmp eq i32 %61, 0
br i1 %62, label %63, label %64
63: ; preds = %60
br label %899
64: ; preds = %60, %54
%65 = load i32, i32* %7
%66 = load i32, i32* %8
%67 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %65, i32 %66)
%68 = load i32, i32* %10
%69 = load i32, i32* %9
%70 = icmp sgt i32 %68, %69
br i1 %70, label %71, label %485
71: ; preds = %64
%72 = load i32, i32* %10
%73 = sub nsw i32 %72, 1
%74 = ashr i32 %73, 2
store i32 %74, i32* %13
%75 = load i32, i32* %10
%76 = sub nsw i32 %75, 1
%77 = and i32 %76, 3
store i32 %77, i32* %14
%78 = load i32, i32* %9
%79 = shl i32 %78, 2
%80 = load i32, i32* %10
%81 = shl i32 %80, 1
%82 = sub nsw i32 %79, %81
store i32 %82, i32* %15
%83 = load i32, i32* %15
%84 = icmp slt i32 %83, 0
br i1 %84, label %85, label %271
85: ; preds = %71
%86 = load i32, i32* %9
%87 = shl i32 %86, 1
store i32 %87, i32* %16
%88 = load i32, i32* %16
%89 = shl i32 %88, 1
store i32 %89, i32* %17
%90 = load i32, i32* %17
%91 = load i32, i32* %10
%92 = sub nsw i32 %90, %91
store i32 %92, i32* %18
store i32 0, i32* %19
br label %93
93: ; preds = %177, %85
%94 = load i32, i32* %19
%95 = load i32, i32* %13
%96 = icmp slt i32 %94, %95
br i1 %96, label %97, label %180
97: ; preds = %93
%98 = load i32, i32* %11
%99 = load i32, i32* %5
%100 = add nsw i32 %99, %98
store i32 %100, i32* %5
%101 = load i32, i32* %11
%102 = load i32, i32* %7
%103 = sub nsw i32 %102, %101
store i32 %103, i32* %7
%104 = load i32, i32* %18
%105 = icmp slt i32 %104, 0
br i1 %105, label %106, label %126
106: ; preds = %97
%107 = load i32, i32* %5
%108 = load i32, i32* %6
%109 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %107, i32 %108)
%110 = load i32, i32* %11
%111 = load i32, i32* %5
%112 = add nsw i32 %111, %110
store i32 %112, i32* %5
%113 = load i32, i32* %6
%114 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %112, i32 %113)
%115 = load i32, i32* %7
%116 = load i32, i32* %8
%117 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %115, i32 %116)
%118 = load i32, i32* %11
%119 = load i32, i32* %7
%120 = sub nsw i32 %119, %118
store i32 %120, i32* %7
%121 = load i32, i32* %8
%122 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %120, i32 %121)
%123 = load i32, i32* %17
%124 = load i32, i32* %18
%125 = add nsw i32 %124, %123
store i32 %125, i32* %18
br label %176
126: ; preds = %97
%127 = load i32, i32* %18
%128 = load i32, i32* %16
%129 = icmp slt i32 %127, %128
br i1 %129, label %130, label %151
130: ; preds = %126
%131 = load i32, i32* %5
%132 = load i32, i32* %6
%133 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %131, i32 %132)
%134 = load i32, i32* %11
%135 = load i32, i32* %5
%136 = add nsw i32 %135, %134
store i32 %136, i32* %5
%137 = load i32, i32* %12
%138 = load i32, i32* %6
%139 = add nsw i32 %138, %137
store i32 %139, i32* %6
%140 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %136, i32 %139)
%141 = load i32, i32* %7
%142 = load i32, i32* %8
%143 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %141, i32 %142)
%144 = load i32, i32* %11
%145 = load i32, i32* %7
%146 = sub nsw i32 %145, %144
store i32 %146, i32* %7
%147 = load i32, i32* %12
%148 = load i32, i32* %8
%149 = sub nsw i32 %148, %147
store i32 %149, i32* %8
%150 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %146, i32 %149)
br label %172
151: ; preds = %126
%152 = load i32, i32* %5
%153 = load i32, i32* %12
%154 = load i32, i32* %6
%155 = add nsw i32 %154, %153
store i32 %155, i32* %6
%156 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %152, i32 %155)
%157 = load i32, i32* %11
%158 = load i32, i32* %5
%159 = add nsw i32 %158, %157
store i32 %159, i32* %5
%160 = load i32, i32* %6
%161 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %159, i32 %160)
%162 = load i32, i32* %7
%163 = load i32, i32* %12
%164 = load i32, i32* %8
%165 = sub nsw i32 %164, %163
store i32 %165, i32* %8
%166 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %162, i32 %165)
%167 = load i32, i32* %11
%168 = load i32, i32* %7
%169 = sub nsw i32 %168, %167
store i32 %169, i32* %7
%170 = load i32, i32* %8
%171 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %169, i32 %170)
br label %172
172: ; preds = %151, %130
%173 = load i32, i32* %15
%174 = load i32, i32* %18
%175 = add nsw i32 %174, %173
store i32 %175, i32* %18
br label %176
176: ; preds = %172, %106
br label %177
177: ; preds = %176
%178 = load i32, i32* %19
%179 = add nsw i32 %178, 1
store i32 %179, i32* %19
br label %93
180: ; preds = %93
%181 = load i32, i32* %14
%182 = icmp sgt i32 %181, 0
br i1 %182, label %183, label %270
183: ; preds = %180
%184 = load i32, i32* %18
%185 = icmp slt i32 %184, 0
br i1 %185, label %186, label %210
186: ; preds = %183
%187 = load i32, i32* %11
%188 = load i32, i32* %5
%189 = add nsw i32 %188, %187
store i32 %189, i32* %5
%190 = load i32, i32* %6
%191 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %189, i32 %190)
%192 = load i32, i32* %14
%193 = icmp sgt i32 %192, 1
br i1 %193, label %194, label %200
194: ; preds = %186
%195 = load i32, i32* %11
%196 = load i32, i32* %5
%197 = add nsw i32 %196, %195
store i32 %197, i32* %5
%198 = load i32, i32* %6
%199 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %197, i32 %198)
br label %200
200: ; preds = %194, %186
%201 = load i32, i32* %14
%202 = icmp sgt i32 %201, 2
br i1 %202, label %203, label %209
203: ; preds = %200
%204 = load i32, i32* %11
%205 = load i32, i32* %7
%206 = sub nsw i32 %205, %204
store i32 %206, i32* %7
%207 = load i32, i32* %8
%208 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %206, i32 %207)
br label %209
209: ; preds = %203, %200
br label %269
210: ; preds = %183
%211 = load i32, i32* %18
%212 = load i32, i32* %16
%213 = icmp slt i32 %211, %212
br i1 %213, label %214, label %240
214: ; preds = %210
%215 = load i32, i32* %11
%216 = load i32, i32* %5
%217 = add nsw i32 %216, %215
store i32 %217, i32* %5
%218 = load i32, i32* %6
%219 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %217, i32 %218)
%220 = load i32, i32* %14
%221 = icmp sgt i32 %220, 1
br i1 %221, label %222, label %230
222: ; preds = %214
%223 = load i32, i32* %11
%224 = load i32, i32* %5
%225 = add nsw i32 %224, %223
store i32 %225, i32* %5
%226 = load i32, i32* %12
%227 = load i32, i32* %6
%228 = add nsw i32 %227, %226
store i32 %228, i32* %6
%229 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %225, i32 %228)
br label %230
230: ; preds = %222, %214
%231 = load i32, i32* %14
%232 = icmp sgt i32 %231, 2
br i1 %232, label %233, label %239
233: ; preds = %230
%234 = load i32, i32* %11
%235 = load i32, i32* %7
%236 = sub nsw i32 %235, %234
store i32 %236, i32* %7
%237 = load i32, i32* %8
%238 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %236, i32 %237)
br label %239
239: ; preds = %233, %230
br label %268
240: ; preds = %210
%241 = load i32, i32* %11
%242 = load i32, i32* %5
%243 = add nsw i32 %242, %241
store i32 %243, i32* %5
%244 = load i32, i32* %12
%245 = load i32, i32* %6
%246 = add nsw i32 %245, %244
store i32 %246, i32* %6
%247 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %243, i32 %246)
%248 = load i32, i32* %14
%249 = icmp sgt i32 %248, 1
br i1 %249, label %250, label %256
250: ; preds = %240
%251 = load i32, i32* %11
%252 = load i32, i32* %5
%253 = add nsw i32 %252, %251
store i32 %253, i32* %5
%254 = load i32, i32* %6
%255 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %253, i32 %254)
br label %256
256: ; preds = %250, %240
%257 = load i32, i32* %14
%258 = icmp sgt i32 %257, 2
br i1 %258, label %259, label %267
259: ; preds = %256
%260 = load i32, i32* %11
%261 = load i32, i32* %7
%262 = sub nsw i32 %261, %260
store i32 %262, i32* %7
%263 = load i32, i32* %12
%264 = load i32, i32* %8
%265 = sub nsw i32 %264, %263
store i32 %265, i32* %8
%266 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %262, i32 %265)
br label %267
267: ; preds = %259, %256
br label %268
268: ; preds = %267, %239
br label %269
269: ; preds = %268, %209
br label %270
270: ; preds = %269, %180
br label %484
271: ; preds = %71
%272 = load i32, i32* %9
%273 = load i32, i32* %10
%274 = sub nsw i32 %272, %273
%275 = shl i32 %274, 1
store i32 %275, i32* %20
%276 = load i32, i32* %20
%277 = shl i32 %276, 1
store i32 %277, i32* %21
%278 = load i32, i32* %21
%279 = load i32, i32* %10
%280 = add nsw i32 %278, %279
store i32 %280, i32* %22
store i32 0, i32* %23
br label %281
281: ; preds = %373, %271
%282 = load i32, i32* %23
%283 = load i32, i32* %13
%284 = icmp slt i32 %282, %283
br i1 %284, label %285, label %376
285: ; preds = %281
%286 = load i32, i32* %11
%287 = load i32, i32* %5
%288 = add nsw i32 %287, %286
store i32 %288, i32* %5
%289 = load i32, i32* %11
%290 = load i32, i32* %7
%291 = sub nsw i32 %290, %289
store i32 %291, i32* %7
%292 = load i32, i32* %22
%293 = icmp sgt i32 %292, 0
br i1 %293, label %294, label %322
294: ; preds = %285
%295 = load i32, i32* %5
%296 = load i32, i32* %12
%297 = load i32, i32* %6
%298 = add nsw i32 %297, %296
store i32 %298, i32* %6
%299 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %295, i32 %298)
%300 = load i32, i32* %11
%301 = load i32, i32* %5
%302 = add nsw i32 %301, %300
store i32 %302, i32* %5
%303 = load i32, i32* %12
%304 = load i32, i32* %6
%305 = add nsw i32 %304, %303
store i32 %305, i32* %6
%306 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %302, i32 %305)
%307 = load i32, i32* %7
%308 = load i32, i32* %12
%309 = load i32, i32* %8
%310 = sub nsw i32 %309, %308
store i32 %310, i32* %8
%311 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %307, i32 %310)
%312 = load i32, i32* %11
%313 = load i32, i32* %7
%314 = sub nsw i32 %313, %312
store i32 %314, i32* %7
%315 = load i32, i32* %12
%316 = load i32, i32* %8
%317 = sub nsw i32 %316, %315
store i32 %317, i32* %8
%318 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %314, i32 %317)
%319 = load i32, i32* %21
%320 = load i32, i32* %22
%321 = add nsw i32 %320, %319
store i32 %321, i32* %22
br label %372
322: ; preds = %285
%323 = load i32, i32* %22
%324 = load i32, i32* %20
%325 = icmp slt i32 %323, %324
br i1 %325, label %326, label %347
326: ; preds = %322
%327 = load i32, i32* %5
%328 = load i32, i32* %6
%329 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %327, i32 %328)
%330 = load i32, i32* %11
%331 = load i32, i32* %5
%332 = add nsw i32 %331, %330
store i32 %332, i32* %5
%333 = load i32, i32* %12
%334 = load i32, i32* %6
%335 = add nsw i32 %334, %333
store i32 %335, i32* %6
%336 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %332, i32 %335)
%337 = load i32, i32* %7
%338 = load i32, i32* %8
%339 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %337, i32 %338)
%340 = load i32, i32* %11
%341 = load i32, i32* %7
%342 = sub nsw i32 %341, %340
store i32 %342, i32* %7
%343 = load i32, i32* %12
%344 = load i32, i32* %8
%345 = sub nsw i32 %344, %343
store i32 %345, i32* %8
%346 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %342, i32 %345)
br label %368
347: ; preds = %322
%348 = load i32, i32* %5
%349 = load i32, i32* %12
%350 = load i32, i32* %6
%351 = add nsw i32 %350, %349
store i32 %351, i32* %6
%352 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %348, i32 %351)
%353 = load i32, i32* %11
%354 = load i32, i32* %5
%355 = add nsw i32 %354, %353
store i32 %355, i32* %5
%356 = load i32, i32* %6
%357 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %355, i32 %356)
%358 = load i32, i32* %7
%359 = load i32, i32* %12
%360 = load i32, i32* %8
%361 = sub nsw i32 %360, %359
store i32 %361, i32* %8
%362 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %358, i32 %361)
%363 = load i32, i32* %11
%364 = load i32, i32* %7
%365 = sub nsw i32 %364, %363
store i32 %365, i32* %7
%366 = load i32, i32* %8
%367 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %365, i32 %366)
br label %368
368: ; preds = %347, %326
%369 = load i32, i32* %15
%370 = load i32, i32* %22
%371 = add nsw i32 %370, %369
store i32 %371, i32* %22
br label %372
372: ; preds = %368, %294
br label %373
373: ; preds = %372
%374 = load i32, i32* %23
%375 = add nsw i32 %374, 1
store i32 %375, i32* %23
br label %281
376: ; preds = %281
%377 = load i32, i32* %14
%378 = icmp sgt i32 %377, 0
br i1 %378, label %379, label %483
379: ; preds = %376
%380 = load i32, i32* %22
%381 = icmp sgt i32 %380, 0
br i1 %381, label %382, label %412
382: ; preds = %379
%383 = load i32, i32* %11
%384 = load i32, i32* %5
%385 = add nsw i32 %384, %383
store i32 %385, i32* %5
%386 = load i32, i32* %12
%387 = load i32, i32* %6
%388 = add nsw i32 %387, %386
store i32 %388, i32* %6
%389 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %385, i32 %388)
%390 = load i32, i32* %14
%391 = icmp sgt i32 %390, 1
br i1 %391, label %392, label %400
392: ; preds = %382
%393 = load i32, i32* %11
%394 = load i32, i32* %5
%395 = add nsw i32 %394, %393
store i32 %395, i32* %5
%396 = load i32, i32* %12
%397 = load i32, i32* %6
%398 = add nsw i32 %397, %396
store i32 %398, i32* %6
%399 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %395, i32 %398)
br label %400
400: ; preds = %392, %382
%401 = load i32, i32* %14
%402 = icmp sgt i32 %401, 2
br i1 %402, label %403, label %411
403: ; preds = %400
%404 = load i32, i32* %11
%405 = load i32, i32* %7
%406 = sub nsw i32 %405, %404
store i32 %406, i32* %7
%407 = load i32, i32* %12
%408 = load i32, i32* %8
%409 = sub nsw i32 %408, %407
store i32 %409, i32* %8
%410 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %406, i32 %409)
br label %411
411: ; preds = %403, %400
br label %482
412: ; preds = %379
%413 = load i32, i32* %22
%414 = load i32, i32* %20
%415 = icmp slt i32 %413, %414
br i1 %415, label %416, label %442
416: ; preds = %412
%417 = load i32, i32* %11
%418 = load i32, i32* %5
%419 = add nsw i32 %418, %417
store i32 %419, i32* %5
%420 = load i32, i32* %6
%421 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %419, i32 %420)
%422 = load i32, i32* %14
%423 = icmp sgt i32 %422, 1
br i1 %423, label %424, label %432
424: ; preds = %416
%425 = load i32, i32* %11
%426 = load i32, i32* %5
%427 = add nsw i32 %426, %425
store i32 %427, i32* %5
%428 = load i32, i32* %12
%429 = load i32, i32* %6
%430 = add nsw i32 %429, %428
store i32 %430, i32* %6
%431 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %427, i32 %430)
br label %432
432: ; preds = %424, %416
%433 = load i32, i32* %14
%434 = icmp sgt i32 %433, 2
br i1 %434, label %435, label %441
435: ; preds = %432
%436 = load i32, i32* %11
%437 = load i32, i32* %7
%438 = sub nsw i32 %437, %436
store i32 %438, i32* %7
%439 = load i32, i32* %8
%440 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %438, i32 %439)
br label %441
441: ; preds = %435, %432
br label %481
442: ; preds = %412
%443 = load i32, i32* %11
%444 = load i32, i32* %5
%445 = add nsw i32 %444, %443
store i32 %445, i32* %5
%446 = load i32, i32* %12
%447 = load i32, i32* %6
%448 = add nsw i32 %447, %446
store i32 %448, i32* %6
%449 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %445, i32 %448)
%450 = load i32, i32* %14
%451 = icmp sgt i32 %450, 1
br i1 %451, label %452, label %458
452: ; preds = %442
%453 = load i32, i32* %11
%454 = load i32, i32* %5
%455 = add nsw i32 %454, %453
store i32 %455, i32* %5
%456 = load i32, i32* %6
%457 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %455, i32 %456)
br label %458
458: ; preds = %452, %442
%459 = load i32, i32* %14
%460 = icmp sgt i32 %459, 2
br i1 %460, label %461, label %480
461: ; preds = %458
%462 = load i32, i32* %22
%463 = load i32, i32* %20
%464 = icmp sgt i32 %462, %463
br i1 %464, label %465, label %473
465: ; preds = %461
%466 = load i32, i32* %11
%467 = load i32, i32* %7
%468 = sub nsw i32 %467, %466
store i32 %468, i32* %7
%469 = load i32, i32* %12
%470 = load i32, i32* %8
%471 = sub nsw i32 %470, %469
store i32 %471, i32* %8
%472 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %468, i32 %471)
br label %479
473: ; preds = %461
%474 = load i32, i32* %11
%475 = load i32, i32* %7
%476 = sub nsw i32 %475, %474
store i32 %476, i32* %7
%477 = load i32, i32* %8
%478 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %476, i32 %477)
br label %479
479: ; preds = %473, %465
br label %480
480: ; preds = %479, %458
br label %481
481: ; preds = %480, %441
br label %482
482: ; preds = %481, %411
br label %483
483: ; preds = %482, %376
br label %484
484: ; preds = %483, %270
br label %899
485: ; preds = %64
%486 = load i32, i32* %9
%487 = sub nsw i32 %486, 1
%488 = ashr i32 %487, 2
store i32 %488, i32* %24
%489 = load i32, i32* %9
%490 = sub nsw i32 %489, 1
%491 = and i32 %490, 3
store i32 %491, i32* %25
%492 = load i32, i32* %10
%493 = shl i32 %492, 2
%494 = load i32, i32* %9
%495 = shl i32 %494, 1
%496 = sub nsw i32 %493, %495
store i32 %496, i32* %26
%497 = load i32, i32* %26
%498 = icmp slt i32 %497, 0
br i1 %498, label %499, label %685
499: ; preds = %485
%500 = load i32, i32* %10
%501 = shl i32 %500, 1
store i32 %501, i32* %27
%502 = load i32, i32* %27
%503 = shl i32 %502, 1
store i32 %503, i32* %28
%504 = load i32, i32* %28
%505 = load i32, i32* %9
%506 = sub nsw i32 %504, %505
store i32 %506, i32* %29
store i32 0, i32* %30
br label %507
507: ; preds = %591, %499
%508 = load i32, i32* %30
%509 = load i32, i32* %24
%510 = icmp slt i32 %508, %509
br i1 %510, label %511, label %594
511: ; preds = %507
%512 = load i32, i32* %12
%513 = load i32, i32* %6
%514 = add nsw i32 %513, %512
store i32 %514, i32* %6
%515 = load i32, i32* %12
%516 = load i32, i32* %8
%517 = sub nsw i32 %516, %515
store i32 %517, i32* %8
%518 = load i32, i32* %29
%519 = icmp slt i32 %518, 0
br i1 %519, label %520, label %540
520: ; preds = %511
%521 = load i32, i32* %5
%522 = load i32, i32* %6
%523 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %521, i32 %522)
%524 = load i32, i32* %5
%525 = load i32, i32* %12
%526 = load i32, i32* %6
%527 = add nsw i32 %526, %525
store i32 %527, i32* %6
%528 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %524, i32 %527)
%529 = load i32, i32* %7
%530 = load i32, i32* %8
%531 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %529, i32 %530)
%532 = load i32, i32* %7
%533 = load i32, i32* %12
%534 = load i32, i32* %8
%535 = sub nsw i32 %534, %533
store i32 %535, i32* %8
%536 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %532, i32 %535)
%537 = load i32, i32* %28
%538 = load i32, i32* %29
%539 = add nsw i32 %538, %537
store i32 %539, i32* %29
br label %590
540: ; preds = %511
%541 = load i32, i32* %29
%542 = load i32, i32* %27
%543 = icmp slt i32 %541, %542
br i1 %543, label %544, label %565
544: ; preds = %540
%545 = load i32, i32* %5
%546 = load i32, i32* %6
%547 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %545, i32 %546)
%548 = load i32, i32* %11
%549 = load i32, i32* %5
%550 = add nsw i32 %549, %548
store i32 %550, i32* %5
%551 = load i32, i32* %12
%552 = load i32, i32* %6
%553 = add nsw i32 %552, %551
store i32 %553, i32* %6
%554 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %550, i32 %553)
%555 = load i32, i32* %7
%556 = load i32, i32* %8
%557 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %555, i32 %556)
%558 = load i32, i32* %11
%559 = load i32, i32* %7
%560 = sub nsw i32 %559, %558
store i32 %560, i32* %7
%561 = load i32, i32* %12
%562 = load i32, i32* %8
%563 = sub nsw i32 %562, %561
store i32 %563, i32* %8
%564 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %560, i32 %563)
br label %586
565: ; preds = %540
%566 = load i32, i32* %11
%567 = load i32, i32* %5
%568 = add nsw i32 %567, %566
store i32 %568, i32* %5
%569 = load i32, i32* %6
%570 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %568, i32 %569)
%571 = load i32, i32* %5
%572 = load i32, i32* %12
%573 = load i32, i32* %6
%574 = add nsw i32 %573, %572
store i32 %574, i32* %6
%575 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %571, i32 %574)
%576 = load i32, i32* %11
%577 = load i32, i32* %7
%578 = sub nsw i32 %577, %576
store i32 %578, i32* %7
%579 = load i32, i32* %8
%580 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %578, i32 %579)
%581 = load i32, i32* %7
%582 = load i32, i32* %12
%583 = load i32, i32* %8
%584 = sub nsw i32 %583, %582
store i32 %584, i32* %8
%585 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %581, i32 %584)
br label %586
586: ; preds = %565, %544
%587 = load i32, i32* %26
%588 = load i32, i32* %29
%589 = add nsw i32 %588, %587
store i32 %589, i32* %29
br label %590
590: ; preds = %586, %520
br label %591
591: ; preds = %590
%592 = load i32, i32* %30
%593 = add nsw i32 %592, 1
store i32 %593, i32* %30
br label %507
594: ; preds = %507
%595 = load i32, i32* %25
%596 = icmp sgt i32 %595, 0
br i1 %596, label %597, label %684
597: ; preds = %594
%598 = load i32, i32* %29
%599 = icmp slt i32 %598, 0
br i1 %599, label %600, label %624
600: ; preds = %597
%601 = load i32, i32* %5
%602 = load i32, i32* %12
%603 = load i32, i32* %6
%604 = add nsw i32 %603, %602
store i32 %604, i32* %6
%605 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %601, i32 %604)
%606 = load i32, i32* %25
%607 = icmp sgt i32 %606, 1
br i1 %607, label %608, label %614
608: ; preds = %600
%609 = load i32, i32* %5
%610 = load i32, i32* %12
%611 = load i32, i32* %6
%612 = add nsw i32 %611, %610
store i32 %612, i32* %6
%613 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %609, i32 %612)
br label %614
614: ; preds = %608, %600
%615 = load i32, i32* %25
%616 = icmp sgt i32 %615, 2
br i1 %616, label %617, label %623
617: ; preds = %614
%618 = load i32, i32* %7
%619 = load i32, i32* %12
%620 = load i32, i32* %8
%621 = sub nsw i32 %620, %619
store i32 %621, i32* %8
%622 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %618, i32 %621)
br label %623
623: ; preds = %617, %614
br label %683
624: ; preds = %597
%625 = load i32, i32* %29
%626 = load i32, i32* %27
%627 = icmp slt i32 %625, %626
br i1 %627, label %628, label %654
628: ; preds = %624
%629 = load i32, i32* %5
%630 = load i32, i32* %12
%631 = load i32, i32* %6
%632 = add nsw i32 %631, %630
store i32 %632, i32* %6
%633 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %629, i32 %632)
%634 = load i32, i32* %25
%635 = icmp sgt i32 %634, 1
br i1 %635, label %636, label %644
636: ; preds = %628
%637 = load i32, i32* %11
%638 = load i32, i32* %5
%639 = add nsw i32 %638, %637
store i32 %639, i32* %5
%640 = load i32, i32* %12
%641 = load i32, i32* %6
%642 = add nsw i32 %641, %640
store i32 %642, i32* %6
%643 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %639, i32 %642)
br label %644
644: ; preds = %636, %628
%645 = load i32, i32* %25
%646 = icmp sgt i32 %645, 2
br i1 %646, label %647, label %653
647: ; preds = %644
%648 = load i32, i32* %7
%649 = load i32, i32* %12
%650 = load i32, i32* %8
%651 = sub nsw i32 %650, %649
store i32 %651, i32* %8
%652 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %648, i32 %651)
br label %653
653: ; preds = %647, %644
br label %682
654: ; preds = %624
%655 = load i32, i32* %11
%656 = load i32, i32* %5
%657 = add nsw i32 %656, %655
store i32 %657, i32* %5
%658 = load i32, i32* %12
%659 = load i32, i32* %6
%660 = add nsw i32 %659, %658
store i32 %660, i32* %6
%661 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %657, i32 %660)
%662 = load i32, i32* %25
%663 = icmp sgt i32 %662, 1
br i1 %663, label %664, label %670
664: ; preds = %654
%665 = load i32, i32* %5
%666 = load i32, i32* %12
%667 = load i32, i32* %6
%668 = add nsw i32 %667, %666
store i32 %668, i32* %6
%669 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %665, i32 %668)
br label %670
670: ; preds = %664, %654
%671 = load i32, i32* %25
%672 = icmp sgt i32 %671, 2
br i1 %672, label %673, label %681
673: ; preds = %670
%674 = load i32, i32* %11
%675 = load i32, i32* %7
%676 = sub nsw i32 %675, %674
store i32 %676, i32* %7
%677 = load i32, i32* %12
%678 = load i32, i32* %8
%679 = sub nsw i32 %678, %677
store i32 %679, i32* %8
%680 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %676, i32 %679)
br label %681
681: ; preds = %673, %670
br label %682
682: ; preds = %681, %653
br label %683
683: ; preds = %682, %623
br label %684
684: ; preds = %683, %594
br label %898
685: ; preds = %485
%686 = load i32, i32* %10
%687 = load i32, i32* %9
%688 = sub nsw i32 %686, %687
%689 = shl i32 %688, 1
store i32 %689, i32* %31
%690 = load i32, i32* %31
%691 = shl i32 %690, 1
store i32 %691, i32* %32
%692 = load i32, i32* %32
%693 = load i32, i32* %9
%694 = add nsw i32 %692, %693
store i32 %694, i32* %33
store i32 0, i32* %34
br label %695
695: ; preds = %787, %685
%696 = load i32, i32* %34
%697 = load i32, i32* %24
%698 = icmp slt i32 %696, %697
br i1 %698, label %699, label %790
699: ; preds = %695
%700 = load i32, i32* %12
%701 = load i32, i32* %6
%702 = add nsw i32 %701, %700
store i32 %702, i32* %6
%703 = load i32, i32* %12
%704 = load i32, i32* %8
%705 = sub nsw i32 %704, %703
store i32 %705, i32* %8
%706 = load i32, i32* %33
%707 = icmp sgt i32 %706, 0
br i1 %707, label %708, label %736
708: ; preds = %699
%709 = load i32, i32* %11
%710 = load i32, i32* %5
%711 = add nsw i32 %710, %709
store i32 %711, i32* %5
%712 = load i32, i32* %6
%713 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %711, i32 %712)
%714 = load i32, i32* %11
%715 = load i32, i32* %5
%716 = add nsw i32 %715, %714
store i32 %716, i32* %5
%717 = load i32, i32* %12
%718 = load i32, i32* %6
%719 = add nsw i32 %718, %717
store i32 %719, i32* %6
%720 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %716, i32 %719)
%721 = load i32, i32* %12
%722 = load i32, i32* %7
%723 = sub nsw i32 %722, %721
store i32 %723, i32* %7
%724 = load i32, i32* %8
%725 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %723, i32 %724)
%726 = load i32, i32* %11
%727 = load i32, i32* %7
%728 = sub nsw i32 %727, %726
store i32 %728, i32* %7
%729 = load i32, i32* %12
%730 = load i32, i32* %8
%731 = sub nsw i32 %730, %729
store i32 %731, i32* %8
%732 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %728, i32 %731)
%733 = load i32, i32* %32
%734 = load i32, i32* %33
%735 = add nsw i32 %734, %733
store i32 %735, i32* %33
br label %786
736: ; preds = %699
%737 = load i32, i32* %33
%738 = load i32, i32* %31
%739 = icmp slt i32 %737, %738
br i1 %739, label %740, label %761
740: ; preds = %736
%741 = load i32, i32* %5
%742 = load i32, i32* %6
%743 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %741, i32 %742)
%744 = load i32, i32* %11
%745 = load i32, i32* %5
%746 = add nsw i32 %745, %744
store i32 %746, i32* %5
%747 = load i32, i32* %12
%748 = load i32, i32* %6
%749 = add nsw i32 %748, %747
store i32 %749, i32* %6
%750 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %746, i32 %749)
%751 = load i32, i32* %7
%752 = load i32, i32* %8
%753 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %751, i32 %752)
%754 = load i32, i32* %11
%755 = load i32, i32* %7
%756 = sub nsw i32 %755, %754
store i32 %756, i32* %7
%757 = load i32, i32* %12
%758 = load i32, i32* %8
%759 = sub nsw i32 %758, %757
store i32 %759, i32* %8
%760 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %756, i32 %759)
br label %782
761: ; preds = %736
%762 = load i32, i32* %11
%763 = load i32, i32* %5
%764 = add nsw i32 %763, %762
store i32 %764, i32* %5
%765 = load i32, i32* %6
%766 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %764, i32 %765)
%767 = load i32, i32* %5
%768 = load i32, i32* %12
%769 = load i32, i32* %6
%770 = add nsw i32 %769, %768
store i32 %770, i32* %6
%771 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %767, i32 %770)
%772 = load i32, i32* %11
%773 = load i32, i32* %7
%774 = sub nsw i32 %773, %772
store i32 %774, i32* %7
%775 = load i32, i32* %8
%776 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %774, i32 %775)
%777 = load i32, i32* %7
%778 = load i32, i32* %12
%779 = load i32, i32* %8
%780 = sub nsw i32 %779, %778
store i32 %780, i32* %8
%781 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %777, i32 %780)
br label %782
782: ; preds = %761, %740
%783 = load i32, i32* %26
%784 = load i32, i32* %33
%785 = add nsw i32 %784, %783
store i32 %785, i32* %33
br label %786
786: ; preds = %782, %708
br label %787
787: ; preds = %786
%788 = load i32, i32* %34
%789 = add nsw i32 %788, 1
store i32 %789, i32* %34
br label %695
790: ; preds = %695
%791 = load i32, i32* %25
%792 = icmp sgt i32 %791, 0
br i1 %792, label %793, label %897
793: ; preds = %790
%794 = load i32, i32* %33
%795 = icmp sgt i32 %794, 0
br i1 %795, label %796, label %826
796: ; preds = %793
%797 = load i32, i32* %11
%798 = load i32, i32* %5
%799 = add nsw i32 %798, %797
store i32 %799, i32* %5
%800 = load i32, i32* %12
%801 = load i32, i32* %6
%802 = add nsw i32 %801, %800
store i32 %802, i32* %6
%803 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %799, i32 %802)
%804 = load i32, i32* %25
%805 = icmp sgt i32 %804, 1
br i1 %805, label %806, label %814
806: ; preds = %796
%807 = load i32, i32* %11
%808 = load i32, i32* %5
%809 = add nsw i32 %808, %807
store i32 %809, i32* %5
%810 = load i32, i32* %12
%811 = load i32, i32* %6
%812 = add nsw i32 %811, %810
store i32 %812, i32* %6
%813 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %809, i32 %812)
br label %814
814: ; preds = %806, %796
%815 = load i32, i32* %25
%816 = icmp sgt i32 %815, 2
br i1 %816, label %817, label %825
817: ; preds = %814
%818 = load i32, i32* %11
%819 = load i32, i32* %7
%820 = sub nsw i32 %819, %818
store i32 %820, i32* %7
%821 = load i32, i32* %12
%822 = load i32, i32* %8
%823 = sub nsw i32 %822, %821
store i32 %823, i32* %8
%824 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %820, i32 %823)
br label %825
825: ; preds = %817, %814
br label %896
826: ; preds = %793
%827 = load i32, i32* %33
%828 = load i32, i32* %31
%829 = icmp slt i32 %827, %828
br i1 %829, label %830, label %856
830: ; preds = %826
%831 = load i32, i32* %5
%832 = load i32, i32* %12
%833 = load i32, i32* %6
%834 = add nsw i32 %833, %832
store i32 %834, i32* %6
%835 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %831, i32 %834)
%836 = load i32, i32* %25
%837 = icmp sgt i32 %836, 1
br i1 %837, label %838, label %846
838: ; preds = %830
%839 = load i32, i32* %11
%840 = load i32, i32* %5
%841 = add nsw i32 %840, %839
store i32 %841, i32* %5
%842 = load i32, i32* %12
%843 = load i32, i32* %6
%844 = add nsw i32 %843, %842
store i32 %844, i32* %6
%845 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %841, i32 %844)
br label %846
846: ; preds = %838, %830
%847 = load i32, i32* %25
%848 = icmp sgt i32 %847, 2
br i1 %848, label %849, label %855
849: ; preds = %846
%850 = load i32, i32* %7
%851 = load i32, i32* %12
%852 = load i32, i32* %8
%853 = sub nsw i32 %852, %851
store i32 %853, i32* %8
%854 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %850, i32 %853)
br label %855
855: ; preds = %849, %846
br label %895
856: ; preds = %826
%857 = load i32, i32* %11
%858 = load i32, i32* %5
%859 = add nsw i32 %858, %857
store i32 %859, i32* %5
%860 = load i32, i32* %12
%861 = load i32, i32* %6
%862 = add nsw i32 %861, %860
store i32 %862, i32* %6
%863 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %859, i32 %862)
%864 = load i32, i32* %25
%865 = icmp sgt i32 %864, 1
br i1 %865, label %866, label %872
866: ; preds = %856
%867 = load i32, i32* %5
%868 = load i32, i32* %12
%869 = load i32, i32* %6
%870 = add nsw i32 %869, %868
store i32 %870, i32* %6
%871 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %867, i32 %870)
br label %872
872: ; preds = %866, %856
%873 = load i32, i32* %25
%874 = icmp sgt i32 %873, 2
br i1 %874, label %875, label %894
875: ; preds = %872
%876 = load i32, i32* %33
%877 = load i32, i32* %31
%878 = icmp sgt i32 %876, %877
br i1 %878, label %879, label %887
879: ; preds = %875
%880 = load i32, i32* %11
%881 = load i32, i32* %7
%882 = sub nsw i32 %881, %880
store i32 %882, i32* %7
%883 = load i32, i32* %12
%884 = load i32, i32* %8
%885 = sub nsw i32 %884, %883
store i32 %885, i32* %8
%886 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %882, i32 %885)
br label %893
887: ; preds = %875
%888 = load i32, i32* %7
%889 = load i32, i32* %12
%890 = load i32, i32* %8
%891 = sub nsw i32 %890, %889
store i32 %891, i32* %8
%892 = call i32 (i32, i32, ...) bitcast (i32 (...)* @lpoint to i32 (i32, i32, ...)*)(i32 %888, i32 %891)
br label %893
893: ; preds = %887, %879
br label %894
894: ; preds = %893, %872
br label %895
895: ; preds = %894, %855
br label %896
896: ; preds = %895, %825
br label %897
897: ; preds = %896, %790
br label %898
898: ; preds = %897, %684
br label %899
899: ; preds = %63, %898, %484
ret void
}

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