#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
scalar_t__ abs(int);
unsigned char kolizjaZDolu(unsigned char *, int, int);
unsigned char kolizjaZGory(unsigned char *, int, int);
unsigned char kolizjaZLewej(unsigned char *, int, int);
unsigned char kolizjaZPrawej(unsigned char *, int, int);
int /*<<< orphan*/ skasujBlokiDol(unsigned char *, int, int);
int /*<<< orphan*/ skasujBlokiGora(unsigned char *, int, int);
int /*<<< orphan*/ skasujBlokiLewa(unsigned char *, int, int);
int /*<<< orphan*/ skasujBlokiPrawa(unsigned char *, int, int);
void ZmienParametryPilki(signed int *X, signed int *Y, signed int *PredX,
                         signed int *PredY, signed int *AktPredX,
                         signed int *AktPredY, signed int PaletkaX,
                         signed int *IloscBlokow, unsigned char *Lbuffer) {
  unsigned char KolizjaLewa = kolizjaZLewej(Lbuffer, *X, *Y),
                KolizjaPrawa = kolizjaZPrawej(Lbuffer, *X, *Y),
                KolizjaGora = kolizjaZGory(Lbuffer, *X, *Y),
                KolizjaDol = kolizjaZDolu(Lbuffer, *X, *Y);
  if ((*AktPredX) == 0 && (*AktPredY) == 0) {
    (*AktPredX) = (*PredX);
    (*AktPredY) = (*PredY);
  }
  if (abs(*AktPredX) >= abs(*AktPredY)) {
    if ((*AktPredX) > 0) {
      switch (KolizjaPrawa) {
      case 0:
        (*AktPredX)--;
        (*X)++;
        break;
      case 1:
        (*AktPredX) = -(*AktPredX);
        (*PredX) = -(*PredX);
        break;
      case 3:
        (*AktPredX) = -(*AktPredX);
        (*PredX) = -(*PredX);
        skasujBlokiPrawa(Lbuffer, (*X), (*Y));
        (*IloscBlokow)--;
        break;
      }
    } else {
      switch (KolizjaLewa) {
      case 0:
        (*AktPredX)++;
        (*X)--;
        break;
      case 1:
        (*AktPredX) = -(*AktPredX);
        (*PredX) = -(*PredX);
        break;
      case 3:
        (*AktPredX) = -(*AktPredX);
        (*PredX) = -(*PredX);
        skasujBlokiLewa(Lbuffer, (*X), (*Y));
        (*IloscBlokow)--;
        break;
      }
    }
  }
  if (abs(*AktPredY) >= abs(*AktPredX)) {
    if (*AktPredY > 0) {
      switch (KolizjaDol) {
      case 0:
        (*AktPredY)--;
        (*Y)++;
        break;
      case 3:
        (*AktPredY) = -(*AktPredY);
        (*PredY) = -(*PredY);
        skasujBlokiDol(Lbuffer, (*X), (*Y));
        (*IloscBlokow)--;
        break;
      case 5:
        if ((*AktPredX) > 0) {
          if ((PaletkaX - (*X)) > 4) {
            (*PredX) = 0;
            (*PredY) = -3;
            (*AktPredX) = (*PredX);
            (*AktPredY) = (*PredY);
          } else if ((PaletkaX - (*X)) > 2) {
            (*PredX) = 1;
            (*PredY) = -2;
            (*AktPredX) = (*PredX);
            (*AktPredY) = (*PredY);
          } else if ((PaletkaX - (*X)) < -2) {
            (*PredX) = 2;
            (*PredY) = -1;
            (*AktPredX) = (*PredX);
            (*AktPredY) = (*PredY);
          } else {
            (*AktPredY) = -(*AktPredY);
            (*PredY) = -(*PredY);
            (*AktPredX) = (*PredX);
            (*AktPredY) = (*PredY);
          }
        } else if ((PaletkaX - (*X)) < -4) {
          (*PredX) = 0;
          (*PredY) = -3;
          (*AktPredX) = (*PredX);
          (*AktPredY) = (*PredY);
        } else if ((PaletkaX - (*X)) < -2) {
          (*PredX) = -1;
          (*PredY) = -2;
          (*AktPredX) = (*PredX);
          (*AktPredY) = (*PredY);
        } else if ((PaletkaX - (*X)) > 2) {
          (*PredX) = -2;
          (*PredY) = -1;
          (*AktPredX) = (*PredX);
          (*AktPredY) = (*PredY);
        } else {
          (*PredY) = -(*PredY);
          (*AktPredY) = (*PredY);
        }
        break;
      case 2:
        break;
      }
    } else {
      switch (KolizjaGora) {
      case 0:
        (*AktPredY)++;
        (*Y)--;
        break;
      case 1:
        (*PredY) = -(*PredY);
        (*AktPredY) = -(*AktPredY);
        break;
      case 3:
        (*PredY) = -(*PredY);
        (*AktPredY) = -(*AktPredY);
        skasujBlokiGora(Lbuffer, (*X), (*Y));
        (*IloscBlokow)--;
        break;
      }
    }
  }
}


