#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int strlen(char *);
char *trim(char *cmd) {
  int len = strlen(cmd);
  int i = 0, j = len - 1, k, p = 0, q, r;
  while (cmd[i] != 'a' && cmd[i] != 'b' && cmd[i] != 'c' && cmd[i] != 'd' &&
         cmd[i] != 'e' && cmd[i] != 'f' && cmd[i] != 'g' && cmd[i] != 'h' &&
         cmd[i] != 'i' && cmd[i] != 'j' && cmd[i] != 'k' && cmd[i] != 'l' &&
         cmd[i] != 'm' && cmd[i] != 'n' && cmd[i] != 'o' && cmd[i] != 'p' &&
         cmd[i] != 'q' && cmd[i] != 'r' && cmd[i] != 's' && cmd[i] != 't' &&
         cmd[i] != 'u' && cmd[i] != 'v' && cmd[i] != 'w' && cmd[i] != 'x' &&
         cmd[i] != 'y' && cmd[i] != 'z' && cmd[i] != 'A' && cmd[i] != 'B' &&
         cmd[i] != 'C' && cmd[i] != 'D' && cmd[i] != 'E' && cmd[i] != 'F' &&
         cmd[i] != 'O' && cmd[i] != 'N' && cmd[i] != 'M' && cmd[i] != 'L' &&
         cmd[i] != 'K' && cmd[i] != 'J' && cmd[i] != 'I' && cmd[i] != 'H' &&
         cmd[i] != 'G' && cmd[i] != 'Q' && cmd[i] != 'P' && cmd[i] != 'R' &&
         cmd[i] != 'S' && cmd[i] != 'T' && cmd[i] != 'U' && cmd[i] != 'V' &&
         cmd[i] != 'W' && cmd[i] != 'X' && cmd[i] != 'Y' && cmd[i] != 'Z' &&
         cmd[i] != '0' && cmd[i] != '1' && cmd[i] != '2' && cmd[i] != '3' &&
         cmd[i] != '4' && cmd[i] != '5' && cmd[i] != '6' && cmd[i] != '7' &&
         cmd[i] != '8' && cmd[i] != '9') {
    if ((cmd[i] == ' ') || (cmd[i] == '\n')) {
      while (p < len) {
        cmd[p] = cmd[p + 1];
        p++;
      }
      len--;
      cmd[len] == '\0';
      p = 0;
    }
  }
  i = strlen(cmd) - 1;
  while ((cmd[i] == ' ') || (cmd[i] == '\n')) {
    cmd[i] = '\0';
    i--;
  }
  return cmd;
}


