void latin1_to_ascii(char *str, int len) {
  int i, value;
  for (i = 0; i < len; i++) {
    value = *((unsigned char *)(str + i));
    if ((value > 31) && (value < 127)) {
      continue;
    }
    switch (value) {
    case 128:
      str[i] = 'E';
      break;
    case 130:
      str[i] = ',';
      break;
    case 131:
      str[i] = 'F';
      break;
    case 132:
      str[i] = '\"';
      break;
    case 133:
      str[i] = '.';
      break;
    case 134:
      str[i] = '+';
      break;
    case 135:
      str[i] = '+';
      break;
    case 136:
      str[i] = '^';
      break;
    case 137:
      str[i] = 'm';
      break;
    case 138:
      str[i] = 'S';
      break;
    case 139:
      str[i] = '<';
      break;
    case 140:
      str[i] = 'E';
      break;
    case 142:
      str[i] = 'Z';
      break;
    case 145:
      str[i] = '`';
      break;
    case 146:
      str[i] = '\'';
      break;
    case 147:
      str[i] = '\"';
      break;
    case 148:
      str[i] = '\"';
      break;
    case 149:
      str[i] = '.';
      break;
    case 150:
      str[i] = '-';
      break;
    case 151:
      str[i] = '-';
      break;
    case 152:
      str[i] = '~';
      break;
    case 154:
      str[i] = 's';
      break;
    case 155:
      str[i] = '>';
      break;
    case 156:
      str[i] = 'e';
      break;
    case 158:
      str[i] = 'z';
      break;
    case 159:
      str[i] = 'Y';
      break;
    case 171:
      str[i] = '<';
      break;
    case 180:
      str[i] = '\'';
      break;
    case 181:
      str[i] = 'u';
      break;
    case 187:
      str[i] = '>';
      break;
    case 191:
      str[i] = '\?';
      break;
    case 192:
      str[i] = 'A';
      break;
    case 193:
      str[i] = 'A';
      break;
    case 194:
      str[i] = 'A';
      break;
    case 195:
      str[i] = 'A';
      break;
    case 196:
      str[i] = 'A';
      break;
    case 197:
      str[i] = 'A';
      break;
    case 198:
      str[i] = 'E';
      break;
    case 199:
      str[i] = 'C';
      break;
    case 200:
      str[i] = 'E';
      break;
    case 201:
      str[i] = 'E';
      break;
    case 202:
      str[i] = 'E';
      break;
    case 203:
      str[i] = 'E';
      break;
    case 204:
      str[i] = 'I';
      break;
    case 205:
      str[i] = 'I';
      break;
    case 206:
      str[i] = 'I';
      break;
    case 207:
      str[i] = 'I';
      break;
    case 208:
      str[i] = 'D';
      break;
    case 209:
      str[i] = 'N';
      break;
    case 210:
      str[i] = 'O';
      break;
    case 211:
      str[i] = 'O';
      break;
    case 212:
      str[i] = 'O';
      break;
    case 213:
      str[i] = 'O';
      break;
    case 214:
      str[i] = 'O';
      break;
    case 215:
      str[i] = 'x';
      break;
    case 216:
      str[i] = 'O';
      break;
    case 217:
      str[i] = 'U';
      break;
    case 218:
      str[i] = 'U';
      break;
    case 219:
      str[i] = 'U';
      break;
    case 220:
      str[i] = 'U';
      break;
    case 221:
      str[i] = 'Y';
      break;
    case 222:
      str[i] = 'I';
      break;
    case 223:
      str[i] = 's';
      break;
    case 224:
      str[i] = 'a';
      break;
    case 225:
      str[i] = 'a';
      break;
    case 226:
      str[i] = 'a';
      break;
    case 227:
      str[i] = 'a';
      break;
    case 228:
      str[i] = 'a';
      break;
    case 229:
      str[i] = 'a';
      break;
    case 230:
      str[i] = 'e';
      break;
    case 231:
      str[i] = 'c';
      break;
    case 232:
      str[i] = 'e';
      break;
    case 233:
      str[i] = 'e';
      break;
    case 234:
      str[i] = 'e';
      break;
    case 235:
      str[i] = 'e';
      break;
    case 236:
      str[i] = 'i';
      break;
    case 237:
      str[i] = 'i';
      break;
    case 238:
      str[i] = 'i';
      break;
    case 239:
      str[i] = 'i';
      break;
    case 240:
      str[i] = 'd';
      break;
    case 241:
      str[i] = 'n';
      break;
    case 242:
      str[i] = 'o';
      break;
    case 243:
      str[i] = 'o';
      break;
    case 244:
      str[i] = 'o';
      break;
    case 245:
      str[i] = 'o';
      break;
    case 246:
      str[i] = 'o';
      break;
    case 247:
      str[i] = '-';
      break;
    case 248:
      str[i] = '0';
      break;
    case 249:
      str[i] = 'u';
      break;
    case 250:
      str[i] = 'u';
      break;
    case 251:
      str[i] = 'u';
      break;
    case 252:
      str[i] = 'u';
      break;
    case 253:
      str[i] = 'y';
      break;
    case 254:
      str[i] = 't';
      break;
    case 255:
      str[i] = 'y';
      break;
    default:
      str[i] = ' ';
      break;
    }
  }
}


