int process(int pt_len, char pt[][2], int max_width, int max_height, int width,
            int height) {
  int ipt, ix, iy;
  int count, result = 0;
  for (iy = 1; iy <= max_height - height + 1; iy++) {
    for (ix = 1; ix <= max_width - width + 1; ix++) {
      for (ipt = 0, count = 0; ipt < pt_len; ipt++) {
        int pt_x = pt[ipt][0];
        int pt_y = pt[ipt][1];
        if (pt_y >= iy && pt_y <= iy + height - 1 && pt_x >= ix &&
            pt_x <= ix + width - 1) {
          count++;
        }
      }
      if (count > result)
        result = count;
    }
  }
  return result;
}


x86 assembly (clang, -O0):
<process>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
movl   $0x0,-0x34(%rbp)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    -0x20(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     1223 <process+0x123>
movl   $0x1,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    -0x1c(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     1210 <process+0x110>
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    11eb <process+0xeb>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,2),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl 0x1(%rax,%rcx,2),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jl     11d8 <process+0xd8>
mov    -0x3c(%rbp),%eax
mov    -0x2c(%rbp),%ecx
add    -0x20(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     11d8 <process+0xd8>
mov    -0x38(%rbp),%eax
cmp    -0x28(%rbp),%eax
jl     11d8 <process+0xd8>
mov    -0x38(%rbp),%eax
mov    -0x28(%rbp),%ecx
add    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     11d8 <process+0xd8>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11dd <process+0xdd>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1164 <process+0x64>
mov    -0x30(%rbp),%eax
cmp    -0x34(%rbp),%eax
jle    11fd <process+0xfd>
mov    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    1202 <process+0x102>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1142 <process+0x42>
jmp    1215 <process+0x115>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1127 <process+0x27>
mov    -0x34(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<process>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %r9,%rax
mov    %r9,-0x20(%rsp)
sub    %r9d,%ecx
lea    0x1(%rcx),%eax
test   %eax,%eax
jle    13f1 <process+0x2f1>
mov    %r8,%rax
mov    %r8,-0x8(%rsp)
sub    %r8d,%edx
lea    0x1(%rdx),%eax
mov    %eax,-0x24(%rsp)
add    $0x2,%edx
add    $0x2,%ecx
mov    %rcx,-0x18(%rsp)
mov    %edi,%r11d
mov    %r11d,%eax
and    $0xfffffff8,%eax
mov    %rax,-0x10(%rsp)
lea    (%r11,%r11,1),%r15
and    $0xfffffffffffffff0,%r15
mov    $0x1,%r12d
xor    %eax,%eax
jmp    116f <process+0x6f>
nopl   (%rax)
add    $0x1,%r12d
cmp    -0x18(%rsp),%r12d
je     13f3 <process+0x2f3>
cmpl   $0x0,-0x24(%rsp)
jle    1160 <process+0x60>
mov    -0x20(%rsp),%rcx
lea    (%r12,%rcx,1),%r13d
movd   %r12d,%xmm0
pshufd $0x0,%xmm0,%xmm8
movd   %r13d,%xmm0
pshufd $0x0,%xmm0,%xmm9
mov    $0x1,%r14d
jmp    11b3 <process+0xb3>
nopl   (%rax)
xor    %r10d,%r10d
cmp    %eax,%r10d
cmovg  %r10d,%eax
add    $0x1,%r14d
cmp    %edx,%r14d
je     1160 <process+0x60>
test   %edi,%edi
jle    11a0 <process+0xa0>
mov    -0x8(%rsp),%rcx
lea    (%r14,%rcx,1),%r9d
cmp    $0x8,%edi
jae    11d0 <process+0xd0>
xor    %ebx,%ebx
xor    %r10d,%r10d
jmp    13b0 <process+0x2b0>
nop
movd   %r14d,%xmm0
pshufd $0x0,%xmm0,%xmm10
movd   %r9d,%xmm0
pshufd $0x0,%xmm0,%xmm11
pxor   %xmm12,%xmm12
xor    %r10d,%r10d
pxor   %xmm4,%xmm4
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl (%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pxor   %xmm6,%xmm6
pinsrw $0x1,%ebx,%xmm6
movzbl 0x2(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x3,%ebx,%xmm6
movzbl 0x4(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x5,%ebx,%xmm6
movzbl 0x6(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x7,%ebx,%xmm6
movzbl 0x8(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pxor   %xmm7,%xmm7
pinsrw $0x1,%ebx,%xmm7
movzbl 0xa(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x3,%ebx,%xmm7
movzbl 0xc(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x5,%ebx,%xmm7
movzbl 0xe(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x7,%ebx,%xmm7
psrad  $0x18,%xmm6
psrad  $0x18,%xmm7
movzbl 0x1(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pxor   %xmm0,%xmm0
pinsrw $0x1,%ebx,%xmm0
movzbl 0x3(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x3,%ebx,%xmm0
movzbl 0x5(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x5,%ebx,%xmm0
movzbl 0x7(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x7,%ebx,%xmm0
movzbl 0x9(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pxor   %xmm1,%xmm1
pinsrw $0x1,%ebx,%xmm1
movzbl 0xb(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x3,%ebx,%xmm1
movzbl 0xd(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x5,%ebx,%xmm1
movzbl 0xf(%rsi,%r10,1),%ebx
shl    $0x8,%ebx
pinsrw $0x7,%ebx,%xmm1
psrad  $0x18,%xmm0
psrad  $0x18,%xmm1
movdqa %xmm8,%xmm3
pcmpgtd %xmm0,%xmm3
movdqa %xmm8,%xmm5
pcmpgtd %xmm1,%xmm5
movdqa %xmm9,%xmm2
pcmpgtd %xmm0,%xmm2
pandn  %xmm2,%xmm3
movdqa %xmm9,%xmm0
pcmpgtd %xmm1,%xmm0
pandn  %xmm0,%xmm5
movdqa %xmm10,%xmm0
pcmpgtd %xmm6,%xmm0
pandn  %xmm3,%xmm0
movdqa %xmm10,%xmm1
pcmpgtd %xmm7,%xmm1
pandn  %xmm5,%xmm1
movdqa %xmm11,%xmm2
pcmpgtd %xmm6,%xmm2
pand   %xmm0,%xmm2
psubd  %xmm2,%xmm12
movdqa %xmm11,%xmm0
pcmpgtd %xmm7,%xmm0
pand   %xmm1,%xmm0
psubd  %xmm0,%xmm4
add    $0x10,%r10
cmp    %r10,%r15
jne    1200 <process+0x100>
paddd  %xmm12,%xmm4
pshufd $0xee,%xmm4,%xmm0
paddd  %xmm4,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%r10d
mov    -0x10(%rsp),%rcx
mov    %rcx,%rbx
cmp    %r11,%rcx
je     11a3 <process+0xa3>
cs nopw 0x0(%rax,%rax,1)
movsbl (%rsi,%rbx,2),%ecx
movsbl 0x1(%rsi,%rbx,2),%ebp
cmp    %ebp,%r12d
setle  %r8b
cmp    %ebp,%r13d
setg   %bpl
and    %r8b,%bpl
cmp    %ecx,%r14d
setle  %r8b
cmp    %ecx,%r9d
setg   %cl
and    %r8b,%cl
and    %bpl,%cl
movzbl %cl,%ecx
add    %ecx,%r10d
add    $0x1,%rbx
cmp    %rbx,%r11
jne    13b0 <process+0x2b0>
jmp    11a3 <process+0xa3>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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