// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/misc/codecs.cpp
// Function: CompressDelta(int*, int*, int, int, smooth::IO::OutStream*)
int CompressDelta(int line[], int prevline[], int x, int parts, PCIOut out)
{
	int	 pixb1 = (x > 0 ? line[x - 1] : 0);

	int	 md = 0;
	int	 bias;
	int	 redbias;
	int	 greenbias;
	int	 bluebias;
	int	 alphabias;

	switch (parts)
	{
		case 1:
			bias = line[x] - (pixb1 + prevline[x]) / 2;

			if (bias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - bias, 3);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(bias - 1, 3);
			}

			break;
		case 3:
			redbias	  = Color(line[x]).GetRed()   - (Color(pixb1).GetRed()	 + Color(prevline[x]).GetRed())	  / 2;
			greenbias = Color(line[x]).GetGreen() - (Color(pixb1).GetGreen() + Color(prevline[x]).GetGreen()) / 2;
			bluebias  = Color(line[x]).GetBlue()  - (Color(pixb1).GetBlue()	 + Color(prevline[x]).GetBlue())  / 2;

			if (((redbias > -Math::Pow(2l, 2)) && (redbias <= Math::Pow(2l, 2))) && ((greenbias > -Math::Pow(2l, 2)) && (greenbias <= Math::Pow(2l, 2))) && ((bluebias > -Math::Pow(2l, 2)) && (bluebias <= Math::Pow(2l, 2))))
			{
				out->OutputBits(0, 2);
				md = 2;
			}
			else if (((redbias > -Math::Pow(2l, 3)) && (redbias <= Math::Pow(2l, 3))) && ((greenbias > -Math::Pow(2l, 3)) && (greenbias <= Math::Pow(2l, 3))) && ((bluebias > -Math::Pow(2l, 3)) && (bluebias <= Math::Pow(2l, 3))))
			{
				out->OutputBits(1, 2);
				md = 3;
			}
			else if (((redbias > -Math::Pow(2l, 4)) && (redbias <= Math::Pow(2l, 4))) && ((greenbias > -Math::Pow(2l, 4)) && (greenbias <= Math::Pow(2l, 4))) && ((bluebias > -Math::Pow(2l, 4)) && (bluebias <= Math::Pow(2l, 4))))
			{
				out->OutputBits(2, 2);
				md = 4;
			}
			else if (((redbias > -Math::Pow(2l, 5)) && (redbias <= Math::Pow(2l, 5))) && ((greenbias > -Math::Pow(2l, 5)) && (greenbias <= Math::Pow(2l, 5))) && ((bluebias > -Math::Pow(2l, 5)) && (bluebias <= Math::Pow(2l, 5))))
			{
				out->OutputBits(3, 2);
				md = 5;
			}

			if (redbias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - redbias, md);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(redbias - 1, md);
			}
			if (greenbias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - greenbias, md);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(greenbias - 1, md);
			}
			if (bluebias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - bluebias, md);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(bluebias - 1, md);
			}

			break;
		case 4:
			redbias	  = Color(line[x]).GetRed()   - (Color(pixb1).GetRed()	 + Color(prevline[x]).GetRed())	  / 2;
			greenbias = Color(line[x]).GetGreen() - (Color(pixb1).GetGreen() + Color(prevline[x]).GetGreen()) / 2;
			bluebias  = Color(line[x]).GetBlue()  - (Color(pixb1).GetBlue()	 + Color(prevline[x]).GetBlue())  / 2;
			alphabias = Color(line[x]).GetAlpha() - (Color(pixb1).GetAlpha() + Color(prevline[x]).GetAlpha()) / 2;

			if (((redbias > -Math::Pow(2l, 2)) && (redbias <= Math::Pow(2l, 2))) && ((greenbias > -Math::Pow(2l, 2)) && (greenbias <= Math::Pow(2l, 2))) && ((bluebias > -Math::Pow(2l, 2)) && (bluebias <= Math::Pow(2l, 2))) && ((alphabias > -Math::Pow(2l, 2)) && (alphabias <= Math::Pow(2l, 2))))
			{
				out->OutputBits(0, 2);
				md = 2;
			}
			else if (((redbias > -Math::Pow(2l, 3)) && (redbias <= Math::Pow(2l, 3))) && ((greenbias > -Math::Pow(2l, 3)) && (greenbias <= Math::Pow(2l, 3))) && ((bluebias > -Math::Pow(2l, 3)) && (bluebias <= Math::Pow(2l, 3))) && ((alphabias > -Math::Pow(2l, 3)) && (alphabias <= Math::Pow(2l, 3))))
			{
				out->OutputBits(1, 2);
				md = 3;
			}
			else if (((redbias > -Math::Pow(2l, 4)) && (redbias <= Math::Pow(2l, 4))) && ((greenbias > -Math::Pow(2l, 4)) && (greenbias <= Math::Pow(2l, 4))) && ((bluebias > -Math::Pow(2l, 4)) && (bluebias <= Math::Pow(2l, 4))) && ((alphabias > -Math::Pow(2l, 4)) && (alphabias <= Math::Pow(2l, 4))))
			{
				out->OutputBits(2, 2);
				md = 4;
			}
			else if (((redbias > -Math::Pow(2l, 5)) && (redbias <= Math::Pow(2l, 5))) && ((greenbias > -Math::Pow(2l, 5)) && (greenbias <= Math::Pow(2l, 5))) && ((bluebias > -Math::Pow(2l, 5)) && (bluebias <= Math::Pow(2l, 5))) && ((alphabias > -Math::Pow(2l, 5)) && (alphabias <= Math::Pow(2l, 5))))
			{
				out->OutputBits(3, 2);
				md = 5;
			}

			if (redbias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - redbias, md);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(redbias - 1, md);
			}
			if (greenbias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - greenbias, md);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(greenbias - 1, md);
			}
			if (bluebias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - bluebias, md);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(bluebias - 1, md);
			}
			if (alphabias <= 0)
			{
				out->OutputBits(0, 1);
				out->OutputBits(0 - alphabias, md);
			}
			else
			{
				out->OutputBits(1, 1);
				out->OutputBits(alphabias - 1, md);
			}

			break;
	}

	return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r8, %rbx
