#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 SARMenuMessageBoxTotalLines(const char *buf_ptr, int visible_columns) {
  char c;
  int line_count = 0, characters_drawn;
  const char *s, *buf_stop;
  if ((buf_ptr == NULL) || (visible_columns < 1))
    return (line_count);
  while ((buf_ptr != NULL) ? (*buf_ptr != '\0') : 0) {
    s = buf_ptr;
    if ((((*s) == '\n') || ((*s) == '\r'))) {
      buf_ptr = s + 1;
      line_count++;
      continue;
    }
    while ((((*s) == ' ') || ((*s) == '\t')))
      s++;
    buf_stop = NULL;
    for (characters_drawn = 0; characters_drawn < visible_columns;) {
      c = *s;
      if (c == '\0') {
        buf_stop = s;
        break;
      } else if ((((c) == ' ') || ((c) == '\t'))) {
        buf_stop = s;
        characters_drawn++;
        while ((((*s) == ' ') || ((*s) == '\t')))
          s++;
      } else if ((((c) == '\n') || ((c) == '\r'))) {
        buf_stop = s;
        break;
      } else if (((c) == '<')) {
        s++;
        while ((*s != '\0') && !((*s) == '>'))
          s++;
        if (*s != '\0')
          s++;
      } else {
        characters_drawn++;
        s++;
      }
    }
    if (buf_stop == NULL)
      buf_stop = s;
    line_count++;
    buf_ptr = buf_stop;
  }
  return (line_count);
}


