void str_case_blind_compare_sub_(char *test_name, int *len_test,
                                 char *model_name, int *len_model,
                                 int *result) {
  int i, ltest = *len_test, lmod = *len_model;
  char c1, c2;
  *result = 0;
  if (ltest < lmod) {
    for (i = 0; i < ltest; i++) {
      c1 = test_name[i];
      c2 = model_name[i];
      if (c1 != c2) {
        if (c1 >= 'a' && c1 <= 'z') {
          c1 &= 0xDF;
        }
        if (c2 >= 'a' && c2 <= 'z') {
          c2 &= 0xDF;
        }
        if (c1 < c2) {
          *result = -1;
          return;
        } else if (c1 > c2) {
          *result = 1;
          return;
        }
      }
    }
    for (i = ltest; i < lmod; i++) {
      if (model_name[i] != ' ') {
        *result = -1;
        return;
      }
    }
  } else {
    for (i = 0; i < lmod; i++) {
      c1 = test_name[i];
      c2 = model_name[i];
      if (c1 != c2) {
        if (c1 >= 'a' && c1 <= 'z') {
          c1 &= 0xDF;
        }
        if (c2 >= 'a' && c2 <= 'z') {
          c2 &= 0xDF;
        }
        if (c1 < c2) {
          *result = -1;
          return;
        } else if (c1 > c2) {
          *result = 1;
          return;
        }
      }
    }
    for (i = lmod; i < ltest; i++) {
      if (test_name[i] != ' ') {
        *result = 1;
        return;
      }
    }
  }
  return;
}


