int main(void) {
  struct {
    unsigned ub : 3;
    unsigned u : 32;
    unsigned long long ullb : 35;
    unsigned long long ull : 64;
    unsigned char c;
  } s = {1, 1, 1};
  printf(" %ssigned : %s\n", (s.ub) - 100 < 0 ? "  " : "un", "s.ub");
  ;
  printf(" %ssigned : %s\n", (s.u) - 100 < 0 ? "  " : "un", "s.u");
  ;
  printf(" %ssigned : %s\n", (s.ullb) - 100 < 0 ? "  " : "un", "s.ullb");
  ;
  printf(" %ssigned : %s\n", (s.ull) - 100 < 0 ? "  " : "un", "s.ull");
  ;
  printf(" %ssigned : %s\n", (s.c) - 100 < 0 ? "  " : "un", "s.c");
  ;
  printf("\n");
  printf(" %ssigned : %s\n", ((1 ? s.ub : 1)) - 100 < 0 ? "  " : "un",
         "(1 ? s.ub : 1)");
  ;
  printf(" %ssigned : %s\n", ((1 ? s.u : 1)) - 100 < 0 ? "  " : "un",
         "(1 ? s.u : 1)");
  ;
  printf(" %ssigned : %s\n", ((1 ? s.ullb : 1)) - 100 < 0 ? "  " : "un",
         "(1 ? s.ullb : 1)");
  ;
  printf(" %ssigned : %s\n", ((1 ? s.ull : 1)) - 100 < 0 ? "  " : "un",
         "(1 ? s.ull : 1)");
  ;
  printf(" %ssigned : %s\n", ((1 ? s.c : 1)) - 100 < 0 ? "  " : "un",
         "(1 ? s.c : 1)");
  ;
  printf("\n");
  printf(" %ssigned : %s\n", (s.ub << 1) - 100 < 0 ? "  " : "un", "s.ub << 1");
  ;
  printf(" %ssigned : %s\n", (s.u << 1) - 100 < 0 ? "  " : "un", "s.u << 1");
  ;
  printf(" %ssigned : %s\n", (s.ullb << 1) - 100 < 0 ? "  " : "un",
         "s.ullb << 1");
  ;
  printf(" %ssigned : %s\n", (s.ull << 1) - 100 < 0 ? "  " : "un",
         "s.ull << 1");
  ;
  printf(" %ssigned : %s\n", (s.c << 1) - 100 < 0 ? "  " : "un", "s.c << 1");
  ;
  printf("\n");
  printf(" %ssigned : %s\n", (+s.ub) - 100 < 0 ? "  " : "un", "+s.ub");
  ;
  printf(" %ssigned : %s\n", (+s.u) - 100 < 0 ? "  " : "un", "+s.u");
  ;
  printf(" %ssigned : %s\n", (+s.ullb) - 100 < 0 ? "  " : "un", "+s.ullb");
  ;
  printf(" %ssigned : %s\n", (+s.ull) - 100 < 0 ? "  " : "un", "+s.ull");
  ;
  printf(" %ssigned : %s\n", (+s.c) - 100 < 0 ? "  " : "un", "+s.c");
  ;
  printf("\n");
  printf(" %ssigned : %s\n", (-s.ub) - 100 < 0 ? "  " : "un", "-s.ub");
  ;
  printf(" %ssigned : %s\n", (-s.u) - 100 < 0 ? "  " : "un", "-s.u");
  ;
  printf(" %ssigned : %s\n", (-s.ullb) - 100 < 0 ? "  " : "un", "-s.ullb");
  ;
  printf(" %ssigned : %s\n", (-s.ull) - 100 < 0 ? "  " : "un", "-s.ull");
  ;
  printf(" %ssigned : %s\n", (-s.c) - 100 < 0 ? "  " : "un", "-s.c");
  ;
  printf("\n");
  printf(" %ssigned : %s\n", (~s.ub) - 100 < 0 ? "  " : "un", "~s.ub");
  ;
  printf(" %ssigned : %s\n", (~s.u) - 100 < 0 ? "  " : "un", "~s.u");
  ;
  printf(" %ssigned : %s\n", (~s.ullb) - 100 < 0 ? "  " : "un", "~s.ullb");
  ;
  printf(" %ssigned : %s\n", (~s.ull) - 100 < 0 ? "  " : "un", "~s.ull");
  ;
  printf(" %ssigned : %s\n", (~s.c) - 100 < 0 ? "  " : "un", "~s.c");
  ;
  printf("\n");
  printf(" %ssigned : %s\n", (!s.ub) - 100 < 0 ? "  " : "un", "!s.ub");
  ;
  printf(" %ssigned : %s\n", (!s.u) - 100 < 0 ? "  " : "un", "!s.u");
  ;
  printf(" %ssigned : %s\n", (!s.ullb) - 100 < 0 ? "  " : "un", "!s.ullb");
  ;
  printf(" %ssigned : %s\n", (!s.ull) - 100 < 0 ? "  " : "un", "!s.ull");
  ;
  printf(" %ssigned : %s\n", (!s.c) - 100 < 0 ? "  " : "un", "!s.c");
  ;
  printf("\n");
  printf(" %ssigned : %s\n", (+(unsigned)s.ub) - 100 < 0 ? "  " : "un",
         "+(unsigned)s.ub");
  ;
  printf(" %ssigned : %s\n", (-(unsigned)s.ub) - 100 < 0 ? "  " : "un",
         "-(unsigned)s.ub");
  ;
  printf(" %ssigned : %s\n", (~(unsigned)s.ub) - 100 < 0 ? "  " : "un",
         "~(unsigned)s.ub");
  ;
  printf(" %ssigned : %s\n", (!(unsigned)s.ub) - 100 < 0 ? "  " : "un",
         "!(unsigned)s.ub");
  ;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movl   $0x0,-0x4(%rbp)
movups 0xeea(%rip),%xmm0
movaps %xmm0,-0x20(%rbp)
movups 0xecf(%rip),%xmm0
movaps %xmm0,-0x30(%rbp)
movzbl -0x30(%rbp),%eax
and    $0x7,%eax
add    $0xffffff9c,%eax
lea    0xeea(%rip),%rax
mov    %rax,-0x48(%rbp)
lea    0xee2(%rip),%rsi
mov    %rsi,-0x50(%rbp)
cmovs  %rax,%rsi
lea    0xec0(%rip),%rdi
mov    %rdi,-0x40(%rbp)
lea    0xfa8(%rip),%rdx
xor    %eax,%eax
mov    %al,-0x31(%rbp)
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xf92(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xf80(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xf71(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x18(%rbp),%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xf52(%rip),%rdx
call   1030 <printf@plt>
mov    -0x31(%rbp),%al
lea    0xe44(%rip),%rdi
mov    %rdi,-0x58(%rbp)
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x30(%rbp),%edx
and    $0x7,%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xe1f(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xe17(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xe0e(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xe08(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x18(%rbp),%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xdf2(%rip),%rdx
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x31(%rbp),%al
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x30(%rbp),%edx
and    $0x7,%edx
add    %edx,%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xdc9(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xdbc(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xdae(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xda3(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x18(%rbp),%edx
add    %edx,%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xd86(%rip),%rdx
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x31(%rbp),%al
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x30(%rbp),%edx
and    $0x7,%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xd5a(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xd49(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xd37(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xd28(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x18(%rbp),%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xd09(%rip),%rdx
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x31(%rbp),%al
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x30(%rbp),%r8d
and    $0x7,%r8d
mov    $0xffffff9c,%edx
mov    %edx,-0x5c(%rbp)
sub    %r8d,%edx
cmovs  %rcx,%rsi
lea    0xccf(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xcbe(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xcac(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xc9d(%rip),%rdx
call   1030 <printf@plt>
mov    -0x5c(%rbp),%edx
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x18(%rbp),%r8d
sub    %r8d,%edx
cmovs  %rcx,%rsi
lea    0xc7a(%rip),%rdx
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x31(%rbp),%al
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x30(%rbp),%edx
not    %edx
or     $0xfffffff8,%edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xc48(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xc37(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xc25(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
lea    0xc16(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
movzbl -0x18(%rbp),%edx
not    %edx
add    $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xbf5(%rip),%rdx
call   1030 <printf@plt>
mov    -0x58(%rbp),%rdi
mov    -0x31(%rbp),%al
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
mov    -0x30(%rbp),%dl
test   $0x7,%dl
sete   %dl
movzbl %dl,%edx
or     $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xbc0(%rip),%rdx
call   1030 <printf@plt>
mov    -0x50(%rbp),%rsi
mov    -0x48(%rbp),%rcx
mov    -0x40(%rbp),%rdi
mov    -0x31(%rbp),%al
mov    -0x2c(%rbp),%edx
test   %edx,%edx
sete   %dl
movzbl %dl,%edx
or     $0xffffff9c,%edx
cmovs  %rcx,%rsi
lea    0xb99(%rip),%rdx
call   1030 <printf@plt>
movzbl -0x24(%rbp),%eax
mov    -0x2c(%rbp),%rcx
shld   $0x20,%rcx,%rax
movabs $0x7ffffffff,%rcx
and    %rcx,%rax
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%ecx
sub    $0x64,%ecx
lea    0xa7d(%rip),%rsi
lea    0xa73(%rip),%rax
cmp    $0x0,%ecx
cmovl  %rax,%rsi
lea    0xa55(%rip),%rdi
lea    0xb4b(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
cmpq   $0x0,-0x20(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%ecx
sub    $0x64,%ecx
lea    0xa41(%rip),%rsi
lea    0xa37(%rip),%rax
cmp    $0x0,%ecx
cmovl  %rax,%rsi
lea    0xa19(%rip),%rdi
lea    0xb17(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
cmpb   $0x0,-0x18(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%ecx
sub    $0x64,%ecx
lea    0xa06(%rip),%rsi
lea    0x9fc(%rip),%rax
cmp    $0x0,%ecx
cmovl  %rax,%rsi
lea    0x9de(%rip),%rdi
lea    0xae3(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x9d7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x30(%rbp),%al
and    $0x7,%al
movzbl %al,%ecx
sub    $0x64,%ecx
lea    0x9c3(%rip),%rsi
lea    0x9b9(%rip),%rax
cmp    $0x0,%ecx
cmovb  %rax,%rsi
lea    0x99b(%rip),%rdi
lea    0xaa5(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x30(%rbp),%al
and    $0x7,%al
movzbl %al,%eax
xor    %ecx,%ecx
sub    %eax,%ecx
sub    $0x64,%ecx
lea    0x98a(%rip),%rsi
lea    0x980(%rip),%rax
cmp    $0x0,%ecx
cmovb  %rax,%rsi
lea    0x962(%rip),%rdi
lea    0xa7c(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x30(%rbp),%al
and    $0x7,%al
movzbl %al,%ecx
xor    $0xffffffff,%ecx
sub    $0x64,%ecx
lea    0x952(%rip),%rsi
lea    0x948(%rip),%rax
cmp    $0x0,%ecx
cmovb  %rax,%rsi
lea    0x92a(%rip),%rdi
lea    0xa54(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x30(%rbp),%al
and    $0x7,%al
movzbl %al,%eax
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%ecx
sub    $0x64,%ecx
lea    0x910(%rip),%rsi
lea    0x906(%rip),%rax
cmp    $0x0,%ecx
cmovl  %rax,%rsi
lea    0x8e8(%rip),%rdi
lea    0xa22(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
lea    0xed4(%rip),%rbx
lea    0xedd(%rip),%r14
lea    0xfb9(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xec5(%rip),%r15
lea    0xfa4(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf95(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf89(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf7c(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe67(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe62(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe5c(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe59(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe55(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe45(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe3b(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe30(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe28(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe1f(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe0a(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xdfc(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xded(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xde1(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xdd4(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xdbb(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xdad(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd9e(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd92(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd85(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xd6c(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd5e(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd4f(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd43(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd36(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xd1d(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd0f(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd00(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xcf4(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xce7(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xcce(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xcca(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xcc6(%rip),%rdx
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xcc2(%rip),%rdx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
@.str = [16 x i8] c" %ssigned : %s\0A\00"
@.str.1 = [3 x i8] c" \00"
@.str.2 = [3 x i8] c"un\00"
@.str.3 = [5 x i8] c"s.ub\00"
@.str.4 = [4 x i8] c"s.u\00"
@.str.5 = [7 x i8] c"s.ullb\00"
@.str.6 = [6 x i8] c"s.ull\00"
@.str.7 = [4 x i8] c"s.c\00"
@.str.9 = [15 x i8] c"(1 ? s.ub : 1)\00"
@.str.10 = [14 x i8] c"(1 ? s.u : 1)\00"
@.str.11 = [17 x i8] c"(1 ? s.ullb : 1)\00"
@.str.12 = [16 x i8] c"(1 ? s.ull : 1)\00"
@.str.13 = [14 x i8] c"(1 ? s.c : 1)\00"
@.str.14 = [10 x i8] c"s.ub << 1\00"
@.str.15 = [9 x i8] c"s.u << 1\00"
@.str.16 = [12 x i8] c"s.ullb << 1\00"
@.str.17 = [11 x i8] c"s.ull << 1\00"
@.str.18 = [9 x i8] c"s.c << 1\00"
@.str.19 = [6 x i8] c"+s.ub\00"
@.str.20 = [5 x i8] c"+s.u\00"
@.str.21 = [8 x i8] c"+s.ullb\00"
@.str.22 = [7 x i8] c"+s.ull\00"
@.str.23 = [5 x i8] c"+s.c\00"
@.str.24 = [6 x i8] c"-s.ub\00"
@.str.25 = [5 x i8] c"-s.u\00"
@.str.26 = [8 x i8] c"-s.ullb\00"
@.str.27 = [7 x i8] c"-s.ull\00"
@.str.28 = [5 x i8] c"-s.c\00"
@.str.29 = [6 x i8] c"~s.ub\00"
@.str.30 = [5 x i8] c"~s.u\00"
@.str.31 = [8 x i8] c"~s.ullb\00"
@.str.32 = [7 x i8] c"~s.ull\00"
@.str.33 = [5 x i8] c"~s.c\00"
@.str.34 = [6 x i8] c"!s.ub\00"
@.str.35 = [5 x i8] c"!s.u\00"
@.str.36 = [8 x i8] c"!s.ullb\00"
@.str.37 = [7 x i8] c"!s.ull\00"
@.str.38 = [5 x i8] c"!s.c\00"
@.str.39 = [16 x i8] c"+(unsigned)s.ub\00"
@.str.40 = [16 x i8] c"-(unsigned)s.ub\00"
@.str.41 = [16 x i8] c"~(unsigned)s.ub\00"
@.str.42 = [16 x i8] c"!(unsigned)s.ub\00"
define i32 @main() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0))
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%6 = tail call i32 @putchar(i32 10)
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.9, i64 0, i64 0))
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0))
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.11, i64 0, i64 0))
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.12, i64 0, i64 0))
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0))
%12 = tail call i32 @putchar(i32 10)
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.14, i64 0, i64 0))
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0))
%15 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0))
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.17, i64 0, i64 0))
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
%18 = tail call i32 @putchar(i32 10)
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0))
%20 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0))
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.21, i64 0, i64 0))
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.22, i64 0, i64 0))
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0))
%24 = tail call i32 @putchar(i32 10)
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.24, i64 0, i64 0))
%26 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.26, i64 0, i64 0))
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i64 0, i64 0))
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0))
%30 = tail call i32 @putchar(i32 10)
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0))
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0))
%33 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.31, i64 0, i64 0))
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0))
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.33, i64 0, i64 0))
%36 = tail call i32 @putchar(i32 10)
%37 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0))
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.35, i64 0, i64 0))
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.36, i64 0, i64 0))
%40 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0))
%41 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.38, i64 0, i64 0))
%42 = tail call i32 @putchar(i32 10)
%43 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.39, i64 0, i64 0))
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.40, i64 0, i64 0))
%45 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.41, i64 0, i64 0))
%46 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.42, i64 0, i64 0))
ret i32 0
}