x86 assembly (clang, -O0):
<trim>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x14(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x61,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x62,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x63,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x64,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x65,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x66,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x67,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x68,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x69,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x6a,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x6b,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x6c,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x6d,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x6e,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x6f,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x70,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x71,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x72,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x73,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x74,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x75,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x76,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x77,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x78,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x79,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x7a,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x41,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x42,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x43,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x44,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x45,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x4f,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x4e,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x4d,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x4c,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x4b,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x4a,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x49,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x48,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x47,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x51,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x50,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x52,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x53,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x54,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x55,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x56,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x57,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x58,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x59,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x5a,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x31,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x32,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x33,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x34,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x35,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x36,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x37,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x38,%ecx
mov    %al,-0x25(%rbp)
je     1786 <trim+0x676>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
setne  %al
mov    %al,-0x25(%rbp)
mov    -0x25(%rbp),%al
test   $0x1,%al
jne    1796 <trim+0x686>
jmp    180f <trim+0x6ff>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     17c0 <trim+0x6b0>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
jne    180a <trim+0x6fa>
jmp    17c5 <trim+0x6b5>
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    17fa <trim+0x6ea>
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    17c5 <trim+0x6b5>
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
movl   $0x0,-0x1c(%rbp)
jmp    113f <trim+0x2f>
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
sub    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x26(%rbp)
je     184d <trim+0x73d>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
sete   %al
mov    %al,-0x26(%rbp)
mov    -0x26(%rbp),%al
test   $0x1,%al
jne    185d <trim+0x74d>
jmp    1877 <trim+0x767>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    181e <trim+0x70e>
mov    -0x8(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<trim>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %rdi,%rbx
call   1030 <strlen@plt>
mov    %eax,%r12d
lea    0x1(%rbx),%r14
lea    0xec2(%rip),%r15
movabs $0x3ffffff00017fff,%rbp
ff ff 03
mov    (%rbx),%al
lea    -0x41(%rax),%ecx
cmp    $0x39,%cl
ja     115b <trim+0x3b>
movzbl %cl,%ecx
bt     %rcx,%rbp
jb     1188 <trim+0x68>
lea    -0xa(%rax),%ecx
cmp    $0x50,%cl
ja     114a <trim+0x2a>
movzbl %cl,%ecx
movslq (%r15,%rcx,4),%rcx
add    %r15,%rcx
jmp    *%rcx
test   %r12d,%r12d
jle    1182 <trim+0x62>
mov    %r12d,%edx
mov    %rbx,%rdi
mov    %r14,%rsi
call   1040 <memmove@plt>
add    $0xffffffff,%r12d
jmp    1148 <trim+0x28>
mov    %rbx,%rdi
call   1030 <strlen@plt>
cltq
add    %rbx,%rax
add    $0xffffffffffffffff,%rax
jmp    11a7 <trim+0x87>
nopl   0x0(%rax,%rax,1)
movb   $0x0,(%rax)
add    $0xffffffffffffffff,%rax
movzbl (%rax),%ecx
cmp    $0x20,%cl
je     11a0 <trim+0x80>
cmp    $0xa,%cl
je     11a0 <trim+0x80>
mov    %rbx,%rax
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i8* @trim(i8* returned %0) {
%2 = tail call i32 @strlen(i8* %0)
%3 = getelementptr i8, i8* %0, i64 1
br label %4
4: ; preds = %13, %1
%5 = phi i32 [ %14, %13 ], [ %2, %1 ]
%6 = load i8, i8* %0
br label %7
7: ; preds = %4, %8
switch i8 %6, label %8 [
i8 97, label %15
i8 98, label %15
i8 99, label %15
i8 100, label %15
i8 101, label %15
i8 102, label %15
i8 103, label %15
i8 104, label %15
i8 105, label %15
i8 106, label %15
i8 107, label %15
i8 108, label %15
i8 109, label %15
i8 110, label %15
i8 111, label %15
i8 112, label %15
i8 113, label %15
i8 114, label %15
i8 115, label %15
i8 116, label %15
i8 117, label %15
i8 118, label %15
i8 119, label %15
i8 120, label %15
i8 121, label %15
i8 122, label %15
i8 65, label %15
i8 66, label %15
i8 67, label %15
i8 68, label %15
i8 69, label %15
i8 70, label %15
i8 79, label %15
i8 78, label %15
i8 77, label %15
i8 76, label %15
i8 75, label %15
i8 74, label %15
i8 73, label %15
i8 72, label %15
i8 71, label %15
i8 81, label %15
]
8: ; preds = %7
switch i8 %6, label %7 [
i8 80, label %15
i8 82, label %15
i8 83, label %15
i8 84, label %15
i8 85, label %15
i8 86, label %15
i8 87, label %15
i8 88, label %15
i8 89, label %15
i8 90, label %15
i8 48, label %15
i8 49, label %15
i8 50, label %15
i8 51, label %15
i8 52, label %15
i8 53, label %15
i8 54, label %15
i8 55, label %15
i8 56, label %15
i8 57, label %15
i8 32, label %9
i8 10, label %9
]
9: ; preds = %8, %8
%10 = icmp sgt i32 %5, 0
br i1 %10, label %11, label %13
11: ; preds = %9
%12 = zext i32 %5 to i64
br label %13
13: ; preds = %11, %9
%14 = add nsw i32 %5, -1
br label %4
15: ; preds = %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %8, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7, %7
%16 = tail call i32 @strlen(i8* %0)
%17 = sext i32 %16 to i64
br label %18
18: ; preds = %23, %15
%19 = phi i64 [ %20, %23 ], [ %17, %15 ]
%20 = add i64 %19, -1
%21 = getelementptr inbounds i8, i8* %0, i64 %20
%22 = load i8, i8* %21
switch i8 %22, label %24 [
i8 32, label %23
i8 10, label %23
]
23: ; preds = %18, %18
store i8 0, i8* %21
br label %18
24: ; preds = %18
ret i8* %0
}