specialchar(s, c) char *s;
char *c;
{
  char c1;
  char c2;
  c1 = *s;
  c2 = *(s + 1);
  if (c1 == 'c' && c2 == 'o') {
    *c = 0xBD;
    return (2);
  }
  if (c1 == 'r' && c2 == 'g') {
    *c = 0xBE;
    return (2);
  }
  if (c1 == 't' && c2 == 'm') {
    *c = 0xBF;
    return (2);
  }
  if (c1 == '1' && c2 == '2') {
    *c = 0xAB;
    return (2);
  }
  if (c1 == '1' && c2 == '4') {
    *c = 0xAC;
    return (2);
  }
  if (c1 == 'p' && c2 == '2') {
    *c = 0xFD;
    return (2);
  }
  if (c1 == 'p' && c2 == '3') {
    *c = 0xFE;
    return (2);
  }
  if (c1 == 'p' && c2 == 'n') {
    *c = 0xFC;
    return (2);
  }
  if (c1 == 'a' && c2 == 'a') {
    *c = 0xBA;
    return (2);
  }
  if (c1 == 'g' && c2 == 'a') {
    *c = 0x60;
    return (2);
  }
  if (c1 == 'd' && c2 == 'e') {
    *c = 0xF8;
    return (2);
  }
  if (c1 == 'd' && c2 == 'g') {
    *c = 0xBB;
    return (2);
  }
  if (c1 == 'c' && c2 == 't') {
    *c = 0x9B;
    return (2);
  }
  if (c1 == 'b' && c2 == 'u') {
    *c = 0xF9;
    return (2);
  }
  if (c1 == 'd' && c2 == 't') {
    *c = 0xFA;
    return (2);
  }
  if (c1 == 'p' && c2 == 'p') {
    *c = 0xBC;
    return (2);
  }
  if (c1 == '^' && c2 == 'g') {
    *c = 0x07;
    return (2);
  }
  if (c1 == 'u' && c2 == 'a') {
    *c = 0x01;
    return (2);
  }
  if (c1 == 'd' && c2 == 'a') {
    *c = 0x02;
    return (2);
  }
  if (c1 == '-' && c2 == '>') {
    *c = 0x03;
    return (2);
  }
  if (c1 == '<' && c2 == '-') {
    *c = 0x04;
    return (2);
  }
  if (c1 == 'd' && c2 == 'i') {
    *c = 0xF6;
    return (2);
  }
  if (c1 == 's' && c2 == 'r') {
    *c = 0xFB;
    return (2);
  }
  if (c1 == '=' && c2 == '=') {
    *c = 0xF0;
    return (2);
  }
  if (c1 == '>' && c2 == '=') {
    *c = 0xF2;
    return (2);
  }
  if (c1 == '<' && c2 == '=') {
    *c = 0xF3;
    return (2);
  }
  if (c1 == '+' && c2 == '-') {
    *c = 0xF1;
    return (2);
  }
  if (c1 == '~' && c2 == '=') {
    *c = 0xF7;
    return (2);
  }
  if (c1 == 'a' && c2 == 'p') {
    *c = 0x7E;
    return (2);
  }
  if (c1 == 'n' && c2 == 'o') {
    *c = 0xAA;
    return (2);
  }
  if (c1 == 'm' && c2 == 'o') {
    *c = 0xEE;
    return (2);
  }
  if (c1 == 'c' && c2 == 'a') {
    *c = 0xEF;
    return (2);
  }
  if (c1 == 'c' && c2 == 'u') {
    *c = 0x55;
    return (2);
  }
  if (c1 == 'i' && c2 == '1') {
    *c = 0xF4;
    return (2);
  }
  if (c1 == 'i' && c2 == '2') {
    *c = 0xF5;
    return (2);
  }
  if (c1 == '*' && c2 == 'a') {
    *c = 0xE0;
    return (2);
  }
  if (c1 == '*' && c2 == 'b') {
    *c = 0xE1;
    return (2);
  }
  if (c1 == '*' && c2 == 'g') {
    *c = 0xE2;
    return (2);
  }
  if (c1 == '*' && c2 == 'd') {
    *c = 0x7F;
    return (2);
  }
  if (c1 == '*' && c2 == 's') {
    *c = 0xE4;
    return (2);
  }
  if (c1 == '*' && c2 == 'p') {
    *c = 0xE3;
    return (2);
  }
  if (c1 == '*' && c2 == 'm') {
    *c = 0xE6;
    return (2);
  }
  *c = ' ';
  return (0);
}


