void sortiraj(int niz[], int vel) {
  int i, j, k, brojac1 = 0, brojac2 = 0;
  for (i = 0; i < vel; i++) {
    if (niz[i] % 2 == 0)
      brojac1++;
    else if (niz[i] % 2 == 1)
      brojac2++;
  }
  int niz1[10], niz2[10];
  j = 0, k = 0;
  for (i = 0; i < vel; i++) {
    if (niz[i] % 2 == 0) {
      niz1[j] = niz[i];
      j++;
    } else if (niz[i] % 2 == 1) {
      niz2[k] = niz[i];
      k++;
    }
  }
  int temp;
  for (i = 0; i < brojac1; i++) {
    for (j = i; j < brojac1; j++)
      if (niz1[i] > niz1[j]) {
        temp = niz1[j];
        niz1[j] = niz1[i];
        niz1[i] = temp;
      }
  }
  for (i = 0; i < brojac2; i++) {
    for (j = i; j < brojac2; j++)
      if (niz2[i] < niz2[j]) {
        temp = niz2[j];
        niz2[j] = niz2[i];
        niz2[i] = temp;
      }
  }
  i = 0;
  while (i != brojac1) {
    niz[i] = niz1[i];
    i++;
  }
  j = 0;
  while (i != vel) {
    niz[i] = niz2[j];
    i++;
    j++;
  }
}