testl %edx, %edx
jle 0xb86bc
movl %edx, %eax
movl -0x4(%rdi,%rax,4), %eax
jmp 0xb86be
xorl %eax, %eax
cmpl $0x4, %ecx
je 0xb8af4
cmpl $0x3, %ecx
je 0xb870e
cmpl $0x1, %ecx
jne 0xb9156
movslq %edx, %rcx
movl (%rdi,%rcx,4), %r14d
addl (%rsi,%rcx,4), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
subl %ecx, %r14d
testl %r14d, %r14d
jle 0xb9021
movl $0x1, %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x57ce0
decl %r14d
jmp 0xb9033
movslq %edx, %rcx
movl (%rdi,%rcx,4), %r14d
movl $0xff, %edx
movl %r14d, %r12d
andl %edx, %r12d
movl (%rsi,%rcx,4), %ecx
movl %eax, %esi
andl %edx, %esi
movl %ecx, %edi
andl %edx, %edi
addl %esi, %edi
shrl %edi
subl %edi, %r12d
movl %r14d, %r15d
shrl $0x8, %r15d
andl %edx, %r15d
movl %eax, %esi
shrl $0x8, %esi
movl %ecx, %edi
shrl $0x8, %edi
andl %edx, %esi
andl %edx, %edi
addl %esi, %edi
shrl %edi
subl %edi, %r15d
shrl $0x10, %r14d
andl %edx, %r14d
shrl $0x10, %eax
shrl $0x10, %ecx
andl %edx, %eax
andl %edx, %ecx
addl %eax, %ecx
shrl %ecx
subl %ecx, %r14d
cvtsi2sd %r12d, %xmm0
movsd %xmm0, 0x8(%rsp)
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
xorpd 0x3ad25(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb884a
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb884a
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
xorpd 0x3acd6(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb884a
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb884a
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %r13d
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
xorpd 0x3ac8b(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb884a
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jae 0xb903d
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
xorpd 0x3ac4f(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8925
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb8925
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
xorpd 0x3ac00(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8925
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8925
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rsp)
movl $0x3, %r13d
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
xorpd 0x3abb5(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8925
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
movl $0x1, %esi
ucomisd (%rsp), %xmm0
jae 0xb903f
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
xorpd 0x3ab74(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8a00
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb8a00
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
xorpd 0x3ab25(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8a00
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8a00
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rsp)
movl $0x4, %r13d
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
xorpd 0x3aada(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8a00
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
movl $0x2, %esi
ucomisd (%rsp), %xmm0
jae 0xb903f
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
xorpd 0x3aa99(%rip), %xmm0    # 0xf34b0
xorl %ebp, %ebp
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb90a5
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb90a5
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, 0x8(%rsp)
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
xorpd 0x3aa47(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb90a5
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb90a5
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x8(%rsp)
movl $0x5, %r13d
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
xorpd 0x3a9f1(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb90a5
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
movl $0x3, %esi
ucomisd 0x8(%rsp), %xmm0
jae 0xb903f
jmp 0xb90a5
movslq %edx, %rcx
movl (%rdi,%rcx,4), %r14d
movl $0xff, %edx
movl %r14d, %r13d
andl %edx, %r13d
movl (%rsi,%rcx,4), %ecx
movl %eax, %esi
andl %edx, %esi
movl %ecx, %edi
andl %edx, %edi
addl %esi, %edi
shrl %edi
subl %edi, %r13d
movl %r14d, %r12d
shrl $0x8, %r12d
andl %edx, %r12d
movl %eax, %esi
shrl $0x8, %esi
movl %ecx, %edi
shrl $0x8, %edi
andl %edx, %esi
andl %edx, %edi
addl %esi, %edi
shrl %edi
subl %edi, %r12d
movl %r14d, %r15d
shrl $0x10, %r15d
andl %edx, %r15d
movl %eax, %esi
shrl $0x10, %esi
movl %ecx, %edi
shrl $0x10, %edi
andl %edx, %esi
andl %edx, %edi
addl %esi, %edi
shrl %edi
subl %edi, %r15d
shrl $0x18, %r14d
shrl $0x18, %eax
shrl $0x18, %ecx
addl %eax, %ecx
shrl %ecx
subl %ecx, %r14d
cvtsi2sd %r13d, %xmm0
movsd %xmm0, 0x8(%rsp)
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
xorpd 0x3a927(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8c8f
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb8c8f
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
xorpd 0x3a8d8(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8c8f
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8c8f
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
xorpd 0x3a88b(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8c8f
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8c8f
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
xorpd 0x3a846(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8c8f
movl $0x2, %edi
movl $0x2, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jae 0xb9051
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
xorpd 0x3a80a(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8dbb
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb8dbb
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
xorpd 0x3a7bb(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8dbb
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8dbb
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
xorpd 0x3a76e(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8dbb
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8dbb
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x10(%rsp)
movl $0x3, (%rsp)
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
xorpd 0x3a721(%rip), %xmm0    # 0xf34b0
movsd 0x10(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8dbb
movl $0x2, %edi
movl $0x3, %esi
callq 0x56010
movl $0x1, %esi
ucomisd 0x10(%rsp), %xmm0
jae 0xb905a
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
xorpd 0x3a6de(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8ee7
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb8ee7
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
xorpd 0x3a68f(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8ee7
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8ee7
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, (%rsp)
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
xorpd 0x3a642(%rip), %xmm0    # 0xf34b0
movsd (%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8ee7
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
ucomisd (%rsp), %xmm0
jb 0xb8ee7
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x10(%rsp)
movl $0x4, (%rsp)
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
xorpd 0x3a5f5(%rip), %xmm0    # 0xf34b0
movsd 0x10(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb8ee7
movl $0x2, %edi
movl $0x4, %esi
callq 0x56010
movl $0x2, %esi
ucomisd 0x10(%rsp), %xmm0
jae 0xb905a
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
xorpd 0x3a5b2(%rip), %xmm0    # 0xf34b0
xorl %ebp, %ebp
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb906a
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb906a
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movsd %xmm0, 0x8(%rsp)
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
xorpd 0x3a560(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb906a
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb906a
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
movsd %xmm0, 0x8(%rsp)
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
xorpd 0x3a510(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb906a
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
ucomisd 0x8(%rsp), %xmm0
jb 0xb906a
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x8(%rsp)
movl $0x5, (%rsp)
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
xorpd 0x3a4b9(%rip), %xmm0    # 0xf34b0
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0xb906a
movl $0x2, %edi
movl $0x5, %esi
callq 0x56010
movl $0x3, %esi
ucomisd 0x8(%rsp), %xmm0
jae 0xb905a
jmp 0xb906a
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0x57ce0
negl %r14d
movl $0x3, %ebp
jmp 0xb9149
xorl %esi, %esi
movq %rbx, %rdi
movl $0x2, %edx
callq 0x57ce0
movl %r13d, %ebp
jmp 0xb90a5
movl $0x2, (%rsp)
xorl %esi, %esi
movq %rbx, %rdi
movl $0x2, %edx
callq 0x57ce0
movl (%rsp), %ebp
testl %r13d, %r13d
jle 0xb9086
movl $0x1, %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x57ce0
decl %r13d
jmp 0xb9098
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0x57ce0
negl %r13d
movl %r13d, %esi
movq %rbx, %rdi
movl %ebp, %edx
callq 0x57ce0
testl %r12d, %r12d
jle 0xb90c1
movl $0x1, %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x57ce0
decl %r12d
jmp 0xb90d3
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0x57ce0
negl %r12d
movl %r12d, %esi
movq %rbx, %rdi
movl %ebp, %edx
callq 0x57ce0
testl %r15d, %r15d
jle 0xb90fc
movl $0x1, %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x57ce0
decl %r15d
jmp 0xb910e
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0x57ce0
negl %r15d
movl %r15d, %esi
movq %rbx, %rdi
movl %ebp, %edx
callq 0x57ce0
testl %r14d, %r14d
jle 0xb9137
movl $0x1, %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x57ce0
decl %r14d
jmp 0xb9149
movq %rbx, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0x57ce0
negl %r14d
movl %r14d, %esi
movq %rbx, %rdi
movl %ebp, %edx
callq 0x57ce0
movl $0x1, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq