// File: /workspace/github_c_makefile_star2_O3/enzo1982[P]smooth/misc/codecs.cpp
// Function: PCIIO::ReadLine(smooth::IO::InStream*, int)
bool PCIIO::ReadLine(PCIIn in, int y)
{
	/* Check compression type.
	 */
	if (compression != PCI	 &&
	    compression != RLE	 &&
	    compression != BZIP2 &&
	    compression != UNCOMPRESSED) return false;

	/* Read image line.
	 */
	int	*line = new int [sizex];
	int	 ctsize;
	int	 maxpalentries;

	switch (colorspace)
	{
		case Color::RGB:
		case Color::YUV:
		case Color::HSV:
		case Color::CMY:
			ctsize = 3;
			maxpalentries = 338;

			break;
		case Color::CMYK:
			ctsize = 4;
			maxpalentries = 338;

			break;
		case Color::GRAY:
			ctsize = 1;
			maxpalentries = 338;

			break;
		default:
			ctsize = 3;
			maxpalentries = 338;

			break;
	}

	switch (compression)
	{
		case BZIP2:
		case UNCOMPRESSED:
			for (int x = 0; x < sizex; x++)
			{
				line[x] = in->InputBits(ctsize * bpcc);
			}

			break;
		case RLE:
			for (int x = 0; x < sizex; x++)
			{
				int	 col = in->InputBits(ctsize * bpcc);
				int	 rle = in->InputBits(rlebits);

				for (int i = x; i <= x + rle; i++) line[i] = col;

				x += rle;
			}

			break;
		case PCI:
			if (in->InputBits(1) == 1)
			{
				DecompressSLAL(line, previousLine, sizex);
			}
			else
			{
				int	 allinpal = 0;
				int	 gallinpal = 0;
				int	 mod04 = 0;
				int	 mod16 = 0;

				int	 dosaa = in->InputBits(1);
				int	 dorle = in->InputBits(1);

				for (int x = 0; x < sizex; x++)
				{
					int	 previousColor = (x > 0 ? line[x - 1] : 0);

					if ( (x % 16) == mod16		     ) gallinpal = in->InputBits(1);
					if (((x %  4) == mod04) && !gallinpal) allinpal	 = in->InputBits(1);

					int	 col = 0;
					int	 inpal = 1;

					if (!allinpal && !gallinpal) inpal = in->InputBits(1);

					if (inpal == 0)
					{
						if (in->InputBits(1)) col = DecompressDelta(line, previousLine, x, ctsize, in);
						else		      col = in->InputBits(ctsize * bpcc);

						if (palentries < maxpalentries)
						{
							palette[palentries] = col;
							palentries++;
						}
						else
						{
							RotatePalette(col);
						}
					}
					else
					{
						int	 saa = 0;

						if (dosaa) saa = in->InputBits(1);

						if (saa)
						{
							col = previousLine[x];
						}
						else
						{
							if (in->InputBits(1) == 1)
							{
								col = palette[(palentries - 1) - in->InputBits(1)];
							}
							else
							{
								if (in->InputBits(1) == 1)
								{
									int	 lbits = Math::Min(GetMinimumBits(palentries - 2), 4);

									col = palette[(palentries - 1) - in->InputBits(lbits) - 2];
								}
								else
								{
									if (in->InputBits(1) == 1)
									{
										int	 lbits = Math::Min(GetMinimumBits(palentries - 18), 6);

										col = palette[(palentries - 1) - in->InputBits(lbits) - 18];
									}
									else
									{
										col = palette[(palentries - 1) - in->InputBits(GetMinimumBits(palentries - 83)) - 82];
									}
								}
							}
						}

						int	 paletteEntry = GetPaletteEntry(col);

						if (paletteEntry >= 0) RotatePaletteEntry(paletteEntry);
					}

					line[x] = col;

					if (col == previousColor)
					{
						if (in->InputBits(1) == 1)
						{
							int	 pcirle;

							if (in->InputBits(1) == 1) pcirle = in->InputBits(8) + 2;
							else			   pcirle = in->InputBits(3) + 2;

							for (int i = x + 1; i <= x + pcirle; i++) line[i] = line[x];

							x = x + pcirle;

							allinpal = 0;
							gallinpal = 0;

							mod04 = (x + 1) %  4;
							mod16 = (x + 1) % 16;
						}
					}
					else if ((col == previousLine[x]) && dorle)
					{
						if (in->InputBits(1) == 1)
						{
							int	 pcirle;

							if (in->InputBits(1) == 1) pcirle = in->InputBits(8) + 2;
							else			   pcirle = in->InputBits(3) + 2;

							for (int i = x + 1; i <= x + pcirle; i++) line[i] = previousLine[i];

							x = x + pcirle;

							allinpal = 0;
							gallinpal = 0;

							mod04 = (x + 1) %  4;
							mod16 = (x + 1) % 16;
						}
					}
				}
			}

			for (int x = 0; x < sizex; x++) previousLine[x] = line[x];

			break;
	}

	for (int x = 0; x < sizex; x++) bmp.SetPixel(Point(x, y), Color(line[x], colorspace).Upsample(bpcc).ConvertTo(Color::RGB));

	delete [] line;

	return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rdi, 0x8(%rsp)
movl 0x50(%rdi), %ebp
xorl %eax, %eax
cmpl $0x4, %ebp
ja 0xb7cd5
cmpl $0x2, %ebp
je 0xb7cd5
movl %edx, %r14d
movq %rsi, %r12
movq 0x8(%rsp), %r15
movslq 0x10(%r15), %rbx
leaq (,%rbx,4), %rax
testq %rbx, %rbx
movq $-0x1, %rdi
cmovnsq %rax, %rdi
callq 0x56670
movq %rax, 0x18(%rsp)
movl 0x58(%r15), %eax
xorl %ecx, %ecx
cmpl $0x5, %eax
sete %cl
addl $0x3, %ecx
cmpl $0x6, %eax
movl $0x1, %r13d
cmovnel %ecx, %r13d
cmpl $0x4, %ebp
ja 0xb7654
movl %ebp, %eax
leaq 0x5b8d8(%rip), %rcx     # 0x112d40
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movl %r13d, 0x40(%rsp)
jmpq *%rax
testl %ebx, %ebx
movq 0x8(%rsp), %rbp
movq 0x18(%rsp), %rdi
jle 0xb7cce
movl %r14d, 0x14(%rsp)
xorl %r14d, %r14d
movq %rdi, %r15
movl 0x54(%rbp), %esi
imull %r13d, %esi
movq %r12, %rdi
callq 0x572d0
movl %eax, (%r15,%r14,4)
incq %r14
movslq 0x10(%rbp), %rbx
cmpq %rbx, %r14
jl 0xb7493
jmp 0xb7c4e
testl %ebx, %ebx
movq 0x8(%rsp), %rbp
movq 0x18(%rsp), %rdi
jle 0xb7cce
movl %r14d, 0x14(%rsp)
movq %rdi, %r15
addq $0xc, %r15
xorl %r13d, %r13d
movl 0x54(%rbp), %esi
imull 0x40(%rsp), %esi
movq %r12, %rdi
callq 0x572d0
movq %rax, %rbx
movl 0x60(%rbp), %esi
movq %r12, %rdi
callq 0x572d0
pcmpeqd %xmm8, %xmm8
movdqa 0x5b87d(%rip), %xmm7    # 0x112d80
movdqa 0x5b865(%rip), %xmm6    # 0x112d70
movdqa 0x5b84d(%rip), %xmm5    # 0x112d60
leal (%rax,%r13), %ecx
testl %eax, %eax
js 0xb75f4
movslq %r13d, %rdx
cmpl %ecx, %edx
cmovlel %ecx, %r13d
subl %edx, %r13d
leaq 0x4(%r13), %rax
andq $-0x4, %rax
movq %r13, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
leaq (%r15,%rdx,4), %rdx
pxor %xmm7, %xmm0
xorl %esi, %esi
movq %rsi, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm2
por %xmm6, %xmm2
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm3
pcmpgtd %xmm0, %xmm3
pcmpeqd %xmm0, %xmm2
pshufd $0xf5, %xmm2, %xmm4     # xmm4 = xmm2[1,1,3,3]
pand %xmm3, %xmm4
pshufd $0xf5, %xmm3, %xmm2     # xmm2 = xmm3[1,1,3,3]
por %xmm4, %xmm2
movd %xmm2, %edi
notl %edi
testb $0x1, %dil
je 0xb758b
movl %ebx, -0xc(%rdx,%rsi,4)
pxor %xmm8, %xmm2
pextrw $0x4, %xmm2, %edi
testb $0x1, %dil
je 0xb759f
movl %ebx, -0x8(%rdx,%rsi,4)
por %xmm5, %xmm1
pxor %xmm7, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm0, %xmm2
pcmpeqd %xmm0, %xmm1
pshufd $0xf5, %xmm1, %xmm3     # xmm3 = xmm1[1,1,3,3]
pand %xmm2, %xmm3
pshufd $0xf5, %xmm2, %xmm1     # xmm1 = xmm2[1,1,3,3]
por %xmm3, %xmm1
pxor %xmm8, %xmm1
pextrw $0x0, %xmm1, %edi
testb $0x1, %dil
je 0xb75d9
movl %ebx, -0x4(%rdx,%rsi,4)
pextrw $0x4, %xmm1, %edi
testb $0x1, %dil
je 0xb75e7
movl %ebx, (%rdx,%rsi,4)
addq $0x4, %rsi
cmpq %rsi, %rax
jne 0xb7547
incl %ecx
movl 0x10(%rbp), %ebx
movl %ecx, %r13d
cmpl %ebx, %ecx
jl 0xb74d8
jmp 0xb7c4e
movl %r14d, 0x14(%rsp)
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
cmpq $0x1, %rax
jne 0xb7663
movq 0x8(%rsp), %rbp
movslq 0x10(%rbp), %rax
testq %rax, %rax
movq 0x18(%rsp), %rdi
jle 0xb7cce
movq 0xbec11(%rip), %rcx     # 0x176250
xorl %edx, %edx
movl (%rcx,%rdx,4), %esi
movl %esi, (%rdi,%rdx,4)
incq %rdx
cmpq %rdx, %rax
jne 0xb7641
jmp 0xb7c30
movl %r14d, 0x14(%rsp)
movq 0x8(%rsp), %rbp
jmp 0xb7c4e
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
movq %rax, 0x60(%rsp)
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
movq %rax, 0x58(%rsp)
movq 0x8(%rsp), %r14
cmpl $0x0, 0x10(%r14)
movq 0x18(%rsp), %rdi
jle 0xb7cce
movq %rdi, %rax
addq $0x10, %rax
movq %rax, 0x50(%rsp)
xorl %ebx, %ebx
movl $0x0, 0x20(%rsp)
movl $0x0, 0x24(%rsp)
xorl %ebp, %ebp
movq $0x0, 0x30(%rsp)
movl $0x0, %r15d
testl %ebx, %ebx
jle 0xb76db
movl %ebx, %eax
movq 0x18(%rsp), %rcx
movl -0x4(%rcx,%rax,4), %r15d
leal 0xf(%rbx), %eax
testl %ebx, %ebx
cmovnsl %ebx, %eax
andl $-0x10, %eax
movl %ebx, %ecx
subl %eax, %ecx
cmpl 0x20(%rsp), %ecx
jne 0xb7700
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
movq %rax, %rbp
leal 0x3(%rbx), %eax
testl %ebx, %ebx
cmovnsl %ebx, %eax
andl $-0x4, %eax
movl %ebx, %ecx
subl %eax, %ecx
xorl 0x24(%rsp), %ecx
orl %ebp, %ecx
jne 0xb7729
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
orl %ebp, %eax
movq %rbp, 0x38(%rsp)
jne 0xb774c
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
testl %eax, %eax
je 0xb783d
cmpl $0x0, 0x60(%rsp)
je 0xb777e
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
testl %eax, %eax
je 0xb777e
movslq %ebx, %rax
shlq $0x2, %rax
addq 0xbeade(%rip), %rax     # 0x176250
leaq 0xbeae7(%rip), %r13     # 0x176260
jmp 0xb79a5
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
cmpq $0x1, %rax
leaq 0xbeaca(%rip), %r13     # 0x176260
jne 0xb77c2
movslq 0xbf0d1(%rip), %r14     # 0x176870
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
notq %rax
addq %r14, %rax
leaq (,%rax,4), %rax
addq %r13, %rax
jmp 0xb79a5
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
cmpq $0x1, %rax
jne 0xb7873
movl 0xbf091(%rip), %eax     # 0x176870
addl $-0x2, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x28(%rsp)
xorl %ebp, %ebp
movl $0x2, %edi
movl %ebp, %esi
callq 0x56010
ucomisd 0x28(%rsp), %xmm0
ja 0xb780b
incl %ebp
cmpl $0x21, %ebp
jne 0xb77ee
xorl %ebp, %ebp
cmpl $0x4, %ebp
movl $0x4, %eax
cmovgel %eax, %ebp
movslq 0xbf053(%rip), %r14     # 0x176870
movq %r12, %rdi
movl %ebp, %esi
callq 0x572d0
notq %rax
addq %r14, %rax
leaq -0x8(,%rax,4), %rax
addq %r13, %rax
jmp 0xb79a5
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
testq %rax, %rax
je 0xb78f8
movq 0xbe9f6(%rip), %rsi     # 0x176250
movq 0x18(%rsp), %rdi
movl %ebx, %edx
movl %r13d, %ecx
movq %r12, %r8
callq 0xb92f4
movl %eax, %ebp
jmp 0xb790b
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
movslq 0xbefe9(%rip), %r13     # 0x176870
cmpq $0x1, %rax
jne 0xb7957
addl $-0x12, %r13d
cvtsi2sd %r13d, %xmm0
movsd %xmm0, 0x28(%rsp)
xorl %ebp, %ebp
leaq 0xbe9b7(%rip), %r13     # 0x176260
movl $0x2, %edi
movl %ebp, %esi
callq 0x56010
ucomisd 0x28(%rsp), %xmm0
ja 0xb78c6
incl %ebp
cmpl $0x21, %ebp
jne 0xb78a9
xorl %ebp, %ebp
cmpl $0x6, %ebp
movl $0x6, %eax
cmovgel %eax, %ebp
movslq 0xbef98(%rip), %r14     # 0x176870
movq %r12, %rdi
movl %ebp, %esi
callq 0x572d0
notq %rax
addq %r14, %rax
leaq -0x48(,%rax,4), %rax
addq %r13, %rax
jmp 0xb79a5
movl 0x54(%r14), %esi
imull %r13d, %esi
movq %r12, %rdi
callq 0x572d0
movq %rax, %rbp
movslq 0xbef5e(%rip), %r14     # 0x176870
cmpq $0x151, %r14            # imm = 0x151
leaq 0xbe940(%rip), %r13     # 0x176260
jg 0xb7936
movl %ebp, (%r13,%r14,4)
leal 0x1(%r14), %eax
movl %eax, 0xbef3f(%rip)     # 0x176870
jmp 0xb79ce
decl %r14d
leaq (,%r14,4), %rdx
movq %r13, %rdi
leaq 0xbe919(%rip), %rsi     # 0x176264
callq 0x556d0
movl %ebp, (%r13,%r14,4)
jmp 0xb79ce
leal -0x53(%r13), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x28(%rsp)
xorl %ebp, %ebp
movl $0x2, %edi
movl %ebp, %esi
callq 0x56010
ucomisd 0x28(%rsp), %xmm0
ja 0xb7984
incl %ebp
cmpl $0x21, %ebp
jne 0xb7967
xorl %ebp, %ebp
movq %r12, %rdi
movl %ebp, %esi
callq 0x572d0
subq %rax, %r13
leaq 0xbe8c8(%rip), %rcx     # 0x176260
leaq (%rcx,%r13,4), %rax
addq $-0x14c, %rax           # imm = 0xFEB4
movq %rcx, %r13
movl (%rax), %ebp
movl 0xbeec3(%rip), %edi     # 0x176870
movq %rdi, %rax
decq %rax
testl %edi, %edi
jle 0xb79ce
movl %eax, %ecx
decl %edi
decq %rax
cmpl %ebp, (%r13,%rcx,4)
jne 0xb79b3
testl %edi, %edi
js 0xb79ce
callq 0xb91f4
movslq %ebx, %r13
movq 0x18(%rsp), %rax
movl %ebp, (%rax,%r13,4)
cmpl %r15d, %ebp
jne 0xb7b32
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
cmpq $0x1, %rax
movq 0x8(%rsp), %r14
movq 0x38(%rsp), %rbp
jne 0xb7bfb
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
xorl %ecx, %ecx
cmpq $0x1, %rax
sete %cl
leal (%rcx,%rcx,4), %esi
addl $0x3, %esi
movq %r12, %rdi
callq 0x572d0
addl %ebx, %eax
addl $0x2, %eax
cmpl %eax, %ebx
movdqa 0x5b329(%rip), %xmm5    # 0x112d60
movdqa 0x5b331(%rip), %xmm6    # 0x112d70
movdqa 0x5b339(%rip), %xmm7    # 0x112d80
pcmpeqd %xmm8, %xmm8
jge 0xb7bc1
movslq %eax, %rdx
subq %r13, %rdx
leaq 0x3(%rdx), %rcx
andq $-0x4, %rcx
decq %rdx
movq %rdx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movq 0x50(%rsp), %rdx
leaq (%rdx,%r13,4), %rdx
pxor %xmm7, %xmm0
xorl %esi, %esi
movq %rsi, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm2
por %xmm6, %xmm2
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm3
pcmpgtd %xmm0, %xmm3
pcmpeqd %xmm0, %xmm2
pshufd $0xf5, %xmm2, %xmm4     # xmm4 = xmm2[1,1,3,3]
pand %xmm3, %xmm4
pshufd $0xf5, %xmm3, %xmm2     # xmm2 = xmm3[1,1,3,3]
por %xmm4, %xmm2
movd %xmm2, %edi
notl %edi
testb $0x1, %dil
je 0xb7ac1
movl %r15d, -0xc(%rdx,%rsi,4)
pxor %xmm8, %xmm2
pextrw $0x4, %xmm2, %edi
testb $0x1, %dil
je 0xb7ad6
movl %r15d, -0x8(%rdx,%rsi,4)
por %xmm5, %xmm1
pxor %xmm7, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm0, %xmm2
pcmpeqd %xmm0, %xmm1
pshufd $0xf5, %xmm1, %xmm3     # xmm3 = xmm1[1,1,3,3]
pand %xmm2, %xmm3
pshufd $0xf5, %xmm2, %xmm1     # xmm1 = xmm2[1,1,3,3]
por %xmm3, %xmm1
pxor %xmm8, %xmm1
pextrw $0x0, %xmm1, %edi
testb $0x1, %dil
je 0xb7b11
movl %r15d, -0x4(%rdx,%rsi,4)
pextrw $0x4, %xmm1, %edi
testb $0x1, %dil
je 0xb7b20
movl %r15d, (%rdx,%rsi,4)
addq $0x4, %rsi
cmpq %rsi, %rcx
jne 0xb7a7c
jmp 0xb7bc1
cmpl $0x0, 0x58(%rsp)
je 0xb7bff
movq 0xbe70c(%rip), %rax     # 0x176250
cmpl (%rax,%r13,4), %ebp
movq 0x18(%rsp), %r15
jne 0xb7bff
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
cmpq $0x1, %rax
movq 0x8(%rsp), %r14
movq 0x38(%rsp), %rbp
jne 0xb7bfb
movq %r12, %rdi
movl $0x1, %esi
callq 0x572d0
xorl %ecx, %ecx
cmpq $0x1, %rax
sete %cl
leal (%rcx,%rcx,4), %esi
addl $0x3, %esi
movq %r12, %rdi
callq 0x572d0
addl %ebx, %eax
addl $0x2, %eax
cmpl %eax, %ebx
jge 0xb7bc1
movq 0xbe6a8(%rip), %rcx     # 0x176250
movslq %eax, %rdx
movl 0x4(%rcx,%r13,4), %esi
movl %esi, 0x4(%r15,%r13,4)
leaq 0x1(%r13), %rsi
movq %rsi, %r13
cmpq %rsi, %rdx
jne 0xb7bab
leal 0x1(%rax), %ecx
leal 0x4(%rax), %edx
leal 0x10(%rax), %esi
testl %ecx, %ecx
cmovnsl %ecx, %edx
cmovnsl %ecx, %esi
andl $-0x4, %edx
negl %edx
leal (%rax,%rdx), %ecx
incl %ecx
movl %ecx, 0x24(%rsp)
andl $-0x10, %esi
negl %esi
leal (%rax,%rsi), %ecx
incl %ecx
movl %ecx, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
xorl %ebp, %ebp
jmp 0xb7c0b
movl %ebx, %eax
jmp 0xb7c0b
movl %ebx, %eax
movq 0x8(%rsp), %r14
movq 0x38(%rsp), %rbp
incl %eax
movl 0x10(%r14), %ecx
movl %eax, %ebx
cmpl %ecx, %eax
movl 0x40(%rsp), %r13d
jl 0xb76c5
testl %ecx, %ecx
movq %r14, %rbp
movq 0x18(%rsp), %rdi
jle 0xb7cce
movq 0xbe619(%rip), %rax     # 0x176250
xorl %ecx, %ecx
movq %rdi, %rsi
movl (%rsi,%rcx,4), %edx
movl %edx, (%rax,%rcx,4)
incq %rcx
movslq 0x10(%rbp), %rbx
cmpq %rbx, %rcx
jl 0xb7c3c
testl %ebx, %ebx
movl 0x14(%rsp), %ebx
movq 0x18(%rsp), %rdi
jle 0xb7cce
leaq 0x8(%rbp), %rax
movq %rax, 0x40(%rsp)
xorl %r14d, %r14d
leaq 0x78(%rsp), %r12
leaq 0x88(%rsp), %r15
movl %r14d, 0x48(%rsp)
movl %ebx, 0x4c(%rsp)
movslq (%rdi,%r14,4), %rax
movl 0x58(%rbp), %ecx
movq %rax, 0x70(%rsp)
movl %ecx, 0x68(%rsp)
movl 0x54(%rbp), %edx
movq %rdi, %r13
movq %r12, %rdi
leaq 0x68(%rsp), %rsi
callq 0x57840
movq %r15, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x57d10
movq 0x40(%rsp), %rdi
leaq 0x48(%rsp), %rsi
movq %r15, %rdx
callq 0x56080
movq %r13, %rdi
incq %r14
movslq 0x10(%rbp), %rax
cmpq %rax, %r14
jl 0xb7c74
callq 0x561e0
movb $0x1, %al
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq