int pobjednik(char ploca[][10], int redovi, int stupci) {
  int i, j, igracX = 0, igracO = 0;
  for (i = 0; i < redovi; i++) {
    for (j = 0; j < stupci; j++) {
      if (ploca[i][j] == 'x' && ploca[i][j + 1] == 'x' &&
          ploca[i][j + 2] == 'x' && ploca[i][j + 3] == 'x') {
        igracX = 1;
      }
      if (ploca[i][j] == 'o' && ploca[i][j + 1] == 'o' &&
          ploca[i][j + 2] == 'o' && ploca[i][j + 3] == 'o') {
        igracO = 1;
      }
    }
  }
  for (i = 0; i < stupci; i++) {
    for (j = 0; j < redovi; j++) {
      if (ploca[j][i] == 'x' && ploca[j + 1][i] == 'x' &&
          ploca[j + 2][i] == 'x' && ploca[j + 3][i] == 'x') {
        igracX = 1;
      }
      if (ploca[j][i] == 'o' && ploca[j + 1][i] == 'o' &&
          ploca[j + 2][i] == 'o' && ploca[j + 3][i] == 'o') {
        igracO = 1;
      }
    }
  }
  if (igracX == 0 && igracO == 0)
    return 0;
  if (igracX > igracO)
    return 1;
  if (igracX < igracO)
    return 2;
  if (igracX == 1 && igracO == 1)
    return 3;
}


