#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *);
int /*<<< orphan*/ strncpy(char *, char *, int);
void OptionPrintInfo(FILE *fp, char *str[]) {
  int i, j, k, l, m, n;
  int maxtab = 0;
  char buffer[4096];
  for (i = 0; str[i] != NULL; i++) {
    for (j = 0; str[i][j] != 0; j++)
      if (str[i][j] == '\t')
        break;
    if ((str[i][j] != 0) && (j > maxtab))
      maxtab = j;
  }
  maxtab++;
  for (i = 0; str[i] != NULL; i++) {
    for (j = 0; str[i][j] != 0; j++)
      if (str[i][j] == '\t')
        break;
    if (str[i][j] == 0) {
      fprintf(fp, str[i]);
      continue;
    }
    strncpy(buffer, str[i], 4095);
    buffer[j] = 0;
    fprintf(fp, buffer);
    for (k = 0; k < (maxtab - j); k++)
      buffer[k] = ' ';
    buffer[k] = 0;
    fprintf(fp, buffer);
    j++;
    m = 0;
    l = maxtab;
    for (k = j; str[i][k] != 0; k++) {
      buffer[m] = str[i][k];
      m++;
      if (buffer[m - 1] == ' ') {
        if ((l + m - 1) > 80) {
          fprintf(fp, "\n");
          for (n = 0; n < maxtab; n++)
            buffer[m + n] = ' ';
          buffer[m + n] = 0;
          fprintf(fp, buffer + m);
          l = maxtab;
        }
        buffer[m] = 0;
        fprintf(fp, buffer);
        l += m - 1;
        m = 0;
      }
    }
    if ((l + m - 1) > 80) {
      fprintf(fp, "\n");
      l = maxtab;
    }
    buffer[m] = 0;
    fprintf(fp, buffer);
  }
}


