int ganhou_jogador(int mat[3][3]) {
  if (mat[0][0] == mat[0][1] && mat[0][1] == mat[0][2]) {
    return mat[0][0];
  } else if (mat[1][0] == mat[1][1] && mat[1][1] == mat[1][2]) {
    return mat[1][0];
  } else if (mat[2][0] == mat[2][1] && mat[2][1] == mat[2][2]) {
    return mat[2][0];
  } else if (mat[0][0] == mat[1][0] && mat[1][0] == mat[2][0]) {
    return mat[0][0];
  } else if (mat[0][1] == mat[1][1] && mat[1][1] == mat[2][1]) {
    return mat[0][1];
  } else if (mat[0][2] == mat[1][2] && mat[1][2] == mat[2][2]) {
    return mat[0][2];
  } else if (mat[0][0] == mat[1][1] && mat[1][1] == mat[2][2]) {
    return mat[0][0];
  } else if (mat[0][2] == mat[1][1] && mat[1][1] == mat[2][0]) {
    return mat[0][2];
  } else {
    return 0;
  }
}


x86 assembly (clang, -O0):
<ganhou_jogador>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x4(%rcx),%eax
jne    113d <ganhou_jogador+0x3d>
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x8(%rcx),%eax
jne    113d <ganhou_jogador+0x3d>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x10(%rcx),%eax
jne    1174 <ganhou_jogador+0x74>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x14(%rcx),%eax
jne    1174 <ganhou_jogador+0x74>
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x1c(%rcx),%eax
jne    11ab <ganhou_jogador+0xab>
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x20(%rcx),%eax
jne    11ab <ganhou_jogador+0xab>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0xc(%rcx),%eax
jne    11e0 <ganhou_jogador+0xe0>
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x18(%rcx),%eax
jne    11e0 <ganhou_jogador+0xe0>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x10(%rcx),%eax
jne    1217 <ganhou_jogador+0x117>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x1c(%rcx),%eax
jne    1217 <ganhou_jogador+0x117>
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x14(%rcx),%eax
jne    124e <ganhou_jogador+0x14e>
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x20(%rcx),%eax
jne    124e <ganhou_jogador+0x14e>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x10(%rcx),%eax
jne    1283 <ganhou_jogador+0x183>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x20(%rcx),%eax
jne    1283 <ganhou_jogador+0x183>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x10(%rcx),%eax
jne    12ba <ganhou_jogador+0x1ba>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%eax
mov    -0x10(%rbp),%rcx
cmp    0x18(%rcx),%eax
jne    12ba <ganhou_jogador+0x1ba>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    12c1 <ganhou_jogador+0x1c1>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<ganhou_jogador>:
mov    (%rdi),%ecx
mov    0x4(%rdi),%eax
cmp    %eax,%ecx
jne    1111 <ganhou_jogador+0x11>
cmp    0x8(%rdi),%ecx
jne    1111 <ganhou_jogador+0x11>
mov    %ecx,%eax
ret
mov    0xc(%rdi),%edx
mov    0x10(%rdi),%r9d
cmp    %r9d,%edx
jne    1125 <ganhou_jogador+0x25>
cmp    0x14(%rdi),%edx
jne    1125 <ganhou_jogador+0x25>
mov    %edx,%eax
ret
mov    0x18(%rdi),%r10d
mov    0x1c(%rdi),%esi
cmp    %esi,%r10d
jne    113b <ganhou_jogador+0x3b>
cmp    0x20(%rdi),%r10d
jne    113b <ganhou_jogador+0x3b>
mov    %r10d,%eax
ret
cmp    %edx,%ecx
jne    1147 <ganhou_jogador+0x47>
cmp    %r10d,%edx
jne    1147 <ganhou_jogador+0x47>
mov    %ecx,%eax
ret
cmp    %r9d,%eax
jne    1152 <ganhou_jogador+0x52>
cmp    %esi,%r9d
jne    1152 <ganhou_jogador+0x52>
ret
mov    0x8(%rdi),%r8d
cmp    0x14(%rdi),%r8d
jne    1166 <ganhou_jogador+0x66>
cmp    0x20(%rdi),%r8d
jne    1166 <ganhou_jogador+0x66>
mov    %r8d,%eax
ret
cmp    %r9d,%ecx
jne    1172 <ganhou_jogador+0x72>
mov    %ecx,%eax
cmp    0x20(%rdi),%ecx
je     1151 <ganhou_jogador+0x51>
mov    %r8d,%ecx
xor    %r9d,%ecx
xor    %r9d,%r10d
xor    %eax,%eax
or     %ecx,%r10d
cmove  %r8d,%eax
ret

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

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