x86 assembly (clang, -O0):
<latin1_to_ascii>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    17dd <latin1_to_ascii+0x6dd>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x1f,-0x14(%rbp)
jle    1146 <latin1_to_ascii+0x46>
cmpl   $0x7f,-0x14(%rbp)
jge    1146 <latin1_to_ascii+0x46>
jmp    17cf <latin1_to_ascii+0x6cf>
mov    -0x14(%rbp),%eax
add    $0xffffff80,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0x7f,%eax
ja     17be <latin1_to_ascii+0x6be>
mov    -0x20(%rbp),%rax
lea    0xe9a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x45,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2c,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x46,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x22,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2b,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2b,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x5e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6d,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x53,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x3c,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x45,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x5a,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x60,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x27,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x22,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x22,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2d,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2d,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x7e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x73,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x3e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x65,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x7a,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x59,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x3c,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x27,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x75,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x3e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x3f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x41,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x41,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x41,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x41,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x41,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x41,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x45,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x43,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x45,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x45,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x45,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x45,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x49,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x49,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x49,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x49,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x44,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x4e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x78,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x55,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x55,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x55,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x55,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x59,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x49,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x73,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x65,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x63,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x65,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x65,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x65,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x65,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x69,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x69,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x69,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x69,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x64,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6e,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6f,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x2d,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x75,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x75,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x75,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x75,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x79,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x74,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x79,(%rax,%rcx,1)
jmp    17ca <latin1_to_ascii+0x6ca>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
jmp    17cf <latin1_to_ascii+0x6cf>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1112 <latin1_to_ascii+0x12>
pop    %rbp
ret

x86 assembly (clang, -O2):
<latin1_to_ascii>:
test   %esi,%esi
jle    114b <latin1_to_ascii+0x4b>
mov    %esi,%eax
xor    %ecx,%ecx
lea    0xef1(%rip),%r8
jmp    112c <latin1_to_ascii+0x2c>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %dl,(%rdi,%rcx,1)
add    $0x1,%rcx
cmp    %rcx,%rax
je     114b <latin1_to_ascii+0x4b>
movsbq (%rdi,%rcx,1),%rsi
lea    -0x20(%rsi),%edx
cmp    $0x5f,%dl
jb     1123 <latin1_to_ascii+0x23>
mov    $0x20,%dl
test   %sil,%sil
jns    1120 <latin1_to_ascii+0x20>
xor    $0xffffffffffffff80,%rsi
movzbl (%rsi,%r8,1),%edx
jmp    1120 <latin1_to_ascii+0x20>
ret

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

LLVM IR (-O2):
@switch.table.latin1_to_ascii = [128 x i8] c"E ,F\22.++^mS<E Z `'\22\22.--~ s>e zY < 'u > ?AAAAAAECEEEEIIIIDNOOOOOxOUUUUYIsaaaaaaeceeeeiiiidnooooo-0uuuuyty"
define void @latin1_to_ascii(i8* %0, i32 %1) {
%3 = icmp sgt i32 %1, 0
br i1 %3, label %4, label %24
4: ; preds = %2
%5 = zext i32 %1 to i64
br label %6
6: ; preds = %4, %21
%7 = phi i64 [ 0, %4 ], [ %22, %21 ]
%8 = getelementptr inbounds i8, i8* %0, i64 %7
%9 = load i8, i8* %8
%10 = add i8 %9, -32
%11 = icmp ult i8 %10, 95
br i1 %11, label %21, label %12
12: ; preds = %6
%13 = icmp slt i8 %9, 0
br i1 %13, label %14, label %19
14: ; preds = %12
%15 = xor i8 %9, -128
%16 = sext i8 %15 to i64
%17 = getelementptr inbounds [128 x i8], [128 x i8]* @switch.table.latin1_to_ascii, i64 0, i64 %16
%18 = load i8, i8* %17
br label %19
19: ; preds = %12, %14
%20 = phi i8 [ %18, %14 ], [ 32, %12 ]
store i8 %20, i8* %8
br label %21
21: ; preds = %19, %6
%22 = add nuw nsw i64 %7, 1
%23 = icmp eq i64 %22, %5
br i1 %23, label %24, label %6
24: ; preds = %21, %2
ret void
}