x86 assembly (clang, -O0):
<OptionPrintInfo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1030,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
cmpq   $0x0,(%rax,%rcx,8)
je     11ef <OptionPrintInfo+0xcf>
movl   $0x0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     11ad <OptionPrintInfo+0x8d>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
jne    119a <OptionPrintInfo+0x7a>
jmp    11ad <OptionPrintInfo+0x8d>
jmp    119f <OptionPrintInfo+0x7f>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    115b <OptionPrintInfo+0x3b>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     11dc <OptionPrintInfo+0xbc>
mov    -0x18(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jle    11dc <OptionPrintInfo+0xbc>
mov    -0x18(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    11e1 <OptionPrintInfo+0xc1>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1141 <OptionPrintInfo+0x21>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
cmpq   $0x0,(%rax,%rcx,8)
je     14b6 <OptionPrintInfo+0x396>
movl   $0x0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     126b <OptionPrintInfo+0x14b>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
jne    1258 <OptionPrintInfo+0x138>
jmp    126b <OptionPrintInfo+0x14b>
jmp    125d <OptionPrintInfo+0x13d>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1219 <OptionPrintInfo+0xf9>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    12a2 <OptionPrintInfo+0x182>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rsi
call   1040 <fprintf@plt>
jmp    14a8 <OptionPrintInfo+0x388>
lea    -0x1030(%rbp),%rdi
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rsi
mov    $0xfff,%edx
call   1030 <strncpy@plt>
movslq -0x18(%rbp),%rax
movb   $0x0,-0x1030(%rbp,%rax,1)
mov    -0x8(%rbp),%rdi
lea    -0x1030(%rbp),%rsi
call   1040 <fprintf@plt>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x2c(%rbp),%ecx
sub    -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    130d <OptionPrintInfo+0x1ed>
movslq -0x1c(%rbp),%rax
movb   $0x20,-0x1030(%rbp,%rax,1)
20
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12e2 <OptionPrintInfo+0x1c2>
movslq -0x1c(%rbp),%rax
movb   $0x0,-0x1030(%rbp,%rax,1)
mov    -0x8(%rbp),%rdi
lea    -0x1030(%rbp),%rsi
call   1040 <fprintf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1464 <OptionPrintInfo+0x344>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%cl
movslq -0x24(%rbp),%rax
mov    %cl,-0x1030(%rbp,%rax,1)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0x1030(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jne    1451 <OptionPrintInfo+0x331>
mov    -0x20(%rbp),%eax
add    -0x24(%rbp),%eax
sub    $0x1,%eax
cmp    $0x50,%eax
jle    1422 <OptionPrintInfo+0x302>
mov    -0x8(%rbp),%rdi
lea    0xc41(%rip),%rsi
call   1040 <fprintf@plt>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    13f5 <OptionPrintInfo+0x2d5>
mov    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
cltq
movb   $0x20,-0x1030(%rbp,%rax,1)
20
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    13cb <OptionPrintInfo+0x2ab>
mov    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
cltq
movb   $0x0,-0x1030(%rbp,%rax,1)
mov    -0x8(%rbp),%rdi
lea    -0x1030(%rbp),%rsi
movslq -0x24(%rbp),%rax
add    %rax,%rsi
call   1040 <fprintf@plt>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x20(%rbp)
movslq -0x24(%rbp),%rax
movb   $0x0,-0x1030(%rbp,%rax,1)
mov    -0x8(%rbp),%rdi
lea    -0x1030(%rbp),%rsi
call   1040 <fprintf@plt>
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
jmp    1456 <OptionPrintInfo+0x336>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1345 <OptionPrintInfo+0x225>
mov    -0x20(%rbp),%eax
add    -0x24(%rbp),%eax
sub    $0x1,%eax
cmp    $0x50,%eax
jle    148c <OptionPrintInfo+0x36c>
mov    -0x8(%rbp),%rdi
lea    0xb7f(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x20(%rbp)
movslq -0x24(%rbp),%rax
movb   $0x0,-0x1030(%rbp,%rax,1)
mov    -0x8(%rbp),%rdi
lea    -0x1030(%rbp),%rsi
call   1040 <fprintf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11ff <OptionPrintInfo+0xdf>
add    $0x1030,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<OptionPrintInfo>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1068,%rsp
mov    %rsi,%r15
mov    %rdi,0x8(%rsp)
mov    (%rsi),%rsi
test   %rsi,%rsi
je     1523 <OptionPrintInfo+0x3e3>
xor    %eax,%eax
mov    %rsi,%rcx
xor    %r12d,%r12d
jmp    118b <OptionPrintInfo+0x4b>
nop
cmp    %r12d,%edx
cmovge %edx,%r12d
test   %bl,%bl
cmove  %edx,%r12d
mov    0x8(%r15,%rax,8),%rcx
add    $0x1,%rax
test   %rcx,%rcx
je     11b4 <OptionPrintInfo+0x74>
mov    %r12d,%edx
xor    %r12d,%r12d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl (%rcx,%r12,1),%ebx
test   %bl,%bl
je     1170 <OptionPrintInfo+0x30>
cmp    $0x9,%bl
je     1170 <OptionPrintInfo+0x30>
add    $0x1,%r12
jmp    11a0 <OptionPrintInfo+0x60>
test   %rsi,%rsi
je     1523 <OptionPrintInfo+0x3e3>
lea    0x1(%r12),%eax
mov    %eax,0x4(%rsp)
mov    %eax,%r14d
mov    %r14d,%eax
and    $0xffffffe0,%eax
mov    %rax,0x18(%rsp)
add    $0xffffffffffffffe0,%rax
mov    %rax,0x30(%rsp)
shr    $0x5,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
and    $0xfffffffffffffffc,%rax
mov    %rax,0x20(%rsp)
mov    %r14d,%eax
and    $0xfffffff8,%eax
mov    %rax,0x58(%rsp)
mov    %r12d,%r13d
mov    %rcx,0x28(%rsp)
shl    $0x5,%rcx
mov    %rcx,0x50(%rsp)
xor    %ebx,%ebx
mov    %r15,0x10(%rsp)
mov    %r13,0x38(%rsp)
mov    %r15,0x40(%rsp)
jmp    1275 <OptionPrintInfo+0x135>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movslq %ebx,%rax
movb   $0x0,0x60(%rsp,%rax,1)
lea    0x60(%rsp),%rsi
mov    0x40(%rsp),%r15
mov    0x38(%rsp),%r13
mov    0x48(%rsp),%rbx
mov    0x8(%rsp),%rdi
call   1060 <fprintf@plt>
lea    (%r15,%rbx,8),%rax
add    $0x8,%rax
mov    %rax,0x10(%rsp)
mov    0x8(%r15,%rbx,8),%rsi
add    $0x1,%rbx
test   %rsi,%rsi
je     1523 <OptionPrintInfo+0x3e3>
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movzbl (%rsi,%rbp,1),%eax
test   %al,%al
je     124c <OptionPrintInfo+0x10c>
cmp    $0x9,%al
je     12a0 <OptionPrintInfo+0x160>
add    $0x1,%rbp
jmp    1280 <OptionPrintInfo+0x140>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %rbx,0x48(%rsp)
mov    %ebp,%ebx
mov    %r13,%r15
lea    0x60(%rsp),%r13
mov    %r13,%rdi
mov    $0xfff,%edx
call   1030 <strncpy@plt>
movb   $0x0,0x60(%rsp,%rbx,1)
mov    %r13,%rbx
mov    0x8(%rsp),%rdi
mov    %r13,%rsi
call   1060 <fprintf@plt>
mov    %r15d,%eax
sub    %ebp,%eax
add    $0x1,%eax
test   %eax,%eax
jle    12f9 <OptionPrintInfo+0x1b9>
mov    %r15d,%r13d
sub    %ebp,%r13d
add    $0x1,%r13
mov    %rbx,%rdi
mov    $0x20,%esi
mov    %r13,%rdx
call   1040 <memset@plt>
jmp    12fc <OptionPrintInfo+0x1bc>
xor    %r13d,%r13d
mov    %r13d,%eax
movb   $0x0,0x60(%rsp,%rax,1)
mov    0x8(%rsp),%rdi
mov    %rbx,%rsi
call   1060 <fprintf@plt>
add    $0x1,%ebp
mov    0x10(%rsp),%rax
mov    (%rax),%rax
mov    (%rax,%rbp,1),%cl
test   %cl,%cl
je     14fb <OptionPrintInfo+0x3bb>
xor    %r13d,%r13d
mov    0x4(%rsp),%r15d
jmp    1374 <OptionPrintInfo+0x234>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movslq %ebx,%rbx
mov    0x8(%rsp),%rdi
movb   $0x0,0x60(%rsp,%rbx,1)
lea    0x60(%rsp),%rsi
call   1060 <fprintf@plt>
mov    0x10(%rsp),%rax
mov    (%rax),%rax
xor    %ebx,%ebx
mov    0x1(%rax,%rbp,1),%cl
add    $0x1,%rbp
mov    %ebx,%r13d
test   %cl,%cl
je     1502 <OptionPrintInfo+0x3c2>
movslq %r13d,%rbx
mov    %cl,0x60(%rsp,%rbx,1)
add    $0x1,%rbx
cmp    $0x20,%cl
jne    1361 <OptionPrintInfo+0x221>
add    %r13d,%r15d
cmp    $0x50,%r15d
jle    1340 <OptionPrintInfo+0x200>
mov    $0xa,%edi
mov    0x8(%rsp),%r15
mov    %r15,%rsi
call   1050 <fputc@plt>
test   %r12d,%r12d
js     13c5 <OptionPrintInfo+0x285>
mov    0x4(%rsp),%eax
cmp    $0x8,%eax
mov    0x58(%rsp),%rsi
mov    0x50(%rsp),%rdi
movaps 0xc44(%rip),%xmm0
jae    13cc <OptionPrintInfo+0x28c>
xor    %eax,%eax
jmp    14a9 <OptionPrintInfo+0x369>
xor    %ecx,%ecx
jmp    14d1 <OptionPrintInfo+0x391>
cmp    $0x20,%eax
jae    13d8 <OptionPrintInfo+0x298>
xor    %ecx,%ecx
jmp    147b <OptionPrintInfo+0x33b>
cmpq   $0x60,0x30(%rsp)
jae    13e4 <OptionPrintInfo+0x2a4>
xor    %eax,%eax
jmp    1431 <OptionPrintInfo+0x2f1>
lea    0xd0(%rsp),%rax
lea    (%rax,%rbx,1),%rcx
mov    0x20(%rsp),%rdx
xor    %eax,%eax
nopw   0x0(%rax,%rax,1)
movups %xmm0,-0x70(%rcx,%rax,1)
movups %xmm0,-0x60(%rcx,%rax,1)
movups %xmm0,-0x50(%rcx,%rax,1)
movups %xmm0,-0x40(%rcx,%rax,1)
movups %xmm0,-0x30(%rcx,%rax,1)
movups %xmm0,-0x20(%rcx,%rax,1)
movups %xmm0,-0x10(%rcx,%rax,1)
movups %xmm0,(%rcx,%rax,1)
sub    $0xffffffffffffff80,%rax
add    $0xfffffffffffffffc,%rdx
jne    1400 <OptionPrintInfo+0x2c0>
cmpq   $0x0,0x28(%rsp)
je     1462 <OptionPrintInfo+0x322>
add    %rbx,%rax
lea    0x70(%rsp),%rcx
add    %rcx,%rax
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
movups %xmm0,-0x10(%rax,%rcx,1)
movups %xmm0,(%rax,%rcx,1)
add    $0x20,%rcx
cmp    %rcx,%rdi
jne    1450 <OptionPrintInfo+0x310>
mov    0x4(%rsp),%ecx
cmp    %r14,0x18(%rsp)
je     14d1 <OptionPrintInfo+0x391>
mov    0x18(%rsp),%rax
mov    %rax,%rcx
test   $0x18,%r14b
je     14a9 <OptionPrintInfo+0x369>
lea    (%rsp,%rbx,1),%rax
add    $0x60,%rax
movabs $0x2020202020202020,%rdx
20 20 20
nopl   (%rax)
mov    %rdx,(%rax,%rcx,1)
add    $0x8,%rcx
cmp    %rcx,%rsi
jne    1490 <OptionPrintInfo+0x350>
mov    %rsi,%rax
mov    0x4(%rsp),%ecx
cmp    %r14,%rsi
je     14d1 <OptionPrintInfo+0x391>
lea    (%rsp,%rbx,1),%rcx
add    $0x60,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movb   $0x20,(%rcx,%rax,1)
add    $0x1,%rax
cmp    %rax,%r14
jne    14c0 <OptionPrintInfo+0x380>
mov    0x4(%rsp),%ecx
add    %ebx,%ecx
movslq %ecx,%rax
movb   $0x0,0x60(%rsp,%rax,1)
lea    (%rsp,%rbx,1),%rsi
add    $0x60,%rsi
mov    %r15,%rdi
call   1060 <fprintf@plt>
add    0x4(%rsp),%r13d
mov    %r15,%rdi
mov    %r13d,%r15d
jmp    1348 <OptionPrintInfo+0x208>
xor    %ebx,%ebx
mov    0x4(%rsp),%r15d
add    %ebx,%r15d
cmp    $0x52,%r15d
jl     1230 <OptionPrintInfo+0xf0>
mov    $0xa,%edi
mov    0x8(%rsp),%rsi
call   1050 <fputc@plt>
jmp    1230 <OptionPrintInfo+0xf0>
add    $0x1068,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [2 x i8] c"\0A\00"
define void @OptionPrintInfo(i32* %0, i8** %1) {
%3 = alloca i32*
%4 = alloca i8**
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca [4096 x i8]
store i32* %0, i32** %3
store i8** %1, i8*** %4
store i32 0, i32* %11
store i32 0, i32* %5
br label %13
13: ; preds = %69, %2
%14 = load i8**, i8*** %4
%15 = load i32, i32* %5
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds i8*, i8** %14, i64 %16
%18 = load i8*, i8** %17
%19 = icmp ne i8* %18, null
br i1 %19, label %20, label %72
20: ; preds = %13
store i32 0, i32* %6
br label %21
21: ; preds = %47, %20
%22 = load i8**, i8*** %4
%23 = load i32, i32* %5
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds i8*, i8** %22, i64 %24
%26 = load i8*, i8** %25
%27 = load i32, i32* %6
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds i8, i8* %26, i64 %28
%30 = load i8, i8* %29
%31 = sext i8 %30 to i32
%32 = icmp ne i32 %31, 0
br i1 %32, label %33, label %50
33: ; preds = %21
%34 = load i8**, i8*** %4
%35 = load i32, i32* %5
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i8*, i8** %34, i64 %36
%38 = load i8*, i8** %37
%39 = load i32, i32* %6
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds i8, i8* %38, i64 %40
%42 = load i8, i8* %41
%43 = sext i8 %42 to i32
%44 = icmp eq i32 %43, 9
br i1 %44, label %45, label %46
45: ; preds = %33
br label %50
46: ; preds = %33
br label %47
47: ; preds = %46
%48 = load i32, i32* %6
%49 = add nsw i32 %48, 1
store i32 %49, i32* %6
br label %21
50: ; preds = %45, %21
%51 = load i8**, i8*** %4
%52 = load i32, i32* %5
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i8*, i8** %51, i64 %53
%55 = load i8*, i8** %54
%56 = load i32, i32* %6
%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, 0
br i1 %61, label %62, label %68
62: ; preds = %50
%63 = load i32, i32* %6
%64 = load i32, i32* %11
%65 = icmp sgt i32 %63, %64
br i1 %65, label %66, label %68
66: ; preds = %62
%67 = load i32, i32* %6
store i32 %67, i32* %11
br label %68
68: ; preds = %66, %62, %50
br label %69
69: ; preds = %68
%70 = load i32, i32* %5
%71 = add nsw i32 %70, 1
store i32 %71, i32* %5
br label %13
72: ; preds = %13
%73 = load i32, i32* %11
%74 = add nsw i32 %73, 1
store i32 %74, i32* %11
store i32 0, i32* %5
br label %75
75: ; preds = %271, %72
%76 = load i8**, i8*** %4
%77 = load i32, i32* %5
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds i8*, i8** %76, i64 %78
%80 = load i8*, i8** %79
%81 = icmp ne i8* %80, null
br i1 %81, label %82, label %274
82: ; preds = %75
store i32 0, i32* %6
br label %83
83: ; preds = %109, %82
%84 = load i8**, i8*** %4
%85 = load i32, i32* %5
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i8*, i8** %84, i64 %86
%88 = load i8*, i8** %87
%89 = load i32, i32* %6
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds i8, i8* %88, i64 %90
%92 = load i8, i8* %91
%93 = sext i8 %92 to i32
%94 = icmp ne i32 %93, 0
br i1 %94, label %95, label %112
95: ; preds = %83
%96 = load i8**, i8*** %4
%97 = load i32, i32* %5
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds i8*, i8** %96, i64 %98
%100 = load i8*, i8** %99
%101 = load i32, i32* %6
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i8, i8* %100, i64 %102
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = icmp eq i32 %105, 9
br i1 %106, label %107, label %108
107: ; preds = %95
br label %112
108: ; preds = %95
br label %109
109: ; preds = %108
%110 = load i32, i32* %6
%111 = add nsw i32 %110, 1
store i32 %111, i32* %6
br label %83
112: ; preds = %107, %83
%113 = load i8**, i8*** %4
%114 = load i32, i32* %5
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds i8*, i8** %113, i64 %115
%117 = load i8*, i8** %116
%118 = load i32, i32* %6
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i8, i8* %117, i64 %119
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = icmp eq i32 %122, 0
br i1 %123, label %124, label %132
124: ; preds = %112
%125 = load i32*, i32** %3
%126 = load i8**, i8*** %4
%127 = load i32, i32* %5
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds i8*, i8** %126, i64 %128
%130 = load i8*, i8** %129
%131 = call i32 @fprintf(i32* %125, i8* %130)
br label %271
132: ; preds = %112
%133 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 0
%134 = load i8**, i8*** %4
%135 = load i32, i32* %5
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds i8*, i8** %134, i64 %136
%138 = load i8*, i8** %137
%139 = call i32 @strncpy(i8* %133, i8* %138, i32 4095)
%140 = load i32, i32* %6
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %141
store i8 0, i8* %142
%143 = load i32*, i32** %3
%144 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 0
%145 = call i32 @fprintf(i32* %143, i8* %144)
store i32 0, i32* %7
br label %146
146: ; preds = %156, %132
%147 = load i32, i32* %7
%148 = load i32, i32* %11
%149 = load i32, i32* %6
%150 = sub nsw i32 %148, %149
%151 = icmp slt i32 %147, %150
br i1 %151, label %152, label %159
152: ; preds = %146
%153 = load i32, i32* %7
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %154
store i8 32, i8* %155
br label %156
156: ; preds = %152
%157 = load i32, i32* %7
%158 = add nsw i32 %157, 1
store i32 %158, i32* %7
br label %146
159: ; preds = %146
%160 = load i32, i32* %7
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %161
store i8 0, i8* %162
%163 = load i32*, i32** %3
%164 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 0
%165 = call i32 @fprintf(i32* %163, i8* %164)
%166 = load i32, i32* %6
%167 = add nsw i32 %166, 1
store i32 %167, i32* %6
store i32 0, i32* %9
%168 = load i32, i32* %11
store i32 %168, i32* %8
%169 = load i32, i32* %6
store i32 %169, i32* %7
br label %170
170: ; preds = %251, %159
%171 = load i8**, i8*** %4
%172 = load i32, i32* %5
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds i8*, i8** %171, i64 %173
%175 = load i8*, i8** %174
%176 = load i32, i32* %7
%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, 0
br i1 %181, label %182, label %254
182: ; preds = %170
%183 = load i8**, i8*** %4
%184 = load i32, i32* %5
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds i8*, i8** %183, i64 %185
%187 = load i8*, i8** %186
%188 = load i32, i32* %7
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i8, i8* %187, i64 %189
%191 = load i8, i8* %190
%192 = load i32, i32* %9
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %193
store i8 %191, i8* %194
%195 = load i32, i32* %9
%196 = add nsw i32 %195, 1
store i32 %196, i32* %9
%197 = load i32, i32* %9
%198 = sub nsw i32 %197, 1
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %199
%201 = load i8, i8* %200
%202 = sext i8 %201 to i32
%203 = icmp eq i32 %202, 32
br i1 %203, label %204, label %250
204: ; preds = %182
%205 = load i32, i32* %8
%206 = load i32, i32* %9
%207 = add nsw i32 %205, %206
%208 = sub nsw i32 %207, 1
%209 = icmp sgt i32 %208, 80
br i1 %209, label %210, label %239
210: ; preds = %204
%211 = load i32*, i32** %3
%212 = call i32 @fprintf(i32* %211, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %10
br label %213
213: ; preds = %223, %210
%214 = load i32, i32* %10
%215 = load i32, i32* %11
%216 = icmp slt i32 %214, %215
br i1 %216, label %217, label %226
217: ; preds = %213
%218 = load i32, i32* %9
%219 = load i32, i32* %10
%220 = add nsw i32 %218, %219
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %221
store i8 32, i8* %222
br label %223
223: ; preds = %217
%224 = load i32, i32* %10
%225 = add nsw i32 %224, 1
store i32 %225, i32* %10
br label %213
226: ; preds = %213
%227 = load i32, i32* %9
%228 = load i32, i32* %10
%229 = add nsw i32 %227, %228
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %230
store i8 0, i8* %231
%232 = load i32*, i32** %3
%233 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 0
%234 = load i32, i32* %9
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds i8, i8* %233, i64 %235
%237 = call i32 @fprintf(i32* %232, i8* %236)
%238 = load i32, i32* %11
store i32 %238, i32* %8
br label %239
239: ; preds = %226, %204
%240 = load i32, i32* %9
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %241
store i8 0, i8* %242
%243 = load i32*, i32** %3
%244 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 0
%245 = call i32 @fprintf(i32* %243, i8* %244)
%246 = load i32, i32* %9
%247 = sub nsw i32 %246, 1
%248 = load i32, i32* %8
%249 = add nsw i32 %248, %247
store i32 %249, i32* %8
store i32 0, i32* %9
br label %250
250: ; preds = %239, %182
br label %251
251: ; preds = %250
%252 = load i32, i32* %7
%253 = add nsw i32 %252, 1
store i32 %253, i32* %7
br label %170
254: ; preds = %170
%255 = load i32, i32* %8
%256 = load i32, i32* %9
%257 = add nsw i32 %255, %256
%258 = sub nsw i32 %257, 1
%259 = icmp sgt i32 %258, 80
br i1 %259, label %260, label %264
260: ; preds = %254
%261 = load i32*, i32** %3
%262 = call i32 @fprintf(i32* %261, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%263 = load i32, i32* %11
store i32 %263, i32* %8
br label %264
264: ; preds = %260, %254
%265 = load i32, i32* %9
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 %266
store i8 0, i8* %267
%268 = load i32*, i32** %3
%269 = getelementptr inbounds [4096 x i8], [4096 x i8]* %12, i64 0, i64 0
%270 = call i32 @fprintf(i32* %268, i8* %269)
br label %271
271: ; preds = %264, %124
%272 = load i32, i32* %5
%273 = add nsw i32 %272, 1
store i32 %273, i32* %5
br label %75
274: ; preds = %75
ret void
}

LLVM IR (-O2):
define void @OptionPrintInfo(i32* nocapture %0, i8** nocapture %1) {
%3 = alloca [4096 x i8]
%4 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 0
%5 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 0
%6 = load i8*, i8** %1
%7 = icmp eq i8* %6, null
br i1 %7, label %204, label %8
8: ; preds = %2, %18
%9 = phi i64 [ %24, %18 ], [ 0, %2 ]
%10 = phi i8* [ %26, %18 ], [ %6, %2 ]
%11 = phi i32 [ %23, %18 ], [ 0, %2 ]
br label %12
12: ; preds = %8, %16
%13 = phi i64 [ 0, %8 ], [ %17, %16 ]
%14 = getelementptr inbounds i8, i8* %10, i64 %13
%15 = load i8, i8* %14
switch i8 %15, label %16 [
i8 0, label %18
i8 9, label %18
]
16: ; preds = %12
%17 = add nuw i64 %13, 1
br label %12
18: ; preds = %12, %12
%19 = trunc i64 %13 to i32
%20 = icmp ne i8 %15, 0
%21 = icmp slt i32 %11, %19
%22 = select i1 %20, i1 %21, i1 false
%23 = select i1 %22, i32 %19, i32 %11
%24 = add nuw i64 %9, 1
%25 = getelementptr inbounds i8*, i8** %1, i64 %24
%26 = load i8*, i8** %25
%27 = icmp eq i8* %26, null
br i1 %27, label %28, label %8
28: ; preds = %18
%29 = add i32 %23, 1
br i1 %7, label %204, label %30
30: ; preds = %28
%31 = icmp slt i32 %23, 0
%32 = zext i32 %29 to i64
%33 = and i64 %32, 4294967264
%34 = add nsw i64 %33, -32
%35 = lshr exact i64 %34, 5
%36 = add nuw nsw i64 %35, 1
%37 = icmp ult i32 %29, 8
%38 = icmp ult i32 %29, 32
%39 = and i64 %32, 4294967264
%40 = and i64 %36, 3
%41 = icmp ult i64 %34, 96
%42 = and i64 %36, 1152921504606846972
%43 = icmp eq i64 %40, 0
%44 = icmp eq i64 %39, %32
%45 = and i64 %32, 24
%46 = icmp eq i64 %45, 0
%47 = and i64 %32, 4294967288
%48 = icmp eq i64 %47, %32
br label %49
49: ; preds = %30, %197
%50 = phi i64 [ 0, %30 ], [ %200, %197 ]
%51 = phi i8* [ %6, %30 ], [ %202, %197 ]
%52 = phi i8** [ %1, %30 ], [ %201, %197 ]
br label %53
53: ; preds = %49, %57
%54 = phi i64 [ 0, %49 ], [ %58, %57 ]
%55 = getelementptr inbounds i8, i8* %51, i64 %54
%56 = load i8, i8* %55
switch i8 %56, label %57 [
i8 0, label %197
i8 9, label %59
]
57: ; preds = %53
%58 = add nuw i64 %54, 1
br label %53
59: ; preds = %53
%60 = trunc i64 %54 to i32
%61 = and i64 %54, 4294967295
%62 = call i32 @strncpy(i8* %5, i8* %51, i32 4095)
%63 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %61
store i8 0, i8* %63
%64 = call i32 @fprintf(i32* %0, i8* %5)
%65 = sub i32 %29, %60
%66 = icmp sgt i32 %65, 0
br i1 %66, label %67, label %71
67: ; preds = %59
%68 = sub i32 %23, %60
%69 = zext i32 %68 to i64
%70 = add nuw nsw i64 %69, 1
br label %71
71: ; preds = %67, %59
%72 = phi i64 [ 0, %59 ], [ %70, %67 ]
%73 = and i64 %72, 4294967295
%74 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %73
store i8 0, i8* %74
%75 = call i32 @fprintf(i32* %0, i8* %5)
%76 = add i64 %54, 1
%77 = load i8*, i8** %52
%78 = and i64 %76, 4294967295
%79 = getelementptr inbounds i8, i8* %77, i64 %78
%80 = load i8, i8* %79
%81 = icmp eq i8 %80, 0
br i1 %81, label %187, label %82
82: ; preds = %71, %179
%83 = phi i8* [ %180, %179 ], [ %77, %71 ]
%84 = phi i64 [ %183, %179 ], [ %78, %71 ]
%85 = phi i8 [ %185, %179 ], [ %80, %71 ]
%86 = phi i32 [ %182, %179 ], [ 0, %71 ]
%87 = phi i32 [ %181, %179 ], [ %29, %71 ]
%88 = sext i32 %86 to i64
%89 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %88
store i8 %85, i8* %89
%90 = add nsw i32 %86, 1
%91 = icmp eq i8 %85, 32
br i1 %91, label %92, label %179
92: ; preds = %82
%93 = add i32 %86, %87
%94 = icmp sgt i32 %93, 80
br i1 %94, label %97, label %95
95: ; preds = %92
%96 = sext i32 %90 to i64
br label %173
97: ; preds = %92
%98 = call i32 @fputc(i32 10, i32* %0)
%99 = sext i32 %90 to i64
br i1 %31, label %165, label %100
100: ; preds = %97
br i1 %37, label %157, label %101
101: ; preds = %100
br i1 %38, label %147, label %102
102: ; preds = %101
br i1 %41, label %132, label %103
103: ; preds = %102, %103
%104 = phi i64 [ %129, %103 ], [ 0, %102 ]
%105 = phi i64 [ %130, %103 ], [ 0, %102 ]
%106 = add nsw i64 %104, %99
%107 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %106
%108 = bitcast i8* %107 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %108
%109 = getelementptr inbounds i8, i8* %107, i64 16
%110 = bitcast i8* %109 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %110
%111 = or i64 %104, 32
%112 = add nsw i64 %111, %99
%113 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %112
%114 = bitcast i8* %113 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %114
%115 = getelementptr inbounds i8, i8* %113, i64 16
%116 = bitcast i8* %115 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %116
%117 = or i64 %104, 64
%118 = add nsw i64 %117, %99
%119 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %118
%120 = bitcast i8* %119 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %120
%121 = getelementptr inbounds i8, i8* %119, i64 16
%122 = bitcast i8* %121 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %122
%123 = or i64 %104, 96
%124 = add nsw i64 %123, %99
%125 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %124
%126 = bitcast i8* %125 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %126
%127 = getelementptr inbounds i8, i8* %125, i64 16
%128 = bitcast i8* %127 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %128
%129 = add nuw i64 %104, 128
%130 = add i64 %105, 4
%131 = icmp eq i64 %130, %42
br i1 %131, label %132, label %103
132: ; preds = %103, %102
%133 = phi i64 [ 0, %102 ], [ %129, %103 ]
br i1 %43, label %145, label %134
134: ; preds = %132, %134
%135 = phi i64 [ %142, %134 ], [ %133, %132 ]
%136 = phi i64 [ %143, %134 ], [ 0, %132 ]
%137 = add nsw i64 %135, %99
%138 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %137
%139 = bitcast i8* %138 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %139
%140 = getelementptr inbounds i8, i8* %138, i64 16
%141 = bitcast i8* %140 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %141
%142 = add nuw i64 %135, 32
%143 = add i64 %136, 1
%144 = icmp eq i64 %143, %40
br i1 %144, label %145, label %134
145: ; preds = %134, %132
br i1 %44, label %165, label %146
146: ; preds = %145
br i1 %46, label %157, label %147
147: ; preds = %101, %146
%148 = phi i64 [ %39, %146 ], [ 0, %101 ]
br label %149
149: ; preds = %149, %147
%150 = phi i64 [ %148, %147 ], [ %154, %149 ]
%151 = add nsw i64 %150, %99
%152 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %151
%153 = bitcast i8* %152 to <8 x i8>*
store <8 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <8 x i8>* %153
%154 = add nuw i64 %150, 8
%155 = icmp eq i64 %154, %47
br i1 %155, label %156, label %149
156: ; preds = %149
br i1 %48, label %165, label %157
157: ; preds = %100, %146, %156
%158 = phi i64 [ 0, %100 ], [ %39, %146 ], [ %47, %156 ]
br label %159
159: ; preds = %157, %159
%160 = phi i64 [ %163, %159 ], [ %158, %157 ]
%161 = add nsw i64 %160, %99
%162 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %161
store i8 32, i8* %162
%163 = add nuw nsw i64 %160, 1
%164 = icmp eq i64 %163, %32
br i1 %164, label %165, label %159
165: ; preds = %159, %145, %156, %97
%166 = phi i32 [ 0, %97 ], [ %29, %156 ], [ %29, %145 ], [ %29, %159 ]
%167 = add nsw i32 %166, %90
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %168
store i8 0, i8* %169
%170 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %99
%171 = call i32 @fprintf(i32* %0, i8* %170)
%172 = add nsw i32 %29, %86
br label %173
173: ; preds = %95, %165
%174 = phi i64 [ %96, %95 ], [ %99, %165 ]
%175 = phi i32 [ %93, %95 ], [ %172, %165 ]
%176 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %174
store i8 0, i8* %176
%177 = call i32 @fprintf(i32* %0, i8* %5)
%178 = load i8*, i8** %52
br label %179
179: ; preds = %82, %173
%180 = phi i8* [ %178, %173 ], [ %83, %82 ]
%181 = phi i32 [ %175, %173 ], [ %87, %82 ]
%182 = phi i32 [ 0, %173 ], [ %90, %82 ]
%183 = add nuw i64 %84, 1
%184 = getelementptr inbounds i8, i8* %180, i64 %183
%185 = load i8, i8* %184
%186 = icmp eq i8 %185, 0
br i1 %186, label %187, label %82
187: ; preds = %179, %71
%188 = phi i32 [ %29, %71 ], [ %181, %179 ]
%189 = phi i32 [ 0, %71 ], [ %182, %179 ]
%190 = add nsw i32 %189, %188
%191 = icmp sgt i32 %190, 81
br i1 %191, label %192, label %194
192: ; preds = %187
%193 = call i32 @fputc(i32 10, i32* %0)
br label %194
194: ; preds = %192, %187
%195 = sext i32 %189 to i64
%196 = getelementptr inbounds [4096 x i8], [4096 x i8]* %3, i64 0, i64 %195
store i8 0, i8* %196
br label %197
197: ; preds = %53, %194
%198 = phi i8* [ %5, %194 ], [ %51, %53 ]
%199 = call i32 @fprintf(i32* %0, i8* %198)
%200 = add nuw i64 %50, 1
%201 = getelementptr inbounds i8*, i8** %1, i64 %200
%202 = load i8*, i8** %201
%203 = icmp eq i8* %202, null
br i1 %203, label %204, label %49
204: ; preds = %197, %2, %28
ret void
}