int evaluate(unsigned char *grid, int size, int pattern) {
  int x, y, block;
  int result = 0;
  char state;
  int p;
  int dark_mods;
  int percentage, k;
  char local[size * size];
  for (x = 0; x < size; x++) {
    for (y = 0; y < size; y++) {
      switch (pattern) {
      case 0:
        if (grid[(y * size) + x] & 0x01) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      case 1:
        if (grid[(y * size) + x] & 0x02) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      case 2:
        if (grid[(y * size) + x] & 0x04) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      case 3:
        if (grid[(y * size) + x] & 0x08) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      case 4:
        if (grid[(y * size) + x] & 0x10) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      case 5:
        if (grid[(y * size) + x] & 0x20) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      case 6:
        if (grid[(y * size) + x] & 0x40) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      case 7:
        if (grid[(y * size) + x] & 0x80) {
          local[(y * size) + x] = '1';
        } else {
          local[(y * size) + x] = '0';
        }
        break;
      }
    }
  }
  for (x = 0; x < size; x++) {
    state = local[x];
    block = 0;
    for (y = 0; y < size; y++) {
      if (local[(y * size) + x] == state) {
        block++;
      } else {
        if (block > 5) {
          result += (3 + block);
        }
        block = 0;
        state = local[(y * size) + x];
      }
    }
    if (block > 5) {
      result += (3 + block);
    }
  }
  for (y = 0; y < size; y++) {
    state = local[y * size];
    block = 0;
    for (x = 0; x < size; x++) {
      if (local[(y * size) + x] == state) {
        block++;
      } else {
        if (block > 5) {
          result += (3 + block);
        }
        block = 0;
        state = local[(y * size) + x];
      }
    }
    if (block > 5) {
      result += (3 + block);
    }
  }
  for (x = 0; x < size; x++) {
    for (y = 0; y < (size - 7); y++) {
      p = 0;
      if (local[(y * size) + x] == '1') {
        p += 0x40;
      }
      if (local[((y + 1) * size) + x] == '1') {
        p += 0x20;
      }
      if (local[((y + 2) * size) + x] == '1') {
        p += 0x10;
      }
      if (local[((y + 3) * size) + x] == '1') {
        p += 0x08;
      }
      if (local[((y + 4) * size) + x] == '1') {
        p += 0x04;
      }
      if (local[((y + 5) * size) + x] == '1') {
        p += 0x02;
      }
      if (local[((y + 6) * size) + x] == '1') {
        p += 0x01;
      }
      if (p == 0x5d) {
        result += 40;
      }
    }
  }
  for (y = 0; y < size; y++) {
    for (x = 0; x < (size - 7); x++) {
      p = 0;
      if (local[(y * size) + x] == '1') {
        p += 0x40;
      }
      if (local[(y * size) + x + 1] == '1') {
        p += 0x20;
      }
      if (local[(y * size) + x + 2] == '1') {
        p += 0x10;
      }
      if (local[(y * size) + x + 3] == '1') {
        p += 0x08;
      }
      if (local[(y * size) + x + 4] == '1') {
        p += 0x04;
      }
      if (local[(y * size) + x + 5] == '1') {
        p += 0x02;
      }
      if (local[(y * size) + x + 6] == '1') {
        p += 0x01;
      }
      if (p == 0x5d) {
        result += 40;
      }
    }
  }
  dark_mods = 0;
  for (x = 0; x < size; x++) {
    for (y = 0; y < size; y++) {
      if (local[(y * size) + x] == '1') {
        dark_mods++;
      }
    }
  }
  percentage = 100 * (dark_mods / (size * size));
  if (percentage <= 50) {
    k = ((100 - percentage) - 50) / 5;
  } else {
    k = (percentage - 50) / 5;
  }
  result += 10 * k;
  return result;
}


