void scriere_matrice(int harta[][30], int row, int col, int tip_piesa,
                     int tip_rotatie) {
  if (tip_piesa == 1) {
    harta[row][col] = 1;
    harta[row + 1][col] = 1;
    harta[row][col - 1] = 1;
    harta[row + 1][col - 1] = 1;
  }
  if (tip_piesa == 2) {
    harta[row][col] = 2;
    if (tip_rotatie % 2 == 0) {
      harta[row][col - 1] = 2;
      harta[row][col - 2] = 2;
      harta[row][col + 1] = 2;
    } else {
      harta[row - 1][col] = 2;
      harta[row + 1][col] = 2;
      harta[row + 2][col] = 2;
    }
  }
  if (tip_piesa == 3) {
    harta[row][col] = 3;
    harta[row][col + 1] = 3;
    if (tip_rotatie % 2 == 0) {
      harta[row - 1][col] = 3;
      harta[row + 1][col + 1] = 3;
    } else {
      harta[row + 1][col] = 3;
      harta[row + 1][col - 1] = 3;
    }
  }
  if (tip_piesa == 4) {
    harta[row][col] = 4;
    harta[row + 1][col] = 4;
    if (tip_rotatie % 2 == 0) {
      harta[row][col + 1] = 4;
      harta[row - 1][col + 1] = 4;
    } else {
      harta[row][col - 1] = 4;
      harta[row + 1][col + 1] = 4;
    }
  }
  if (tip_piesa == 5) {
    harta[row][col] = 5;
    if (tip_rotatie % 2 == 0) {
      harta[row][col - 1] = 5;
      harta[row][col + 1] = 5;
    } else {
      harta[row - 1][col] = 5;
      harta[row + 1][col] = 5;
    }
    if (tip_rotatie % 4 == 0) {
      harta[row + 1][col - 1] = 5;
    }
    if (tip_rotatie % 4 == 1) {
      harta[row + 1][col + 1] = 5;
    }
    if (tip_rotatie % 4 == 2) {
      harta[row - 1][col + 1] = 5;
    }
    if (tip_rotatie % 4 == 3) {
      harta[row - 1][col - 1] = 5;
    }
  }
  if (tip_piesa == 6) {
    harta[row][col] = 6;
    if (tip_rotatie % 2 == 0) {
      harta[row][col - 1] = 6;
      harta[row][col + 1] = 6;
    } else {
      harta[row - 1][col] = 6;
      harta[row + 1][col] = 6;
    }
    if (tip_rotatie % 4 == 0) {
      harta[row + 1][col + 1] = 6;
    }
    if (tip_rotatie % 4 == 1) {
      harta[row - 1][col + 1] = 6;
    }
    if (tip_rotatie % 4 == 2) {
      harta[row - 1][col - 1] = 6;
    }
    if (tip_rotatie % 4 == 3) {
      harta[row + 1][col - 1] = 6;
    }
  }
  if (tip_piesa == 7) {
    harta[row][col] = 7;
    if (tip_rotatie % 2 == 0) {
      harta[row][col - 1] = 7;
      harta[row][col + 1] = 7;
    } else {
      harta[row - 1][col] = 7;
      harta[row + 1][col] = 7;
    }
    if (tip_rotatie % 4 == 0) {
      harta[row + 1][col] = 7;
    }
    if (tip_rotatie % 4 == 1) {
      harta[row][col + 1] = 7;
    }
    if (tip_rotatie % 4 == 2) {
      harta[row - 1][col] = 7;
    }
    if (tip_rotatie % 4 == 3) {
      harta[row][col - 1] = 7;
    }
  }
}