x86 assembly (clang, -O0):
<pobjednik>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1294 <pobjednik+0x194>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    1281 <pobjednik+0x181>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    11d8 <pobjednik+0xd8>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    11d8 <pobjednik+0xd8>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    11d8 <pobjednik+0xd8>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    11d8 <pobjednik+0xd8>
movl   $0x1,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    126e <pobjednik+0x16e>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    126e <pobjednik+0x16e>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    126e <pobjednik+0x16e>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    126e <pobjednik+0x16e>
movl   $0x1,-0x28(%rbp)
jmp    1273 <pobjednik+0x173>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1136 <pobjednik+0x36>
jmp    1286 <pobjednik+0x186>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1123 <pobjednik+0x23>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    140c <pobjednik+0x30c>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    13f9 <pobjednik+0x2f9>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    1350 <pobjednik+0x250>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    1350 <pobjednik+0x250>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    1350 <pobjednik+0x250>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
jne    1350 <pobjednik+0x250>
movl   $0x1,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    13e6 <pobjednik+0x2e6>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    13e6 <pobjednik+0x2e6>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    13e6 <pobjednik+0x2e6>
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
jne    13e6 <pobjednik+0x2e6>
movl   $0x1,-0x28(%rbp)
jmp    13eb <pobjednik+0x2eb>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    12ae <pobjednik+0x1ae>
jmp    13fe <pobjednik+0x2fe>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    129b <pobjednik+0x19b>
cmpl   $0x0,-0x24(%rbp)
jne    142c <pobjednik+0x32c>
cmpl   $0x0,-0x28(%rbp)
jne    142c <pobjednik+0x32c>
movl   $0x0,-0x4(%rbp)
jmp    1477 <pobjednik+0x377>
mov    -0x24(%rbp),%eax
cmp    -0x28(%rbp),%eax
jle    1444 <pobjednik+0x344>
movl   $0x1,-0x4(%rbp)
jmp    1477 <pobjednik+0x377>
mov    -0x24(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    145c <pobjednik+0x35c>
movl   $0x2,-0x4(%rbp)
jmp    1477 <pobjednik+0x377>
cmpl   $0x1,-0x24(%rbp)
jne    1477 <pobjednik+0x377>
cmpl   $0x1,-0x28(%rbp)
jne    1477 <pobjednik+0x377>
movl   $0x3,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<pobjednik>:
push   %r15
push   %r14
push   %rbx
mov    %esi,%r11d
mov    %edx,%r14d
test   %esi,%esi
jle    11bd <pobjednik+0xbd>
xor    %r15d,%r15d
mov    $0x1,%r10d
xor    %r8d,%r8d
xor    %r9d,%r9d
jmp    113d <pobjednik+0x3d>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r15
cmp    %r11,%r15
je     11c3 <pobjednik+0xc3>
test   %edx,%edx
jle    1130 <pobjednik+0x30>
xor    %ebx,%ebx
jmp    115f <pobjednik+0x5f>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rbx
mov    %rbx,%rcx
mov    %rcx,%rbx
cmp    %r14,%rcx
je     1130 <pobjednik+0x30>
lea    (%r15,%r15,4),%rax
lea    (%rdi,%rax,2),%rax
movzbl (%rbx,%rax,1),%ecx
cmp    $0x6f,%cl
je     11a0 <pobjednik+0xa0>
cmp    $0x78,%cl
jne    1150 <pobjednik+0x50>
lea    0x1(%rbx),%rcx
cmpb   $0x78,0x1(%rbx,%rax,1)
jne    1157 <pobjednik+0x57>
cmpb   $0x78,0x2(%rbx,%rax,1)
jne    1157 <pobjednik+0x57>
cmpb   $0x78,0x3(%rbx,%rax,1)
cmove  %r10d,%r9d
jmp    1157 <pobjednik+0x57>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    0x1(%rbx),%rcx
cmpb   $0x6f,0x1(%rbx,%rax,1)
jne    1157 <pobjednik+0x57>
cmpb   $0x6f,0x2(%rbx,%rax,1)
jne    1157 <pobjednik+0x57>
cmpb   $0x6f,0x3(%rbx,%rax,1)
cmove  %r10d,%r8d
jmp    1157 <pobjednik+0x57>
xor    %r9d,%r9d
xor    %r8d,%r8d
test   %edx,%edx
jle    1260 <pobjednik+0x160>
xor    %edx,%edx
mov    $0x1,%r10d
jmp    11e9 <pobjednik+0xe9>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rdx
cmp    %r14,%rdx
je     1260 <pobjednik+0x160>
test   %esi,%esi
jle    11e0 <pobjednik+0xe0>
xor    %eax,%eax
jmp    1205 <pobjednik+0x105>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    %r11,%rax
je     11e0 <pobjednik+0xe0>
lea    (%rax,%rax,4),%rcx
lea    (%rdi,%rcx,2),%rcx
movzbl (%rdx,%rcx,1),%ebx
add    $0x1,%rax
cmp    $0x6f,%bl
je     1240 <pobjednik+0x140>
cmp    $0x78,%bl
jne    1200 <pobjednik+0x100>
lea    (%rax,%rax,4),%rbx
lea    (%rdi,%rbx,2),%rbx
cmpb   $0x78,(%rdx,%rbx,1)
jne    1200 <pobjednik+0x100>
cmpb   $0x78,0x14(%rdx,%rcx,1)
jne    1200 <pobjednik+0x100>
cmpb   $0x78,0x1e(%rdx,%rcx,1)
cmove  %r10d,%r9d
jmp    1200 <pobjednik+0x100>
nop
lea    (%rax,%rax,4),%rbx
lea    (%rdi,%rbx,2),%rbx
cmpb   $0x6f,(%rdx,%rbx,1)
jne    1200 <pobjednik+0x100>
cmpb   $0x6f,0x14(%rdx,%rcx,1)
jne    1200 <pobjednik+0x100>
cmpb   $0x6f,0x1e(%rdx,%rcx,1)
cmove  %r10d,%r8d
jmp    1200 <pobjednik+0x100>
xor    %eax,%eax
mov    %r9d,%ecx
or     %r8d,%ecx
je     127d <pobjednik+0x17d>
mov    $0x1,%eax
cmp    %r8d,%r9d
jg     127d <pobjednik+0x17d>
setl   %al
movzbl %al,%eax
xor    $0x3,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
define i32 @pobjednik([10 x i8]* nocapture %0, i32 %1, i32 %2) {
%4 = icmp sgt i32 %1, 0
br i1 %4, label %5, label %13
5: ; preds = %3
%6 = icmp sgt i32 %2, 0
%7 = zext i32 %1 to i64
%8 = zext i32 %2 to i64
br label %9
9: ; preds = %5, %65
%10 = phi i64 [ 0, %5 ], [ %68, %65 ]
%11 = phi i32 [ 0, %5 ], [ %67, %65 ]
%12 = phi i32 [ 0, %5 ], [ %66, %65 ]
br i1 %6, label %20, label %65
13: ; preds = %65, %3
%14 = phi i32 [ 0, %3 ], [ %66, %65 ]
%15 = phi i32 [ 0, %3 ], [ %67, %65 ]
%16 = icmp sgt i32 %2, 0
br i1 %16, label %17, label %124
17: ; preds = %13
%18 = zext i32 %2 to i64
%19 = zext i32 %1 to i64
br label %70
20: ; preds = %9, %60
%21 = phi i64 [ %61, %60 ], [ 0, %9 ]
%22 = phi i32 [ %63, %60 ], [ %11, %9 ]
%23 = phi i32 [ %62, %60 ], [ %12, %9 ]
%24 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %10, i64 %21
%25 = load i8, i8* %24
switch i8 %25, label %26 [
i8 120, label %28
i8 111, label %44
]
26: ; preds = %20
%27 = add nuw nsw i64 %21, 1
br label %60
28: ; preds = %20
%29 = add nuw nsw i64 %21, 1
%30 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %10, i64 %29
%31 = load i8, i8* %30
%32 = icmp eq i8 %31, 120
br i1 %32, label %33, label %60
33: ; preds = %28
%34 = add nuw nsw i64 %21, 2
%35 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %10, i64 %34
%36 = load i8, i8* %35
%37 = icmp eq i8 %36, 120
br i1 %37, label %38, label %60
38: ; preds = %33
%39 = add nuw nsw i64 %21, 3
%40 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %10, i64 %39
%41 = load i8, i8* %40
%42 = icmp eq i8 %41, 120
%43 = select i1 %42, i32 1, i32 %23
br label %60
44: ; preds = %20
%45 = add nuw nsw i64 %21, 1
%46 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %10, i64 %45
%47 = load i8, i8* %46
%48 = icmp eq i8 %47, 111
br i1 %48, label %49, label %60
49: ; preds = %44
%50 = add nuw nsw i64 %21, 2
%51 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %10, i64 %50
%52 = load i8, i8* %51
%53 = icmp eq i8 %52, 111
br i1 %53, label %54, label %60
54: ; preds = %49
%55 = add nuw nsw i64 %21, 3
%56 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %10, i64 %55
%57 = load i8, i8* %56
%58 = icmp eq i8 %57, 111
%59 = select i1 %58, i32 1, i32 %22
br label %60
60: ; preds = %26, %28, %33, %38, %54, %44, %49
%61 = phi i64 [ %27, %26 ], [ %29, %28 ], [ %29, %33 ], [ %29, %38 ], [ %45, %54 ], [ %45, %44 ], [ %45, %49 ]
%62 = phi i32 [ %23, %26 ], [ %23, %28 ], [ %23, %33 ], [ %43, %38 ], [ %23, %54 ], [ %23, %44 ], [ %23, %49 ]
%63 = phi i32 [ %22, %26 ], [ %22, %28 ], [ %22, %33 ], [ %22, %38 ], [ %59, %54 ], [ %22, %44 ], [ %22, %49 ]
%64 = icmp eq i64 %61, %8
br i1 %64, label %65, label %20
65: ; preds = %60, %9
%66 = phi i32 [ %12, %9 ], [ %62, %60 ]
%67 = phi i32 [ %11, %9 ], [ %63, %60 ]
%68 = add nuw nsw i64 %10, 1
%69 = icmp eq i64 %68, %7
br i1 %69, label %13, label %9
70: ; preds = %17, %119
%71 = phi i64 [ 0, %17 ], [ %122, %119 ]
%72 = phi i32 [ %15, %17 ], [ %121, %119 ]
%73 = phi i32 [ %14, %17 ], [ %120, %119 ]
br i1 %4, label %74, label %119
74: ; preds = %70, %114
%75 = phi i64 [ %115, %114 ], [ 0, %70 ]
%76 = phi i32 [ %117, %114 ], [ %72, %70 ]
%77 = phi i32 [ %116, %114 ], [ %73, %70 ]
%78 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %75, i64 %71
%79 = load i8, i8* %78
switch i8 %79, label %80 [
i8 120, label %82
i8 111, label %98
]
80: ; preds = %74
%81 = add nuw nsw i64 %75, 1
br label %114
82: ; preds = %74
%83 = add nuw nsw i64 %75, 1
%84 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %83, i64 %71
%85 = load i8, i8* %84
%86 = icmp eq i8 %85, 120
br i1 %86, label %87, label %114
87: ; preds = %82
%88 = add nuw nsw i64 %75, 2
%89 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %88, i64 %71
%90 = load i8, i8* %89
%91 = icmp eq i8 %90, 120
br i1 %91, label %92, label %114
92: ; preds = %87
%93 = add nuw nsw i64 %75, 3
%94 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %93, i64 %71
%95 = load i8, i8* %94
%96 = icmp eq i8 %95, 120
%97 = select i1 %96, i32 1, i32 %77
br label %114
98: ; preds = %74
%99 = add nuw nsw i64 %75, 1
%100 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %99, i64 %71
%101 = load i8, i8* %100
%102 = icmp eq i8 %101, 111
br i1 %102, label %103, label %114
103: ; preds = %98
%104 = add nuw nsw i64 %75, 2
%105 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %104, i64 %71
%106 = load i8, i8* %105
%107 = icmp eq i8 %106, 111
br i1 %107, label %108, label %114
108: ; preds = %103
%109 = add nuw nsw i64 %75, 3
%110 = getelementptr inbounds [10 x i8], [10 x i8]* %0, i64 %109, i64 %71
%111 = load i8, i8* %110
%112 = icmp eq i8 %111, 111
%113 = select i1 %112, i32 1, i32 %76
br label %114
114: ; preds = %80, %82, %87, %92, %108, %98, %103
%115 = phi i64 [ %81, %80 ], [ %83, %82 ], [ %83, %87 ], [ %83, %92 ], [ %99, %108 ], [ %99, %98 ], [ %99, %103 ]
%116 = phi i32 [ %77, %80 ], [ %77, %82 ], [ %77, %87 ], [ %97, %92 ], [ %77, %108 ], [ %77, %98 ], [ %77, %103 ]
%117 = phi i32 [ %76, %80 ], [ %76, %82 ], [ %76, %87 ], [ %76, %92 ], [ %113, %108 ], [ %76, %98 ], [ %76, %103 ]
%118 = icmp eq i64 %115, %19
br i1 %118, label %119, label %74
119: ; preds = %114, %70
%120 = phi i32 [ %73, %70 ], [ %116, %114 ]
%121 = phi i32 [ %72, %70 ], [ %117, %114 ]
%122 = add nuw nsw i64 %71, 1
%123 = icmp eq i64 %122, %18
br i1 %123, label %124, label %70
124: ; preds = %119, %13
%125 = phi i32 [ %14, %13 ], [ %120, %119 ]
%126 = phi i32 [ %15, %13 ], [ %121, %119 ]
%127 = icmp eq i32 %125, 0
%128 = icmp eq i32 %126, 0
%129 = select i1 %127, i1 %128, i1 false
br i1 %129, label %135, label %130
130: ; preds = %124
%131 = icmp sgt i32 %125, %126
br i1 %131, label %135, label %132
132: ; preds = %130
%133 = icmp slt i32 %125, %126
%134 = select i1 %133, i32 2, i32 3
br label %135
135: ; preds = %132, %130, %124
%136 = phi i32 [ 0, %124 ], [ 1, %130 ], [ %134, %132 ]
ret i32 %136
}