x86 assembly (clang, -O0):
<str_case_blind_compare_sub_>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x28(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    1274 <str_case_blind_compare_sub_+0x174>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    1226 <str_case_blind_compare_sub_+0x126>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x35(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x36(%rbp)
movsbl -0x35(%rbp),%eax
movsbl -0x36(%rbp),%ecx
cmp    %ecx,%eax
je     1213 <str_case_blind_compare_sub_+0x113>
movsbl -0x35(%rbp),%eax
cmp    $0x61,%eax
jl     11a5 <str_case_blind_compare_sub_+0xa5>
movsbl -0x35(%rbp),%eax
cmp    $0x7a,%eax
jg     11a5 <str_case_blind_compare_sub_+0xa5>
movsbl -0x35(%rbp),%eax
and    $0xdf,%eax
mov    %al,-0x35(%rbp)
movsbl -0x36(%rbp),%eax
cmp    $0x61,%eax
jl     11cb <str_case_blind_compare_sub_+0xcb>
movsbl -0x36(%rbp),%eax
cmp    $0x7a,%eax
jg     11cb <str_case_blind_compare_sub_+0xcb>
movsbl -0x36(%rbp),%eax
and    $0xdf,%eax
mov    %al,-0x36(%rbp)
movsbl -0x35(%rbp),%eax
movsbl -0x36(%rbp),%ecx
cmp    %ecx,%eax
jge    11ea <str_case_blind_compare_sub_+0xea>
mov    -0x28(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    13ad <str_case_blind_compare_sub_+0x2ad>
movsbl -0x35(%rbp),%eax
movsbl -0x36(%rbp),%ecx
cmp    %ecx,%eax
jle    1209 <str_case_blind_compare_sub_+0x109>
mov    -0x28(%rbp),%rax
movl   $0x1,(%rax)
jmp    13ad <str_case_blind_compare_sub_+0x2ad>
jmp    120e <str_case_blind_compare_sub_+0x10e>
jmp    1213 <str_case_blind_compare_sub_+0x113>
jmp    1218 <str_case_blind_compare_sub_+0x118>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1147 <str_case_blind_compare_sub_+0x47>
mov    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    126f <str_case_blind_compare_sub_+0x16f>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     125c <str_case_blind_compare_sub_+0x15c>
mov    -0x28(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    13ad <str_case_blind_compare_sub_+0x2ad>
jmp    1261 <str_case_blind_compare_sub_+0x161>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    122c <str_case_blind_compare_sub_+0x12c>
jmp    13a8 <str_case_blind_compare_sub_+0x2a8>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    135a <str_case_blind_compare_sub_+0x25a>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x35(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x36(%rbp)
movsbl -0x35(%rbp),%eax
movsbl -0x36(%rbp),%ecx
cmp    %ecx,%eax
je     1347 <str_case_blind_compare_sub_+0x247>
movsbl -0x35(%rbp),%eax
cmp    $0x61,%eax
jl     12d9 <str_case_blind_compare_sub_+0x1d9>
movsbl -0x35(%rbp),%eax
cmp    $0x7a,%eax
jg     12d9 <str_case_blind_compare_sub_+0x1d9>
movsbl -0x35(%rbp),%eax
and    $0xdf,%eax
mov    %al,-0x35(%rbp)
movsbl -0x36(%rbp),%eax
cmp    $0x61,%eax
jl     12ff <str_case_blind_compare_sub_+0x1ff>
movsbl -0x36(%rbp),%eax
cmp    $0x7a,%eax
jg     12ff <str_case_blind_compare_sub_+0x1ff>
movsbl -0x36(%rbp),%eax
and    $0xdf,%eax
mov    %al,-0x36(%rbp)
movsbl -0x35(%rbp),%eax
movsbl -0x36(%rbp),%ecx
cmp    %ecx,%eax
jge    131e <str_case_blind_compare_sub_+0x21e>
mov    -0x28(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    13ad <str_case_blind_compare_sub_+0x2ad>
movsbl -0x35(%rbp),%eax
movsbl -0x36(%rbp),%ecx
cmp    %ecx,%eax
jle    133d <str_case_blind_compare_sub_+0x23d>
mov    -0x28(%rbp),%rax
movl   $0x1,(%rax)
jmp    13ad <str_case_blind_compare_sub_+0x2ad>
jmp    1342 <str_case_blind_compare_sub_+0x242>
jmp    1347 <str_case_blind_compare_sub_+0x247>
jmp    134c <str_case_blind_compare_sub_+0x24c>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    127b <str_case_blind_compare_sub_+0x17b>
mov    -0x34(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    13a3 <str_case_blind_compare_sub_+0x2a3>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     1390 <str_case_blind_compare_sub_+0x290>
mov    -0x28(%rbp),%rax
movl   $0x1,(%rax)
jmp    13ad <str_case_blind_compare_sub_+0x2ad>
jmp    1395 <str_case_blind_compare_sub_+0x295>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1360 <str_case_blind_compare_sub_+0x260>
jmp    13a8 <str_case_blind_compare_sub_+0x2a8>
jmp    13ad <str_case_blind_compare_sub_+0x2ad>
pop    %rbp
ret

x86 assembly (clang, -O2):
<str_case_blind_compare_sub_>:
push   %rbp
push   %rbx
movslq (%rsi),%r9
mov    %r9d,%r11d
movslq (%rcx),%r10
movl   $0x0,(%r8)
cmp    %r10d,%r9d
jge    117d <str_case_blind_compare_sub_+0x7d>
test   %r9d,%r9d
jle    11db <str_case_blind_compare_sub_+0xdb>
xor    %ecx,%ecx
jmp    113d <str_case_blind_compare_sub_+0x3d>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%rcx
cmp    %rcx,%r11
je     11db <str_case_blind_compare_sub_+0xdb>
movzbl (%rdi,%rcx,1),%esi
movzbl (%rdx,%rcx,1),%eax
cmp    %al,%sil
je     1130 <str_case_blind_compare_sub_+0x30>
lea    -0x61(%rsi),%ebx
movzbl %sil,%ebp
and    $0xdf,%sil
cmp    $0x1a,%bl
movzbl %sil,%esi
cmovae %ebp,%esi
lea    -0x61(%rax),%ebx
movzbl %al,%ebp
and    $0xdf,%al
cmp    $0x1a,%bl
movzbl %al,%eax
cmovae %ebp,%eax
cmp    %al,%sil
jl     1221 <str_case_blind_compare_sub_+0x121>
jle    1130 <str_case_blind_compare_sub_+0x30>
jmp    11d4 <str_case_blind_compare_sub_+0xd4>
mov    %r10d,%r9d
test   %r9d,%r9d
jle    1201 <str_case_blind_compare_sub_+0x101>
xor    %eax,%eax
jmp    1199 <str_case_blind_compare_sub_+0x99>
nopl   (%rax)
add    $0x1,%rax
cmp    %rax,%r9
je     1201 <str_case_blind_compare_sub_+0x101>
movzbl (%rdi,%rax,1),%ecx
movzbl (%rdx,%rax,1),%esi
cmp    %sil,%cl
je     1190 <str_case_blind_compare_sub_+0x90>
lea    -0x61(%rcx),%ebx
movzbl %cl,%ebp
and    $0xdf,%cl
cmp    $0x1a,%bl
movzbl %cl,%ecx
cmovae %ebp,%ecx
lea    -0x61(%rsi),%ebx
movzbl %sil,%ebp
and    $0xdf,%sil
cmp    $0x1a,%bl
movzbl %sil,%esi
cmovae %ebp,%esi
cmp    %sil,%cl
jl     1221 <str_case_blind_compare_sub_+0x121>
jle    1190 <str_case_blind_compare_sub_+0x90>
mov    $0x1,%eax
jmp    1226 <str_case_blind_compare_sub_+0x126>
add    %r9,%rdx
sub    %r9d,%r10d
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmpb   $0x20,(%rdx,%rax,1)
jne    1221 <str_case_blind_compare_sub_+0x121>
add    $0x1,%rax
cmp    %eax,%r10d
jne    11f0 <str_case_blind_compare_sub_+0xf0>
jmp    1229 <str_case_blind_compare_sub_+0x129>
cmp    %r11d,%r10d
jge    1229 <str_case_blind_compare_sub_+0x129>
add    %r10,%rdi
sub    %r9d,%r11d
xor    %eax,%eax
xchg   %ax,%ax
cmpb   $0x20,(%rdi,%rax,1)
jne    11d4 <str_case_blind_compare_sub_+0xd4>
add    $0x1,%rax
cmp    %eax,%r11d
jne    1210 <str_case_blind_compare_sub_+0x110>
jmp    1229 <str_case_blind_compare_sub_+0x129>
mov    $0xffffffff,%eax
mov    %eax,(%r8)
pop    %rbx
pop    %rbp
ret

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

LLVM IR (-O2):
define void @str_case_blind_compare_sub_(i8* nocapture %0, i32* nocapture %1, i8* nocapture %2, i32* nocapture %3, i32* nocapture writeonly %4) {
%6 = load i32, i32* %1
%7 = load i32, i32* %3
store i32 0, i32* %4
%8 = icmp slt i32 %6, %7
br i1 %8, label %13, label %9
9: ; preds = %5
%10 = icmp sgt i32 %7, 0
br i1 %10, label %11, label %50
11: ; preds = %9
%12 = zext i32 %7 to i64
br label %54
13: ; preds = %5
%14 = icmp sgt i32 %6, 0
br i1 %14, label %15, label %17
15: ; preds = %13
%16 = zext i32 %6 to i64
br label %19
17: ; preds = %38, %13
%18 = sext i32 %6 to i64
br label %44
19: ; preds = %15, %38
%20 = phi i64 [ 0, %15 ], [ %39, %38 ]
%21 = getelementptr inbounds i8, i8* %0, i64 %20
%22 = load i8, i8* %21
%23 = getelementptr inbounds i8, i8* %2, i64 %20
%24 = load i8, i8* %23
%25 = icmp eq i8 %22, %24
br i1 %25, label %38, label %26
26: ; preds = %19
%27 = add i8 %22, -97
%28 = icmp ult i8 %27, 26
%29 = and i8 %22, -33
%30 = select i1 %28, i8 %29, i8 %22
%31 = add i8 %24, -97
%32 = icmp ult i8 %31, 26
%33 = and i8 %24, -33
%34 = select i1 %32, i8 %33, i8 %24
%35 = icmp slt i8 %30, %34
br i1 %35, label %85, label %36
36: ; preds = %26
%37 = icmp sgt i8 %30, %34
br i1 %37, label %85, label %38
38: ; preds = %19, %36
%39 = add nuw nsw i64 %20, 1
%40 = icmp eq i64 %39, %16
br i1 %40, label %17, label %19
41: ; preds = %44
%42 = trunc i64 %49 to i32
%43 = icmp eq i32 %7, %42
br i1 %43, label %87, label %44
44: ; preds = %17, %41
%45 = phi i64 [ %18, %17 ], [ %49, %41 ]
%46 = getelementptr inbounds i8, i8* %2, i64 %45
%47 = load i8, i8* %46
%48 = icmp eq i8 %47, 32
%49 = add nsw i64 %45, 1
br i1 %48, label %41, label %85
50: ; preds = %73, %9
%51 = icmp slt i32 %7, %6
br i1 %51, label %52, label %87
52: ; preds = %50
%53 = sext i32 %7 to i64
br label %79
54: ; preds = %11, %73
%55 = phi i64 [ 0, %11 ], [ %74, %73 ]
%56 = getelementptr inbounds i8, i8* %0, i64 %55
%57 = load i8, i8* %56
%58 = getelementptr inbounds i8, i8* %2, i64 %55
%59 = load i8, i8* %58
%60 = icmp eq i8 %57, %59
br i1 %60, label %73, label %61
61: ; preds = %54
%62 = add i8 %57, -97
%63 = icmp ult i8 %62, 26
%64 = and i8 %57, -33
%65 = select i1 %63, i8 %64, i8 %57
%66 = add i8 %59, -97
%67 = icmp ult i8 %66, 26
%68 = and i8 %59, -33
%69 = select i1 %67, i8 %68, i8 %59
%70 = icmp slt i8 %65, %69
br i1 %70, label %85, label %71
71: ; preds = %61
%72 = icmp sgt i8 %65, %69
br i1 %72, label %85, label %73
73: ; preds = %54, %71
%74 = add nuw nsw i64 %55, 1
%75 = icmp eq i64 %74, %12
br i1 %75, label %50, label %54
76: ; preds = %79
%77 = trunc i64 %84 to i32
%78 = icmp eq i32 %6, %77
br i1 %78, label %87, label %79
79: ; preds = %52, %76
%80 = phi i64 [ %53, %52 ], [ %84, %76 ]
%81 = getelementptr inbounds i8, i8* %0, i64 %80
%82 = load i8, i8* %81
%83 = icmp eq i8 %82, 32
%84 = add nsw i64 %80, 1
br i1 %83, label %76, label %85
85: ; preds = %71, %61, %79, %36, %26, %44
%86 = phi i32 [ -1, %44 ], [ -1, %26 ], [ 1, %36 ], [ 1, %79 ], [ -1, %61 ], [ 1, %71 ]
store i32 %86, i32* %4
br label %87
87: ; preds = %76, %41, %85, %50
ret void
}