x86 assembly (clang, -O0):
<SARMenuMessageBoxTotalLines>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     1127 <SARMenuMessageBoxTotalLines+0x27>
cmpl   $0x1,-0x14(%rbp)
jge    1132 <SARMenuMessageBoxTotalLines+0x32>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    13b4 <SARMenuMessageBoxTotalLines+0x2b4>
jmp    1137 <SARMenuMessageBoxTotalLines+0x37>
cmpq   $0x0,-0x10(%rbp)
je     115c <SARMenuMessageBoxTotalLines+0x5c>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
jmp    1166 <SARMenuMessageBoxTotalLines+0x66>
xor    %eax,%eax
mov    %eax,-0x34(%rbp)
jmp    1166 <SARMenuMessageBoxTotalLines+0x66>
mov    -0x34(%rbp),%eax
cmp    $0x0,%eax
je     13ae <SARMenuMessageBoxTotalLines+0x2ae>
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     119a <SARMenuMessageBoxTotalLines+0x9a>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
jne    11b4 <SARMenuMessageBoxTotalLines+0xb4>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1137 <SARMenuMessageBoxTotalLines+0x37>
jmp    11b9 <SARMenuMessageBoxTotalLines+0xb9>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x35(%rbp)
je     11de <SARMenuMessageBoxTotalLines+0xde>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x35(%rbp)
mov    -0x35(%rbp),%al
test   $0x1,%al
jne    11ee <SARMenuMessageBoxTotalLines+0xee>
jmp    11ff <SARMenuMessageBoxTotalLines+0xff>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    11b9 <SARMenuMessageBoxTotalLines+0xb9>
movq   $0x0,-0x30(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1385 <SARMenuMessageBoxTotalLines+0x285>
mov    -0x28(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x15(%rbp)
movsbl -0x15(%rbp),%eax
cmp    $0x0,%eax
jne    123d <SARMenuMessageBoxTotalLines+0x13d>
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
jmp    1385 <SARMenuMessageBoxTotalLines+0x285>
movsbl -0x15(%rbp),%eax
cmp    $0x20,%eax
je     1257 <SARMenuMessageBoxTotalLines+0x157>
movsbl -0x15(%rbp),%eax
cmp    $0x9,%eax
jne    12b3 <SARMenuMessageBoxTotalLines+0x1b3>
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x36(%rbp)
je     128d <SARMenuMessageBoxTotalLines+0x18d>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x36(%rbp)
mov    -0x36(%rbp),%al
test   $0x1,%al
jne    129d <SARMenuMessageBoxTotalLines+0x19d>
jmp    12ae <SARMenuMessageBoxTotalLines+0x1ae>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1268 <SARMenuMessageBoxTotalLines+0x168>
jmp    137b <SARMenuMessageBoxTotalLines+0x27b>
movsbl -0x15(%rbp),%eax
cmp    $0xa,%eax
je     12cd <SARMenuMessageBoxTotalLines+0x1cd>
movsbl -0x15(%rbp),%eax
cmp    $0xd,%eax
jne    12da <SARMenuMessageBoxTotalLines+0x1da>
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
jmp    1385 <SARMenuMessageBoxTotalLines+0x285>
movsbl -0x15(%rbp),%eax
cmp    $0x3c,%eax
jne    135c <SARMenuMessageBoxTotalLines+0x25c>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x37(%rbp)
je     131a <SARMenuMessageBoxTotalLines+0x21a>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
sete   %al
xor    $0xff,%al
mov    %al,-0x37(%rbp)
mov    -0x37(%rbp),%al
test   $0x1,%al
jne    132a <SARMenuMessageBoxTotalLines+0x22a>
jmp    133b <SARMenuMessageBoxTotalLines+0x23b>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    12f3 <SARMenuMessageBoxTotalLines+0x1f3>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1357 <SARMenuMessageBoxTotalLines+0x257>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1371 <SARMenuMessageBoxTotalLines+0x271>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1376 <SARMenuMessageBoxTotalLines+0x276>
jmp    137b <SARMenuMessageBoxTotalLines+0x27b>
jmp    1380 <SARMenuMessageBoxTotalLines+0x280>
jmp    120e <SARMenuMessageBoxTotalLines+0x10e>
cmpq   $0x0,-0x30(%rbp)
jne    1398 <SARMenuMessageBoxTotalLines+0x298>
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1137 <SARMenuMessageBoxTotalLines+0x37>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<SARMenuMessageBoxTotalLines>:
xor    %eax,%eax
test   %rdi,%rdi
je     121b <SARMenuMessageBoxTotalLines+0x11b>
test   %esi,%esi
jle    121b <SARMenuMessageBoxTotalLines+0x11b>
mov    (%rdi),%cl
test   %cl,%cl
je     121b <SARMenuMessageBoxTotalLines+0x11b>
xor    %eax,%eax
movabs $0x100000200,%r9
mov    $0x2401,%r8d
jmp    1151 <SARMenuMessageBoxTotalLines+0x51>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rdi
add    $0x1,%eax
mov    (%rdi),%cl
test   %cl,%cl
je     121b <SARMenuMessageBoxTotalLines+0x11b>
cmp    $0xa,%cl
je     1140 <SARMenuMessageBoxTotalLines+0x40>
cmp    $0xd,%cl
je     1140 <SARMenuMessageBoxTotalLines+0x40>
jmp    1168 <SARMenuMessageBoxTotalLines+0x68>
nopl   (%rax)
movzbl 0x1(%rdi),%ecx
add    $0x1,%rdi
cmp    $0x9,%cl
je     1160 <SARMenuMessageBoxTotalLines+0x60>
cmp    $0x20,%cl
je     1160 <SARMenuMessageBoxTotalLines+0x60>
xor    %r10d,%r10d
xor    %r11d,%r11d
cmp    $0x3c,%cl
ja     11e7 <SARMenuMessageBoxTotalLines+0xe7>
nopl   (%rax)
movzbl %cl,%edx
bt     %rdx,%r9
jae    11b0 <SARMenuMessageBoxTotalLines+0xb0>
mov    %rdi,%rdx
jmp    1198 <SARMenuMessageBoxTotalLines+0x98>
xchg   %ax,%ax
movzbl 0x1(%rdx),%ecx
add    $0x1,%rdx
cmp    $0x20,%cl
je     1190 <SARMenuMessageBoxTotalLines+0x90>
cmp    $0x9,%cl
je     1190 <SARMenuMessageBoxTotalLines+0x90>
add    $0x1,%r11d
mov    %rdi,%r10
cmp    %esi,%r11d
jl     11f7 <SARMenuMessageBoxTotalLines+0xf7>
jmp    1207 <SARMenuMessageBoxTotalLines+0x107>
cmp    $0x3c,%rdx
jne    11e1 <SARMenuMessageBoxTotalLines+0xe1>
add    $0x1,%rdi
nopw   0x0(%rax,%rax,1)
movzbl (%rdi),%ecx
add    $0x1,%rdi
cmp    $0x3e,%cl
je     11d0 <SARMenuMessageBoxTotalLines+0xd0>
test   %cl,%cl
jne    11c0 <SARMenuMessageBoxTotalLines+0xc0>
lea    -0x1(%rdi),%rdx
test   %cl,%cl
cmovne %rdi,%rdx
cmp    %esi,%r11d
jl     11f7 <SARMenuMessageBoxTotalLines+0xf7>
jmp    1207 <SARMenuMessageBoxTotalLines+0x107>
bt     %rdx,%r8
jb     120c <SARMenuMessageBoxTotalLines+0x10c>
add    $0x1,%r11d
add    $0x1,%rdi
mov    %rdi,%rdx
cmp    %esi,%r11d
jge    1207 <SARMenuMessageBoxTotalLines+0x107>
mov    (%rdx),%cl
mov    %rdx,%rdi
cmp    $0x3c,%cl
jbe    1180 <SARMenuMessageBoxTotalLines+0x80>
jmp    11e7 <SARMenuMessageBoxTotalLines+0xe7>
mov    %rdx,%rdi
jmp    120f <SARMenuMessageBoxTotalLines+0x10f>
mov    %rdi,%r10
test   %r10,%r10
cmovne %r10,%rdi
jmp    1144 <SARMenuMessageBoxTotalLines+0x44>
ret

LLVM IR (-O0):
define i32 @SARMenuMessageBoxTotalLines(i8* %0, i32 %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i8
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i8*
store i8* %0, i8** %4
store i32 %1, i32* %5
store i32 0, i32* %7
%11 = load i8*, i8** %4
%12 = icmp eq i8* %11, null
br i1 %12, label %16, label %13
13: ; preds = %2
%14 = load i32, i32* %5
%15 = icmp slt i32 %14, 1
br i1 %15, label %16, label %18
16: ; preds = %13, %2
%17 = load i32, i32* %7
store i32 %17, i32* %3
br label %167
18: ; preds = %13
br label %19
19: ; preds = %161, %43, %18
%20 = load i8*, i8** %4
%21 = icmp ne i8* %20, null
br i1 %21, label %22, label %28
22: ; preds = %19
%23 = load i8*, i8** %4
%24 = load i8, i8* %23
%25 = sext i8 %24 to i32
%26 = icmp ne i32 %25, 0
%27 = zext i1 %26 to i32
br label %29
28: ; preds = %19
br label %29
29: ; preds = %28, %22
%30 = phi i32 [ %27, %22 ], [ 0, %28 ]
%31 = icmp ne i32 %30, 0
br i1 %31, label %32, label %165
32: ; preds = %29
%33 = load i8*, i8** %4
store i8* %33, i8** %9
%34 = load i8*, i8** %9
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = icmp eq i32 %36, 10
br i1 %37, label %43, label %38
38: ; preds = %32
%39 = load i8*, i8** %9
%40 = load i8, i8* %39
%41 = sext i8 %40 to i32
%42 = icmp eq i32 %41, 13
br i1 %42, label %43, label %48
43: ; preds = %38, %32
%44 = load i8*, i8** %9
%45 = getelementptr inbounds i8, i8* %44, i64 1
store i8* %45, i8** %4
%46 = load i32, i32* %7
%47 = add nsw i32 %46, 1
store i32 %47, i32* %7
br label %19
48: ; preds = %38
br label %49
49: ; preds = %61, %48
%50 = load i8*, i8** %9
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = icmp eq i32 %52, 32
br i1 %53, label %59, label %54
54: ; preds = %49
%55 = load i8*, i8** %9
%56 = load i8, i8* %55
%57 = sext i8 %56 to i32
%58 = icmp eq i32 %57, 9
br label %59
59: ; preds = %54, %49
%60 = phi i1 [ true, %49 ], [ %58, %54 ]
br i1 %60, label %61, label %64
61: ; preds = %59
%62 = load i8*, i8** %9
%63 = getelementptr inbounds i8, i8* %62, i32 1
store i8* %63, i8** %9
br label %49
64: ; preds = %59
store i8* null, i8** %10
store i32 0, i32* %8
br label %65
65: ; preds = %155, %64
%66 = load i32, i32* %8
%67 = load i32, i32* %5
%68 = icmp slt i32 %66, %67
br i1 %68, label %69, label %156
69: ; preds = %65
%70 = load i8*, i8** %9
%71 = load i8, i8* %70
store i8 %71, i8* %6
%72 = load i8, i8* %6
%73 = sext i8 %72 to i32
%74 = icmp eq i32 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %69
%76 = load i8*, i8** %9
store i8* %76, i8** %10
br label %156
77: ; preds = %69
%78 = load i8, i8* %6
%79 = sext i8 %78 to i32
%80 = icmp eq i32 %79, 32
br i1 %80, label %85, label %81
81: ; preds = %77
%82 = load i8, i8* %6
%83 = sext i8 %82 to i32
%84 = icmp eq i32 %83, 9
br i1 %84, label %85, label %105
85: ; preds = %81, %77
%86 = load i8*, i8** %9
store i8* %86, i8** %10
%87 = load i32, i32* %8
%88 = add nsw i32 %87, 1
store i32 %88, i32* %8
br label %89
89: ; preds = %101, %85
%90 = load i8*, i8** %9
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = icmp eq i32 %92, 32
br i1 %93, label %99, label %94
94: ; preds = %89
%95 = load i8*, i8** %9
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = icmp eq i32 %97, 9
br label %99
99: ; preds = %94, %89
%100 = phi i1 [ true, %89 ], [ %98, %94 ]
br i1 %100, label %101, label %104
101: ; preds = %99
%102 = load i8*, i8** %9
%103 = getelementptr inbounds i8, i8* %102, i32 1
store i8* %103, i8** %9
br label %89
104: ; preds = %99
br label %154
105: ; preds = %81
%106 = load i8, i8* %6
%107 = sext i8 %106 to i32
%108 = icmp eq i32 %107, 10
br i1 %108, label %113, label %109
109: ; preds = %105
%110 = load i8, i8* %6
%111 = sext i8 %110 to i32
%112 = icmp eq i32 %111, 13
br i1 %112, label %113, label %115
113: ; preds = %109, %105
%114 = load i8*, i8** %9
store i8* %114, i8** %10
br label %156
115: ; preds = %109
%116 = load i8, i8* %6
%117 = sext i8 %116 to i32
%118 = icmp eq i32 %117, 60
br i1 %118, label %119, label %147
119: ; preds = %115
%120 = load i8*, i8** %9
%121 = getelementptr inbounds i8, i8* %120, i32 1
store i8* %121, i8** %9
br label %122
122: ; preds = %135, %119
%123 = load i8*, i8** %9
%124 = load i8, i8* %123
%125 = sext i8 %124 to i32
%126 = icmp ne i32 %125, 0
br i1 %126, label %127, label %133
127: ; preds = %122
%128 = load i8*, i8** %9
%129 = load i8, i8* %128
%130 = sext i8 %129 to i32
%131 = icmp eq i32 %130, 62
%132 = xor i1 %131, true
br label %133
133: ; preds = %127, %122
%134 = phi i1 [ false, %122 ], [ %132, %127 ]
br i1 %134, label %135, label %138
135: ; preds = %133
%136 = load i8*, i8** %9
%137 = getelementptr inbounds i8, i8* %136, i32 1
store i8* %137, i8** %9
br label %122
138: ; preds = %133
%139 = load i8*, i8** %9
%140 = load i8, i8* %139
%141 = sext i8 %140 to i32
%142 = icmp ne i32 %141, 0
br i1 %142, label %143, label %146
143: ; preds = %138
%144 = load i8*, i8** %9
%145 = getelementptr inbounds i8, i8* %144, i32 1
store i8* %145, i8** %9
br label %146
146: ; preds = %143, %138
br label %152
147: ; preds = %115
%148 = load i32, i32* %8
%149 = add nsw i32 %148, 1
store i32 %149, i32* %8
%150 = load i8*, i8** %9
%151 = getelementptr inbounds i8, i8* %150, i32 1
store i8* %151, i8** %9
br label %152
152: ; preds = %147, %146
br label %153
153: ; preds = %152
br label %154
154: ; preds = %153, %104
br label %155
155: ; preds = %154
br label %65
156: ; preds = %113, %75, %65
%157 = load i8*, i8** %10
%158 = icmp eq i8* %157, null
br i1 %158, label %159, label %161
159: ; preds = %156
%160 = load i8*, i8** %9
store i8* %160, i8** %10
br label %161
161: ; preds = %159, %156
%162 = load i32, i32* %7
%163 = add nsw i32 %162, 1
store i32 %163, i32* %7
%164 = load i8*, i8** %10
store i8* %164, i8** %4
br label %19
165: ; preds = %29
%166 = load i32, i32* %7
store i32 %166, i32* %3
br label %167
167: ; preds = %165, %16
%168 = load i32, i32* %3
ret i32 %168
}

LLVM IR (-O2):
define i32 @SARMenuMessageBoxTotalLines(i8* %0, i32 %1) {
%3 = icmp eq i8* %0, null
%4 = icmp slt i32 %1, 1
%5 = or i1 %3, %4
br i1 %5, label %63, label %6
6: ; preds = %2
%7 = load i8, i8* %0
%8 = icmp eq i8 %7, 0
br i1 %8, label %63, label %9
9: ; preds = %6, %15
%10 = phi i8 [ %18, %15 ], [ %7, %6 ]
%11 = phi i32 [ %17, %15 ], [ 0, %6 ]
%12 = phi i8* [ %16, %15 ], [ %0, %6 ]
switch i8 %10, label %20 [
i8 10, label %13
i8 13, label %13
]
13: ; preds = %9, %9
%14 = getelementptr inbounds i8, i8* %12, i64 1
br label %15
15: ; preds = %13, %58
%16 = phi i8* [ %14, %13 ], [ %62, %58 ]
%17 = add nuw nsw i32 %11, 1
%18 = load i8, i8* %16
%19 = icmp eq i8 %18, 0
br i1 %19, label %63, label %9
20: ; preds = %9, %23
%21 = phi i8 [ %25, %23 ], [ %10, %9 ]
%22 = phi i8* [ %24, %23 ], [ %12, %9 ]
switch i8 %21, label %26 [
i8 32, label %23
i8 9, label %23
]
23: ; preds = %20, %20
%24 = getelementptr inbounds i8, i8* %22, i64 1
%25 = load i8, i8* %24
br label %20
26: ; preds = %20, %56
%27 = phi i8 [ %57, %56 ], [ %21, %20 ]
%28 = phi i8* [ %54, %56 ], [ null, %20 ]
%29 = phi i8* [ %53, %56 ], [ %22, %20 ]
%30 = phi i32 [ %52, %56 ], [ 0, %20 ]
switch i8 %27, label %46 [
i8 0, label %58
i8 32, label %31
i8 9, label %31
i8 13, label %58
i8 10, label %58
i8 60, label %38
]
31: ; preds = %26, %26
br label %32
32: ; preds = %31, %35
%33 = phi i8 [ %37, %35 ], [ %27, %31 ]
%34 = phi i8* [ %36, %35 ], [ %29, %31 ]
switch i8 %33, label %49 [
i8 32, label %35
i8 9, label %35
]
35: ; preds = %32, %32
%36 = getelementptr inbounds i8, i8* %34, i64 1
%37 = load i8, i8* %36
br label %32
38: ; preds = %26, %38
%39 = phi i8* [ %40, %38 ], [ %29, %26 ]
%40 = getelementptr inbounds i8, i8* %39, i64 1
%41 = load i8, i8* %40
switch i8 %41, label %38 [
i8 0, label %42
i8 62, label %42
]
42: ; preds = %38, %38
%43 = icmp eq i8 %41, 0
%44 = getelementptr inbounds i8, i8* %39, i64 2
%45 = select i1 %43, i8* %40, i8* %44
br label %51
46: ; preds = %26
%47 = add nsw i32 %30, 1
%48 = getelementptr inbounds i8, i8* %29, i64 1
br label %51
49: ; preds = %32
%50 = add nsw i32 %30, 1
br label %51
51: ; preds = %49, %42, %46
%52 = phi i32 [ %47, %46 ], [ %30, %42 ], [ %50, %49 ]
%53 = phi i8* [ %48, %46 ], [ %45, %42 ], [ %34, %49 ]
%54 = phi i8* [ %28, %46 ], [ %28, %42 ], [ %29, %49 ]
%55 = icmp slt i32 %52, %1
br i1 %55, label %56, label %58
56: ; preds = %51
%57 = load i8, i8* %53
br label %26
58: ; preds = %51, %26, %26, %26
%59 = phi i8* [ %29, %26 ], [ %29, %26 ], [ %29, %26 ], [ %53, %51 ]
%60 = phi i8* [ %29, %26 ], [ %29, %26 ], [ %29, %26 ], [ %54, %51 ]
%61 = icmp eq i8* %60, null
%62 = select i1 %61, i8* %59, i8* %60
br label %15
63: ; preds = %15, %6, %2
%64 = phi i32 [ 0, %2 ], [ 0, %6 ], [ %17, %15 ]
ret i32 %64
}