x86 assembly (clang, -O0):
<evaluate>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0xc(%rbp),%eax
imul   %eax,%eax
mov    %rsp,%rcx
mov    %rcx,-0x40(%rbp)
mov    %rax,%rdx
add    $0xf,%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rcx
sub    %rdx,%rcx
mov    %rcx,-0x50(%rbp)
mov    %rcx,%rsp
mov    %rax,-0x48(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    145d <evaluate+0x35d>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    144a <evaluate+0x34a>
mov    -0x10(%rbp),%eax
mov    %rax,-0x58(%rbp)
sub    $0x7,%rax
ja     1437 <evaluate+0x337>
mov    -0x58(%rbp),%rax
lea    0xe7c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     11c8 <evaluate+0xc8>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    11dd <evaluate+0xdd>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     121d <evaluate+0x11d>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    1232 <evaluate+0x132>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1272 <evaluate+0x172>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    1287 <evaluate+0x187>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     12c7 <evaluate+0x1c7>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    12dc <evaluate+0x1dc>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     131c <evaluate+0x21c>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    1331 <evaluate+0x231>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     1371 <evaluate+0x271>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    1386 <evaluate+0x286>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     13c6 <evaluate+0x2c6>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    13db <evaluate+0x2db>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     141d <evaluate+0x31d>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    1432 <evaluate+0x332>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1437 <evaluate+0x337>
jmp    143c <evaluate+0x33c>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    115c <evaluate+0x5c>
jmp    144f <evaluate+0x34f>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1149 <evaluate+0x49>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1537 <evaluate+0x437>
mov    -0x50(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x21(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    150e <evaluate+0x40e>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x21(%rbp),%ecx
cmp    %ecx,%eax
jne    14c7 <evaluate+0x3c7>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    14fb <evaluate+0x3fb>
cmpl   $0x5,-0x1c(%rbp)
jle    14dd <evaluate+0x3dd>
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x50(%rbp),%rax
movl   $0x0,-0x1c(%rbp)
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x21(%rbp)
jmp    1500 <evaluate+0x400>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    148c <evaluate+0x38c>
cmpl   $0x5,-0x1c(%rbp)
jle    1524 <evaluate+0x424>
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    1529 <evaluate+0x429>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1464 <evaluate+0x364>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1617 <evaluate+0x517>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x21(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    15ee <evaluate+0x4ee>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x21(%rbp),%ecx
cmp    %ecx,%eax
jne    15a7 <evaluate+0x4a7>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    15db <evaluate+0x4db>
cmpl   $0x5,-0x1c(%rbp)
jle    15bd <evaluate+0x4bd>
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x50(%rbp),%rax
movl   $0x0,-0x1c(%rbp)
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x21(%rbp)
jmp    15e0 <evaluate+0x4e0>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    156c <evaluate+0x46c>
cmpl   $0x5,-0x1c(%rbp)
jle    1604 <evaluate+0x504>
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    1609 <evaluate+0x509>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    153e <evaluate+0x43e>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    17a5 <evaluate+0x6a5>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x7,%ecx
cmp    %ecx,%eax
jge    1792 <evaluate+0x692>
mov    -0x50(%rbp),%rax
movl   $0x0,-0x28(%rbp)
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1670 <evaluate+0x570>
mov    -0x28(%rbp),%eax
add    $0x40,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    169a <evaluate+0x59a>
mov    -0x28(%rbp),%eax
add    $0x20,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x2,%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    16c4 <evaluate+0x5c4>
mov    -0x28(%rbp),%eax
add    $0x10,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x3,%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    16ee <evaluate+0x5ee>
mov    -0x28(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x4,%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1718 <evaluate+0x618>
mov    -0x28(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x5,%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1742 <evaluate+0x642>
mov    -0x28(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x6,%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    176c <evaluate+0x66c>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x5d,-0x28(%rbp)
jne    177f <evaluate+0x67f>
mov    -0x20(%rbp),%eax
add    $0x28,%eax
mov    %eax,-0x20(%rbp)
jmp    1784 <evaluate+0x684>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1631 <evaluate+0x531>
jmp    1797 <evaluate+0x697>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    161e <evaluate+0x51e>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1933 <evaluate+0x833>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x7,%ecx
cmp    %ecx,%eax
jge    1920 <evaluate+0x820>
mov    -0x50(%rbp),%rax
movl   $0x0,-0x28(%rbp)
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    17fe <evaluate+0x6fe>
mov    -0x28(%rbp),%eax
add    $0x40,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1828 <evaluate+0x728>
mov    -0x28(%rbp),%eax
add    $0x20,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1852 <evaluate+0x752>
mov    -0x28(%rbp),%eax
add    $0x10,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    187c <evaluate+0x77c>
mov    -0x28(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    18a6 <evaluate+0x7a6>
mov    -0x28(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    18d0 <evaluate+0x7d0>
mov    -0x28(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    18fa <evaluate+0x7fa>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x5d,-0x28(%rbp)
jne    190d <evaluate+0x80d>
mov    -0x20(%rbp),%eax
add    $0x28,%eax
mov    %eax,-0x20(%rbp)
jmp    1912 <evaluate+0x812>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    17bf <evaluate+0x6bf>
jmp    1925 <evaluate+0x825>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    17ac <evaluate+0x6ac>
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    19ad <evaluate+0x8ad>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    199a <evaluate+0x89a>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0xc(%rbp),%ecx
add    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1987 <evaluate+0x887>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    198c <evaluate+0x88c>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1954 <evaluate+0x854>
jmp    199f <evaluate+0x89f>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1941 <evaluate+0x841>
mov    -0x2c(%rbp),%eax
mov    -0xc(%rbp),%ecx
imul   -0xc(%rbp),%ecx
cltd
idiv   %ecx
imul   $0x64,%eax,%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x32,-0x30(%rbp)
jg     19e5 <evaluate+0x8e5>
mov    $0x64,%eax
sub    -0x30(%rbp),%eax
sub    $0x32,%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
jmp    19f6 <evaluate+0x8f6>
mov    -0x30(%rbp),%eax
sub    $0x32,%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
imul   $0xa,-0x34(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x40(%rbp),%rcx
mov    %rcx,%rsp
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<evaluate>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %esi,%r12d
imul   %r12d,%r12d
mov    %rsp,%r8
lea    0xf(%r12),%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%r8
mov    %r8,%rsp
test   %esi,%esi
jle    12e8 <evaluate+0x1e8>
mov    %rsi,-0x30(%rbp)
mov    %esi,%r15d
xor    %r10d,%r10d
mov    %edx,%r11d
lea    0xeba(%rip),%r14
mov    %r8,%rcx
jmp    1161 <evaluate+0x61>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r10
add    $0x1,%rdi
add    $0x1,%rcx
cmp    %r15,%r10
je     11d6 <evaluate+0xd6>
mov    %r15,%rbx
xor    %eax,%eax
jmp    117d <evaluate+0x7d>
cmpb   $0x0,(%rdi,%rax,1)
js     11d0 <evaluate+0xd0>
xchg   %ax,%ax
movb   $0x30,(%rcx,%rax,1)
add    %r15,%rax
add    $0xffffffffffffffff,%rbx
je     1150 <evaluate+0x50>
cmp    $0x7,%edx
ja     1174 <evaluate+0x74>
movslq (%r14,%r11,4),%rsi
add    %r14,%rsi
jmp    *%rsi
testb  $0x1,(%rdi,%rax,1)
je     1170 <evaluate+0x70>
jmp    11d0 <evaluate+0xd0>
testb  $0x2,(%rdi,%rax,1)
je     1170 <evaluate+0x70>
jmp    11d0 <evaluate+0xd0>
testb  $0x4,(%rdi,%rax,1)
je     1170 <evaluate+0x70>
jmp    11d0 <evaluate+0xd0>
testb  $0x8,(%rdi,%rax,1)
je     1170 <evaluate+0x70>
jmp    11d0 <evaluate+0xd0>
testb  $0x10,(%rdi,%rax,1)
je     1170 <evaluate+0x70>
jmp    11d0 <evaluate+0xd0>
testb  $0x20,(%rdi,%rax,1)
je     1170 <evaluate+0x70>
jmp    11d0 <evaluate+0xd0>
testb  $0x40,(%rdi,%rax,1)
je     1170 <evaluate+0x70>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movb   $0x31,(%rcx,%rax,1)
jmp    1174 <evaluate+0x74>
cmpl   $0x0,-0x30(%rbp)
jle    12e8 <evaluate+0x1e8>
mov    %r12,-0x48(%rbp)
lea    -0x1(%r15),%rax
mov    %rax,-0x40(%rbp)
mov    %r8,%r14
mov    %r15d,%r13d
and    $0xfffffffe,%r13d
lea    (%r15,%r15,1),%r10
mov    %r8,-0x38(%rbp)
xor    %r12d,%r12d
xor    %r9d,%r9d
xor    %edi,%edi
jmp    123a <evaluate+0x13a>
nopl   0x0(%rax,%rax,1)
add    $0x1,%ebx
mov    %r9d,%eax
lea    0x3(%rbx),%r9d
cmp    $0x6,%ebx
mov    $0x0,%ecx
cmovl  %ecx,%r9d
add    %eax,%r9d
add    $0x1,%r12
add    $0x1,%r14
cmp    %r15,%r12
je     1331 <evaluate+0x231>
mov    -0x38(%rbp),%rax
mov    (%rax,%r12,1),%r11b
cmpq   $0x0,-0x40(%rbp)
je     12b0 <evaluate+0x1b0>
xor    %ecx,%ecx
mov    %r14,%rax
xor    %ebx,%ebx
mov    %r11d,%r8d
jmp    1272 <evaluate+0x172>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%ebx
mov    %r8d,%r11d
add    $0x2,%rcx
add    %r10,%rax
cmp    %rcx,%r13
je     12b4 <evaluate+0x1b4>
movzbl (%rax),%edx
cmp    %r8b,%dl
jne    1280 <evaluate+0x180>
add    $0x1,%ebx
jmp    1291 <evaluate+0x191>
nop
lea    0x3(%rbx),%esi
cmp    $0x6,%ebx
cmovl  %edi,%esi
add    %esi,%r9d
mov    %edx,%r8d
xor    %ebx,%ebx
movzbl (%rax,%r15,1),%r11d
cmp    %r8b,%r11b
je     1260 <evaluate+0x160>
lea    0x3(%rbx),%edx
xor    %esi,%esi
cmp    $0x6,%ebx
cmovl  %esi,%edx
add    %edx,%r9d
xor    %ebx,%ebx
mov    %r11d,%r8d
jmp    1266 <evaluate+0x166>
xor    %ecx,%ecx
xor    %ebx,%ebx
test   $0x1,%r15b
je     1213 <evaluate+0x113>
imul   %r15,%rcx
add    %r12,%rcx
mov    -0x38(%rbp),%rax
cmp    %r11b,(%rax,%rcx,1)
je     1210 <evaluate+0x110>
lea    0x3(%rbx),%eax
xor    %ecx,%ecx
cmp    $0x6,%ebx
cmovl  %ecx,%eax
add    %eax,%r9d
xor    %ebx,%ebx
jmp    1213 <evaluate+0x113>
xor    %r9d,%r9d
xor    %eax,%eax
cltd
idiv   %r12d
imul   $0x64,%eax,%eax
mov    $0x32,%ecx
sub    %eax,%ecx
lea    -0x32(%rax),%edx
cmp    $0x33,%eax
cmovl  %ecx,%edx
movslq %edx,%rax
imul   $0x66666667,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x21,%rax
add    %ecx,%eax
lea    (%rax,%rax,4),%eax
lea    (%r9,%rax,2),%eax
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
cmpl   $0x0,-0x30(%rbp)
jle    157d <evaluate+0x47d>
mov    %r15d,%r8d
and    $0xfffffffe,%r8d
mov    -0x38(%rbp),%r13
lea    0x1(%r13),%rsi
xor    %r11d,%r11d
xor    %r12d,%r12d
jmp    1384 <evaluate+0x284>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%ecx
mov    %r9d,%eax
lea    0x3(%rcx),%r9d
cmp    $0x6,%ecx
cmovl  %r11d,%r9d
add    %eax,%r9d
add    $0x1,%r12
add    %r15,%rsi
cmp    %r15,%r12
je     1421 <evaluate+0x321>
mov    %r12,%r14
imul   %r15,%r14
mov    0x0(%r13,%r14,1),%dl
cmpq   $0x0,-0x40(%rbp)
je     13f0 <evaluate+0x2f0>
xor    %ebx,%ebx
xor    %ecx,%ecx
mov    %edx,%eax
jmp    13ae <evaluate+0x2ae>
nop
add    $0x1,%ecx
mov    %eax,%edx
add    $0x2,%rbx
cmp    %rbx,%r8
je     13f4 <evaluate+0x2f4>
movzbl -0x1(%rsi,%rbx,1),%edx
cmp    %al,%dl
jne    13c0 <evaluate+0x2c0>
add    $0x1,%ecx
jmp    13d2 <evaluate+0x2d2>
nopl   0x0(%rax)
lea    0x3(%rcx),%eax
xor    %edi,%edi
cmp    $0x6,%ecx
cmovl  %edi,%eax
add    %eax,%r9d
mov    %edx,%eax
xor    %ecx,%ecx
movzbl (%rsi,%rbx,1),%edx
cmp    %al,%dl
je     13a0 <evaluate+0x2a0>
lea    0x3(%rcx),%eax
xor    %edi,%edi
cmp    $0x6,%ecx
cmovl  %edi,%eax
add    %eax,%r9d
xor    %ecx,%ecx
mov    %edx,%eax
jmp    13a5 <evaluate+0x2a5>
xchg   %ax,%ax
xor    %ebx,%ebx
xor    %ecx,%ecx
test   $0x1,%r15b
je     1363 <evaluate+0x263>
add    %r14,%rbx
cmp    %dl,0x0(%r13,%rbx,1)
je     1360 <evaluate+0x260>
lea    0x3(%rcx),%eax
xor    %edx,%edx
cmp    $0x6,%ecx
cmovl  %edx,%eax
add    %eax,%r9d
xor    %ecx,%ecx
jmp    1363 <evaluate+0x263>
mov    -0x30(%rbp),%r11
test   %r11d,%r11d
mov    -0x48(%rbp),%r12
jle    12eb <evaluate+0x1eb>
lea    -0x7(%r11),%r8d
xor    %r10d,%r10d
mov    %r13,%rdx
jmp    1451 <evaluate+0x351>
xchg   %ax,%ax
add    $0x1,%r10
add    $0x1,%rdx
cmp    %r15,%r10
je     14dc <evaluate+0x3dc>
mov    %r8,%rax
mov    %rdx,%rsi
cmp    $0x8,%r11d
jb     1440 <evaluate+0x340>
nopl   (%rax)
xor    %edi,%edi
cmpb   $0x31,(%rsi)
sete   %dil
shl    $0x6,%edi
lea    0x20(%rdi),%ebx
cmpb   $0x31,(%rsi,%r15,1)
cmovne %edi,%ebx
add    %r15,%rsi
lea    (%rsi,%r15,1),%rdi
cmpb   $0x31,(%r15,%rsi,1)
lea    0x10(%rbx),%ecx
cmovne %ebx,%ecx
lea    0x8(%rcx),%ebx
cmpb   $0x31,(%r15,%rdi,1)
cmovne %ecx,%ebx
lea    (%rdi,%r15,1),%rcx
lea    (%rcx,%r15,1),%rdi
cmpb   $0x31,(%r15,%rcx,1)
lea    0x4(%rbx),%ecx
cmovne %ebx,%ecx
lea    0x2(%rcx),%ebx
cmpb   $0x31,(%r15,%rdi,1)
cmovne %ecx,%ebx
lea    (%rdi,%r15,1),%rcx
xor    %edi,%edi
cmpb   $0x31,(%r15,%rcx,1)
sete   %dil
add    %ebx,%edi
lea    0x28(%r9),%ecx
cmp    $0x5d,%edi
cmovne %r9d,%ecx
mov    %ecx,%r9d
add    $0xffffffffffffffff,%rax
jne    1460 <evaluate+0x360>
jmp    1440 <evaluate+0x340>
test   %r11d,%r11d
jle    12eb <evaluate+0x1eb>
lea    0x6(%r13),%rcx
xor    %edx,%edx
jmp    1500 <evaluate+0x400>
nopl   (%rax)
add    $0x1,%rdx
add    %r15,%rcx
cmp    %r15,%rdx
je     1588 <evaluate+0x488>
cmp    $0x8,%r11d
jb     14f0 <evaluate+0x3f0>
xor    %eax,%eax
mov    %r9d,%esi
nopl   0x0(%rax,%rax,1)
xor    %edi,%edi
cmpb   $0x31,-0x6(%rcx,%rax,1)
sete   %dil
shl    $0x6,%edi
cmpb   $0x31,-0x5(%rcx,%rax,1)
lea    0x20(%rdi),%ebx
cmovne %edi,%ebx
lea    0x10(%rbx),%edi
cmpb   $0x31,-0x4(%rcx,%rax,1)
cmovne %ebx,%edi
lea    0x8(%rdi),%ebx
cmpb   $0x31,-0x3(%rcx,%rax,1)
cmovne %edi,%ebx
cmpb   $0x31,-0x2(%rcx,%rax,1)
lea    0x4(%rbx),%edi
cmovne %ebx,%edi
lea    0x2(%rdi),%ebx
cmpb   $0x31,-0x1(%rcx,%rax,1)
cmovne %edi,%ebx
xor    %edi,%edi
cmpb   $0x31,(%rcx,%rax,1)
sete   %dil
add    %ebx,%edi
lea    0x28(%rsi),%r9d
cmp    $0x5d,%edi
cmovne %esi,%r9d
add    $0x1,%rax
mov    %r9d,%esi
cmp    %rax,%r8
jne    1510 <evaluate+0x410>
jmp    14f0 <evaluate+0x3f0>
xor    %eax,%eax
mov    -0x48(%rbp),%r12
jmp    12ed <evaluate+0x1ed>
test   %r11d,%r11d
jle    12eb <evaluate+0x1eb>
mov    %r15d,%ecx
and    $0xfffffffe,%ecx
lea    (%r15,%r15,1),%rdx
xor    %r11d,%r11d
mov    %r13,%r8
xor    %eax,%eax
jmp    15c1 <evaluate+0x4c1>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%r11
add    $0x1,%r8
cmp    %r15,%r11
je     12ed <evaluate+0x1ed>
cmpq   $0x0,-0x40(%rbp)
je     1600 <evaluate+0x500>
mov    %r8,%rsi
xor    %ebx,%ebx
nopl   (%rax)
xor    %edi,%edi
cmpb   $0x31,(%rsi)
sete   %dil
add    %eax,%edi
xor    %eax,%eax
cmpb   $0x31,(%rsi,%r15,1)
sete   %al
add    %edi,%eax
add    $0x2,%rbx
add    %rdx,%rsi
cmp    %rbx,%rcx
jne    15d0 <evaluate+0x4d0>
test   $0x1,%r15b
je     15b0 <evaluate+0x4b0>
jmp    1608 <evaluate+0x508>
nopl   0x0(%rax,%rax,1)
xor    %ebx,%ebx
test   $0x1,%r15b
je     15b0 <evaluate+0x4b0>
imul   %r15,%rbx
add    %r11,%rbx
xor    %esi,%esi
cmpb   $0x31,0x0(%r13,%rbx,1)
sete   %sil
add    %esi,%eax
jmp    15b0 <evaluate+0x4b0>

LLVM IR (-O0):
define i32 @evaluate(i8* %0, i32 %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i8
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i8*
%17 = alloca i64
store i8* %0, i8** %4
store i32 %1, i32* %5
store i32 %2, i32* %6
store i32 0, i32* %10
%18 = load i32, i32* %5
%19 = load i32, i32* %5
%20 = mul nsw i32 %18, %19
%21 = zext i32 %20 to i64
%22 = call i8* @llvm.stacksave()
store i8* %22, i8** %16
%23 = alloca i8, i64 %21
store i64 %21, i64* %17
store i32 0, i32* %7
br label %24
24: ; preds = %280, %3
%25 = load i32, i32* %7
%26 = load i32, i32* %5
%27 = icmp slt i32 %25, %26
br i1 %27, label %28, label %283
28: ; preds = %24
store i32 0, i32* %8
br label %29
29: ; preds = %276, %28
%30 = load i32, i32* %8
%31 = load i32, i32* %5
%32 = icmp slt i32 %30, %31
br i1 %32, label %33, label %279
33: ; preds = %29
%34 = load i32, i32* %6
switch i32 %34, label %275 [
i32 0, label %35
i32 1, label %65
i32 2, label %95
i32 3, label %125
i32 4, label %155
i32 5, label %185
i32 6, label %215
i32 7, label %245
]
35: ; preds = %33
%36 = load i8*, i8** %4
%37 = load i32, i32* %8
%38 = load i32, i32* %5
%39 = mul nsw i32 %37, %38
%40 = load i32, i32* %7
%41 = add nsw i32 %39, %40
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds i8, i8* %36, i64 %42
%44 = load i8, i8* %43
%45 = zext i8 %44 to i32
%46 = and i32 %45, 1
%47 = icmp ne i32 %46, 0
br i1 %47, label %48, label %56
48: ; preds = %35
%49 = load i32, i32* %8
%50 = load i32, i32* %5
%51 = mul nsw i32 %49, %50
%52 = load i32, i32* %7
%53 = add nsw i32 %51, %52
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i8, i8* %23, i64 %54
store i8 49, i8* %55
br label %64
56: ; preds = %35
%57 = load i32, i32* %8
%58 = load i32, i32* %5
%59 = mul nsw i32 %57, %58
%60 = load i32, i32* %7
%61 = add nsw i32 %59, %60
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds i8, i8* %23, i64 %62
store i8 48, i8* %63
br label %64
64: ; preds = %56, %48
br label %275
65: ; preds = %33
%66 = load i8*, i8** %4
%67 = load i32, i32* %8
%68 = load i32, i32* %5
%69 = mul nsw i32 %67, %68
%70 = load i32, i32* %7
%71 = add nsw i32 %69, %70
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds i8, i8* %66, i64 %72
%74 = load i8, i8* %73
%75 = zext i8 %74 to i32
%76 = and i32 %75, 2
%77 = icmp ne i32 %76, 0
br i1 %77, label %78, label %86
78: ; preds = %65
%79 = load i32, i32* %8
%80 = load i32, i32* %5
%81 = mul nsw i32 %79, %80
%82 = load i32, i32* %7
%83 = add nsw i32 %81, %82
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds i8, i8* %23, i64 %84
store i8 49, i8* %85
br label %94
86: ; preds = %65
%87 = load i32, i32* %8
%88 = load i32, i32* %5
%89 = mul nsw i32 %87, %88
%90 = load i32, i32* %7
%91 = add nsw i32 %89, %90
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds i8, i8* %23, i64 %92
store i8 48, i8* %93
br label %94
94: ; preds = %86, %78
br label %275
95: ; preds = %33
%96 = load i8*, i8** %4
%97 = load i32, i32* %8
%98 = load i32, i32* %5
%99 = mul nsw i32 %97, %98
%100 = load i32, i32* %7
%101 = add nsw i32 %99, %100
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i8, i8* %96, i64 %102
%104 = load i8, i8* %103
%105 = zext i8 %104 to i32
%106 = and i32 %105, 4
%107 = icmp ne i32 %106, 0
br i1 %107, label %108, label %116
108: ; preds = %95
%109 = load i32, i32* %8
%110 = load i32, i32* %5
%111 = mul nsw i32 %109, %110
%112 = load i32, i32* %7
%113 = add nsw i32 %111, %112
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds i8, i8* %23, i64 %114
store i8 49, i8* %115
br label %124
116: ; preds = %95
%117 = load i32, i32* %8
%118 = load i32, i32* %5
%119 = mul nsw i32 %117, %118
%120 = load i32, i32* %7
%121 = add nsw i32 %119, %120
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds i8, i8* %23, i64 %122
store i8 48, i8* %123
br label %124
124: ; preds = %116, %108
br label %275
125: ; preds = %33
%126 = load i8*, i8** %4
%127 = load i32, i32* %8
%128 = load i32, i32* %5
%129 = mul nsw i32 %127, %128
%130 = load i32, i32* %7
%131 = add nsw i32 %129, %130
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds i8, i8* %126, i64 %132
%134 = load i8, i8* %133
%135 = zext i8 %134 to i32
%136 = and i32 %135, 8
%137 = icmp ne i32 %136, 0
br i1 %137, label %138, label %146
138: ; preds = %125
%139 = load i32, i32* %8
%140 = load i32, i32* %5
%141 = mul nsw i32 %139, %140
%142 = load i32, i32* %7
%143 = add nsw i32 %141, %142
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i8, i8* %23, i64 %144
store i8 49, i8* %145
br label %154
146: ; preds = %125
%147 = load i32, i32* %8
%148 = load i32, i32* %5
%149 = mul nsw i32 %147, %148
%150 = load i32, i32* %7
%151 = add nsw i32 %149, %150
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds i8, i8* %23, i64 %152
store i8 48, i8* %153
br label %154
154: ; preds = %146, %138
br label %275
155: ; preds = %33
%156 = load i8*, i8** %4
%157 = load i32, i32* %8
%158 = load i32, i32* %5
%159 = mul nsw i32 %157, %158
%160 = load i32, i32* %7
%161 = add nsw i32 %159, %160
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds i8, i8* %156, i64 %162
%164 = load i8, i8* %163
%165 = zext i8 %164 to i32
%166 = and i32 %165, 16
%167 = icmp ne i32 %166, 0
br i1 %167, label %168, label %176
168: ; preds = %155
%169 = load i32, i32* %8
%170 = load i32, i32* %5
%171 = mul nsw i32 %169, %170
%172 = load i32, i32* %7
%173 = add nsw i32 %171, %172
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds i8, i8* %23, i64 %174
store i8 49, i8* %175
br label %184
176: ; preds = %155
%177 = load i32, i32* %8
%178 = load i32, i32* %5
%179 = mul nsw i32 %177, %178
%180 = load i32, i32* %7
%181 = add nsw i32 %179, %180
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds i8, i8* %23, i64 %182
store i8 48, i8* %183
br label %184
184: ; preds = %176, %168
br label %275
185: ; preds = %33
%186 = load i8*, i8** %4
%187 = load i32, i32* %8
%188 = load i32, i32* %5
%189 = mul nsw i32 %187, %188
%190 = load i32, i32* %7
%191 = add nsw i32 %189, %190
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds i8, i8* %186, i64 %192
%194 = load i8, i8* %193
%195 = zext i8 %194 to i32
%196 = and i32 %195, 32
%197 = icmp ne i32 %196, 0
br i1 %197, label %198, label %206
198: ; preds = %185
%199 = load i32, i32* %8
%200 = load i32, i32* %5
%201 = mul nsw i32 %199, %200
%202 = load i32, i32* %7
%203 = add nsw i32 %201, %202
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds i8, i8* %23, i64 %204
store i8 49, i8* %205
br label %214
206: ; preds = %185
%207 = load i32, i32* %8
%208 = load i32, i32* %5
%209 = mul nsw i32 %207, %208
%210 = load i32, i32* %7
%211 = add nsw i32 %209, %210
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds i8, i8* %23, i64 %212
store i8 48, i8* %213
br label %214
214: ; preds = %206, %198
br label %275
215: ; preds = %33
%216 = load i8*, i8** %4
%217 = load i32, i32* %8
%218 = load i32, i32* %5
%219 = mul nsw i32 %217, %218
%220 = load i32, i32* %7
%221 = add nsw i32 %219, %220
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds i8, i8* %216, i64 %222
%224 = load i8, i8* %223
%225 = zext i8 %224 to i32
%226 = and i32 %225, 64
%227 = icmp ne i32 %226, 0
br i1 %227, label %228, label %236
228: ; preds = %215
%229 = load i32, i32* %8
%230 = load i32, i32* %5
%231 = mul nsw i32 %229, %230
%232 = load i32, i32* %7
%233 = add nsw i32 %231, %232
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds i8, i8* %23, i64 %234
store i8 49, i8* %235
br label %244
236: ; preds = %215
%237 = load i32, i32* %8
%238 = load i32, i32* %5
%239 = mul nsw i32 %237, %238
%240 = load i32, i32* %7
%241 = add nsw i32 %239, %240
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds i8, i8* %23, i64 %242
store i8 48, i8* %243
br label %244
244: ; preds = %236, %228
br label %275
245: ; preds = %33
%246 = load i8*, i8** %4
%247 = load i32, i32* %8
%248 = load i32, i32* %5
%249 = mul nsw i32 %247, %248
%250 = load i32, i32* %7
%251 = add nsw i32 %249, %250
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds i8, i8* %246, i64 %252
%254 = load i8, i8* %253
%255 = zext i8 %254 to i32
%256 = and i32 %255, 128
%257 = icmp ne i32 %256, 0
br i1 %257, label %258, label %266
258: ; preds = %245
%259 = load i32, i32* %8
%260 = load i32, i32* %5
%261 = mul nsw i32 %259, %260
%262 = load i32, i32* %7
%263 = add nsw i32 %261, %262
%264 = sext i32 %263 to i64
%265 = getelementptr inbounds i8, i8* %23, i64 %264
store i8 49, i8* %265
br label %274
266: ; preds = %245
%267 = load i32, i32* %8
%268 = load i32, i32* %5
%269 = mul nsw i32 %267, %268
%270 = load i32, i32* %7
%271 = add nsw i32 %269, %270
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds i8, i8* %23, i64 %272
store i8 48, i8* %273
br label %274
274: ; preds = %266, %258
br label %275
275: ; preds = %33, %274, %244, %214, %184, %154, %124, %94, %64
br label %276
276: ; preds = %275
%277 = load i32, i32* %8
%278 = add nsw i32 %277, 1
store i32 %278, i32* %8
br label %29
279: ; preds = %29
br label %280
280: ; preds = %279
%281 = load i32, i32* %7
%282 = add nsw i32 %281, 1
store i32 %282, i32* %7
br label %24
283: ; preds = %24
store i32 0, i32* %7
br label %284
284: ; preds = %343, %283
%285 = load i32, i32* %7
%286 = load i32, i32* %5
%287 = icmp slt i32 %285, %286
br i1 %287, label %288, label %346
288: ; preds = %284
%289 = load i32, i32* %7
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds i8, i8* %23, i64 %290
%292 = load i8, i8* %291
store i8 %292, i8* %11
store i32 0, i32* %9
store i32 0, i32* %8
br label %293
293: ; preds = %331, %288
%294 = load i32, i32* %8
%295 = load i32, i32* %5
%296 = icmp slt i32 %294, %295
br i1 %296, label %297, label %334
297: ; preds = %293
%298 = load i32, i32* %8
%299 = load i32, i32* %5
%300 = mul nsw i32 %298, %299
%301 = load i32, i32* %7
%302 = add nsw i32 %300, %301
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds i8, i8* %23, i64 %303
%305 = load i8, i8* %304
%306 = sext i8 %305 to i32
%307 = load i8, i8* %11
%308 = sext i8 %307 to i32
%309 = icmp eq i32 %306, %308
br i1 %309, label %310, label %313
310: ; preds = %297
%311 = load i32, i32* %9
%312 = add nsw i32 %311, 1
store i32 %312, i32* %9
br label %330
313: ; preds = %297
%314 = load i32, i32* %9
%315 = icmp sgt i32 %314, 5
br i1 %315, label %316, label %321
316: ; preds = %313
%317 = load i32, i32* %9
%318 = add nsw i32 3, %317
%319 = load i32, i32* %10
%320 = add nsw i32 %319, %318
store i32 %320, i32* %10
br label %321
321: ; preds = %316, %313
store i32 0, i32* %9
%322 = load i32, i32* %8
%323 = load i32, i32* %5
%324 = mul nsw i32 %322, %323
%325 = load i32, i32* %7
%326 = add nsw i32 %324, %325
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds i8, i8* %23, i64 %327
%329 = load i8, i8* %328
store i8 %329, i8* %11
br label %330
330: ; preds = %321, %310
br label %331
331: ; preds = %330
%332 = load i32, i32* %8
%333 = add nsw i32 %332, 1
store i32 %333, i32* %8
br label %293
334: ; preds = %293
%335 = load i32, i32* %9
%336 = icmp sgt i32 %335, 5
br i1 %336, label %337, label %342
337: ; preds = %334
%338 = load i32, i32* %9
%339 = add nsw i32 3, %338
%340 = load i32, i32* %10
%341 = add nsw i32 %340, %339
store i32 %341, i32* %10
br label %342
342: ; preds = %337, %334
br label %343
343: ; preds = %342
%344 = load i32, i32* %7
%345 = add nsw i32 %344, 1
store i32 %345, i32* %7
br label %284
346: ; preds = %284
store i32 0, i32* %8
br label %347
347: ; preds = %408, %346
%348 = load i32, i32* %8
%349 = load i32, i32* %5
%350 = icmp slt i32 %348, %349
br i1 %350, label %351, label %411
351: ; preds = %347
%352 = load i32, i32* %8
%353 = load i32, i32* %5
%354 = mul nsw i32 %352, %353
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds i8, i8* %23, i64 %355
%357 = load i8, i8* %356
store i8 %357, i8* %11
store i32 0, i32* %9
store i32 0, i32* %7
br label %358
358: ; preds = %396, %351
%359 = load i32, i32* %7
%360 = load i32, i32* %5
%361 = icmp slt i32 %359, %360
br i1 %361, label %362, label %399
362: ; preds = %358
%363 = load i32, i32* %8
%364 = load i32, i32* %5
%365 = mul nsw i32 %363, %364
%366 = load i32, i32* %7
%367 = add nsw i32 %365, %366
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds i8, i8* %23, i64 %368
%370 = load i8, i8* %369
%371 = sext i8 %370 to i32
%372 = load i8, i8* %11
%373 = sext i8 %372 to i32
%374 = icmp eq i32 %371, %373
br i1 %374, label %375, label %378
375: ; preds = %362
%376 = load i32, i32* %9
%377 = add nsw i32 %376, 1
store i32 %377, i32* %9
br label %395
378: ; preds = %362
%379 = load i32, i32* %9
%380 = icmp sgt i32 %379, 5
br i1 %380, label %381, label %386
381: ; preds = %378
%382 = load i32, i32* %9
%383 = add nsw i32 3, %382
%384 = load i32, i32* %10
%385 = add nsw i32 %384, %383
store i32 %385, i32* %10
br label %386
386: ; preds = %381, %378
store i32 0, i32* %9
%387 = load i32, i32* %8
%388 = load i32, i32* %5
%389 = mul nsw i32 %387, %388
%390 = load i32, i32* %7
%391 = add nsw i32 %389, %390
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds i8, i8* %23, i64 %392
%394 = load i8, i8* %393
store i8 %394, i8* %11
br label %395
395: ; preds = %386, %375
br label %396
396: ; preds = %395
%397 = load i32, i32* %7
%398 = add nsw i32 %397, 1
store i32 %398, i32* %7
br label %358
399: ; preds = %358
%400 = load i32, i32* %9
%401 = icmp sgt i32 %400, 5
br i1 %401, label %402, label %407
402: ; preds = %399
%403 = load i32, i32* %9
%404 = add nsw i32 3, %403
%405 = load i32, i32* %10
%406 = add nsw i32 %405, %404
store i32 %406, i32* %10
br label %407
407: ; preds = %402, %399
br label %408
408: ; preds = %407
%409 = load i32, i32* %8
%410 = add nsw i32 %409, 1
store i32 %410, i32* %8
br label %347
411: ; preds = %347
store i32 0, i32* %7
br label %412
412: ; preds = %537, %411
%413 = load i32, i32* %7
%414 = load i32, i32* %5
%415 = icmp slt i32 %413, %414
br i1 %415, label %416, label %540
416: ; preds = %412
store i32 0, i32* %8
br label %417
417: ; preds = %533, %416
%418 = load i32, i32* %8
%419 = load i32, i32* %5
%420 = sub nsw i32 %419, 7
%421 = icmp slt i32 %418, %420
br i1 %421, label %422, label %536
422: ; preds = %417
store i32 0, i32* %12
%423 = load i32, i32* %8
%424 = load i32, i32* %5
%425 = mul nsw i32 %423, %424
%426 = load i32, i32* %7
%427 = add nsw i32 %425, %426
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds i8, i8* %23, i64 %428
%430 = load i8, i8* %429
%431 = sext i8 %430 to i32
%432 = icmp eq i32 %431, 49
br i1 %432, label %433, label %436
433: ; preds = %422
%434 = load i32, i32* %12
%435 = add nsw i32 %434, 64
store i32 %435, i32* %12
br label %436
436: ; preds = %433, %422
%437 = load i32, i32* %8
%438 = add nsw i32 %437, 1
%439 = load i32, i32* %5
%440 = mul nsw i32 %438, %439
%441 = load i32, i32* %7
%442 = add nsw i32 %440, %441
%443 = sext i32 %442 to i64
%444 = getelementptr inbounds i8, i8* %23, i64 %443
%445 = load i8, i8* %444
%446 = sext i8 %445 to i32
%447 = icmp eq i32 %446, 49
br i1 %447, label %448, label %451
448: ; preds = %436
%449 = load i32, i32* %12
%450 = add nsw i32 %449, 32
store i32 %450, i32* %12
br label %451
451: ; preds = %448, %436
%452 = load i32, i32* %8
%453 = add nsw i32 %452, 2
%454 = load i32, i32* %5
%455 = mul nsw i32 %453, %454
%456 = load i32, i32* %7
%457 = add nsw i32 %455, %456
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds i8, i8* %23, i64 %458
%460 = load i8, i8* %459
%461 = sext i8 %460 to i32
%462 = icmp eq i32 %461, 49
br i1 %462, label %463, label %466
463: ; preds = %451
%464 = load i32, i32* %12
%465 = add nsw i32 %464, 16
store i32 %465, i32* %12
br label %466
466: ; preds = %463, %451
%467 = load i32, i32* %8
%468 = add nsw i32 %467, 3
%469 = load i32, i32* %5
%470 = mul nsw i32 %468, %469
%471 = load i32, i32* %7
%472 = add nsw i32 %470, %471
%473 = sext i32 %472 to i64
%474 = getelementptr inbounds i8, i8* %23, i64 %473
%475 = load i8, i8* %474
%476 = sext i8 %475 to i32
%477 = icmp eq i32 %476, 49
br i1 %477, label %478, label %481
478: ; preds = %466
%479 = load i32, i32* %12
%480 = add nsw i32 %479, 8
store i32 %480, i32* %12
br label %481
481: ; preds = %478, %466
%482 = load i32, i32* %8
%483 = add nsw i32 %482, 4
%484 = load i32, i32* %5
%485 = mul nsw i32 %483, %484
%486 = load i32, i32* %7
%487 = add nsw i32 %485, %486
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds i8, i8* %23, i64 %488
%490 = load i8, i8* %489
%491 = sext i8 %490 to i32
%492 = icmp eq i32 %491, 49
br i1 %492, label %493, label %496
493: ; preds = %481
%494 = load i32, i32* %12
%495 = add nsw i32 %494, 4
store i32 %495, i32* %12
br label %496
496: ; preds = %493, %481
%497 = load i32, i32* %8
%498 = add nsw i32 %497, 5
%499 = load i32, i32* %5
%500 = mul nsw i32 %498, %499
%501 = load i32, i32* %7
%502 = add nsw i32 %500, %501
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds i8, i8* %23, i64 %503
%505 = load i8, i8* %504
%506 = sext i8 %505 to i32
%507 = icmp eq i32 %506, 49
br i1 %507, label %508, label %511
508: ; preds = %496
%509 = load i32, i32* %12
%510 = add nsw i32 %509, 2
store i32 %510, i32* %12
br label %511
511: ; preds = %508, %496
%512 = load i32, i32* %8
%513 = add nsw i32 %512, 6
%514 = load i32, i32* %5
%515 = mul nsw i32 %513, %514
%516 = load i32, i32* %7
%517 = add nsw i32 %515, %516
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds i8, i8* %23, i64 %518
%520 = load i8, i8* %519
%521 = sext i8 %520 to i32
%522 = icmp eq i32 %521, 49
br i1 %522, label %523, label %526
523: ; preds = %511
%524 = load i32, i32* %12
%525 = add nsw i32 %524, 1
store i32 %525, i32* %12
br label %526
526: ; preds = %523, %511
%527 = load i32, i32* %12
%528 = icmp eq i32 %527, 93
br i1 %528, label %529, label %532
529: ; preds = %526
%530 = load i32, i32* %10
%531 = add nsw i32 %530, 40
store i32 %531, i32* %10
br label %532
532: ; preds = %529, %526
br label %533
533: ; preds = %532
%534 = load i32, i32* %8
%535 = add nsw i32 %534, 1
store i32 %535, i32* %8
br label %417
536: ; preds = %417
br label %537
537: ; preds = %536
%538 = load i32, i32* %7
%539 = add nsw i32 %538, 1
store i32 %539, i32* %7
br label %412
540: ; preds = %412
store i32 0, i32* %8
br label %541
541: ; preds = %666, %540
%542 = load i32, i32* %8
%543 = load i32, i32* %5
%544 = icmp slt i32 %542, %543
br i1 %544, label %545, label %669
545: ; preds = %541
store i32 0, i32* %7
br label %546
546: ; preds = %662, %545
%547 = load i32, i32* %7
%548 = load i32, i32* %5
%549 = sub nsw i32 %548, 7
%550 = icmp slt i32 %547, %549
br i1 %550, label %551, label %665
551: ; preds = %546
store i32 0, i32* %12
%552 = load i32, i32* %8
%553 = load i32, i32* %5
%554 = mul nsw i32 %552, %553
%555 = load i32, i32* %7
%556 = add nsw i32 %554, %555
%557 = sext i32 %556 to i64
%558 = getelementptr inbounds i8, i8* %23, i64 %557
%559 = load i8, i8* %558
%560 = sext i8 %559 to i32
%561 = icmp eq i32 %560, 49
br i1 %561, label %562, label %565
562: ; preds = %551
%563 = load i32, i32* %12
%564 = add nsw i32 %563, 64
store i32 %564, i32* %12
br label %565
565: ; preds = %562, %551
%566 = load i32, i32* %8
%567 = load i32, i32* %5
%568 = mul nsw i32 %566, %567
%569 = load i32, i32* %7
%570 = add nsw i32 %568, %569
%571 = add nsw i32 %570, 1
%572 = sext i32 %571 to i64
%573 = getelementptr inbounds i8, i8* %23, i64 %572
%574 = load i8, i8* %573
%575 = sext i8 %574 to i32
%576 = icmp eq i32 %575, 49
br i1 %576, label %577, label %580
577: ; preds = %565
%578 = load i32, i32* %12
%579 = add nsw i32 %578, 32
store i32 %579, i32* %12
br label %580
580: ; preds = %577, %565
%581 = load i32, i32* %8
%582 = load i32, i32* %5
%583 = mul nsw i32 %581, %582
%584 = load i32, i32* %7
%585 = add nsw i32 %583, %584
%586 = add nsw i32 %585, 2
%587 = sext i32 %586 to i64
%588 = getelementptr inbounds i8, i8* %23, i64 %587
%589 = load i8, i8* %588
%590 = sext i8 %589 to i32
%591 = icmp eq i32 %590, 49
br i1 %591, label %592, label %595
592: ; preds = %580
%593 = load i32, i32* %12
%594 = add nsw i32 %593, 16
store i32 %594, i32* %12
br label %595
595: ; preds = %592, %580
%596 = load i32, i32* %8
%597 = load i32, i32* %5
%598 = mul nsw i32 %596, %597
%599 = load i32, i32* %7
%600 = add nsw i32 %598, %599
%601 = add nsw i32 %600, 3
%602 = sext i32 %601 to i64
%603 = getelementptr inbounds i8, i8* %23, i64 %602
%604 = load i8, i8* %603
%605 = sext i8 %604 to i32
%606 = icmp eq i32 %605, 49
br i1 %606, label %607, label %610
607: ; preds = %595
%608 = load i32, i32* %12
%609 = add nsw i32 %608, 8
store i32 %609, i32* %12
br label %610
610: ; preds = %607, %595
%611 = load i32, i32* %8
%612 = load i32, i32* %5
%613 = mul nsw i32 %611, %612
%614 = load i32, i32* %7
%615 = add nsw i32 %613, %614
%616 = add nsw i32 %615, 4
%617 = sext i32 %616 to i64
%618 = getelementptr inbounds i8, i8* %23, i64 %617
%619 = load i8, i8* %618
%620 = sext i8 %619 to i32
%621 = icmp eq i32 %620, 49
br i1 %621, label %622, label %625
622: ; preds = %610
%623 = load i32, i32* %12
%624 = add nsw i32 %623, 4
store i32 %624, i32* %12
br label %625
625: ; preds = %622, %610
%626 = load i32, i32* %8
%627 = load i32, i32* %5
%628 = mul nsw i32 %626, %627
%629 = load i32, i32* %7
%630 = add nsw i32 %628, %629
%631 = add nsw i32 %630, 5
%632 = sext i32 %631 to i64
%633 = getelementptr inbounds i8, i8* %23, i64 %632
%634 = load i8, i8* %633
%635 = sext i8 %634 to i32
%636 = icmp eq i32 %635, 49
br i1 %636, label %637, label %640
637: ; preds = %625
%638 = load i32, i32* %12
%639 = add nsw i32 %638, 2
store i32 %639, i32* %12
br label %640
640: ; preds = %637, %625
%641 = load i32, i32* %8
%642 = load i32, i32* %5
%643 = mul nsw i32 %641, %642
%644 = load i32, i32* %7
%645 = add nsw i32 %643, %644
%646 = add nsw i32 %645, 6
%647 = sext i32 %646 to i64
%648 = getelementptr inbounds i8, i8* %23, i64 %647
%649 = load i8, i8* %648
%650 = sext i8 %649 to i32
%651 = icmp eq i32 %650, 49
br i1 %651, label %652, label %655
652: ; preds = %640
%653 = load i32, i32* %12
%654 = add nsw i32 %653, 1
store i32 %654, i32* %12
br label %655
655: ; preds = %652, %640
%656 = load i32, i32* %12
%657 = icmp eq i32 %656, 93
br i1 %657, label %658, label %661
658: ; preds = %655
%659 = load i32, i32* %10
%660 = add nsw i32 %659, 40
store i32 %660, i32* %10
br label %661
661: ; preds = %658, %655
br label %662
662: ; preds = %661
%663 = load i32, i32* %7
%664 = add nsw i32 %663, 1
store i32 %664, i32* %7
br label %546
665: ; preds = %546
br label %666
666: ; preds = %665
%667 = load i32, i32* %8
%668 = add nsw i32 %667, 1
store i32 %668, i32* %8
br label %541
669: ; preds = %541
store i32 0, i32* %13
store i32 0, i32* %7
br label %670
670: ; preds = %698, %669
%671 = load i32, i32* %7
%672 = load i32, i32* %5
%673 = icmp slt i32 %671, %672
br i1 %673, label %674, label %701
674: ; preds = %670
store i32 0, i32* %8
br label %675
675: ; preds = %694, %674
%676 = load i32, i32* %8
%677 = load i32, i32* %5
%678 = icmp slt i32 %676, %677
br i1 %678, label %679, label %697
679: ; preds = %675
%680 = load i32, i32* %8
%681 = load i32, i32* %5
%682 = mul nsw i32 %680, %681
%683 = load i32, i32* %7
%684 = add nsw i32 %682, %683
%685 = sext i32 %684 to i64
%686 = getelementptr inbounds i8, i8* %23, i64 %685
%687 = load i8, i8* %686
%688 = sext i8 %687 to i32
%689 = icmp eq i32 %688, 49
br i1 %689, label %690, label %693
690: ; preds = %679
%691 = load i32, i32* %13
%692 = add nsw i32 %691, 1
store i32 %692, i32* %13
br label %693
693: ; preds = %690, %679
br label %694
694: ; preds = %693
%695 = load i32, i32* %8
%696 = add nsw i32 %695, 1
store i32 %696, i32* %8
br label %675
697: ; preds = %675
br label %698
698: ; preds = %697
%699 = load i32, i32* %7
%700 = add nsw i32 %699, 1
store i32 %700, i32* %7
br label %670
701: ; preds = %670
%702 = load i32, i32* %13
%703 = load i32, i32* %5
%704 = load i32, i32* %5
%705 = mul nsw i32 %703, %704
%706 = sdiv i32 %702, %705
%707 = mul nsw i32 100, %706
store i32 %707, i32* %14
%708 = load i32, i32* %14
%709 = icmp sle i32 %708, 50
br i1 %709, label %710, label %715
710: ; preds = %701
%711 = load i32, i32* %14
%712 = sub nsw i32 100, %711
%713 = sub nsw i32 %712, 50
%714 = sdiv i32 %713, 5
store i32 %714, i32* %15
br label %719
715: ; preds = %701
%716 = load i32, i32* %14
%717 = sub nsw i32 %716, 50
%718 = sdiv i32 %717, 5
store i32 %718, i32* %15
br label %719
719: ; preds = %715, %710
%720 = load i32, i32* %15
%721 = mul nsw i32 10, %720
%722 = load i32, i32* %10
%723 = add nsw i32 %722, %721
store i32 %723, i32* %10
%724 = load i32, i32* %10
%725 = load i8*, i8** %16
ret i32 %724
}

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