x86 assembly (clang, -O0):
<specialchar>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
mov    0x1(%rax),%al
mov    %al,-0x1a(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x63,%eax
jne    114c <specialchar+0x4c>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
jne    114c <specialchar+0x4c>
mov    -0x18(%rbp),%rax
movb   $0xbd,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x72,%eax
jne    1179 <specialchar+0x79>
movsbl -0x1a(%rbp),%eax
cmp    $0x67,%eax
jne    1179 <specialchar+0x79>
mov    -0x18(%rbp),%rax
movb   $0xbe,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x74,%eax
jne    11a6 <specialchar+0xa6>
movsbl -0x1a(%rbp),%eax
cmp    $0x6d,%eax
jne    11a6 <specialchar+0xa6>
mov    -0x18(%rbp),%rax
movb   $0xbf,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x31,%eax
jne    11d3 <specialchar+0xd3>
movsbl -0x1a(%rbp),%eax
cmp    $0x32,%eax
jne    11d3 <specialchar+0xd3>
mov    -0x18(%rbp),%rax
movb   $0xab,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x31,%eax
jne    1200 <specialchar+0x100>
movsbl -0x1a(%rbp),%eax
cmp    $0x34,%eax
jne    1200 <specialchar+0x100>
mov    -0x18(%rbp),%rax
movb   $0xac,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x70,%eax
jne    122d <specialchar+0x12d>
movsbl -0x1a(%rbp),%eax
cmp    $0x32,%eax
jne    122d <specialchar+0x12d>
mov    -0x18(%rbp),%rax
movb   $0xfd,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x70,%eax
jne    125a <specialchar+0x15a>
movsbl -0x1a(%rbp),%eax
cmp    $0x33,%eax
jne    125a <specialchar+0x15a>
mov    -0x18(%rbp),%rax
movb   $0xfe,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x70,%eax
jne    1287 <specialchar+0x187>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
jne    1287 <specialchar+0x187>
mov    -0x18(%rbp),%rax
movb   $0xfc,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x61,%eax
jne    12b4 <specialchar+0x1b4>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jne    12b4 <specialchar+0x1b4>
mov    -0x18(%rbp),%rax
movb   $0xba,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x67,%eax
jne    12e1 <specialchar+0x1e1>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jne    12e1 <specialchar+0x1e1>
mov    -0x18(%rbp),%rax
movb   $0x60,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x64,%eax
jne    130e <specialchar+0x20e>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
jne    130e <specialchar+0x20e>
mov    -0x18(%rbp),%rax
movb   $0xf8,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x64,%eax
jne    133b <specialchar+0x23b>
movsbl -0x1a(%rbp),%eax
cmp    $0x67,%eax
jne    133b <specialchar+0x23b>
mov    -0x18(%rbp),%rax
movb   $0xbb,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x63,%eax
jne    1368 <specialchar+0x268>
movsbl -0x1a(%rbp),%eax
cmp    $0x74,%eax
jne    1368 <specialchar+0x268>
mov    -0x18(%rbp),%rax
movb   $0x9b,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x62,%eax
jne    1395 <specialchar+0x295>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
jne    1395 <specialchar+0x295>
mov    -0x18(%rbp),%rax
movb   $0xf9,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x64,%eax
jne    13c2 <specialchar+0x2c2>
movsbl -0x1a(%rbp),%eax
cmp    $0x74,%eax
jne    13c2 <specialchar+0x2c2>
mov    -0x18(%rbp),%rax
movb   $0xfa,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x70,%eax
jne    13ef <specialchar+0x2ef>
movsbl -0x1a(%rbp),%eax
cmp    $0x70,%eax
jne    13ef <specialchar+0x2ef>
mov    -0x18(%rbp),%rax
movb   $0xbc,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x5e,%eax
jne    141c <specialchar+0x31c>
movsbl -0x1a(%rbp),%eax
cmp    $0x67,%eax
jne    141c <specialchar+0x31c>
mov    -0x18(%rbp),%rax
movb   $0x7,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x75,%eax
jne    1449 <specialchar+0x349>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jne    1449 <specialchar+0x349>
mov    -0x18(%rbp),%rax
movb   $0x1,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x64,%eax
jne    1476 <specialchar+0x376>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jne    1476 <specialchar+0x376>
mov    -0x18(%rbp),%rax
movb   $0x2,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2d,%eax
jne    14a3 <specialchar+0x3a3>
movsbl -0x1a(%rbp),%eax
cmp    $0x3e,%eax
jne    14a3 <specialchar+0x3a3>
mov    -0x18(%rbp),%rax
movb   $0x3,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x3c,%eax
jne    14d0 <specialchar+0x3d0>
movsbl -0x1a(%rbp),%eax
cmp    $0x2d,%eax
jne    14d0 <specialchar+0x3d0>
mov    -0x18(%rbp),%rax
movb   $0x4,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x64,%eax
jne    14fd <specialchar+0x3fd>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    14fd <specialchar+0x3fd>
mov    -0x18(%rbp),%rax
movb   $0xf6,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x73,%eax
jne    152a <specialchar+0x42a>
movsbl -0x1a(%rbp),%eax
cmp    $0x72,%eax
jne    152a <specialchar+0x42a>
mov    -0x18(%rbp),%rax
movb   $0xfb,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x3d,%eax
jne    1557 <specialchar+0x457>
movsbl -0x1a(%rbp),%eax
cmp    $0x3d,%eax
jne    1557 <specialchar+0x457>
mov    -0x18(%rbp),%rax
movb   $0xf0,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x3e,%eax
jne    1584 <specialchar+0x484>
movsbl -0x1a(%rbp),%eax
cmp    $0x3d,%eax
jne    1584 <specialchar+0x484>
mov    -0x18(%rbp),%rax
movb   $0xf2,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x3c,%eax
jne    15b1 <specialchar+0x4b1>
movsbl -0x1a(%rbp),%eax
cmp    $0x3d,%eax
jne    15b1 <specialchar+0x4b1>
mov    -0x18(%rbp),%rax
movb   $0xf3,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2b,%eax
jne    15de <specialchar+0x4de>
movsbl -0x1a(%rbp),%eax
cmp    $0x2d,%eax
jne    15de <specialchar+0x4de>
mov    -0x18(%rbp),%rax
movb   $0xf1,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x7e,%eax
jne    160b <specialchar+0x50b>
movsbl -0x1a(%rbp),%eax
cmp    $0x3d,%eax
jne    160b <specialchar+0x50b>
mov    -0x18(%rbp),%rax
movb   $0xf7,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x61,%eax
jne    1638 <specialchar+0x538>
movsbl -0x1a(%rbp),%eax
cmp    $0x70,%eax
jne    1638 <specialchar+0x538>
mov    -0x18(%rbp),%rax
movb   $0x7e,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x6e,%eax
jne    1665 <specialchar+0x565>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
jne    1665 <specialchar+0x565>
mov    -0x18(%rbp),%rax
movb   $0xaa,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x6d,%eax
jne    1692 <specialchar+0x592>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
jne    1692 <specialchar+0x592>
mov    -0x18(%rbp),%rax
movb   $0xee,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x63,%eax
jne    16bf <specialchar+0x5bf>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jne    16bf <specialchar+0x5bf>
mov    -0x18(%rbp),%rax
movb   $0xef,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x63,%eax
jne    16ec <specialchar+0x5ec>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
jne    16ec <specialchar+0x5ec>
mov    -0x18(%rbp),%rax
movb   $0x55,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x69,%eax
jne    1719 <specialchar+0x619>
movsbl -0x1a(%rbp),%eax
cmp    $0x31,%eax
jne    1719 <specialchar+0x619>
mov    -0x18(%rbp),%rax
movb   $0xf4,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x69,%eax
jne    1746 <specialchar+0x646>
movsbl -0x1a(%rbp),%eax
cmp    $0x32,%eax
jne    1746 <specialchar+0x646>
mov    -0x18(%rbp),%rax
movb   $0xf5,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2a,%eax
jne    1773 <specialchar+0x673>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
jne    1773 <specialchar+0x673>
mov    -0x18(%rbp),%rax
movb   $0xe0,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2a,%eax
jne    17a0 <specialchar+0x6a0>
movsbl -0x1a(%rbp),%eax
cmp    $0x62,%eax
jne    17a0 <specialchar+0x6a0>
mov    -0x18(%rbp),%rax
movb   $0xe1,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2a,%eax
jne    17cd <specialchar+0x6cd>
movsbl -0x1a(%rbp),%eax
cmp    $0x67,%eax
jne    17cd <specialchar+0x6cd>
mov    -0x18(%rbp),%rax
movb   $0xe2,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2a,%eax
jne    17fa <specialchar+0x6fa>
movsbl -0x1a(%rbp),%eax
cmp    $0x64,%eax
jne    17fa <specialchar+0x6fa>
mov    -0x18(%rbp),%rax
movb   $0x7f,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2a,%eax
jne    1827 <specialchar+0x727>
movsbl -0x1a(%rbp),%eax
cmp    $0x73,%eax
jne    1827 <specialchar+0x727>
mov    -0x18(%rbp),%rax
movb   $0xe4,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2a,%eax
jne    1854 <specialchar+0x754>
movsbl -0x1a(%rbp),%eax
cmp    $0x70,%eax
jne    1854 <specialchar+0x754>
mov    -0x18(%rbp),%rax
movb   $0xe3,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
movsbl -0x19(%rbp),%eax
cmp    $0x2a,%eax
jne    1881 <specialchar+0x781>
movsbl -0x1a(%rbp),%eax
cmp    $0x6d,%eax
jne    1881 <specialchar+0x781>
mov    -0x18(%rbp),%rax
movb   $0xe6,(%rax)
movl   $0x2,-0x4(%rbp)
jmp    188f <specialchar+0x78f>
mov    -0x18(%rbp),%rax
movb   $0x20,(%rax)
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<specialchar>:
mov    (%rdi),%cl
mov    0x1(%rdi),%dl
mov    $0x2,%eax
cmp    $0x63,%cl
jne    111b <specialchar+0x1b>
mov    $0xbd,%dil
cmp    $0x6f,%dl
jne    111b <specialchar+0x1b>
mov    %dil,(%rsi)
ret
cmp    $0x72,%cl
jne    1128 <specialchar+0x28>
mov    $0xbe,%dil
cmp    $0x67,%dl
je     1117 <specialchar+0x17>
cmp    $0x74,%cl
jne    1135 <specialchar+0x35>
mov    $0xbf,%dil
cmp    $0x6d,%dl
je     1117 <specialchar+0x17>
cmp    $0x31,%cl
jne    1142 <specialchar+0x42>
mov    $0xab,%dil
cmp    $0x32,%dl
je     1117 <specialchar+0x17>
cmp    $0x31,%cl
jne    114f <specialchar+0x4f>
mov    $0xac,%dil
cmp    $0x34,%dl
je     1117 <specialchar+0x17>
cmp    $0x70,%cl
jne    115c <specialchar+0x5c>
mov    $0xfd,%dil
cmp    $0x32,%dl
je     1117 <specialchar+0x17>
cmp    $0x70,%cl
jne    1169 <specialchar+0x69>
mov    $0xfe,%dil
cmp    $0x33,%dl
je     1117 <specialchar+0x17>
cmp    $0x70,%cl
jne    1176 <specialchar+0x76>
mov    $0xfc,%dil
cmp    $0x6e,%dl
je     1117 <specialchar+0x17>
cmp    $0x61,%cl
jne    1183 <specialchar+0x83>
mov    $0xba,%dil
cmp    $0x61,%dl
je     1117 <specialchar+0x17>
cmp    $0x67,%cl
jne    1190 <specialchar+0x90>
mov    $0x60,%dil
cmp    $0x61,%dl
je     1117 <specialchar+0x17>
cmp    $0x64,%cl
jne    11a1 <specialchar+0xa1>
mov    $0xf8,%dil
cmp    $0x65,%dl
je     1117 <specialchar+0x17>
cmp    $0x64,%cl
jne    11b2 <specialchar+0xb2>
mov    $0xbb,%dil
cmp    $0x67,%dl
je     1117 <specialchar+0x17>
cmp    $0x63,%cl
jne    11c3 <specialchar+0xc3>
mov    $0x9b,%dil
cmp    $0x74,%dl
je     1117 <specialchar+0x17>
cmp    $0x62,%cl
jne    11d4 <specialchar+0xd4>
mov    $0xf9,%dil
cmp    $0x75,%dl
je     1117 <specialchar+0x17>
cmp    $0x64,%cl
jne    11e5 <specialchar+0xe5>
mov    $0xfa,%dil
cmp    $0x74,%dl
je     1117 <specialchar+0x17>
cmp    $0x70,%cl
jne    11f6 <specialchar+0xf6>
mov    $0xbc,%dil
cmp    $0x70,%dl
je     1117 <specialchar+0x17>
cmp    $0x5e,%cl
jne    1207 <specialchar+0x107>
mov    $0x7,%dil
cmp    $0x67,%dl
je     1117 <specialchar+0x17>
cmp    $0x75,%cl
jne    1218 <specialchar+0x118>
mov    $0x1,%dil
cmp    $0x61,%dl
je     1117 <specialchar+0x17>
cmp    $0x64,%cl
jne    1229 <specialchar+0x129>
mov    $0x2,%dil
cmp    $0x61,%dl
je     1117 <specialchar+0x17>
cmp    $0x2d,%cl
jne    123a <specialchar+0x13a>
mov    $0x3,%dil
cmp    $0x3e,%dl
je     1117 <specialchar+0x17>
cmp    $0x3c,%cl
jne    124b <specialchar+0x14b>
mov    $0x4,%dil
cmp    $0x2d,%dl
je     1117 <specialchar+0x17>
cmp    $0x64,%cl
jne    125c <specialchar+0x15c>
mov    $0xf6,%dil
cmp    $0x69,%dl
je     1117 <specialchar+0x17>
cmp    $0x73,%cl
jne    126d <specialchar+0x16d>
mov    $0xfb,%dil
cmp    $0x72,%dl
je     1117 <specialchar+0x17>
cmp    $0x3d,%cl
jne    127e <specialchar+0x17e>
mov    $0xf0,%dil
cmp    $0x3d,%dl
je     1117 <specialchar+0x17>
cmp    $0x3e,%cl
jne    128f <specialchar+0x18f>
mov    $0xf2,%dil
cmp    $0x3d,%dl
je     1117 <specialchar+0x17>
cmp    $0x3c,%cl
jne    12a0 <specialchar+0x1a0>
mov    $0xf3,%dil
cmp    $0x3d,%dl
je     1117 <specialchar+0x17>
cmp    $0x2b,%cl
jne    12b1 <specialchar+0x1b1>
mov    $0xf1,%dil
cmp    $0x2d,%dl
je     1117 <specialchar+0x17>
cmp    $0x7e,%cl
jne    12c2 <specialchar+0x1c2>
mov    $0xf7,%dil
cmp    $0x3d,%dl
je     1117 <specialchar+0x17>
cmp    $0x61,%cl
jne    12d3 <specialchar+0x1d3>
mov    $0x7e,%dil
cmp    $0x70,%dl
je     1117 <specialchar+0x17>
cmp    $0x6e,%cl
jne    12e4 <specialchar+0x1e4>
mov    $0xaa,%dil
cmp    $0x6f,%dl
je     1117 <specialchar+0x17>
cmp    $0x6d,%cl
jne    12f5 <specialchar+0x1f5>
mov    $0xee,%dil
cmp    $0x6f,%dl
je     1117 <specialchar+0x17>
cmp    $0x63,%cl
jne    1306 <specialchar+0x206>
mov    $0xef,%dil
cmp    $0x61,%dl
je     1117 <specialchar+0x17>
cmp    $0x63,%cl
jne    1317 <specialchar+0x217>
mov    $0x55,%dil
cmp    $0x75,%dl
je     1117 <specialchar+0x17>
cmp    $0x69,%cl
jne    1328 <specialchar+0x228>
mov    $0xf4,%dil
cmp    $0x31,%dl
je     1117 <specialchar+0x17>
cmp    $0x69,%cl
jne    1339 <specialchar+0x239>
mov    $0xf5,%dil
cmp    $0x32,%dl
je     1117 <specialchar+0x17>
cmp    $0x2a,%cl
jne    134a <specialchar+0x24a>
mov    $0xe0,%dil
cmp    $0x61,%dl
je     1117 <specialchar+0x17>
cmp    $0x2a,%cl
jne    135b <specialchar+0x25b>
mov    $0xe1,%dil
cmp    $0x62,%dl
je     1117 <specialchar+0x17>
cmp    $0x2a,%cl
jne    136c <specialchar+0x26c>
mov    $0xe2,%dil
cmp    $0x67,%dl
je     1117 <specialchar+0x17>
cmp    $0x2a,%cl
jne    137d <specialchar+0x27d>
mov    $0x7f,%dil
cmp    $0x64,%dl
je     1117 <specialchar+0x17>
cmp    $0x2a,%cl
jne    138e <specialchar+0x28e>
mov    $0xe4,%dil
cmp    $0x73,%dl
je     1117 <specialchar+0x17>
cmp    $0x2a,%cl
jne    139f <specialchar+0x29f>
mov    $0xe3,%dil
cmp    $0x70,%dl
je     1117 <specialchar+0x17>
xor    $0x2a,%cl
xor    $0x6d,%dl
xor    %eax,%eax
or     %cl,%dl
sete   %al
mov    $0xe6,%ecx
mov    $0x20,%edi
cmove  %ecx,%edi
add    %eax,%eax
mov    %dil,(%rsi)
ret

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

LLVM IR (-O2):
define i32 @specialchar(i8* nocapture %0, i8* writeonly %1) {
%3 = load i8, i8* %0
%4 = getelementptr inbounds i8, i8* %0, i64 1
%5 = load i8, i8* %4
%6 = icmp eq i8 %3, 99
%7 = icmp eq i8 %5, 111
%8 = select i1 %6, i1 %7, i1 false
br i1 %8, label %134, label %9
9: ; preds = %2
%10 = icmp eq i8 %3, 114
%11 = icmp eq i8 %5, 103
%12 = select i1 %10, i1 %11, i1 false
br i1 %12, label %134, label %13
13: ; preds = %9
%14 = icmp eq i8 %3, 116
%15 = icmp eq i8 %5, 109
%16 = select i1 %14, i1 %15, i1 false
br i1 %16, label %134, label %17
17: ; preds = %13
%18 = icmp eq i8 %3, 49
%19 = icmp eq i8 %5, 50
%20 = select i1 %18, i1 %19, i1 false
br i1 %20, label %134, label %21
21: ; preds = %17
%22 = icmp eq i8 %5, 52
%23 = select i1 %18, i1 %22, i1 false
br i1 %23, label %134, label %24
24: ; preds = %21
%25 = icmp eq i8 %3, 112
%26 = select i1 %25, i1 %19, i1 false
br i1 %26, label %134, label %27
27: ; preds = %24
%28 = icmp eq i8 %5, 51
%29 = select i1 %25, i1 %28, i1 false
br i1 %29, label %134, label %30
30: ; preds = %27
%31 = icmp eq i8 %5, 110
%32 = select i1 %25, i1 %31, i1 false
br i1 %32, label %134, label %33
33: ; preds = %30
%34 = icmp eq i8 %3, 97
%35 = icmp eq i8 %5, 97
%36 = select i1 %34, i1 %35, i1 false
br i1 %36, label %134, label %37
37: ; preds = %33
%38 = icmp eq i8 %3, 103
%39 = select i1 %38, i1 %35, i1 false
br i1 %39, label %134, label %40
40: ; preds = %37
%41 = icmp eq i8 %3, 100
%42 = icmp eq i8 %5, 101
%43 = select i1 %41, i1 %42, i1 false
br i1 %43, label %134, label %44
44: ; preds = %40
%45 = select i1 %41, i1 %11, i1 false
br i1 %45, label %134, label %46
46: ; preds = %44
%47 = icmp eq i8 %5, 116
%48 = select i1 %6, i1 %47, i1 false
br i1 %48, label %134, label %49
49: ; preds = %46
%50 = icmp eq i8 %3, 98
%51 = icmp eq i8 %5, 117
%52 = select i1 %50, i1 %51, i1 false
br i1 %52, label %134, label %53
53: ; preds = %49
%54 = select i1 %41, i1 %47, i1 false
br i1 %54, label %134, label %55
55: ; preds = %53
%56 = icmp eq i8 %5, 112
%57 = select i1 %25, i1 %56, i1 false
br i1 %57, label %134, label %58
58: ; preds = %55
%59 = icmp eq i8 %3, 94
%60 = select i1 %59, i1 %11, i1 false
br i1 %60, label %134, label %61
61: ; preds = %58
%62 = icmp eq i8 %3, 117
%63 = select i1 %62, i1 %35, i1 false
br i1 %63, label %134, label %64
64: ; preds = %61
%65 = select i1 %41, i1 %35, i1 false
br i1 %65, label %134, label %66
66: ; preds = %64
%67 = icmp eq i8 %3, 45
%68 = icmp eq i8 %5, 62
%69 = select i1 %67, i1 %68, i1 false
br i1 %69, label %134, label %70
70: ; preds = %66
%71 = icmp eq i8 %3, 60
%72 = icmp eq i8 %5, 45
%73 = select i1 %71, i1 %72, i1 false
br i1 %73, label %134, label %74
74: ; preds = %70
%75 = icmp eq i8 %5, 105
%76 = select i1 %41, i1 %75, i1 false
br i1 %76, label %134, label %77
77: ; preds = %74
%78 = icmp eq i8 %3, 115
%79 = icmp eq i8 %5, 114
%80 = select i1 %78, i1 %79, i1 false
br i1 %80, label %134, label %81
81: ; preds = %77
%82 = icmp eq i8 %3, 61
%83 = icmp eq i8 %5, 61
%84 = select i1 %82, i1 %83, i1 false
br i1 %84, label %134, label %85
85: ; preds = %81
%86 = icmp eq i8 %3, 62
%87 = select i1 %86, i1 %83, i1 false
br i1 %87, label %134, label %88
88: ; preds = %85
%89 = select i1 %71, i1 %83, i1 false
br i1 %89, label %134, label %90
90: ; preds = %88
%91 = icmp eq i8 %3, 43
%92 = select i1 %91, i1 %72, i1 false
br i1 %92, label %134, label %93
93: ; preds = %90
%94 = icmp eq i8 %3, 126
%95 = select i1 %94, i1 %83, i1 false
br i1 %95, label %134, label %96
96: ; preds = %93
%97 = select i1 %34, i1 %56, i1 false
br i1 %97, label %134, label %98
98: ; preds = %96
%99 = icmp eq i8 %3, 110
%100 = select i1 %99, i1 %7, i1 false
br i1 %100, label %134, label %101
101: ; preds = %98
%102 = icmp eq i8 %3, 109
%103 = select i1 %102, i1 %7, i1 false
br i1 %103, label %134, label %104
104: ; preds = %101
%105 = select i1 %6, i1 %35, i1 false
br i1 %105, label %134, label %106
106: ; preds = %104
%107 = select i1 %6, i1 %51, i1 false
br i1 %107, label %134, label %108
108: ; preds = %106
%109 = icmp eq i8 %3, 105
%110 = icmp eq i8 %5, 49
%111 = select i1 %109, i1 %110, i1 false
br i1 %111, label %134, label %112
112: ; preds = %108
%113 = select i1 %109, i1 %19, i1 false
br i1 %113, label %134, label %114
114: ; preds = %112
%115 = icmp eq i8 %3, 42
%116 = select i1 %115, i1 %35, i1 false
br i1 %116, label %134, label %117
117: ; preds = %114
%118 = icmp eq i8 %5, 98
%119 = select i1 %115, i1 %118, i1 false
br i1 %119, label %134, label %120
120: ; preds = %117
%121 = select i1 %115, i1 %11, i1 false
br i1 %121, label %134, label %122
122: ; preds = %120
%123 = icmp eq i8 %5, 100
%124 = select i1 %115, i1 %123, i1 false
br i1 %124, label %134, label %125
125: ; preds = %122
%126 = icmp eq i8 %5, 115
%127 = select i1 %115, i1 %126, i1 false
br i1 %127, label %134, label %128
128: ; preds = %125
%129 = select i1 %115, i1 %56, i1 false
br i1 %129, label %134, label %130
130: ; preds = %128
%131 = select i1 %115, i1 %15, i1 false
%132 = select i1 %131, i8 -26, i8 32
%133 = select i1 %131, i32 2, i32 0
br label %134
134: ; preds = %130, %128, %125, %122, %120, %117, %114, %112, %108, %106, %104, %101, %98, %96, %93, %90, %88, %85, %81, %77, %74, %70, %66, %64, %61, %58, %55, %53, %49, %46, %44, %40, %37, %33, %30, %27, %24, %21, %17, %13, %9, %2
%135 = phi i8 [ -67, %2 ], [ -66, %9 ], [ -65, %13 ], [ -85, %17 ], [ -84, %21 ], [ -3, %24 ], [ -2, %27 ], [ -4, %30 ], [ -70, %33 ], [ 96, %37 ], [ -8, %40 ], [ -69, %44 ], [ -101, %46 ], [ -7, %49 ], [ -6, %53 ], [ -68, %55 ], [ 7, %58 ], [ 1, %61 ], [ 2, %64 ], [ 3, %66 ], [ 4, %70 ], [ -10, %74 ], [ -5, %77 ], [ -16, %81 ], [ -14, %85 ], [ -13, %88 ], [ -15, %90 ], [ -9, %93 ], [ 126, %96 ], [ -86, %98 ], [ -18, %101 ], [ -17, %104 ], [ 85, %106 ], [ -12, %108 ], [ -11, %112 ], [ -32, %114 ], [ -31, %117 ], [ -30, %120 ], [ 127, %122 ], [ -28, %125 ], [ -29, %128 ], [ %132, %130 ]
%136 = phi i32 [ 2, %2 ], [ 2, %9 ], [ 2, %13 ], [ 2, %17 ], [ 2, %21 ], [ 2, %24 ], [ 2, %27 ], [ 2, %30 ], [ 2, %33 ], [ 2, %37 ], [ 2, %40 ], [ 2, %44 ], [ 2, %46 ], [ 2, %49 ], [ 2, %53 ], [ 2, %55 ], [ 2, %58 ], [ 2, %61 ], [ 2, %64 ], [ 2, %66 ], [ 2, %70 ], [ 2, %74 ], [ 2, %77 ], [ 2, %81 ], [ 2, %85 ], [ 2, %88 ], [ 2, %90 ], [ 2, %93 ], [ 2, %96 ], [ 2, %98 ], [ 2, %101 ], [ 2, %104 ], [ 2, %106 ], [ 2, %108 ], [ 2, %112 ], [ 2, %114 ], [ 2, %117 ], [ 2, %120 ], [ 2, %122 ], [ 2, %125 ], [ 2, %128 ], [ %133, %130 ]
store i8 %135, i8* %1
ret i32 %136
}