unsigned patt_stable(unsigned *cellular_automaton, unsigned *pattern,
                     unsigned *history, unsigned cycle) {
  unsigned match = 0;
  for (int i = 0; i < 7 * 14; i++) {
    if (cellular_automaton[i] == pattern[i])
      match++;
  }
  history[cycle] = match;
  unsigned second = 0;
  unsigned first = 0;
  if (cycle >= 10) {
    if (history[cycle] < history[cycle - 1]) {
      second = history[cycle];
      first = history[cycle - 1];
    } else {
      second = history[cycle - 1];
      first = history[cycle];
    }
    for (unsigned off = 2; off < 10; off++) {
      if (first <= history[cycle - off]) {
        second = first;
        first = history[cycle - off];
      }
    }
  }
  return first + second;
}


x86 assembly (clang, -O0):
<patt_stable>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x62,-0x24(%rbp)
jge    1163 <patt_stable+0x63>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x10(%rbp),%rcx
movslq -0x24(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jne    1150 <patt_stable+0x50>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1155 <patt_stable+0x55>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1121 <patt_stable+0x21>
mov    -0x20(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %edx,(%rax,%rcx,4)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
cmpl   $0xa,-0x1c(%rbp)
jb     1243 <patt_stable+0x143>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    (%rax,%rcx,4),%eax
mov    -0x18(%rbp),%rcx
mov    -0x1c(%rbp),%edx
sub    $0x1,%edx
mov    %edx,%edx
cmp    (%rcx,%rdx,4),%eax
jae    11cb <patt_stable+0xcb>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
jmp    11ea <patt_stable+0xea>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
movl   $0x2,-0x30(%rbp)
cmpl   $0xa,-0x30(%rbp)
jae    123e <patt_stable+0x13e>
mov    -0x2c(%rbp),%eax
mov    -0x18(%rbp),%rcx
mov    -0x1c(%rbp),%edx
sub    -0x30(%rbp),%edx
mov    %edx,%edx
cmp    (%rcx,%rdx,4),%eax
ja     122b <patt_stable+0x12b>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    -0x30(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
jmp    1230 <patt_stable+0x130>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11f1 <patt_stable+0xf1>
jmp    1243 <patt_stable+0x143>
mov    -0x2c(%rbp),%eax
add    -0x28(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<patt_stable>:
movdqu (%rdi),%xmm1
movdqu 0x10(%rdi),%xmm2
movdqu 0x20(%rdi),%xmm3
movdqu 0x30(%rdi),%xmm4
movdqu (%rsi),%xmm0
pcmpeqd %xmm1,%xmm0
movdqu 0x10(%rsi),%xmm1
pcmpeqd %xmm2,%xmm1
movdqu 0x20(%rsi),%xmm2
pcmpeqd %xmm3,%xmm2
movdqu 0x30(%rsi),%xmm3
pcmpeqd %xmm4,%xmm3
psrld  $0x1f,%xmm0
psubd  %xmm1,%xmm0
psubd  %xmm2,%xmm0
psubd  %xmm3,%xmm0
movdqu 0x40(%rdi),%xmm1
movdqu 0x40(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x50(%rdi),%xmm1
movdqu 0x50(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x60(%rdi),%xmm1
movdqu 0x60(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x70(%rdi),%xmm1
movdqu 0x70(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x80(%rdi),%xmm1
movdqu 0x80(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x90(%rdi),%xmm1
movdqu 0x90(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0xa0(%rdi),%xmm1
movdqu 0xa0(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0xb0(%rdi),%xmm1
movdqu 0xb0(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0xc0(%rdi),%xmm1
movdqu 0xc0(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0xd0(%rdi),%xmm1
movdqu 0xd0(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0xe0(%rdi),%xmm1
movdqu 0xe0(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0xf0(%rdi),%xmm1
movdqu 0xf0(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x100(%rdi),%xmm1
movdqu 0x100(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x110(%rdi),%xmm1
movdqu 0x110(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x120(%rdi),%xmm1
movdqu 0x120(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x130(%rdi),%xmm1
movdqu 0x130(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x140(%rdi),%xmm1
movdqu 0x140(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x150(%rdi),%xmm1
movdqu 0x150(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x160(%rdi),%xmm1
movdqu 0x160(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
movdqu 0x170(%rdi),%xmm1
movdqu 0x170(%rsi),%xmm2
pcmpeqd %xmm1,%xmm2
psubd  %xmm2,%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%r8d
mov    0x180(%rdi),%r9d
xor    %eax,%eax
cmp    0x180(%rsi),%r9d
sete   %al
add    %r8d,%eax
mov    0x184(%rdi),%r8d
xor    %edi,%edi
cmp    0x184(%rsi),%r8d
sete   %dil
add    %eax,%edi
mov    %ecx,%eax
mov    %edi,(%rdx,%rax,4)
xor    %eax,%eax
cmp    $0xa,%ecx
jb     13e4 <patt_stable+0x2e4>
lea    -0x1(%rcx),%eax
mov    (%rdx,%rax,4),%eax
cmp    %eax,%edi
mov    %eax,%esi
cmovb  %edi,%esi
cmovae %edi,%eax
lea    -0x2(%rcx),%edi
mov    (%rdx,%rdi,4),%edi
cmp    %edi,%eax
cmovbe %eax,%esi
cmovbe %edi,%eax
lea    -0x3(%rcx),%edi
mov    (%rdx,%rdi,4),%edi
cmp    %edi,%eax
cmovbe %eax,%esi
cmovbe %edi,%eax
lea    -0x4(%rcx),%edi
mov    (%rdx,%rdi,4),%edi
cmp    %edi,%eax
cmovbe %eax,%esi
cmovbe %edi,%eax
lea    -0x5(%rcx),%edi
mov    (%rdx,%rdi,4),%edi
cmp    %edi,%eax
cmovbe %eax,%esi
cmovbe %edi,%eax
lea    -0x6(%rcx),%edi
mov    (%rdx,%rdi,4),%edi
cmp    %edi,%eax
cmovbe %eax,%esi
cmovbe %edi,%eax
lea    -0x7(%rcx),%edi
mov    (%rdx,%rdi,4),%edi
cmp    %edi,%eax
cmovbe %eax,%esi
cmovbe %edi,%eax
lea    -0x8(%rcx),%edi
mov    (%rdx,%rdi,4),%edi
cmp    %edi,%eax
cmovbe %eax,%esi
cmovbe %edi,%eax
add    $0xfffffff7,%ecx
mov    (%rdx,%rcx,4),%ecx
cmp    %ecx,%eax
cmovbe %eax,%esi
cmovbe %ecx,%eax
add    %esi,%eax
ret

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

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