x86 assembly (clang, -O0):
<scriere_matrice>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
cmpl   $0x1,-0x14(%rbp)
jne    119b <scriere_matrice+0x9b>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x1,(%rax,%rcx,4)
cmpl   $0x2,-0x14(%rbp)
jne    1297 <scriere_matrice+0x197>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x2,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1235 <scriere_matrice+0x135>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x2,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x2,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x2,(%rax,%rcx,4)
jmp    1292 <scriere_matrice+0x192>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x2,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x2,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x2,(%rax,%rcx,4)
jmp    1297 <scriere_matrice+0x197>
cmpl   $0x3,-0x14(%rbp)
jne    137e <scriere_matrice+0x27e>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x3,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x3,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1336 <scriere_matrice+0x236>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x3,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x3,(%rax,%rcx,4)
jmp    1379 <scriere_matrice+0x279>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x3,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x3,(%rax,%rcx,4)
jmp    137e <scriere_matrice+0x27e>
cmpl   $0x4,-0x14(%rbp)
jne    1465 <scriere_matrice+0x365>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x4,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x4,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    141d <scriere_matrice+0x31d>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x4,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x4,(%rax,%rcx,4)
jmp    1460 <scriere_matrice+0x360>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x4,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x4,(%rax,%rcx,4)
jmp    1465 <scriere_matrice+0x365>
cmpl   $0x5,-0x14(%rbp)
jne    1603 <scriere_matrice+0x503>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x5,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    14e0 <scriere_matrice+0x3e0>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x5,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x5,(%rax,%rcx,4)
jmp    151e <scriere_matrice+0x41e>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x5,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x5,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1556 <scriere_matrice+0x456>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x5,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    158e <scriere_matrice+0x48e>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x5,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    15c6 <scriere_matrice+0x4c6>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x5,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
jne    15fe <scriere_matrice+0x4fe>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x5,(%rax,%rcx,4)
jmp    1603 <scriere_matrice+0x503>
cmpl   $0x6,-0x14(%rbp)
jne    17a1 <scriere_matrice+0x6a1>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x6,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    167e <scriere_matrice+0x57e>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x6,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x6,(%rax,%rcx,4)
jmp    16bc <scriere_matrice+0x5bc>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x6,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x6,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    16f4 <scriere_matrice+0x5f4>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x6,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    172c <scriere_matrice+0x62c>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x6,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    1764 <scriere_matrice+0x664>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x6,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
jne    179c <scriere_matrice+0x69c>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x6,(%rax,%rcx,4)
jmp    17a1 <scriere_matrice+0x6a1>
cmpl   $0x7,-0x14(%rbp)
jne    192b <scriere_matrice+0x82b>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x7,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    181c <scriere_matrice+0x71c>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x7,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x7,(%rax,%rcx,4)
jmp    185a <scriere_matrice+0x75a>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x7,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x7,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    188d <scriere_matrice+0x78d>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x7,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    18c0 <scriere_matrice+0x7c0>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x7,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    18f3 <scriere_matrice+0x7f3>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
movslq -0x10(%rbp),%rcx
movl   $0x7,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
jne    1926 <scriere_matrice+0x826>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x7,(%rax,%rcx,4)
jmp    192b <scriere_matrice+0x82b>
pop    %rbp
ret