x86 assembly (clang, -O0):
<sortiraj>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1197 <sortiraj+0x97>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    115a <sortiraj+0x5a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1184 <sortiraj+0x84>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    117f <sortiraj+0x7f>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1184 <sortiraj+0x84>
jmp    1189 <sortiraj+0x89>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1124 <sortiraj+0x24>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1245 <sortiraj+0x145>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    11f5 <sortiraj+0xf5>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x14(%rbp),%rax
mov    %ecx,-0x50(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1232 <sortiraj+0x132>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    122d <sortiraj+0x12d>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x18(%rbp),%rax
mov    %ecx,-0x80(%rbp,%rax,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1232 <sortiraj+0x132>
jmp    1237 <sortiraj+0x137>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    11ac <sortiraj+0xac>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    12d2 <sortiraj+0x1d2>
mov    -0x10(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    12bf <sortiraj+0x1bf>
movslq -0x10(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%eax
movslq -0x14(%rbp),%rcx
cmp    -0x50(%rbp,%rcx,4),%eax
jle    12ac <sortiraj+0x1ac>
movslq -0x14(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%eax
mov    %eax,-0x84(%rbp)
movslq -0x10(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%ecx
movslq -0x14(%rbp),%rax
mov    %ecx,-0x50(%rbp,%rax,4)
mov    -0x84(%rbp),%ecx
movslq -0x10(%rbp),%rax
mov    %ecx,-0x50(%rbp,%rax,4)
jmp    12b1 <sortiraj+0x1b1>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    125e <sortiraj+0x15e>
jmp    12c4 <sortiraj+0x1c4>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    124c <sortiraj+0x14c>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    135f <sortiraj+0x25f>
mov    -0x10(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    134c <sortiraj+0x24c>
movslq -0x10(%rbp),%rax
mov    -0x80(%rbp,%rax,4),%eax
movslq -0x14(%rbp),%rcx
cmp    -0x80(%rbp,%rcx,4),%eax
jge    1339 <sortiraj+0x239>
movslq -0x14(%rbp),%rax
mov    -0x80(%rbp,%rax,4),%eax
mov    %eax,-0x84(%rbp)
movslq -0x10(%rbp),%rax
mov    -0x80(%rbp,%rax,4),%ecx
movslq -0x14(%rbp),%rax
mov    %ecx,-0x80(%rbp,%rax,4)
mov    -0x84(%rbp),%ecx
movslq -0x10(%rbp),%rax
mov    %ecx,-0x80(%rbp,%rax,4)
jmp    133e <sortiraj+0x23e>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12eb <sortiraj+0x1eb>
jmp    1351 <sortiraj+0x251>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    12d9 <sortiraj+0x1d9>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x1c(%rbp),%eax
je     1393 <sortiraj+0x293>
movslq -0x10(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%edx
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1366 <sortiraj+0x266>
movl   $0x0,-0x14(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
je     13d0 <sortiraj+0x2d0>
movslq -0x14(%rbp),%rax
mov    -0x80(%rbp,%rax,4),%edx
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    139a <sortiraj+0x29a>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sortiraj>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x60,%rsp
mov    %esi,%r14d
mov    %rdi,%r12
test   %esi,%esi
jle    12f7 <sortiraj+0x1e7>
mov    %r14d,%ecx
cmp    $0x1,%r14d
jne    11ad <sortiraj+0x9d>
xor    %edx,%edx
xor    %r8d,%r8d
xor    %r15d,%r15d
test   $0x1,%cl
je     115f <sortiraj+0x4f>
mov    (%r12,%rdx,4),%eax
mov    %eax,%edx
shr    $0x1f,%edx
add    %eax,%edx
and    $0xfffffffe,%edx
sub    %edx,%eax
je     1212 <sortiraj+0x102>
cmp    $0x1,%eax
jne    115f <sortiraj+0x4f>
add    $0x1,%r8d
test   %r14d,%r14d
jle    121f <sortiraj+0x10f>
xor    %edx,%edx
xor    %esi,%esi
xor    %edi,%edi
jmp    1186 <sortiraj+0x76>
movslq %esi,%rsi
mov    %ebx,(%rsp,%rsi,4)
add    $0x1,%esi
add    $0x1,%rdx
cmp    %rdx,%rcx
je     121f <sortiraj+0x10f>
mov    (%r12,%rdx,4),%ebx
mov    %ebx,%ebp
shr    $0x1f,%ebp
add    %ebx,%ebp
and    $0xfffffffe,%ebp
mov    %ebx,%eax
sub    %ebp,%eax
cmp    $0x1,%eax
je     1170 <sortiraj+0x60>
test   %eax,%eax
jne    1179 <sortiraj+0x69>
movslq %edi,%rdi
mov    %ebx,0x30(%rsp,%rdi,4)
add    $0x1,%edi
jmp    1179 <sortiraj+0x69>
mov    %ecx,%esi
and    $0xfffffffe,%esi
xor    %edx,%edx
xor    %r8d,%r8d
xor    %r15d,%r15d
jmp    11d1 <sortiraj+0xc1>
nopl   0x0(%rax)
add    $0x1,%r15d
add    $0x2,%rdx
cmp    %rdx,%rsi
je     113b <sortiraj+0x2b>
mov    (%r12,%rdx,4),%eax
mov    %eax,%edi
shr    $0x1f,%edi
add    %eax,%edi
and    $0xfffffffe,%edi
sub    %edi,%eax
cmp    $0x1,%eax
je     11f0 <sortiraj+0xe0>
test   %eax,%eax
jne    11f4 <sortiraj+0xe4>
add    $0x1,%r15d
jmp    11f4 <sortiraj+0xe4>
add    $0x1,%r8d
mov    0x4(%r12,%rdx,4),%eax
mov    %eax,%edi
shr    $0x1f,%edi
add    %eax,%edi
and    $0xfffffffe,%edi
sub    %edi,%eax
je     11c0 <sortiraj+0xb0>
cmp    $0x1,%eax
jne    11c4 <sortiraj+0xb4>
add    $0x1,%r8d
jmp    11c4 <sortiraj+0xb4>
add    $0x1,%r15d
test   %r14d,%r14d
jg     1168 <sortiraj+0x58>
mov    %r15d,%edx
test   %r15d,%r15d
jle    128b <sortiraj+0x17b>
lea    0x30(%rsp),%rcx
xor    %esi,%esi
mov    %rdx,%rdi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x30(%rsp,%rsi,4),%ebp
mov    $0x1,%eax
mov    %ebp,%ebx
cmp    %ebp,%ebx
jle    1275 <sortiraj+0x165>
jmp    126b <sortiraj+0x15b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    (%rcx,%rax,4),%ebp
add    $0x1,%rax
cmp    %ebp,%ebx
jle    1275 <sortiraj+0x165>
mov    %ebx,-0x4(%rcx,%rax,4)
mov    %ebp,0x30(%rsp,%rsi,4)
mov    %ebp,%ebx
cmp    %rax,%rdi
jne    1260 <sortiraj+0x150>
add    $0x1,%rsi
add    $0x4,%rcx
add    $0xffffffffffffffff,%rdi
cmp    %rdx,%rsi
jne    1240 <sortiraj+0x130>
test   %r8d,%r8d
jle    12da <sortiraj+0x1ca>
mov    %r8d,%r8d
mov    %rsp,%rcx
xor    %esi,%esi
mov    %r8,%rdi
nopl   0x0(%rax,%rax,1)
mov    (%rsp,%rsi,4),%ebx
mov    $0x1,%ebp
mov    %ebx,%eax
cmp    %ebx,%eax
jge    12c4 <sortiraj+0x1b4>
jmp    12bb <sortiraj+0x1ab>
mov    (%rcx,%rbp,4),%ebx
add    $0x1,%rbp
cmp    %ebx,%eax
jge    12c4 <sortiraj+0x1b4>
mov    %eax,-0x4(%rcx,%rbp,4)
mov    %ebx,(%rsp,%rsi,4)
mov    %ebx,%eax
cmp    %rbp,%rdi
jne    12b0 <sortiraj+0x1a0>
add    $0x1,%rsi
add    $0x4,%rcx
add    $0xffffffffffffffff,%rdi
cmp    %r8,%rsi
jne    12a0 <sortiraj+0x190>
test   %r15d,%r15d
je     12f7 <sortiraj+0x1e7>
shl    $0x2,%rdx
lea    0x30(%rsp),%rsi
mov    %r12,%rdi
call   1030 <memcpy@plt>
cmp    %r14d,%r15d
je     131c <sortiraj+0x20c>
jmp    12ff <sortiraj+0x1ef>
xor    %r15d,%r15d
cmp    %r14d,%r15d
je     131c <sortiraj+0x20c>
mov    %r15d,%eax
lea    (%r12,%rax,4),%rdi
not    %r15d
add    %r14d,%r15d
lea    0x4(,%r15,4),%rdx
mov    %rsp,%rsi
call   1030 <memcpy@plt>
add    $0x60,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

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