int main(int a, char **b) {
  int i, j;
  int c = atoi(b[1]);
  int d =
      1 + 1 + 1 + 2 + 1 + 3 + 1 + 4 + 1 + 5 + 1 + 6 + 1 + 7 + 1 + 8 + 1 + 9 +
      1 + 10 + 1 + 11 + 1 + 12 + 1 + 13 + 1 + 14 + 1 + 15 + 1 + 16 + 1 + 17 +
      1 + 18 + 1 + 19 + 1 + 20 + 1 + 21 + 1 + 22 + 1 + 23 + 1 + 24 + 1 + 25 +
      1 + 26 + 1 + 27 + 1 + 28 + 1 + 29 + 1 + 30 + 1 + 31 + 1 + 32 + 1 + 33 +
      1 + 34 + 1 + 35 + 1 + 36 + 1 + 37 + 1 + 38 + 1 + 39 + 1 + 40 + 1 + 41 +
      1 + 42 + 1 + 43 + 1 + 44 + 1 + 45 + 1 + 46 + 1 + 47 + 1 + 48 + 1 + 49 +
      1 + 50 + 1 + 51 + 1 + 52 + 1 + 53 + 1 + 54 + 1 + 55 + 1 + 56 + 1 + 57 +
      1 + 58 + 1 + 59 + 1 + 60 + 1 + 61 + 1 + 62 + 1 + 63 + 1 + 64 + 1 + 65 +
      1 + 66 + 1 + 67 + 1 + 68 + 1 + 69 + 1 + 70 + 1 + 71 + 1 + 72 + 1 + 73 +
      1 + 74 + 1 + 75 + 1 + 76 + 1 + 77 + 1 + 78 + 1 + 79 + 1 + 80 + 1 + 81 +
      1 + 82 + 1 + 83 + 1 + 84 + 1 + 85 + 1 + 86 + 1 + 87 + 1 + 88 + 1 + 89 +
      1 + 90 + 1 + 91 + 1 + 92 + 1 + 93 + 1 + 94 + 1 + 95 + 1 + 96 + 1 + 97 +
      1 + 98 + 1 + 99 + 1 + 110 + 1 + 200 + 1 + 220 + 1 + 300 + 1 + 320 + 1 +
      400 + 1 + 420 + 1 + 500 + 1 + 520 + 1 + 600 + 1 + 620 + 1 + 700 + 1 +
      720 + 1 + 800 + 1 + 820 + 1 + 900 + 1 + 920 + 1 + 1000 + 2 + 1 + 2 + 2 +
      2 + 3 + 2 + 4 + 2 + 5 + 2 + 6 + 2 + 7 + 2 + 8 + 2 + 9 + 2 + 10 + 2 + 11 +
      2 + 12 + 2 + 13 + 2 + 14 + 2 + 15 + 2 + 16 + 2 + 17 + 2 + 18 + 2 + 19 +
      2 + 20 + 2 + 21 + 2 + 22 + 2 + 23 + 2 + 24 + 2 + 25 + 2 + 26 + 2 + 27 +
      2 + 28 + 2 + 29 + 2 + 30 + 2 + 31 + 2 + 32 + 2 + 33 + 2 + 34 + 2 + 35 +
      2 + 36 + 2 + 37 + 2 + 38 + 2 + 39 + 2 + 40 + 2 + 41 + 2 + 42 + 2 + 43 +
      2 + 44 + 2 + 45 + 2 + 46 + 2 + 47 + 2 + 48 + 2 + 49 + 2 + 50 + 2 + 51 +
      2 + 52 + 2 + 53 + 2 + 54 + 2 + 55 + 2 + 56 + 2 + 57 + 2 + 58 + 2 + 59 +
      2 + 60 + 2 + 61 + 2 + 62 + 2 + 63 + 2 + 64 + 2 + 65 + 2 + 66 + 2 + 67 +
      2 + 68 + 2 + 69 + 2 + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 2 + 74 + 2 + 75 +
      2 + 76 + 2 + 77 + 2 + 78 + 2 + 79 + 2 + 80 + 2 + 81 + 2 + 82 + 2 + 83 +
      2 + 84 + 2 + 85 + 2 + 86 + 2 + 87 + 2 + 88 + 2 + 89 + 2 + 90 + 2 + 91 +
      2 + 92 + 2 + 93 + 2 + 94 + 2 + 95 + 2 + 96 + 2 + 97 + 2 + 98 + 2 + 99 +
      2 + 110 + 2 + 200 + 2 + 220 + 2 + 300 + 2 + 320 + 2 + 400 + 2 + 420 + 2 +
      500 + 2 + 520 + 2 + 600 + 2 + 620 + 2 + 700 + 2 + 720 + 2 + 800 + 2 +
      820 + 2 + 900 + 2 + 920 + 2 + 1001 + 2 + 1010 + 3 + 1 + 3 + 2 + 3 + 3 +
      3 + 4 + 3 + 5 + 3 + 6 + 3 + 7 + 3 + 8 + 3 + 9 + 3 + 10 + 3 + 20 + 3 + 21 +
      3 + 22 + 3 + 23 + 3 + 24 + 3 + 25 + 3 + 26 + 3 + 27 + 3 + 28 + 3 + 29 +
      3 + 30 + 3 + 31 + 3 + 32 + 3 + 33 + 3 + 34 + 3 + 35 + 3 + 36 + 3 + 37 +
      3 + 38 + 3 + 39 + 3 + 40 + 3 + 41 + 3 + 42 + 3 + 43 + 3 + 44 + 3 + 45 +
      3 + 46 + 3 + 47 + 3 + 48 + 3 + 49 + 3 + 50 + 3 + 51 + 3 + 52 + 3 + 53 +
      3 + 54 + 3 + 55 + 3 + 56 + 3 + 57 + 3 + 58 + 3 + 59 + 3 + 60 + 3 + 61 +
      3 + 62 + 3 + 63 + 3 + 64 + 3 + 65 + 3 + 66 + 3 + 67 + 3 + 68 + 3 + 69 +
      3 + 70 + 3 + 71 + 3 + 72 + 3 + 73 + 3 + 74 + 3 + 75 + 3 + 76 + 3 + 77 +
      3 + 78 + 3 + 79 + 3 + 80 + 3 + 81 + 3 + 82 + 3 + 83 + 3 + 84 + 3 + 85 +
      3 + 86 + 3 + 87 + 3 + 88 + 3 + 89 + 3 + 90 + 3 + 91 + 3 + 92 + 3 + 93 +
      3 + 94 + 3 + 95 + 3 + 96 + 3 + 97 + 3 + 98 + 3 + 99 + 3 + 110 + 3 + 300 +
      3 + 320 + 3 + 330 + 3 + 400 + 3 + 420 + 3 + 430 + 3 + 500 + 3 + 520 + 3 +
      530 + 3 + 600 + 3 + 620 + 3 + 630 + 3 + 700 + 3 + 720 + 3 + 730 + 3 +
      800 + 3 + 820 + 3 + 830 + 3 + 900 + 3 + 920 + 3 + 930 + 3 + 1002 + 3 +
      1011 + 3 + 1020 + 3 + 1110 + 4 + 1 + 4 + 2 + 4 + 3 + 4 + 4 + 4 + 5 + 4 +
      6 + 4 + 7 + 4 + 8 + 4 + 9 + 4 + 10 + 4 + 20 + 4 + 21 + 4 + 22 + 4 + 23 +
      4 + 24 + 4 + 25 + 4 + 26 + 4 + 27 + 4 + 28 + 4 + 29 + 4 + 30 + 4 + 31 +
      4 + 32 + 4 + 33 + 4 + 34 + 4 + 35 + 4 + 36 + 4 + 37 + 4 + 38 + 4 + 39 +
      4 + 40 + 4 + 41 + 4 + 42 + 4 + 43 + 4 + 44 + 4 + 45 + 4 + 46 + 4 + 47 +
      4 + 48 + 4 + 49 + 4 + 50 + 4 + 51 + 4 + 52 + 4 + 53 + 4 + 54 + 4 + 55 +
      4 + 56 + 4 + 57 + 4 + 58 + 4 + 59 + 4 + 60 + 4 + 61 + 4 + 62 + 4 + 63 +
      4 + 64 + 4 + 65 + 4 + 66 + 4 + 67 + 4 + 68 + 4 + 69 + 4 + 70 + 4 + 71 +
      4 + 72 + 4 + 73 + 4 + 74 + 4 + 75 + 4 + 76 + 4 + 77 + 4 + 78 + 4 + 79 +
      4 + 80 + 4 + 81 + 4 + 82 + 4 + 83 + 4 + 84 + 4 + 85 + 4 + 86 + 4 + 87 +
      4 + 88 + 4 + 89 + 4 + 90 + 4 + 91 + 4 + 92 + 4 + 93 + 4 + 94 + 4 + 95 +
      4 + 96 + 4 + 97 + 4 + 98 + 4 + 99 + 4 + 110 + 5 + 1 + 5 + 2 + 5 + 3 + 5 +
      4 + 5 + 5 + 5 + 6 + 5 + 7 + 5 + 8 + 5 + 9 + 5 + 10 + 5 + 20 + 5 + 21 + 5 +
      22 + 5 + 23 + 5 + 24 + 5 + 25 + 5 + 26 + 5 + 27 + 5 + 28 + 5 + 29 + 5 +
      30 + 5 + 31 + 5 + 32 + 5 + 33 + 5 + 34 + 5 + 35 + 5 + 36 + 5 + 37 + 5 +
      38 + 5 + 39 + 5 + 40 + 5 + 41 + 5 + 42 + 5 + 43 + 5 + 44 + 5 + 45 + 5 +
      46 + 5 + 47 + 5 + 48 + 5 + 49 + 5 + 50 + 5 + 51 + 5 + 52 + 5 + 53 + 5 +
      54 + 5 + 55 + 5 + 56 + 5 + 57 + 5 + 58 + 5 + 59 + 5 + 60 + 5 + 61 + 5 +
      62 + 5 + 63 + 5 + 64 + 5 + 65 + 5 + 66 + 5 + 67 + 5 + 68 + 5 + 69 + 5 +
      70 + 5 + 71 + 5 + 72 + 5 + 73 + 5 + 74 + 5 + 75 + 5 + 76 + 5 + 77 + 5 +
      78 + 5 + 79 + 5 + 80 + 5 + 81 + 5 + 82 + 5 + 83 + 5 + 84 + 5 + 85 + 5 +
      86 + 5 + 87 + 5 + 88 + 5 + 89 + 5 + 90 + 5 + 91 + 5 + 92 + 5 + 93 + 5 +
      94 + 5 + 95 + 5 + 96 + 5 + 97 + 5 + 98 + 5 + 99 + 5 + 110 + 6 + 1 + 6 +
      2 + 6 + 3 + 6 + 4 + 6 + 5 + 6 + 6 + 6 + 7 + 6 + 8 + 6 + 9 + 6 + 10 + 6 +
      20 + 6 + 21 + 6 + 22 + 6 + 23 + 6 + 24 + 6 + 25 + 6 + 26 + 6 + 27 + 6 +
      28 + 6 + 29 + 6 + 30 + 6 + 31 + 6 + 32 + 6 + 33 + 6 + 34 + 6 + 35 + 6 +
      36 + 6 + 37 + 6 + 38 + 6 + 39 + 6 + 40 + 6 + 41 + 6 + 42 + 6 + 43 + 6 +
      44 + 6 + 45 + 6 + 46 + 6 + 47 + 6 + 48 + 6 + 49 + 6 + 50 + 6 + 51 + 6 +
      52 + 6 + 53 + 6 + 54 + 6 + 55 + 6 + 56 + 6 + 57 + 6 + 58 + 6 + 59 + 6 +
      60 + 6 + 61 + 6 + 62 + 6 + 63 + 6 + 64 + 6 + 65 + 6 + 66 + 6 + 67 + 6 +
      68 + 6 + 69 + 6 + 70 + 6 + 71 + 6 + 72 + 6 + 73 + 6 + 74 + 6 + 75 + 6 +
      76 + 6 + 77 + 6 + 78 + 6 + 79 + 6 + 80 + 6 + 81 + 6 + 82 + 6 + 83 + 6 +
      84 + 6 + 85 + 6 + 86 + 6 + 87 + 6 + 88 + 6 + 89 + 6 + 90 + 6 + 91 + 6 +
      92 + 6 + 93 + 6 + 94 + 6 + 95 + 6 + 96 + 6 + 97 + 6 + 98 + 6 + 99 + 6 +
      110 + 7 + 1 + 7 + 2 + 7 + 3 + 7 + 4 + 7 + 5 + 7 + 6 + 7 + 7 + 7 + 8 + 7 +
      9 + 7 + 10 + 7 + 20 + 7 + 21 + 7 + 22 + 7 + 23 + 7 + 24 + 7 + 25 + 7 +
      26 + 7 + 27 + 7 + 28 + 7 + 29 + 7 + 30 + 7 + 31 + 7 + 32 + 7 + 33 + 7 +
      34 + 7 + 35 + 7 + 36 + 7 + 37 + 7 + 38 + 7 + 39 + 7 + 40 + 7 + 41 + 7 +
      42 + 7 + 43 + 7 + 44 + 7 + 45 + 7 + 46 + 7 + 47 + 7 + 48 + 7 + 49 + 7 +
      50 + 7 + 51 + 7 + 52 + 7 + 53 + 7 + 54 + 7 + 55 + 7 + 56 + 7 + 57 + 7 +
      58 + 7 + 59 + 7 + 60 + 7 + 61 + 7 + 62 + 7 + 63 + 7 + 64 + 7 + 65 + 7 +
      66 + 7 + 67 + 7 + 68 + 7 + 69 + 7 + 70 + 7 + 71 + 7 + 72 + 7 + 73 + 7 +
      74 + 7 + 75 + 7 + 76 + 7 + 77 + 7 + 78 + 7 + 79 + 7 + 80 + 7 + 81 + 7 +
      82 + 7 + 83 + 7 + 84 + 7 + 85 + 7 + 86 + 7 + 87 + 7 + 88 + 7 + 89 + 7 +
      90 + 7 + 91 + 7 + 92 + 7 + 93 + 7 + 94 + 7 + 95 + 7 + 96 + 7 + 97 + 7 +
      98 + 7 + 99 + 7 + 110 + 8 + 1 + 8 + 2 + 8 + 3 + 8 + 4 + 8 + 5 + 8 + 6 +
      8 + 7 + 8 + 8 + 8 + 9 + 8 + 10 + 8 + 20 + 8 + 21 + 8 + 22 + 8 + 23 + 8 +
      24 + 8 + 25 + 8 + 26 + 8 + 27 + 8 + 28 + 8 + 29 + 8 + 30 + 8 + 31 + 8 +
      32 + 8 + 33 + 8 + 34 + 8 + 35 + 8 + 36 + 8 + 37 + 8 + 38 + 8 + 39 + 8 +
      40 + 8 + 41 + 8 + 42 + 8 + 43 + 8 + 44 + 8 + 45 + 8 + 46 + 8 + 47 + 8 +
      48 + 8 + 49 + 8 + 50 + 8 + 51 + 8 + 52 + 8 + 53 + 8 + 54 + 8 + 55 + 8 +
      56 + 8 + 57 + 8 + 58 + 8 + 59 + 8 + 60 + 8 + 61 + 8 + 62 + 8 + 63 + 8 +
      64 + 8 + 65 + 8 + 66 + 8 + 67 + 8 + 68 + 8 + 69 + 8 + 70 + 8 + 71 + 8 +
      72 + 8 + 73 + 8 + 74 + 8 + 75 + 8 + 76 + 8 + 77 + 8 + 78 + 8 + 79 + 8 +
      80 + 8 + 81 + 8 + 82 + 8 + 83 + 8 + 84 + 8 + 85 + 8 + 86 + 8 + 87 + 8 +
      88 + 8 + 89 + 8 + 90 + 8 + 91 + 8 + 92 + 8 + 93 + 8 + 94 + 8 + 95 + 8 +
      96 + 8 + 97 + 8 + 98 + 8 + 99 + 8 + 110 + 9 + 1 + 9 + 2 + 9 + 3 + 9 + 4 +
      9 + 5 + 9 + 6 + 9 + 7 + 9 + 8 + 9 + 9 + 9 + 10 + 9 + 20 + 9 + 21 + 9 +
      22 + 9 + 23 + 9 + 24 + 9 + 25 + 9 + 26 + 9 + 27 + 9 + 28 + 9 + 29 + 9 +
      30 + 9 + 31 + 9 + 32 + 9 + 33 + 9 + 34 + 9 + 35 + 9 + 36 + 9 + 37 + 9 +
      38 + 9 + 39 + 9 + 40 + 9 + 41 + 9 + 42 + 9 + 43 + 9 + 44 + 9 + 45 + 9 +
      46 + 9 + 47 + 9 + 48 + 9 + 49 + 9 + 50 + 9 + 51 + 9 + 52 + 9 + 53 + 9 +
      54 + 9 + 55 + 9 + 56 + 9 + 57 + 9 + 58 + 9 + 59 + 9 + 60 + 9 + 61 + 9 +
      62 + 9 + 63 + 9 + 64 + 9 + 65 + 9 + 66 + 9 + 67 + 9 + 68 + 9 + 69 + 9 +
      70 + 9 + 71 + 9 + 72 + 9 + 73 + 9 + 74 + 9 + 75 + 9 + 76 + 9 + 77 + 9 +
      78 + 9 + 79 + 9 + 80 + 9 + 81 + 9 + 82 + 9 + 83 + 9 + 84 + 9 + 85 + 9 +
      86 + 9 + 87 + 9 + 88 + 9 + 89 + 9 + 90 + 9 + 91 + 9 + 92 + 9 + 93 + 9 +
      94 + 9 + 95 + 9 + 96 + 9 + 97 + 9 + 98 + 9 + 99 + 9 + 110 + 40 + 10 + 41 +
      10 + 42 + 10 + 43 + 10 + 44 + 10 + 50 + 10 + 51 + 10 + 52 + 10 + 53 + 10 +
      54 + 10 + 60 + 10 + 61 + 10 + 62 + 10 + 63 + 10 + 64 + 10 + 70 + 10 + 71 +
      10 + 72 + 10 + 73 + 10 + 74 + 10 + 80 + 10 + 81 + 10 + 82 + 10 + 83 + 10 +
      84 + 10 + 90 + 10 + 91 + 10 + 92 + 10 + 93 + 10 + 94 + 10 + 100 + 1 +
      120 + 1;
  d *= 48041;
  d += 53854;
  if (c > 0)
    for (i = c << 1; i > (c ^ c ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7); i = i - 1)
      c = c + d;
  else
    for (j = c * -2; j > 0; j = j - 1)
      c += 1;
  printf("%d\n", c);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    $0x0,%al
call   1040 <atoi@plt>
mov    %eax,-0x1c(%rbp)
movl   $0x15d39,-0x20(%rbp)
imul   $0xbba9,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    $0xd25e,%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jle    11b9 <main+0x99>
mov    -0x1c(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x1c(%rbp),%ecx
xor    -0x1c(%rbp),%ecx
xor    $0x1,%ecx
xor    $0x2,%ecx
xor    $0x3,%ecx
xor    $0x4,%ecx
xor    $0x5,%ecx
xor    $0x6,%ecx
xor    $0x7,%ecx
cmp    %ecx,%eax
jle    11b4 <main+0x94>
mov    -0x1c(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1177 <main+0x57>
jmp    11e6 <main+0xc6>
imul   $0xfffffffe,-0x1c(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
jle    11e1 <main+0xc1>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11c0 <main+0xa0>
jmp    11e6 <main+0xc6>
mov    -0x1c(%rbp),%esi
lea    0xe10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
mov    0x8(%rsi),%rdi
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <atoi@plt>
test   %eax,%eax
jle    1140 <main+0x20>
lea    (%rax,%rax,1),%ecx
mov    %eax,%ebx
neg    %ebx
test   %ecx,%ecx
cmovle %eax,%ebx
jmp    1155 <main+0x35>
jns    1155 <main+0x35>
lea    (%rax,%rax,1),%ecx
neg    %ecx
test   %ecx,%ecx
mov    $0x1,%ebx
cmovg  %ebx,%ecx
add    %eax,%ecx
sub    %ecx,%ebx
lea    0xea4(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rbx
ret

LLVM IR (-O0):
@.str = [4 x i8] c"%d\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%10 = load i8**, i8*** %5
%11 = getelementptr inbounds i8*, i8** %10, i64 1
%12 = load i8*, i8** %11
%13 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %12)
store i32 %13, i32* %8
store i32 89401, i32* %9
%14 = load i32, i32* %9
%15 = mul nsw i32 %14, 48041
store i32 %15, i32* %9
%16 = load i32, i32* %9
%17 = add nsw i32 %16, 53854
store i32 %17, i32* %9
%18 = load i32, i32* %8
%19 = icmp sgt i32 %18, 0
br i1 %19, label %20, label %44
20: ; preds = %2
%21 = load i32, i32* %8
%22 = shl i32 %21, 1
store i32 %22, i32* %6
br label %23
23: ; preds = %40, %20
%24 = load i32, i32* %6
%25 = load i32, i32* %8
%26 = load i32, i32* %8
%27 = xor i32 %25, %26
%28 = xor i32 %27, 1
%29 = xor i32 %28, 2
%30 = xor i32 %29, 3
%31 = xor i32 %30, 4
%32 = xor i32 %31, 5
%33 = xor i32 %32, 6
%34 = xor i32 %33, 7
%35 = icmp sgt i32 %24, %34
br i1 %35, label %36, label %43
36: ; preds = %23
%37 = load i32, i32* %8
%38 = load i32, i32* %9
%39 = add nsw i32 %37, %38
store i32 %39, i32* %8
br label %40
40: ; preds = %36
%41 = load i32, i32* %6
%42 = sub nsw i32 %41, 1
store i32 %42, i32* %6
br label %23
43: ; preds = %23
br label %57
44: ; preds = %2
%45 = load i32, i32* %8
%46 = mul nsw i32 %45, -2
store i32 %46, i32* %7
br label %47
47: ; preds = %53, %44
%48 = load i32, i32* %7
%49 = icmp sgt i32 %48, 0
br i1 %49, label %50, label %56
50: ; preds = %47
%51 = load i32, i32* %8
%52 = add nsw i32 %51, 1
store i32 %52, i32* %8
br label %53
53: ; preds = %50
%54 = load i32, i32* %7
%55 = sub nsw i32 %54, 1
store i32 %55, i32* %7
br label %47
56: ; preds = %47
br label %57
57: ; preds = %56, %43
%58 = load i32, i32* %8
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %58)
ret i32 0
}

LLVM IR (-O2):
@.str = [4 x i8] c"%d\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = getelementptr inbounds i8*, i8** %1, i64 1
%4 = load i8*, i8** %3
%5 = tail call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %4)
%6 = icmp sgt i32 %5, 0
br i1 %6, label %7, label %12
7: ; preds = %2
%8 = shl nuw i32 %5, 1
%9 = icmp sgt i32 %8, 0
%10 = sub nsw i32 0, %5
%11 = select i1 %9, i32 %10, i32 %5
br label %19
12: ; preds = %2
%13 = icmp slt i32 %5, 0
br i1 %13, label %14, label %19
14: ; preds = %12
%15 = mul i32 %5, -2
%16 = call i32 @llvm.smin.i32(i32 %15, i32 1)
%17 = add i32 %5, %16
%18 = sub i32 1, %17
br label %19
19: ; preds = %7, %14, %12
%20 = phi i32 [ 0, %12 ], [ %18, %14 ], [ %11, %7 ]
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %20)
ret i32 0
}