x86 assembly (clang, -O2):
<scriere_matrice>:
add    $0xffffffff,%ecx
cmp    $0x6,%ecx
ja     14e9 <scriere_matrice+0x3e9>
lea    0xeed(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
movslq %esi,%rax
movslq %edx,%rcx
imul   $0x78,%rax,%rax
add    %rdi,%rax
movl   $0x1,(%rax,%rcx,4)
add    $0x1,%esi
movslq %esi,%rdx
imul   $0x78,%rdx,%rdx
add    %rdi,%rdx
movl   $0x1,(%rdx,%rcx,4)
movl   $0x1,-0x4(%rax,%rcx,4)
movl   $0x1,-0x4(%rdx,%rcx,4)
ret
movslq %esi,%rcx
movslq %edx,%rax
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x2,(%rcx,%rax,4)
test   $0x1,%r8b
jne    12ce <scriere_matrice+0x1ce>
movabs $0x200000002,%rdx
mov    %rdx,-0x8(%rcx,%rax,4)
movl   $0x2,0x4(%rcx,%rax,4)
ret
movslq %esi,%rcx
movslq %edx,%rax
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x3,(%rcx,%rax,4)
movl   $0x3,0x4(%rcx,%rax,4)
test   $0x1,%r8b
jne    130b <scriere_matrice+0x20b>
lea    -0x1(%rsi),%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x3,(%rcx,%rax,4)
add    $0x1,%rax
add    $0x1,%esi
movslq %esi,%rcx
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x3,(%rcx,%rax,4)
ret
movslq %esi,%rcx
movslq %edx,%rax
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x4,(%rcx,%rax,4)
lea    0x1(%rsi),%edx
movslq %edx,%rdx
imul   $0x78,%rdx,%rdx
add    %rdi,%rdx
movl   $0x4,(%rdx,%rax,4)
test   $0x1,%r8b
jne    1328 <scriere_matrice+0x228>
movl   $0x4,0x4(%rcx,%rax,4)
add    $0xffffffff,%esi
movslq %esi,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rdi
movl   $0x4,0x4(%rdi,%rax,4)
ret
movslq %esi,%r10
movslq %edx,%r9
imul   $0x78,%r10,%rax
add    %rdi,%rax
movl   $0x5,(%rax,%r9,4)
test   $0x1,%r8b
jne    1339 <scriere_matrice+0x239>
movslq %edx,%rcx
movl   $0x5,-0x4(%rax,%rcx,4)
lea    0x1(%rdx),%eax
movslq %eax,%r9
jmp    1353 <scriere_matrice+0x253>
movslq %esi,%r10
movslq %edx,%r9
imul   $0x78,%r10,%rax
add    %rdi,%rax
movl   $0x6,(%rax,%r9,4)
test   $0x1,%r8b
jne    1395 <scriere_matrice+0x295>
movslq %edx,%rcx
movl   $0x6,-0x4(%rax,%rcx,4)
lea    0x1(%rdx),%eax
movslq %eax,%r9
jmp    13af <scriere_matrice+0x2af>
movslq %esi,%rax
movslq %edx,%r9
imul   $0x78,%rax,%r11
add    %rdi,%r11
movl   $0x7,(%r11,%r9,4)
test   $0x1,%r8b
jne    13f1 <scriere_matrice+0x2f1>
movslq %edx,%rcx
movl   $0x7,-0x4(%r11,%rcx,4)
lea    0x1(%rdx),%ecx
movslq %ecx,%r10
jmp    140d <scriere_matrice+0x30d>
lea    -0x1(%rsi),%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x2,(%rcx,%rax,4)
lea    0x1(%rsi),%ecx
movslq %ecx,%rcx
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x2,(%rcx,%rax,4)
add    $0x2,%esi
movslq %esi,%rcx
imul   $0x78,%rcx,%rcx
add    %rdi,%rcx
movl   $0x2,(%rcx,%rax,4)
ret
add    $0x1,%esi
movslq %esi,%rcx
imul   $0x78,%rcx,%rcx
add    %rcx,%rdi
movl   $0x3,(%rdi,%rax,4)
movl   $0x3,-0x4(%rdi,%rax,4)
ret
movl   $0x4,-0x4(%rcx,%rax,4)
movl   $0x4,0x4(%rdx,%rax,4)
ret
lea    -0x1(%rsi),%eax
cltq
imul   $0x78,%rax,%rax
add    %rdi,%rax
movl   $0x5,(%rax,%r9,4)
lea    0x1(%rsi),%eax
movslq %eax,%r10
imul   $0x78,%r10,%rax
add    %rdi,%rax
lea    0x3(%r8),%ecx
test   %r8d,%r8d
cmovns %r8d,%ecx
movl   $0x5,(%rax,%r9,4)
and    $0xfffffffc,%ecx
sub    %ecx,%r8d
cmp    $0x3,%r8d
ja     14e9 <scriere_matrice+0x3e9>
lea    0xcb8(%rip),%rax
movslq (%rax,%r8,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%esi
jmp    146d <scriere_matrice+0x36d>
lea    -0x1(%rsi),%eax
cltq
imul   $0x78,%rax,%rax
add    %rdi,%rax
movl   $0x6,(%rax,%r9,4)
lea    0x1(%rsi),%eax
movslq %eax,%r10
imul   $0x78,%r10,%rax
add    %rdi,%rax
lea    0x3(%r8),%ecx
test   %r8d,%r8d
cmovns %r8d,%ecx
movl   $0x6,(%rax,%r9,4)
and    $0xfffffffc,%ecx
sub    %ecx,%r8d
cmp    $0x3,%r8d
ja     14e9 <scriere_matrice+0x3e9>
lea    0xc4c(%rip),%rax
movslq (%rax,%r8,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%esi
jmp    1486 <scriere_matrice+0x386>
lea    -0x1(%rsi),%eax
cltq
imul   $0x78,%rax,%rax
add    %rdi,%rax
movl   $0x7,(%rax,%r9,4)
lea    0x1(%rsi),%eax
cltq
mov    %r9,%r10
imul   $0x78,%rax,%rax
add    %rdi,%rax
lea    0x3(%r8),%ecx
test   %r8d,%r8d
cmovns %r8d,%ecx
movl   $0x7,(%rax,%r10,4)
and    $0xfffffffc,%ecx
sub    %ecx,%r8d
cmp    $0x3,%r8d
ja     14e9 <scriere_matrice+0x3e9>
lea    0xbde(%rip),%rax
movslq (%rax,%r8,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%esi
jmp    14ca <scriere_matrice+0x3ca>
add    $0x1,%esi
jmp    1454 <scriere_matrice+0x354>
add    $0xffffffff,%esi
movslq %esi,%rax
movslq %edx,%rcx
imul   $0x78,%rax,%rax
add    %rax,%rdi
movl   $0x5,0x4(%rdi,%rcx,4)
ret
add    $0xffffffff,%esi
movslq %esi,%rax
movslq %edx,%rcx
imul   $0x78,%rax,%rax
add    %rax,%rdi
movl   $0x5,-0x4(%rdi,%rcx,4)
ret
add    $0xffffffff,%esi
movslq %esi,%rax
movslq %edx,%rcx
imul   $0x78,%rax,%rax
add    %rax,%rdi
movl   $0x6,0x4(%rdi,%rcx,4)
ret
add    $0xffffffff,%esi
jmp    14a4 <scriere_matrice+0x3a4>
add    $0x1,%esi
movslq %esi,%rax
movslq %edx,%rcx
imul   $0x78,%rax,%rax
add    %rax,%rdi
movl   $0x6,-0x4(%rdi,%rcx,4)
ret
movslq %edx,%rax
movl   $0x7,0x4(%r11,%rax,4)
ret
add    $0xffffffff,%esi
movslq %esi,%rax
imul   $0x78,%rax,%rax
add    %rax,%rdi
movl   $0x7,(%rdi,%r9,4)
ret
movslq %edx,%rax
movl   $0x7,-0x4(%r11,%rax,4)
ret

LLVM IR (-O0):
define void @scriere_matrice([30 x i32]* %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = alloca [30 x i32]*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store [30 x i32]* %0, [30 x i32]** %6
store i32 %1, i32* %7
store i32 %2, i32* %8
store i32 %3, i32* %9
store i32 %4, i32* %10
%11 = load i32, i32* %9
%12 = icmp eq i32 %11, 1
br i1 %12, label %13, label %46
13: ; preds = %5
%14 = load [30 x i32]*, [30 x i32]** %6
%15 = load i32, i32* %7
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds [30 x i32], [30 x i32]* %14, i64 %16
%18 = load i32, i32* %8
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds [30 x i32], [30 x i32]* %17, i64 0, i64 %19
store i32 1, i32* %20
%21 = load [30 x i32]*, [30 x i32]** %6
%22 = load i32, i32* %7
%23 = add nsw i32 %22, 1
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds [30 x i32], [30 x i32]* %21, i64 %24
%26 = load i32, i32* %8
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds [30 x i32], [30 x i32]* %25, i64 0, i64 %27
store i32 1, i32* %28
%29 = load [30 x i32]*, [30 x i32]** %6
%30 = load i32, i32* %7
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [30 x i32], [30 x i32]* %29, i64 %31
%33 = load i32, i32* %8
%34 = sub nsw i32 %33, 1
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [30 x i32], [30 x i32]* %32, i64 0, i64 %35
store i32 1, i32* %36
%37 = load [30 x i32]*, [30 x i32]** %6
%38 = load i32, i32* %7
%39 = add nsw i32 %38, 1
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [30 x i32], [30 x i32]* %37, i64 %40
%42 = load i32, i32* %8
%43 = sub nsw i32 %42, 1
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [30 x i32], [30 x i32]* %41, i64 0, i64 %44
store i32 1, i32* %45
br label %46
46: ; preds = %13, %5
%47 = load i32, i32* %9
%48 = icmp eq i32 %47, 2
br i1 %48, label %49, label %111
49: ; preds = %46
%50 = load [30 x i32]*, [30 x i32]** %6
%51 = load i32, i32* %7
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [30 x i32], [30 x i32]* %50, i64 %52
%54 = load i32, i32* %8
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds [30 x i32], [30 x i32]* %53, i64 0, i64 %55
store i32 2, i32* %56
%57 = load i32, i32* %10
%58 = srem i32 %57, 2
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %85
60: ; preds = %49
%61 = load [30 x i32]*, [30 x i32]** %6
%62 = load i32, i32* %7
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [30 x i32], [30 x i32]* %61, i64 %63
%65 = load i32, i32* %8
%66 = sub nsw i32 %65, 1
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [30 x i32], [30 x i32]* %64, i64 0, i64 %67
store i32 2, i32* %68
%69 = load [30 x i32]*, [30 x i32]** %6
%70 = load i32, i32* %7
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [30 x i32], [30 x i32]* %69, i64 %71
%73 = load i32, i32* %8
%74 = sub nsw i32 %73, 2
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds [30 x i32], [30 x i32]* %72, i64 0, i64 %75
store i32 2, i32* %76
%77 = load [30 x i32]*, [30 x i32]** %6
%78 = load i32, i32* %7
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds [30 x i32], [30 x i32]* %77, i64 %79
%81 = load i32, i32* %8
%82 = add nsw i32 %81, 1
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds [30 x i32], [30 x i32]* %80, i64 0, i64 %83
store i32 2, i32* %84
br label %110
85: ; preds = %49
%86 = load [30 x i32]*, [30 x i32]** %6
%87 = load i32, i32* %7
%88 = sub nsw i32 %87, 1
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [30 x i32], [30 x i32]* %86, i64 %89
%91 = load i32, i32* %8
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds [30 x i32], [30 x i32]* %90, i64 0, i64 %92
store i32 2, i32* %93
%94 = load [30 x i32]*, [30 x i32]** %6
%95 = load i32, i32* %7
%96 = add nsw i32 %95, 1
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [30 x i32], [30 x i32]* %94, i64 %97
%99 = load i32, i32* %8
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [30 x i32], [30 x i32]* %98, i64 0, i64 %100
store i32 2, i32* %101
%102 = load [30 x i32]*, [30 x i32]** %6
%103 = load i32, i32* %7
%104 = add nsw i32 %103, 2
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [30 x i32], [30 x i32]* %102, i64 %105
%107 = load i32, i32* %8
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds [30 x i32], [30 x i32]* %106, i64 0, i64 %108
store i32 2, i32* %109
br label %110
110: ; preds = %85, %60
br label %111
111: ; preds = %110, %46
%112 = load i32, i32* %9
%113 = icmp eq i32 %112, 3
br i1 %113, label %114, label %170
114: ; preds = %111
%115 = load [30 x i32]*, [30 x i32]** %6
%116 = load i32, i32* %7
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [30 x i32], [30 x i32]* %115, i64 %117
%119 = load i32, i32* %8
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds [30 x i32], [30 x i32]* %118, i64 0, i64 %120
store i32 3, i32* %121
%122 = load [30 x i32]*, [30 x i32]** %6
%123 = load i32, i32* %7
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds [30 x i32], [30 x i32]* %122, i64 %124
%126 = load i32, i32* %8
%127 = add nsw i32 %126, 1
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [30 x i32], [30 x i32]* %125, i64 0, i64 %128
store i32 3, i32* %129
%130 = load i32, i32* %10
%131 = srem i32 %130, 2
%132 = icmp eq i32 %131, 0
br i1 %132, label %133, label %151
133: ; preds = %114
%134 = load [30 x i32]*, [30 x i32]** %6
%135 = load i32, i32* %7
%136 = sub nsw i32 %135, 1
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds [30 x i32], [30 x i32]* %134, i64 %137
%139 = load i32, i32* %8
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds [30 x i32], [30 x i32]* %138, i64 0, i64 %140
store i32 3, i32* %141
%142 = load [30 x i32]*, [30 x i32]** %6
%143 = load i32, i32* %7
%144 = add nsw i32 %143, 1
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds [30 x i32], [30 x i32]* %142, i64 %145
%147 = load i32, i32* %8
%148 = add nsw i32 %147, 1
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds [30 x i32], [30 x i32]* %146, i64 0, i64 %149
store i32 3, i32* %150
br label %169
151: ; preds = %114
%152 = load [30 x i32]*, [30 x i32]** %6
%153 = load i32, i32* %7
%154 = add nsw i32 %153, 1
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds [30 x i32], [30 x i32]* %152, i64 %155
%157 = load i32, i32* %8
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds [30 x i32], [30 x i32]* %156, i64 0, i64 %158
store i32 3, i32* %159
%160 = load [30 x i32]*, [30 x i32]** %6
%161 = load i32, i32* %7
%162 = add nsw i32 %161, 1
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [30 x i32], [30 x i32]* %160, i64 %163
%165 = load i32, i32* %8
%166 = sub nsw i32 %165, 1
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds [30 x i32], [30 x i32]* %164, i64 0, i64 %167
store i32 3, i32* %168
br label %169
169: ; preds = %151, %133
br label %170
170: ; preds = %169, %111
%171 = load i32, i32* %9
%172 = icmp eq i32 %171, 4
br i1 %172, label %173, label %229
173: ; preds = %170
%174 = load [30 x i32]*, [30 x i32]** %6
%175 = load i32, i32* %7
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [30 x i32], [30 x i32]* %174, i64 %176
%178 = load i32, i32* %8
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [30 x i32], [30 x i32]* %177, i64 0, i64 %179
store i32 4, i32* %180
%181 = load [30 x i32]*, [30 x i32]** %6
%182 = load i32, i32* %7
%183 = add nsw i32 %182, 1
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds [30 x i32], [30 x i32]* %181, i64 %184
%186 = load i32, i32* %8
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds [30 x i32], [30 x i32]* %185, i64 0, i64 %187
store i32 4, i32* %188
%189 = load i32, i32* %10
%190 = srem i32 %189, 2
%191 = icmp eq i32 %190, 0
br i1 %191, label %192, label %210
192: ; preds = %173
%193 = load [30 x i32]*, [30 x i32]** %6
%194 = load i32, i32* %7
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds [30 x i32], [30 x i32]* %193, i64 %195
%197 = load i32, i32* %8
%198 = add nsw i32 %197, 1
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds [30 x i32], [30 x i32]* %196, i64 0, i64 %199
store i32 4, i32* %200
%201 = load [30 x i32]*, [30 x i32]** %6
%202 = load i32, i32* %7
%203 = sub nsw i32 %202, 1
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds [30 x i32], [30 x i32]* %201, i64 %204
%206 = load i32, i32* %8
%207 = add nsw i32 %206, 1
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds [30 x i32], [30 x i32]* %205, i64 0, i64 %208
store i32 4, i32* %209
br label %228
210: ; preds = %173
%211 = load [30 x i32]*, [30 x i32]** %6
%212 = load i32, i32* %7
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [30 x i32], [30 x i32]* %211, i64 %213
%215 = load i32, i32* %8
%216 = sub nsw i32 %215, 1
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [30 x i32], [30 x i32]* %214, i64 0, i64 %217
store i32 4, i32* %218
%219 = load [30 x i32]*, [30 x i32]** %6
%220 = load i32, i32* %7
%221 = add nsw i32 %220, 1
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds [30 x i32], [30 x i32]* %219, i64 %222
%224 = load i32, i32* %8
%225 = add nsw i32 %224, 1
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds [30 x i32], [30 x i32]* %223, i64 0, i64 %226
store i32 4, i32* %227
br label %228
228: ; preds = %210, %192
br label %229
229: ; preds = %228, %170
%230 = load i32, i32* %9
%231 = icmp eq i32 %230, 5
br i1 %231, label %232, label %334
232: ; preds = %229
%233 = load [30 x i32]*, [30 x i32]** %6
%234 = load i32, i32* %7
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds [30 x i32], [30 x i32]* %233, i64 %235
%237 = load i32, i32* %8
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds [30 x i32], [30 x i32]* %236, i64 0, i64 %238
store i32 5, i32* %239
%240 = load i32, i32* %10
%241 = srem i32 %240, 2
%242 = icmp eq i32 %241, 0
br i1 %242, label %243, label %260
243: ; preds = %232
%244 = load [30 x i32]*, [30 x i32]** %6
%245 = load i32, i32* %7
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds [30 x i32], [30 x i32]* %244, i64 %246
%248 = load i32, i32* %8
%249 = sub nsw i32 %248, 1
%250 = sext i32 %249 to i64
%251 = getelementptr inbounds [30 x i32], [30 x i32]* %247, i64 0, i64 %250
store i32 5, i32* %251
%252 = load [30 x i32]*, [30 x i32]** %6
%253 = load i32, i32* %7
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds [30 x i32], [30 x i32]* %252, i64 %254
%256 = load i32, i32* %8
%257 = add nsw i32 %256, 1
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds [30 x i32], [30 x i32]* %255, i64 0, i64 %258
store i32 5, i32* %259
br label %277
260: ; preds = %232
%261 = load [30 x i32]*, [30 x i32]** %6
%262 = load i32, i32* %7
%263 = sub nsw i32 %262, 1
%264 = sext i32 %263 to i64
%265 = getelementptr inbounds [30 x i32], [30 x i32]* %261, i64 %264
%266 = load i32, i32* %8
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds [30 x i32], [30 x i32]* %265, i64 0, i64 %267
store i32 5, i32* %268
%269 = load [30 x i32]*, [30 x i32]** %6
%270 = load i32, i32* %7
%271 = add nsw i32 %270, 1
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds [30 x i32], [30 x i32]* %269, i64 %272
%274 = load i32, i32* %8
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds [30 x i32], [30 x i32]* %273, i64 0, i64 %275
store i32 5, i32* %276
br label %277
277: ; preds = %260, %243
%278 = load i32, i32* %10
%279 = srem i32 %278, 4
%280 = icmp eq i32 %279, 0
br i1 %280, label %281, label %291
281: ; preds = %277
%282 = load [30 x i32]*, [30 x i32]** %6
%283 = load i32, i32* %7
%284 = add nsw i32 %283, 1
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds [30 x i32], [30 x i32]* %282, i64 %285
%287 = load i32, i32* %8
%288 = sub nsw i32 %287, 1
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds [30 x i32], [30 x i32]* %286, i64 0, i64 %289
store i32 5, i32* %290
br label %291
291: ; preds = %281, %277
%292 = load i32, i32* %10
%293 = srem i32 %292, 4
%294 = icmp eq i32 %293, 1
br i1 %294, label %295, label %305
295: ; preds = %291
%296 = load [30 x i32]*, [30 x i32]** %6
%297 = load i32, i32* %7
%298 = add nsw i32 %297, 1
%299 = sext i32 %298 to i64
%300 = getelementptr inbounds [30 x i32], [30 x i32]* %296, i64 %299
%301 = load i32, i32* %8
%302 = add nsw i32 %301, 1
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds [30 x i32], [30 x i32]* %300, i64 0, i64 %303
store i32 5, i32* %304
br label %305
305: ; preds = %295, %291
%306 = load i32, i32* %10
%307 = srem i32 %306, 4
%308 = icmp eq i32 %307, 2
br i1 %308, label %309, label %319
309: ; preds = %305
%310 = load [30 x i32]*, [30 x i32]** %6
%311 = load i32, i32* %7
%312 = sub nsw i32 %311, 1
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds [30 x i32], [30 x i32]* %310, i64 %313
%315 = load i32, i32* %8
%316 = add nsw i32 %315, 1
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds [30 x i32], [30 x i32]* %314, i64 0, i64 %317
store i32 5, i32* %318
br label %319
319: ; preds = %309, %305
%320 = load i32, i32* %10
%321 = srem i32 %320, 4
%322 = icmp eq i32 %321, 3
br i1 %322, label %323, label %333
323: ; preds = %319
%324 = load [30 x i32]*, [30 x i32]** %6
%325 = load i32, i32* %7
%326 = sub nsw i32 %325, 1
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds [30 x i32], [30 x i32]* %324, i64 %327
%329 = load i32, i32* %8
%330 = sub nsw i32 %329, 1
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds [30 x i32], [30 x i32]* %328, i64 0, i64 %331
store i32 5, i32* %332
br label %333
333: ; preds = %323, %319
br label %334
334: ; preds = %333, %229
%335 = load i32, i32* %9
%336 = icmp eq i32 %335, 6
br i1 %336, label %337, label %439
337: ; preds = %334
%338 = load [30 x i32]*, [30 x i32]** %6
%339 = load i32, i32* %7
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds [30 x i32], [30 x i32]* %338, i64 %340
%342 = load i32, i32* %8
%343 = sext i32 %342 to i64
%344 = getelementptr inbounds [30 x i32], [30 x i32]* %341, i64 0, i64 %343
store i32 6, i32* %344
%345 = load i32, i32* %10
%346 = srem i32 %345, 2
%347 = icmp eq i32 %346, 0
br i1 %347, label %348, label %365
348: ; preds = %337
%349 = load [30 x i32]*, [30 x i32]** %6
%350 = load i32, i32* %7
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds [30 x i32], [30 x i32]* %349, i64 %351
%353 = load i32, i32* %8
%354 = sub nsw i32 %353, 1
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds [30 x i32], [30 x i32]* %352, i64 0, i64 %355
store i32 6, i32* %356
%357 = load [30 x i32]*, [30 x i32]** %6
%358 = load i32, i32* %7
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds [30 x i32], [30 x i32]* %357, i64 %359
%361 = load i32, i32* %8
%362 = add nsw i32 %361, 1
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds [30 x i32], [30 x i32]* %360, i64 0, i64 %363
store i32 6, i32* %364
br label %382
365: ; preds = %337
%366 = load [30 x i32]*, [30 x i32]** %6
%367 = load i32, i32* %7
%368 = sub nsw i32 %367, 1
%369 = sext i32 %368 to i64
%370 = getelementptr inbounds [30 x i32], [30 x i32]* %366, i64 %369
%371 = load i32, i32* %8
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds [30 x i32], [30 x i32]* %370, i64 0, i64 %372
store i32 6, i32* %373
%374 = load [30 x i32]*, [30 x i32]** %6
%375 = load i32, i32* %7
%376 = add nsw i32 %375, 1
%377 = sext i32 %376 to i64
%378 = getelementptr inbounds [30 x i32], [30 x i32]* %374, i64 %377
%379 = load i32, i32* %8
%380 = sext i32 %379 to i64
%381 = getelementptr inbounds [30 x i32], [30 x i32]* %378, i64 0, i64 %380
store i32 6, i32* %381
br label %382
382: ; preds = %365, %348
%383 = load i32, i32* %10
%384 = srem i32 %383, 4
%385 = icmp eq i32 %384, 0
br i1 %385, label %386, label %396
386: ; preds = %382
%387 = load [30 x i32]*, [30 x i32]** %6
%388 = load i32, i32* %7
%389 = add nsw i32 %388, 1
%390 = sext i32 %389 to i64
%391 = getelementptr inbounds [30 x i32], [30 x i32]* %387, i64 %390
%392 = load i32, i32* %8
%393 = add nsw i32 %392, 1
%394 = sext i32 %393 to i64
%395 = getelementptr inbounds [30 x i32], [30 x i32]* %391, i64 0, i64 %394
store i32 6, i32* %395
br label %396
396: ; preds = %386, %382
%397 = load i32, i32* %10
%398 = srem i32 %397, 4
%399 = icmp eq i32 %398, 1
br i1 %399, label %400, label %410
400: ; preds = %396
%401 = load [30 x i32]*, [30 x i32]** %6
%402 = load i32, i32* %7
%403 = sub nsw i32 %402, 1
%404 = sext i32 %403 to i64
%405 = getelementptr inbounds [30 x i32], [30 x i32]* %401, i64 %404
%406 = load i32, i32* %8
%407 = add nsw i32 %406, 1
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds [30 x i32], [30 x i32]* %405, i64 0, i64 %408
store i32 6, i32* %409
br label %410
410: ; preds = %400, %396
%411 = load i32, i32* %10
%412 = srem i32 %411, 4
%413 = icmp eq i32 %412, 2
br i1 %413, label %414, label %424
414: ; preds = %410
%415 = load [30 x i32]*, [30 x i32]** %6
%416 = load i32, i32* %7
%417 = sub nsw i32 %416, 1
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds [30 x i32], [30 x i32]* %415, i64 %418
%420 = load i32, i32* %8
%421 = sub nsw i32 %420, 1
%422 = sext i32 %421 to i64
%423 = getelementptr inbounds [30 x i32], [30 x i32]* %419, i64 0, i64 %422
store i32 6, i32* %423
br label %424
424: ; preds = %414, %410
%425 = load i32, i32* %10
%426 = srem i32 %425, 4
%427 = icmp eq i32 %426, 3
br i1 %427, label %428, label %438
428: ; preds = %424
%429 = load [30 x i32]*, [30 x i32]** %6
%430 = load i32, i32* %7
%431 = add nsw i32 %430, 1
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds [30 x i32], [30 x i32]* %429, i64 %432
%434 = load i32, i32* %8
%435 = sub nsw i32 %434, 1
%436 = sext i32 %435 to i64
%437 = getelementptr inbounds [30 x i32], [30 x i32]* %433, i64 0, i64 %436
store i32 6, i32* %437
br label %438
438: ; preds = %428, %424
br label %439
439: ; preds = %438, %334
%440 = load i32, i32* %9
%441 = icmp eq i32 %440, 7
br i1 %441, label %442, label %540
442: ; preds = %439
%443 = load [30 x i32]*, [30 x i32]** %6
%444 = load i32, i32* %7
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds [30 x i32], [30 x i32]* %443, i64 %445
%447 = load i32, i32* %8
%448 = sext i32 %447 to i64
%449 = getelementptr inbounds [30 x i32], [30 x i32]* %446, i64 0, i64 %448
store i32 7, i32* %449
%450 = load i32, i32* %10
%451 = srem i32 %450, 2
%452 = icmp eq i32 %451, 0
br i1 %452, label %453, label %470
453: ; preds = %442
%454 = load [30 x i32]*, [30 x i32]** %6
%455 = load i32, i32* %7
%456 = sext i32 %455 to i64
%457 = getelementptr inbounds [30 x i32], [30 x i32]* %454, i64 %456
%458 = load i32, i32* %8
%459 = sub nsw i32 %458, 1
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds [30 x i32], [30 x i32]* %457, i64 0, i64 %460
store i32 7, i32* %461
%462 = load [30 x i32]*, [30 x i32]** %6
%463 = load i32, i32* %7
%464 = sext i32 %463 to i64
%465 = getelementptr inbounds [30 x i32], [30 x i32]* %462, i64 %464
%466 = load i32, i32* %8
%467 = add nsw i32 %466, 1
%468 = sext i32 %467 to i64
%469 = getelementptr inbounds [30 x i32], [30 x i32]* %465, i64 0, i64 %468
store i32 7, i32* %469
br label %487
470: ; preds = %442
%471 = load [30 x i32]*, [30 x i32]** %6
%472 = load i32, i32* %7
%473 = sub nsw i32 %472, 1
%474 = sext i32 %473 to i64
%475 = getelementptr inbounds [30 x i32], [30 x i32]* %471, i64 %474
%476 = load i32, i32* %8
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds [30 x i32], [30 x i32]* %475, i64 0, i64 %477
store i32 7, i32* %478
%479 = load [30 x i32]*, [30 x i32]** %6
%480 = load i32, i32* %7
%481 = add nsw i32 %480, 1
%482 = sext i32 %481 to i64
%483 = getelementptr inbounds [30 x i32], [30 x i32]* %479, i64 %482
%484 = load i32, i32* %8
%485 = sext i32 %484 to i64
%486 = getelementptr inbounds [30 x i32], [30 x i32]* %483, i64 0, i64 %485
store i32 7, i32* %486
br label %487
487: ; preds = %470, %453
%488 = load i32, i32* %10
%489 = srem i32 %488, 4
%490 = icmp eq i32 %489, 0
br i1 %490, label %491, label %500
491: ; preds = %487
%492 = load [30 x i32]*, [30 x i32]** %6
%493 = load i32, i32* %7
%494 = add nsw i32 %493, 1
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds [30 x i32], [30 x i32]* %492, i64 %495
%497 = load i32, i32* %8
%498 = sext i32 %497 to i64
%499 = getelementptr inbounds [30 x i32], [30 x i32]* %496, i64 0, i64 %498
store i32 7, i32* %499
br label %500
500: ; preds = %491, %487
%501 = load i32, i32* %10
%502 = srem i32 %501, 4
%503 = icmp eq i32 %502, 1
br i1 %503, label %504, label %513
504: ; preds = %500
%505 = load [30 x i32]*, [30 x i32]** %6
%506 = load i32, i32* %7
%507 = sext i32 %506 to i64
%508 = getelementptr inbounds [30 x i32], [30 x i32]* %505, i64 %507
%509 = load i32, i32* %8
%510 = add nsw i32 %509, 1
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds [30 x i32], [30 x i32]* %508, i64 0, i64 %511
store i32 7, i32* %512
br label %513
513: ; preds = %504, %500
%514 = load i32, i32* %10
%515 = srem i32 %514, 4
%516 = icmp eq i32 %515, 2
br i1 %516, label %517, label %526
517: ; preds = %513
%518 = load [30 x i32]*, [30 x i32]** %6
%519 = load i32, i32* %7
%520 = sub nsw i32 %519, 1
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds [30 x i32], [30 x i32]* %518, i64 %521
%523 = load i32, i32* %8
%524 = sext i32 %523 to i64
%525 = getelementptr inbounds [30 x i32], [30 x i32]* %522, i64 0, i64 %524
store i32 7, i32* %525
br label %526
526: ; preds = %517, %513
%527 = load i32, i32* %10
%528 = srem i32 %527, 4
%529 = icmp eq i32 %528, 3
br i1 %529, label %530, label %539
530: ; preds = %526
%531 = load [30 x i32]*, [30 x i32]** %6
%532 = load i32, i32* %7
%533 = sext i32 %532 to i64
%534 = getelementptr inbounds [30 x i32], [30 x i32]* %531, i64 %533
%535 = load i32, i32* %8
%536 = sub nsw i32 %535, 1
%537 = sext i32 %536 to i64
%538 = getelementptr inbounds [30 x i32], [30 x i32]* %534, i64 0, i64 %537
store i32 7, i32* %538
br label %539
539: ; preds = %530, %526
br label %540
540: ; preds = %539, %439
ret void
}

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