x86 assembly (clang, -O0):
<ZmienParametryPilki>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1090 <kolizjaZLewej@plt>
mov    %al,-0x31(%rbp)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1060 <kolizjaZPrawej@plt>
mov    %al,-0x32(%rbp)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   10a0 <kolizjaZGory@plt>
mov    %al,-0x33(%rbp)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1040 <kolizjaZDolu@plt>
mov    %al,-0x34(%rbp)
mov    -0x28(%rbp),%rax
cmpl   $0x0,(%rax)
jne    124d <ZmienParametryPilki+0xbd>
mov    -0x30(%rbp),%rax
cmpl   $0x0,(%rax)
jne    124d <ZmienParametryPilki+0xbd>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
call   1050 <abs@plt>
mov    %rax,-0x40(%rbp)
mov    -0x30(%rbp),%rax
mov    (%rax),%edi
call   1050 <abs@plt>
mov    %rax,%rcx
mov    -0x40(%rbp),%rax
cmp    %rcx,%rax
jl     13ef <ZmienParametryPilki+0x25f>
mov    -0x28(%rbp),%rax
cmpl   $0x0,(%rax)
jle    1337 <ZmienParametryPilki+0x1a7>
movzbl -0x32(%rbp),%eax
mov    %eax,-0x44(%rbp)
test   %eax,%eax
je     12ba <ZmienParametryPilki+0x12a>
jmp    1298 <ZmienParametryPilki+0x108>
mov    -0x44(%rbp),%eax
sub    $0x1,%eax
je     12d5 <ZmienParametryPilki+0x145>
jmp    12a9 <ZmienParametryPilki+0x119>
mov    -0x44(%rbp),%eax
sub    $0x3,%eax
je     12f6 <ZmienParametryPilki+0x166>
jmp    1332 <ZmienParametryPilki+0x1a2>
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
jmp    1332 <ZmienParametryPilki+0x1a2>
mov    -0x28(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    1332 <ZmienParametryPilki+0x1a2>
mov    -0x28(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1080 <skasujBlokiPrawa@plt>
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    13ea <ZmienParametryPilki+0x25a>
movzbl -0x31(%rbp),%eax
mov    %eax,-0x48(%rbp)
test   %eax,%eax
je     136d <ZmienParametryPilki+0x1dd>
jmp    134b <ZmienParametryPilki+0x1bb>
mov    -0x48(%rbp),%eax
sub    $0x1,%eax
je     1388 <ZmienParametryPilki+0x1f8>
jmp    135c <ZmienParametryPilki+0x1cc>
mov    -0x48(%rbp),%eax
sub    $0x3,%eax
je     13a9 <ZmienParametryPilki+0x219>
jmp    13e5 <ZmienParametryPilki+0x255>
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    13e5 <ZmienParametryPilki+0x255>
mov    -0x28(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    13e5 <ZmienParametryPilki+0x255>
mov    -0x28(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   10b0 <skasujBlokiLewa@plt>
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    13ea <ZmienParametryPilki+0x25a>
jmp    13ef <ZmienParametryPilki+0x25f>
mov    -0x30(%rbp),%rax
mov    (%rax),%edi
call   1050 <abs@plt>
mov    %rax,-0x50(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%edi
call   1050 <abs@plt>
mov    %rax,%rcx
mov    -0x50(%rbp),%rax
cmp    %rcx,%rax
jl     177a <ZmienParametryPilki+0x5ea>
mov    -0x30(%rbp),%rax
cmpl   $0x0,(%rax)
jle    16c2 <ZmienParametryPilki+0x532>
movzbl -0x34(%rbp),%eax
mov    %rax,-0x58(%rbp)
sub    $0x5,%rax
ja     16bd <ZmienParametryPilki+0x52d>
mov    -0x58(%rbp),%rax
lea    0xbbd(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x30(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
jmp    16bd <ZmienParametryPilki+0x52d>
mov    -0x30(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1030 <skasujBlokiDol@plt>
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    16bd <ZmienParametryPilki+0x52d>
mov    -0x28(%rbp),%rax
cmpl   $0x0,(%rax)
jle    15c1 <ZmienParametryPilki+0x431>
mov    0x10(%rbp),%eax
mov    -0x8(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0x4,%eax
jle    14f8 <ZmienParametryPilki+0x368>
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x20(%rbp),%rax
movl   $0xfffffffd,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    15bc <ZmienParametryPilki+0x42c>
mov    0x10(%rbp),%eax
mov    -0x8(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0x2,%eax
jle    153b <ZmienParametryPilki+0x3ab>
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
mov    -0x20(%rbp),%rax
movl   $0xfffffffe,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    15b7 <ZmienParametryPilki+0x427>
mov    0x10(%rbp),%eax
mov    -0x8(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0xfffffffe,%eax
jge    157e <ZmienParametryPilki+0x3ee>
mov    -0x18(%rbp),%rax
movl   $0x2,(%rax)
mov    -0x20(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    15b2 <ZmienParametryPilki+0x422>
mov    -0x30(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    15b7 <ZmienParametryPilki+0x427>
jmp    15bc <ZmienParametryPilki+0x42c>
jmp    16b3 <ZmienParametryPilki+0x523>
mov    0x10(%rbp),%eax
mov    -0x8(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0xfffffffc,%eax
jge    1604 <ZmienParametryPilki+0x474>
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x20(%rbp),%rax
movl   $0xfffffffd,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    16ae <ZmienParametryPilki+0x51e>
mov    0x10(%rbp),%eax
mov    -0x8(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0xfffffffe,%eax
jge    1647 <ZmienParametryPilki+0x4b7>
mov    -0x18(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x20(%rbp),%rax
movl   $0xfffffffe,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    16a9 <ZmienParametryPilki+0x519>
mov    0x10(%rbp),%eax
mov    -0x8(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0x2,%eax
jle    168a <ZmienParametryPilki+0x4fa>
mov    -0x18(%rbp),%rax
movl   $0xfffffffe,(%rax)
mov    -0x20(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    16a4 <ZmienParametryPilki+0x514>
mov    -0x20(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    16a9 <ZmienParametryPilki+0x519>
jmp    16ae <ZmienParametryPilki+0x51e>
jmp    16b3 <ZmienParametryPilki+0x523>
jmp    16bd <ZmienParametryPilki+0x52d>
jmp    16bd <ZmienParametryPilki+0x52d>
jmp    1775 <ZmienParametryPilki+0x5e5>
movzbl -0x33(%rbp),%eax
mov    %eax,-0x5c(%rbp)
test   %eax,%eax
je     16f8 <ZmienParametryPilki+0x568>
jmp    16d6 <ZmienParametryPilki+0x546>
mov    -0x5c(%rbp),%eax
sub    $0x1,%eax
je     1713 <ZmienParametryPilki+0x583>
jmp    16e7 <ZmienParametryPilki+0x557>
mov    -0x5c(%rbp),%eax
sub    $0x3,%eax
je     1734 <ZmienParametryPilki+0x5a4>
jmp    1770 <ZmienParametryPilki+0x5e0>
mov    -0x30(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    1770 <ZmienParametryPilki+0x5e0>
mov    -0x20(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x30(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    1770 <ZmienParametryPilki+0x5e0>
mov    -0x20(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x30(%rbp),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
mov    0x20(%rbp),%rdi
mov    -0x8(%rbp),%rax
mov    (%rax),%esi
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
call   1070 <skasujBlokiGora@plt>
mov    0x18(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    1775 <ZmienParametryPilki+0x5e5>
jmp    177a <ZmienParametryPilki+0x5ea>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ZmienParametryPilki>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r9,%rbp
mov    %r8,%rbx
mov    %rcx,%r15
mov    %rdx,0x10(%rsp)
mov    %rsi,%r13
mov    %rdi,%r14
mov    0x60(%rsp),%r12
mov    (%rdi),%esi
mov    0x0(%r13),%edx
mov    %r12,%rdi
call   1090 <kolizjaZLewej@plt>
mov    %al,0xd(%rsp)
mov    (%r14),%esi
mov    0x0(%r13),%edx
mov    %r12,%rdi
call   1060 <kolizjaZPrawej@plt>
mov    %al,0xf(%rsp)
mov    (%r14),%esi
mov    0x0(%r13),%edx
mov    %r12,%rdi
call   10a0 <kolizjaZGory@plt>
mov    %al,0xe(%rsp)
mov    (%r14),%esi
mov    0x0(%r13),%edx
mov    %r12,%rdi
call   1040 <kolizjaZDolu@plt>
mov    %eax,%r12d
mov    %rbx,(%rsp)
mov    (%rbx),%edi
test   %edi,%edi
jne    1228 <ZmienParametryPilki+0x98>
xor    %edi,%edi
cmpl   $0x0,0x0(%rbp)
jne    1228 <ZmienParametryPilki+0x98>
mov    0x10(%rsp),%rax
mov    (%rax),%eax
mov    (%rsp),%rcx
mov    %eax,(%rcx)
mov    (%r15),%eax
mov    %eax,0x0(%rbp)
mov    (%rcx),%edi
mov    %r15,%rbx
call   1050 <abs@plt>
mov    %rax,%r15
mov    0x0(%rbp),%edi
call   1050 <abs@plt>
cmp    %rax,%r15
jl     12ef <ZmienParametryPilki+0x15f>
mov    (%rsp),%rax
mov    (%rax),%eax
test   %eax,%eax
jle    1273 <ZmienParametryPilki+0xe3>
mov    0xf(%rsp),%cl
cmp    $0x3,%cl
je     12a5 <ZmienParametryPilki+0x115>
cmp    $0x1,%cl
je     1294 <ZmienParametryPilki+0x104>
test   %cl,%cl
jne    12ef <ZmienParametryPilki+0x15f>
add    $0xffffffff,%eax
mov    (%rsp),%rcx
mov    %eax,(%rcx)
addl   $0x1,(%r14)
jmp    12ef <ZmienParametryPilki+0x15f>
mov    0xd(%rsp),%cl
cmp    $0x3,%cl
je     12c7 <ZmienParametryPilki+0x137>
cmp    $0x1,%cl
je     1294 <ZmienParametryPilki+0x104>
test   %cl,%cl
jne    12ef <ZmienParametryPilki+0x15f>
add    $0x1,%eax
mov    (%rsp),%rcx
mov    %eax,(%rcx)
addl   $0xffffffff,(%r14)
jmp    12ef <ZmienParametryPilki+0x15f>
neg    %eax
mov    (%rsp),%rcx
mov    %eax,(%rcx)
mov    0x10(%rsp),%rax
negl   (%rax)
jmp    12ef <ZmienParametryPilki+0x15f>
neg    %eax
mov    (%rsp),%rcx
mov    %eax,(%rcx)
mov    0x10(%rsp),%rax
negl   (%rax)
mov    (%r14),%esi
mov    0x0(%r13),%edx
mov    0x60(%rsp),%rdi
call   1080 <skasujBlokiPrawa@plt>
jmp    12e7 <ZmienParametryPilki+0x157>
neg    %eax
mov    (%rsp),%rcx
mov    %eax,(%rcx)
mov    0x10(%rsp),%rax
negl   (%rax)
mov    (%r14),%esi
mov    0x0(%r13),%edx
mov    0x60(%rsp),%rdi
call   10b0 <skasujBlokiLewa@plt>
mov    0x58(%rsp),%rax
addl   $0xffffffff,(%rax)
mov    %rbp,%r15
mov    0x0(%rbp),%edi
call   1050 <abs@plt>
mov    %rax,%rbp
mov    (%rsp),%rax
mov    (%rax),%edi
call   1050 <abs@plt>
cmp    %rax,%rbp
jl     144f <ZmienParametryPilki+0x2bf>
mov    (%r15),%eax
test   %eax,%eax
jle    133d <ZmienParametryPilki+0x1ad>
cmp    $0x5,%r12b
je     1367 <ZmienParametryPilki+0x1d7>
cmp    $0x3,%r12b
je     1392 <ZmienParametryPilki+0x202>
test   %r12b,%r12b
jne    144f <ZmienParametryPilki+0x2bf>
add    $0xffffffff,%eax
mov    %eax,(%r15)
addl   $0x1,0x0(%r13)
jmp    144f <ZmienParametryPilki+0x2bf>
mov    0xe(%rsp),%cl
cmp    $0x3,%cl
je     13ac <ZmienParametryPilki+0x21c>
cmp    $0x1,%cl
je     13cf <ZmienParametryPilki+0x23f>
test   %cl,%cl
jne    144f <ZmienParametryPilki+0x2bf>
add    $0x1,%eax
mov    %eax,(%r15)
addl   $0xffffffff,0x0(%r13)
jmp    144f <ZmienParametryPilki+0x2bf>
mov    0x50(%rsp),%ecx
sub    (%r14),%ecx
mov    (%rsp),%rdx
cmpl   $0x0,(%rdx)
jle    13d6 <ZmienParametryPilki+0x246>
cmp    $0x5,%ecx
jge    13db <ZmienParametryPilki+0x24b>
cmp    $0x3,%ecx
jl     1406 <ZmienParametryPilki+0x276>
mov    0x10(%rsp),%rax
movl   $0x1,(%rax)
jmp    13fe <ZmienParametryPilki+0x26e>
neg    %eax
mov    %eax,(%r15)
negl   (%rbx)
mov    (%r14),%esi
mov    0x0(%r13),%edx
mov    0x60(%rsp),%rdi
call   1030 <skasujBlokiDol@plt>
jmp    13c2 <ZmienParametryPilki+0x232>
negl   (%rbx)
negl   (%r15)
mov    (%r14),%esi
mov    0x0(%r13),%edx
mov    0x60(%rsp),%rdi
call   1070 <skasujBlokiGora@plt>
mov    0x58(%rsp),%rax
addl   $0xffffffff,(%rax)
jmp    144f <ZmienParametryPilki+0x2bf>
negl   (%rbx)
negl   (%r15)
jmp    144f <ZmienParametryPilki+0x2bf>
cmp    $0xfffffffb,%ecx
jg     13ee <ZmienParametryPilki+0x25e>
mov    0x10(%rsp),%rax
movl   $0x0,(%rax)
movl   $0xfffffffd,(%rbx)
jmp    1442 <ZmienParametryPilki+0x2b2>
cmp    $0xfffffffd,%ecx
jg     141e <ZmienParametryPilki+0x28e>
mov    0x10(%rsp),%rax
movl   $0xffffffff,(%rax)
movl   $0xfffffffe,(%rbx)
jmp    1442 <ZmienParametryPilki+0x2b2>
cmp    $0xfffffffd,%ecx
jg     1436 <ZmienParametryPilki+0x2a6>
mov    0x10(%rsp),%rax
movl   $0x2,(%rax)
movl   $0xffffffff,(%rbx)
jmp    1442 <ZmienParametryPilki+0x2b2>
cmp    $0x3,%ecx
jl     145e <ZmienParametryPilki+0x2ce>
mov    0x10(%rsp),%rax
movl   $0xfffffffe,(%rax)
movl   $0xffffffff,(%rbx)
jmp    1442 <ZmienParametryPilki+0x2b2>
neg    %eax
mov    %eax,(%r15)
negl   (%rbx)
mov    0x10(%rsp),%rax
mov    (%rax),%eax
mov    (%rsp),%rcx
mov    %eax,(%rcx)
mov    (%rbx),%eax
mov    %eax,(%r15)
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %eax,%eax
sub    (%rbx),%eax
mov    %eax,(%rbx)
jmp    144c <ZmienParametryPilki+0x2bc>

LLVM IR (-O0):
define void @ZmienParametryPilki(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32 %6, i32* %7, i8* %8) {
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i32*
%13 = alloca i32*
%14 = alloca i32*
%15 = alloca i32*
%16 = alloca i32
%17 = alloca i32*
%18 = alloca i8*
%19 = alloca i8
%20 = alloca i8
%21 = alloca i8
%22 = alloca i8
store i32* %0, i32** %10
store i32* %1, i32** %11
store i32* %2, i32** %12
store i32* %3, i32** %13
store i32* %4, i32** %14
store i32* %5, i32** %15
store i32 %6, i32* %16
store i32* %7, i32** %17
store i8* %8, i8** %18
%23 = load i8*, i8** %18
%24 = load i32*, i32** %10
%25 = load i32, i32* %24
%26 = load i32*, i32** %11
%27 = load i32, i32* %26
%28 = call zeroext i8 @kolizjaZLewej(i8* %23, i32 %25, i32 %27)
store i8 %28, i8* %19
%29 = load i8*, i8** %18
%30 = load i32*, i32** %10
%31 = load i32, i32* %30
%32 = load i32*, i32** %11
%33 = load i32, i32* %32
%34 = call zeroext i8 @kolizjaZPrawej(i8* %29, i32 %31, i32 %33)
store i8 %34, i8* %20
%35 = load i8*, i8** %18
%36 = load i32*, i32** %10
%37 = load i32, i32* %36
%38 = load i32*, i32** %11
%39 = load i32, i32* %38
%40 = call zeroext i8 @kolizjaZGory(i8* %35, i32 %37, i32 %39)
store i8 %40, i8* %21
%41 = load i8*, i8** %18
%42 = load i32*, i32** %10
%43 = load i32, i32* %42
%44 = load i32*, i32** %11
%45 = load i32, i32* %44
%46 = call zeroext i8 @kolizjaZDolu(i8* %41, i32 %43, i32 %45)
store i8 %46, i8* %22
%47 = load i32*, i32** %14
%48 = load i32, i32* %47
%49 = icmp eq i32 %48, 0
br i1 %49, label %50, label %61
50: ; preds = %9
%51 = load i32*, i32** %15
%52 = load i32, i32* %51
%53 = icmp eq i32 %52, 0
br i1 %53, label %54, label %61
54: ; preds = %50
%55 = load i32*, i32** %12
%56 = load i32, i32* %55
%57 = load i32*, i32** %14
store i32 %56, i32* %57
%58 = load i32*, i32** %13
%59 = load i32, i32* %58
%60 = load i32*, i32** %15
store i32 %59, i32* %60
br label %61
61: ; preds = %54, %50, %9
%62 = load i32*, i32** %14
%63 = load i32, i32* %62
%64 = call i64 @abs(i32 %63)
%65 = load i32*, i32** %15
%66 = load i32, i32* %65
%67 = call i64 @abs(i32 %66)
%68 = icmp sge i64 %64, %67
br i1 %68, label %69, label %150
69: ; preds = %61
%70 = load i32*, i32** %14
%71 = load i32, i32* %70
%72 = icmp sgt i32 %71, 0
br i1 %72, label %73, label %111
73: ; preds = %69
%74 = load i8, i8* %20
%75 = zext i8 %74 to i32
switch i32 %75, label %110 [
i32 0, label %76
i32 1, label %83
i32 3, label %92
]
76: ; preds = %73
%77 = load i32*, i32** %14
%78 = load i32, i32* %77
%79 = add nsw i32 %78, -1
store i32 %79, i32* %77
%80 = load i32*, i32** %10
%81 = load i32, i32* %80
%82 = add nsw i32 %81, 1
store i32 %82, i32* %80
br label %110
83: ; preds = %73
%84 = load i32*, i32** %14
%85 = load i32, i32* %84
%86 = sub nsw i32 0, %85
%87 = load i32*, i32** %14
store i32 %86, i32* %87
%88 = load i32*, i32** %12
%89 = load i32, i32* %88
%90 = sub nsw i32 0, %89
%91 = load i32*, i32** %12
store i32 %90, i32* %91
br label %110
92: ; preds = %73
%93 = load i32*, i32** %14
%94 = load i32, i32* %93
%95 = sub nsw i32 0, %94
%96 = load i32*, i32** %14
store i32 %95, i32* %96
%97 = load i32*, i32** %12
%98 = load i32, i32* %97
%99 = sub nsw i32 0, %98
%100 = load i32*, i32** %12
store i32 %99, i32* %100
%101 = load i8*, i8** %18
%102 = load i32*, i32** %10
%103 = load i32, i32* %102
%104 = load i32*, i32** %11
%105 = load i32, i32* %104
%106 = call i32 @skasujBlokiPrawa(i8* %101, i32 %103, i32 %105)
%107 = load i32*, i32** %17
%108 = load i32, i32* %107
%109 = add nsw i32 %108, -1
store i32 %109, i32* %107
br label %110
110: ; preds = %73, %92, %83, %76
br label %149
111: ; preds = %69
%112 = load i8, i8* %19
%113 = zext i8 %112 to i32
switch i32 %113, label %148 [
i32 0, label %114
i32 1, label %121
i32 3, label %130
]
114: ; preds = %111
%115 = load i32*, i32** %14
%116 = load i32, i32* %115
%117 = add nsw i32 %116, 1
store i32 %117, i32* %115
%118 = load i32*, i32** %10
%119 = load i32, i32* %118
%120 = add nsw i32 %119, -1
store i32 %120, i32* %118
br label %148
121: ; preds = %111
%122 = load i32*, i32** %14
%123 = load i32, i32* %122
%124 = sub nsw i32 0, %123
%125 = load i32*, i32** %14
store i32 %124, i32* %125
%126 = load i32*, i32** %12
%127 = load i32, i32* %126
%128 = sub nsw i32 0, %127
%129 = load i32*, i32** %12
store i32 %128, i32* %129
br label %148
130: ; preds = %111
%131 = load i32*, i32** %14
%132 = load i32, i32* %131
%133 = sub nsw i32 0, %132
%134 = load i32*, i32** %14
store i32 %133, i32* %134
%135 = load i32*, i32** %12
%136 = load i32, i32* %135
%137 = sub nsw i32 0, %136
%138 = load i32*, i32** %12
store i32 %137, i32* %138
%139 = load i8*, i8** %18
%140 = load i32*, i32** %10
%141 = load i32, i32* %140
%142 = load i32*, i32** %11
%143 = load i32, i32* %142
%144 = call i32 @skasujBlokiLewa(i8* %139, i32 %141, i32 %143)
%145 = load i32*, i32** %17
%146 = load i32, i32* %145
%147 = add nsw i32 %146, -1
store i32 %147, i32* %145
br label %148
148: ; preds = %111, %130, %121, %114
br label %149
149: ; preds = %148, %110
br label %150
150: ; preds = %149, %61
%151 = load i32*, i32** %15
%152 = load i32, i32* %151
%153 = call i64 @abs(i32 %152)
%154 = load i32*, i32** %14
%155 = load i32, i32* %154
%156 = call i64 @abs(i32 %155)
%157 = icmp sge i64 %153, %156
br i1 %157, label %158, label %355
158: ; preds = %150
%159 = load i32*, i32** %15
%160 = load i32, i32* %159
%161 = icmp sgt i32 %160, 0
br i1 %161, label %162, label %316
162: ; preds = %158
%163 = load i8, i8* %22
%164 = zext i8 %163 to i32
switch i32 %164, label %315 [
i32 0, label %165
i32 3, label %172
i32 5, label %190
i32 2, label %314
]
165: ; preds = %162
%166 = load i32*, i32** %15
%167 = load i32, i32* %166
%168 = add nsw i32 %167, -1
store i32 %168, i32* %166
%169 = load i32*, i32** %11
%170 = load i32, i32* %169
%171 = add nsw i32 %170, 1
store i32 %171, i32* %169
br label %315
172: ; preds = %162
%173 = load i32*, i32** %15
%174 = load i32, i32* %173
%175 = sub nsw i32 0, %174
%176 = load i32*, i32** %15
store i32 %175, i32* %176
%177 = load i32*, i32** %13
%178 = load i32, i32* %177
%179 = sub nsw i32 0, %178
%180 = load i32*, i32** %13
store i32 %179, i32* %180
%181 = load i8*, i8** %18
%182 = load i32*, i32** %10
%183 = load i32, i32* %182
%184 = load i32*, i32** %11
%185 = load i32, i32* %184
%186 = call i32 @skasujBlokiDol(i8* %181, i32 %183, i32 %185)
%187 = load i32*, i32** %17
%188 = load i32, i32* %187
%189 = add nsw i32 %188, -1
store i32 %189, i32* %187
br label %315
190: ; preds = %162
%191 = load i32*, i32** %14
%192 = load i32, i32* %191
%193 = icmp sgt i32 %192, 0
br i1 %193, label %194, label %257
194: ; preds = %190
%195 = load i32, i32* %16
%196 = load i32*, i32** %10
%197 = load i32, i32* %196
%198 = sub nsw i32 %195, %197
%199 = icmp sgt i32 %198, 4
br i1 %199, label %200, label %209
200: ; preds = %194
%201 = load i32*, i32** %12
store i32 0, i32* %201
%202 = load i32*, i32** %13
store i32 -3, i32* %202
%203 = load i32*, i32** %12
%204 = load i32, i32* %203
%205 = load i32*, i32** %14
store i32 %204, i32* %205
%206 = load i32*, i32** %13
%207 = load i32, i32* %206
%208 = load i32*, i32** %15
store i32 %207, i32* %208
br label %256
209: ; preds = %194
%210 = load i32, i32* %16
%211 = load i32*, i32** %10
%212 = load i32, i32* %211
%213 = sub nsw i32 %210, %212
%214 = icmp sgt i32 %213, 2
br i1 %214, label %215, label %224
215: ; preds = %209
%216 = load i32*, i32** %12
store i32 1, i32* %216
%217 = load i32*, i32** %13
store i32 -2, i32* %217
%218 = load i32*, i32** %12
%219 = load i32, i32* %218
%220 = load i32*, i32** %14
store i32 %219, i32* %220
%221 = load i32*, i32** %13
%222 = load i32, i32* %221
%223 = load i32*, i32** %15
store i32 %222, i32* %223
br label %255
224: ; preds = %209
%225 = load i32, i32* %16
%226 = load i32*, i32** %10
%227 = load i32, i32* %226
%228 = sub nsw i32 %225, %227
%229 = icmp slt i32 %228, -2
br i1 %229, label %230, label %239
230: ; preds = %224
%231 = load i32*, i32** %12
store i32 2, i32* %231
%232 = load i32*, i32** %13
store i32 -1, i32* %232
%233 = load i32*, i32** %12
%234 = load i32, i32* %233
%235 = load i32*, i32** %14
store i32 %234, i32* %235
%236 = load i32*, i32** %13
%237 = load i32, i32* %236
%238 = load i32*, i32** %15
store i32 %237, i32* %238
br label %254
239: ; preds = %224
%240 = load i32*, i32** %15
%241 = load i32, i32* %240
%242 = sub nsw i32 0, %241
%243 = load i32*, i32** %15
store i32 %242, i32* %243
%244 = load i32*, i32** %13
%245 = load i32, i32* %244
%246 = sub nsw i32 0, %245
%247 = load i32*, i32** %13
store i32 %246, i32* %247
%248 = load i32*, i32** %12
%249 = load i32, i32* %248
%250 = load i32*, i32** %14
store i32 %249, i32* %250
%251 = load i32*, i32** %13
%252 = load i32, i32* %251
%253 = load i32*, i32** %15
store i32 %252, i32* %253
br label %254
254: ; preds = %239, %230
br label %255
255: ; preds = %254, %215
br label %256
256: ; preds = %255, %200
br label %313
257: ; preds = %190
%258 = load i32, i32* %16
%259 = load i32*, i32** %10
%260 = load i32, i32* %259
%261 = sub nsw i32 %258, %260
%262 = icmp slt i32 %261, -4
br i1 %262, label %263, label %272
263: ; preds = %257
%264 = load i32*, i32** %12
store i32 0, i32* %264
%265 = load i32*, i32** %13
store i32 -3, i32* %265
%266 = load i32*, i32** %12
%267 = load i32, i32* %266
%268 = load i32*, i32** %14
store i32 %267, i32* %268
%269 = load i32*, i32** %13
%270 = load i32, i32* %269
%271 = load i32*, i32** %15
store i32 %270, i32* %271
br label %312
272: ; preds = %257
%273 = load i32, i32* %16
%274 = load i32*, i32** %10
%275 = load i32, i32* %274
%276 = sub nsw i32 %273, %275
%277 = icmp slt i32 %276, -2
br i1 %277, label %278, label %287
278: ; preds = %272
%279 = load i32*, i32** %12
store i32 -1, i32* %279
%280 = load i32*, i32** %13
store i32 -2, i32* %280
%281 = load i32*, i32** %12
%282 = load i32, i32* %281
%283 = load i32*, i32** %14
store i32 %282, i32* %283
%284 = load i32*, i32** %13
%285 = load i32, i32* %284
%286 = load i32*, i32** %15
store i32 %285, i32* %286
br label %311
287: ; preds = %272
%288 = load i32, i32* %16
%289 = load i32*, i32** %10
%290 = load i32, i32* %289
%291 = sub nsw i32 %288, %290
%292 = icmp sgt i32 %291, 2
br i1 %292, label %293, label %302
293: ; preds = %287
%294 = load i32*, i32** %12
store i32 -2, i32* %294
%295 = load i32*, i32** %13
store i32 -1, i32* %295
%296 = load i32*, i32** %12
%297 = load i32, i32* %296
%298 = load i32*, i32** %14
store i32 %297, i32* %298
%299 = load i32*, i32** %13
%300 = load i32, i32* %299
%301 = load i32*, i32** %15
store i32 %300, i32* %301
br label %310
302: ; preds = %287
%303 = load i32*, i32** %13
%304 = load i32, i32* %303
%305 = sub nsw i32 0, %304
%306 = load i32*, i32** %13
store i32 %305, i32* %306
%307 = load i32*, i32** %13
%308 = load i32, i32* %307
%309 = load i32*, i32** %15
store i32 %308, i32* %309
br label %310
310: ; preds = %302, %293
br label %311
311: ; preds = %310, %278
br label %312
312: ; preds = %311, %263
br label %313
313: ; preds = %312, %256
br label %315
314: ; preds = %162
br label %315
315: ; preds = %162, %314, %313, %172, %165
br label %354
316: ; preds = %158
%317 = load i8, i8* %21
%318 = zext i8 %317 to i32
switch i32 %318, label %353 [
i32 0, label %319
i32 1, label %326
i32 3, label %335
]
319: ; preds = %316
%320 = load i32*, i32** %15
%321 = load i32, i32* %320
%322 = add nsw i32 %321, 1
store i32 %322, i32* %320
%323 = load i32*, i32** %11
%324 = load i32, i32* %323
%325 = add nsw i32 %324, -1
store i32 %325, i32* %323
br label %353
326: ; preds = %316
%327 = load i32*, i32** %13
%328 = load i32, i32* %327
%329 = sub nsw i32 0, %328
%330 = load i32*, i32** %13
store i32 %329, i32* %330
%331 = load i32*, i32** %15
%332 = load i32, i32* %331
%333 = sub nsw i32 0, %332
%334 = load i32*, i32** %15
store i32 %333, i32* %334
br label %353
335: ; preds = %316
%336 = load i32*, i32** %13
%337 = load i32, i32* %336
%338 = sub nsw i32 0, %337
%339 = load i32*, i32** %13
store i32 %338, i32* %339
%340 = load i32*, i32** %15
%341 = load i32, i32* %340
%342 = sub nsw i32 0, %341
%343 = load i32*, i32** %15
store i32 %342, i32* %343
%344 = load i8*, i8** %18
%345 = load i32*, i32** %10
%346 = load i32, i32* %345
%347 = load i32*, i32** %11
%348 = load i32, i32* %347
%349 = call i32 @skasujBlokiGora(i8* %344, i32 %346, i32 %348)
%350 = load i32*, i32** %17
%351 = load i32, i32* %350
%352 = add nsw i32 %351, -1
store i32 %352, i32* %350
br label %353
353: ; preds = %316, %335, %326, %319
br label %354
354: ; preds = %353, %315
br label %355
355: ; preds = %354, %150
ret void
}

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