// File: /workspace/github_c_makefile_star2_O2/albinoloverats[P]hide/src/jpeg-save.c
// Function: jpeg_encode_data
extern void jpeg_encode_data(FILE *file, jpeg_message_t *msg, jpeg_image_t *info)
{
	message = msg;

	bitstring fillbits; // filling bitstring for the bit alignment of the EOI marker

	Ximage = info->width;
	Yimage = info->height;

	uint32_t Xdiv8 = (Ximage % 8) ? ((Ximage / 8) << 3) + 8 : Ximage;
	uint32_t Ydiv8 = (Yimage % 8) ? ((Yimage / 8) << 3) + 8 : Yimage;

	// The image we encode shall be filled with the last line and the last column
	// from the original bitmap, until Ximage and Yimage are divisible by 8
	// Load BMP image from disk and complete X
	RGB_buffer = calloc(Xdiv8 * Ydiv8, sizeof (colorRGB));

	//uint8_t nr_fillingbytes = (Ximage % 4) ? 4 - (Ximage % 4) : 0;
	for (uint32_t nrline = 0; nrline < Yimage; nrline++)
		memcpy(RGB_buffer + nrline * Xdiv8, info->rgb[nrline], Ximage * 3);
	Ximage = Xdiv8;
	Yimage = Ydiv8;


	fp_jpeg_stream = file;
	init_all();
	SOF0info.width = info->width;
	SOF0info.height = info->height;
	writeword(0xFFD8); // SOI
	write_APP0info();

	write_DQTinfo();
	write_SOF0info();
	write_DHTinfo();
	write_SOSinfo();

	bytenew = 0;
	bytepos = 7;
	main_encoder();
	// Do the bit alignment of the EOI marker
	if (bytepos >= 0)
	{
		fillbits.length = bytepos + 1;
		fillbits.value = (1 << (bytepos + 1)) - 1;
		writebits(fillbits);
	}
	writeword(0xFFD9); //EOI
	free(RGB_buffer);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x3842(%rip)      # 0x6140
movl 0x8(%rdx), %r14d
movq %rdx, 0x20(%rsp)
movl 0xc(%rdx), %ebx
leal 0x7(%r14), %ebp
andl $-0x8, %ebp
leal 0x7(%rbx), %eax
andl $-0x8, %eax
movl %eax, 0xc(%rsp)
movl %eax, %edi
imull %ebp, %edi
pushq $0x3
popq %rsi
callq 0x10c0
movq %rax, %r15
movq %rax, 0x381e(%rip)      # 0x6150
leal (%r14,%r14,2), %r12d
xorl %r13d, %r13d
xorl %r14d, %r14d
cmpq %r14, %rbx
je 0x2967
movl %r13d, %eax
leaq (%rax,%rax,2), %rdi
addq %r15, %rdi
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq (%rax,%r14,8), %rsi
movq %r12, %rdx
callq 0x1100
incq %r14
addl %ebp, %r13d
jmp 0x293c
movl %ebp, 0x37db(%rip)      # 0x6148
movl 0xc(%rsp), %eax
movl %eax, 0x37d5(%rip)      # 0x614c
movq 0x18(%rsp), %rax
movq %rax, 0x37d5(%rip)      # 0x6158
movl $0x84ffdb, 0x37d9(%rip) # imm = 0x84FFDB
movb $0x0, 0x37d6(%rip)      # 0x616a
movb $0x1, 0x3810(%rip)      # 0x61ab
leaq 0x187e(%rip), %rdi      # 0x4220
movw $0x64, %r8w
movabsq $0x103070f1f1f3f, %rsi  # imm = 0x103070F1F1F3F
pushq $0x1
popq %r10
leaq 0x18a4(%rip), %rcx      # 0x4260
leaq 0x37a3(%rip), %rbp      # 0x6166
xorl %r9d, %r9d
cmpq $0x40, %r9
je 0x29f0
movzbl (%r9,%rdi), %eax
addl $0x32, %eax
xorl %edx, %edx
divw %r8w
btq %r9, %rsi
cmovbl %r10d, %eax
movzbl (%r9,%rcx), %edx
movb %al, 0x5(%rdx,%rbp)
incq %r9
jmp 0x29c6
leaq 0x18a9(%rip), %rsi      # 0x42a0
movw $0x64, %di
movl $0x103070f, %r8d        # imm = 0x103070F
xorl %r9d, %r9d
cmpq $0x40, %r9
je 0x2a2d
movzbl (%r9,%rsi), %eax
addl $0x32, %eax
xorl %edx, %edx
divw %di
btq %r9, %r8
cmovbl %r10d, %eax
movzbl (%r9,%rcx), %edx
movb %al, 0x46(%rdx,%rbp)
incq %r9
jmp 0x2a04
movl $0x1a2ffc4, 0x37b5(%rip) # imm = 0x1A2FFC4
movb $0x0, 0x37b2(%rip)      # 0x61f0
xorl %eax, %eax
leaq 0x37a5(%rip), %r12      # 0x61ec
cmpq $0x10, %rax
je 0x2a62
leaq 0x188c(%rip), %rdx      # 0x42e0
movb 0x1(%rax,%rdx), %dl
movb %dl, 0x5(%rax,%r12)
incq %rax
jmp 0x2a47
xorl %eax, %eax
leaq 0x1976(%rip), %r9       # 0x43e1
cmpq $0xc, %rax
je 0x2a7f
movb (%rax,%r9), %dl
movb %dl, 0x15(%rax,%r12)
incq %rax
jmp 0x2a6b
movb $0x10, 0x3787(%rip)     # 0x620d
xorl %eax, %eax
leaq 0x1871(%rip), %rsi      # 0x4300
cmpq $0x10, %rax
je 0x2aa3
movb 0x1(%rax,%rsi), %dl
movb %dl, 0x22(%rax,%r12)
incq %rax
jmp 0x2a8f
xorl %eax, %eax
leaq 0x1874(%rip), %rdi      # 0x4320
cmpq $0xa2, %rax
je 0x2ac1
movb (%rax,%rdi), %dl
movb %dl, 0x32(%rax,%r12)
incq %rax
jmp 0x2aac
movb $0x1, 0x37f8(%rip)      # 0x62c0
xorl %eax, %eax
leaq 0x18ff(%rip), %r11      # 0x43d0
cmpq $0x10, %rax
je 0x2ae9
movb 0x1(%rax,%r11), %dl
movb %dl, 0xd5(%rax,%r12)
incq %rax
jmp 0x2ad1
xorl %eax, %eax
cmpq $0xc, %rax
je 0x2b02
movb (%rax,%r9), %dl
movb %dl, 0xe5(%rax,%r12)
incq %rax
jmp 0x2aeb
movb $0x11, 0x37d4(%rip)     # 0x62dd
xorl %eax, %eax
leaq 0x18de(%rip), %rsi      # 0x43f0
cmpq $0x10, %rax
je 0x2b29
movb 0x1(%rax,%rsi), %dl
movb %dl, 0xf2(%rax,%r12)
incq %rax
jmp 0x2b12
xorl %eax, %eax
leaq 0x18de(%rip), %r8       # 0x4410
cmpq $0xa2, %rax
je 0x2b4b
movb (%rax,%r8), %dl
movb %dl, 0x102(%rax,%r12)
incq %rax
jmp 0x2b32
xorl %r15d, %r15d
pushq $0x1
popq %rbx
leaq 0x3838(%rip), %r14      # 0x6390
xorl %r13d, %r13d
cmpq $0x11, %rbx
je 0x2ba0
leaq 0x1778(%rip), %rax      # 0x42e0
movzbl (%rbx,%rax), %edx
movslq %r13d, %rsi
leal (%rsi,%rdx), %r13d
movslq %r13d, %rax
addl %edx, %edx
leal (%rdx,%r15,2), %edx
cmpq %rsi, %rax
je 0x2b98
movzbl (%rsi,%r9), %r10d
movw %r15w, 0x2(%r14,%r10,4)
movb %bl, (%r14,%r10,4)
incq %rsi
incl %r15d
jmp 0x2b7c
incq %rbx
movl %edx, %r15d
jmp 0x2b5b
xorl %r14d, %r14d
pushq $0x1
popq %r10
leaq 0x3812(%rip), %rbx      # 0x63c0
xorl %r15d, %r15d
cmpq $0x11, %r10
je 0x2bf0
movzbl (%r10,%r11), %edx
movslq %r15d, %rsi
leal (%rsi,%rdx), %r15d
movslq %r15d, %rax
addl %edx, %edx
leal (%rdx,%r14,2), %edx
cmpq %rsi, %rax
je 0x2be8
movzbl (%rsi,%r9), %r13d
movw %r14w, 0x2(%rbx,%r13,4)
movb %r10b, (%rbx,%r13,4)
incq %rsi
incl %r14d
jmp 0x2bcc
incq %r10
movl %edx, %r14d
jmp 0x2bb1
xorl %r11d, %r11d
pushq $0x1
popq %r9
leaq 0x37f2(%rip), %r10      # 0x63f0
xorl %ebx, %ebx
pushq $0x1
popq %r13
leaq 0x16f5(%rip), %r15      # 0x4300
cmpq $0x11, %r9
je 0x2c49
movzbl (%r9,%r15), %edx
movslq %ebx, %rsi
leal (%rsi,%rdx), %ebx
movslq %ebx, %rax
addl %edx, %edx
leal (%rdx,%r11,2), %edx
cmpq %rsi, %rax
je 0x2c41
movzbl (%rsi,%rdi), %r14d
movw %r11w, 0x2(%r10,%r14,4)
movb %r9b, (%r10,%r14,4)
incq %rsi
incl %r11d
jmp 0x2c25
incq %r9
movl %edx, %r11d
jmp 0x2c0b
xorl %r9d, %r9d
pushq $0x1
popq %rax
leaq 0x3b9a(%rip), %rdi      # 0x67f0
xorl %r10d, %r10d
leaq 0x1790(%rip), %r14      # 0x43f0
cmpq $0x11, %rax
je 0x2c9e
movzbl (%rax,%r14), %edx
movslq %r10d, %rsi
leal (%rsi,%rdx), %r10d
movslq %r10d, %r11
addl %edx, %edx
leal (%rdx,%r9,2), %edx
cmpq %rsi, %r11
je 0x2c96
movzbl (%rsi,%r8), %ebx
movw %r9w, 0x2(%rdi,%rbx,4)
movb %al, (%rdi,%rbx,4)
incq %rsi
incl %r9d
jmp 0x2c7b
incq %rax
movl %edx, %r9d
jmp 0x2c60
leaq 0xbf4a(%rip), %rax      # 0xebef
movq %rax, 0x13f44(%rip)     # 0x16bf0
leaq 0x33f49(%rip), %rax     # 0x36bfc
movq %rax, 0x53f46(%rip)     # 0x56c00
pushq $0x2
popq %rax
leaq 0x3f2c(%rip), %rdx      # 0x6bf0
leaq 0x13f35(%rip), %rdi     # 0x16c00
movl %r13d, %r8d
movl %r13d, %r9d
cmpl $0x10, %r9d
je 0x2d65
movl %r8d, %esi
movl %eax, %r10d
cmpq %r10, %rsi
jae 0x2d03
movb %r9b, 0x7fff(%rsi,%rdx)
movb %r9b, 0x1fffc(%rdi,%rsi,4)
movw %si, 0x1fffe(%rdi,%rsi,4)
incq %rsi
jmp 0x2ce1
movl %r8d, %r10d
negl %r10d
movl %r13d, %esi
subl %eax, %esi
movslq %esi, %rsi
movslq %r10d, %r10
movslq %eax, %r14
leaq (,%r14,4), %rbx
movq %rdi, %r11
subq %rbx, %r11
addq $0x20002, %r11          # imm = 0x20002
movq %rdx, %rbx
subq %r14, %rbx
addq $0x8000, %rbx           # imm = 0x8000
xorl %r14d, %r14d
leaq (%rsi,%r14), %r15
cmpq %r10, %r15
jg 0x2d58
movb %r9b, (%rbx,%r14)
movb %r9b, -0x2(%r11,%r14,4)
movw %r14w, (%r11,%r14,4)
incq %r14
jmp 0x2d3c
addl %r8d, %r8d
addl %eax, %eax
incl %r9d
jmp 0x2cd1
xorl %eax, %eax
movsd 0x1441(%rip), %xmm0     # 0x41b0
movsd 0x1441(%rip), %xmm1     # 0x41b8
movsd 0x1441(%rip), %xmm2     # 0x41c0
movsd 0x1441(%rip), %xmm3     # 0x41c8
movsd 0x1441(%rip), %xmm4     # 0x41d0
movsd 0x1441(%rip), %xmm5     # 0x41d8
movsd 0x1441(%rip), %xmm6     # 0x41e0
xorl %edx, %edx
xorl %esi, %esi
cmpq $0x400, %rsi            # imm = 0x400
je 0x2e89
cvtsi2sd %eax, %xmm7
movapd %xmm7, %xmm8
mulsd %xmm0, %xmm8
cvttsd2si %xmm8, %edi
leaq 0x53e46(%rip), %r8      # 0x56c10
movl %edi, (%rsi,%r8)
movapd %xmm7, %xmm8
mulsd %xmm1, %xmm8
cvttsd2si %xmm8, %edi
leaq 0x5422c(%rip), %r8      # 0x57010
movl %edi, (%rsi,%r8)
movapd %xmm7, %xmm8
mulsd %xmm2, %xmm8
cvttsd2si %xmm8, %edi
leaq 0x54a12(%rip), %r8      # 0x57810
movl %edi, (%rsi,%r8)
movapd %xmm7, %xmm8
mulsd %xmm3, %xmm8
cvttsd2si %xmm8, %edi
leaq 0x545f8(%rip), %r8      # 0x57410
movl %edx, (%rsi,%r8)
leaq 0x54ded(%rip), %r8      # 0x57c10
movl %edi, (%rsi,%r8)
movapd %xmm7, %xmm8
mulsd %xmm4, %xmm8
cvttsd2si %xmm8, %edi
leaq 0x551d3(%rip), %r8      # 0x58010
movl %edi, (%rsi,%r8)
movapd %xmm7, %xmm8
mulsd %xmm5, %xmm8
cvttsd2si %xmm8, %edi
leaq 0x555b9(%rip), %r8      # 0x58410
movl %edi, (%rsi,%r8)
leaq 0x559ae(%rip), %rdi     # 0x58810
movl %edx, (%rsi,%rdi)
mulsd %xmm6, %xmm7
cvttsd2si %xmm7, %edi
leaq 0x55d9c(%rip), %r8      # 0x58c10
movl %edi, (%rsi,%r8)
addq $0x4, %rsi
addl $0x8000, %edx           # imm = 0x8000
incl %eax
jmp 0x2da3
xorl %eax, %eax
leaq 0x162e(%rip), %rdx      # 0x44c0
movsd 0x134e(%rip), %xmm0     # 0x41e8
movsd 0x118e(%rip), %xmm1     # 0x4030
leaq 0x56167(%rip), %rsi     # 0x59010
leaq 0x56360(%rip), %rdi     # 0x59210
xorl %r8d, %r8d
cmpq $0x8, %rax
je 0x2f40
movsd (%rdx,%rax,8), %xmm2
movslq %r8d, %r8
leaq (,%r8,8), %r9
xorl %r10d, %r10d
cmpq $0x40, %r10
je 0x2f38
movzbl (%r8,%rcx), %r11d
movzbl 0x5(%r11,%rbp), %r14d
cvtsi2sd %r14d, %xmm3
mulsd %xmm2, %xmm3
movsd (%r10,%rdx), %xmm4
mulsd %xmm4, %xmm3
mulsd %xmm0, %xmm3
movapd %xmm1, %xmm5
divsd %xmm3, %xmm5
leaq (%r9,%r10), %r14
movsd %xmm5, (%rsi,%r14)
movzbl 0x46(%r11,%rbp), %r11d
cvtsi2sd %r11d, %xmm3
mulsd %xmm2, %xmm3
mulsd %xmm4, %xmm3
mulsd %xmm0, %xmm3
movapd %xmm1, %xmm4
divsd %xmm3, %xmm4
movsd %xmm4, (%rdi,%r14)
incq %r8
addq $0x8, %r10
jmp 0x2ed0
incq %rax
jmp 0x2eb3
movq 0x20(%rsp), %rcx
movzwl 0x8(%rcx), %eax
movw %ax, 0x3212(%rip)       # 0x6162
movzwl 0xc(%rcx), %eax
movw %ax, 0x3205(%rip)       # 0x6160
movl $0xff, %edi
movq 0x18(%rsp), %rsi
callq 0x10b0
movq 0x31e7(%rip), %rsi      # 0x6158
movl $0xd8, %edi
callq 0x10b0
movzbl 0x313b(%rip), %edi      # 0x60bd
movq 0x31cf(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3127(%rip), %edi      # 0x60bc
movq 0x31bc(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3117(%rip), %edi      # 0x60bf
movq 0x31a9(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3103(%rip), %edi      # 0x60be
movq 0x3196(%rip), %rsi      # 0x6158
callq 0x10b0
movq 0x318a(%rip), %rsi      # 0x6158
leaq 0x30eb(%rip), %rdi      # 0x60c0
callq 0x1080
movq 0x3177(%rip), %rsi      # 0x6158
xorl %r13d, %r13d
xorl %edi, %edi
callq 0x10b0
movzbl 0x30d3(%rip), %edi      # 0x60c5
movq 0x315f(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x30c1(%rip), %edi      # 0x60c6
movq 0x314c(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x30af(%rip), %edi      # 0x60c7
movq 0x3139(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x309e(%rip), %edi      # 0x60c9
movq 0x3126(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x308a(%rip), %edi      # 0x60c8
movq 0x3113(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x307a(%rip), %edi      # 0x60cb
movq 0x3100(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3066(%rip), %edi      # 0x60ca
movq 0x30ed(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3055(%rip), %edi      # 0x60cc
movq 0x30da(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3043(%rip), %edi      # 0x60cd
movq 0x30c7(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x30ca(%rip), %edi      # 0x6167
movq 0x30b4(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x30b6(%rip), %edi      # 0x6166
movq 0x30a1(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x30a6(%rip), %edi      # 0x6169
movq 0x308e(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3092(%rip), %edi      # 0x6168
movq 0x307b(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x3081(%rip), %edi      # 0x616a
movq 0x3068(%rip), %rsi      # 0x6158
callq 0x10b0
cmpq $0x40, %r13
je 0x3112
movzbl 0x5(%r13,%rbp), %edi
movq 0x3050(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r13
jmp 0x30f5
movzbl 0x3092(%rip), %edi      # 0x61ab
movq 0x3038(%rip), %rsi      # 0x6158
callq 0x10b0
xorl %r14d, %r14d
cmpq $0x40, %r14
je 0x3145
movzbl 0x46(%r14,%rbp), %edi
movq 0x301d(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x3128
movq 0x300c(%rip), %rsi      # 0x6158
movl $0xff, %edi
callq 0x10b0
movq 0x2ffb(%rip), %rsi      # 0x6158
movl $0xc0, %edi
callq 0x10b0
movq 0x2fea(%rip), %rsi      # 0x6158
xorl %ebp, %ebp
xorl %edi, %edi
callq 0x10b0
movq 0x2fda(%rip), %rsi      # 0x6158
pushq $0x11
popq %rbx
movl %ebx, %edi
callq 0x10b0
movq 0x2fc9(%rip), %rsi      # 0x6158
pushq $0x8
popq %rdi
callq 0x10b0
movzbl 0x2fc3(%rip), %edi      # 0x6161
movq 0x2fb3(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x2faf(%rip), %edi      # 0x6160
movq 0x2fa0(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x2f9f(%rip), %edi      # 0x6163
movq 0x2f8d(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x2f8b(%rip), %edi      # 0x6162
movq 0x2f7a(%rip), %rsi      # 0x6158
callq 0x10b0
movq 0x2f6e(%rip), %rsi      # 0x6158
pushq $0x3
popq %r14
movl %r14d, %edi
callq 0x10b0
movq 0x2f5b(%rip), %rsi      # 0x6158
pushq $0x1
popq %r13
movl %r13d, %edi
callq 0x10b0
movq 0x2f48(%rip), %rsi      # 0x6158
movl %ebx, %edi
callq 0x10b0
movq 0x2f3a(%rip), %rsi      # 0x6158
xorl %edi, %edi
callq 0x10b0
movq 0x2f2c(%rip), %rsi      # 0x6158
pushq $0x2
popq %rdi
callq 0x10b0
movq 0x2f1d(%rip), %rsi      # 0x6158
movl %ebx, %edi
callq 0x10b0
movq 0x2f0f(%rip), %rsi      # 0x6158
movl %r13d, %edi
callq 0x10b0
movq 0x2f00(%rip), %rsi      # 0x6158
movl %r14d, %edi
callq 0x10b0
movq 0x2ef1(%rip), %rsi      # 0x6158
movl %ebx, %edi
callq 0x10b0
movq 0x2ee3(%rip), %rsi      # 0x6158
movl %r13d, %edi
callq 0x10b0
movzbl 0x2f69(%rip), %edi      # 0x61ed
movq 0x2ecd(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x2f55(%rip), %edi      # 0x61ec
movq 0x2eba(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x2f45(%rip), %edi      # 0x61ef
movq 0x2ea7(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x2f31(%rip), %edi      # 0x61ee
movq 0x2e94(%rip), %rsi      # 0x6158
callq 0x10b0
movzbl 0x2f20(%rip), %edi      # 0x61f0
movq 0x2e81(%rip), %rsi      # 0x6158
callq 0x10b0
cmpq $0x10, %rbp
je 0x32f9
movzbl 0x5(%rbp,%r12), %edi
movq 0x2e69(%rip), %rsi      # 0x6158
callq 0x10b0
incq %rbp
jmp 0x32dc
xorl %r14d, %r14d
cmpq $0xc, %r14
je 0x3319
movzbl 0x15(%r14,%r12), %edi
movq 0x2e49(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x32fc
movzbl 0x2eed(%rip), %edi      # 0x620d
movq 0x2e31(%rip), %rsi      # 0x6158
callq 0x10b0
xorl %r14d, %r14d
cmpq $0x10, %r14
je 0x334c
movzbl 0x22(%r14,%r12), %edi
movq 0x2e16(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x332f
pushq $0x32
popq %r14
cmpq $0xd4, %r14
je 0x336f
movzbl (%r14,%r12), %edi
movq 0x2df3(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x3350
movzbl 0x2f4a(%rip), %edi      # 0x62c0
movq 0x2ddb(%rip), %rsi      # 0x6158
callq 0x10b0
xorl %r14d, %r14d
cmpq $0x10, %r14
je 0x33a5
movzbl 0xd5(%r14,%r12), %edi
movq 0x2dbd(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x3385
xorl %r14d, %r14d
cmpq $0xc, %r14
je 0x33c8
movzbl 0xe5(%r14,%r12), %edi
movq 0x2d9a(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x33a8
movzbl 0x2f0e(%rip), %edi      # 0x62dd
movq 0x2d82(%rip), %rsi      # 0x6158
callq 0x10b0
xorl %r14d, %r14d
cmpq $0x10, %r14
je 0x33fe
movzbl 0xf2(%r14,%r12), %edi
movq 0x2d64(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x33de
xorl %r14d, %r14d
cmpq $0xa2, %r14
je 0x3424
movzbl 0x102(%r14,%r12), %edi
movq 0x2d3e(%rip), %rsi      # 0x6158
callq 0x10b0
incq %r14
jmp 0x3401
movq 0x2d2d(%rip), %rsi      # 0x6158
movl $0xff, %edi
callq 0x10b0
movq 0x2d1c(%rip), %rsi      # 0x6158
movl $0xda, %edi
callq 0x10b0
movq 0x2d0b(%rip), %rsi      # 0x6158
xorl %edi, %edi
callq 0x10b0
movq 0x2cfd(%rip), %rsi      # 0x6158
pushq $0xc
popq %rdi
callq 0x10b0
movq 0x2cee(%rip), %rsi      # 0x6158
pushq $0x3
popq %rbp
movl %ebp, %edi
callq 0x10b0
movq 0x2cdd(%rip), %rsi      # 0x6158
pushq $0x1
popq %rdi
callq 0x10b0
movq 0x2cce(%rip), %rsi      # 0x6158
xorl %edi, %edi
callq 0x10b0
movq 0x2cc0(%rip), %rsi      # 0x6158
pushq $0x2
popq %rdi
callq 0x10b0
movq 0x2cb1(%rip), %rsi      # 0x6158
pushq $0x11
popq %r12
movl %r12d, %edi
callq 0x10b0
movq 0x2c9e(%rip), %rsi      # 0x6158
movl %ebp, %edi
callq 0x10b0
movq 0x2c90(%rip), %rsi      # 0x6158
movl %r12d, %edi
callq 0x10b0
movq 0x2c81(%rip), %rsi      # 0x6158
xorl %edi, %edi
callq 0x10b0
movq 0x2c73(%rip), %rsi      # 0x6158
pushq $0x3f
popq %rdi
callq 0x10b0
movq 0x2c64(%rip), %rsi      # 0x6158
xorl %edi, %edi
callq 0x10b0
xorl %eax, %eax
movb $0x0, 0x2c60(%rip)      # 0x6164
movb $0x7, 0x2baf(%rip)      # 0x60ba
leaq 0x16(%rsp), %rcx
andw $0x0, (%rcx)
leaq 0x14(%rsp), %rcx
andw $0x0, (%rcx)
leaq 0x12(%rsp), %rcx
andw $0x0, (%rcx)
leaq 0x55ee3(%rip), %r13     # 0x59410
leaq 0x55f1c(%rip), %r12     # 0x59450
leaq 0x55f55(%rip), %rbp     # 0x59490
cmpl 0x2c0b(%rip), %eax      # 0x614c
jae 0x36d3
xorl %edx, %edx
movl %eax, 0xc(%rsp)
movl 0x2bf4(%rip), %r8d      # 0x6148
cmpl %r8d, %edx
jae 0x36cb
movl %r8d, %ecx
imull %eax, %ecx
movl %edx, 0x18(%rsp)
addl %edx, %ecx
xorl %edx, %edx
movq 0x2bde(%rip), %rsi      # 0x6150
xorl %edi, %edi
movl %r8d, 0x20(%rsp)
cmpl $0x8, %edx
je 0x3658
pushq $0x8
popq %rax
movl %ecx, %r8d
movl %eax, %r9d
subl $0x1, %r9d
jb 0x3647
movl %r8d, %eax
leaq (%rax,%rax,2), %r10
movzbl (%rsi,%r10), %r11d
movzbl 0x1(%rsi,%r10), %r14d
shll $0x2, %r11d
shll $0x2, %r14d
leaq 0x5425a(%rip), %rax     # 0x57810
movl (%r14,%rax), %eax
leaq 0x5364f(%rip), %r15     # 0x56c10
addl (%r11,%r15), %eax
leaq 0x54644(%rip), %rbx     # 0x57c10
movl (%r14,%rbx), %r15d
leaq 0x53a39(%rip), %rbx     # 0x57010
addl (%r11,%rbx), %r15d
leaq 0x54a2e(%rip), %rbx     # 0x58010
movl (%r14,%rbx), %r14d
leaq 0x53e23(%rip), %rbx     # 0x57410
addl (%r11,%rbx), %r14d
movzbl 0x2(%rsi,%r10), %r10d
shll $0x2, %r10d
leaq 0x54e0e(%rip), %r11     # 0x58410
addl (%r10,%r11), %eax
shrl $0x10, %eax
addb $-0x80, %al
movzbl %dil, %edi
movb %al, (%rdi,%r13)
leaq 0x551f6(%rip), %rax     # 0x58810
addl (%r10,%rax), %r15d
shrl $0x10, %r15d
movb %r15b, (%rdi,%r12)
leaq 0x555e3(%rip), %rax     # 0x58c10
addl (%r10,%rax), %r14d
shrl $0x10, %r14d
movb %r14b, (%rdi,%rbp)
incl %r8d
incb %dil
movl %r9d, %eax
jmp 0x358b
movl 0x20(%rsp), %r8d
addl %r8d, %ecx
subl %eax, %ecx
incl %edx
jmp 0x3579
movq %r13, %rdi
leaq 0x559ae(%rip), %rsi     # 0x59010
leaq 0x16(%rsp), %rdx
leaq 0x2d22(%rip), %rcx      # 0x6390
leaq 0x2d7b(%rip), %r8       # 0x63f0
callq 0x37b7
movq %r12, %rdi
leaq 0x55b8c(%rip), %rbx     # 0x59210
movq %rbx, %rsi
leaq 0x14(%rsp), %rdx
leaq 0x2d2d(%rip), %r14      # 0x63c0
movq %r14, %rcx
leaq 0x3153(%rip), %r15      # 0x67f0
movq %r15, %r8
callq 0x37b7
movq %rbp, %rdi
movq %rbx, %rsi
leaq 0x12(%rsp), %rdx
movq %r14, %rcx
movq %r15, %r8
callq 0x37b7
movl 0x18(%rsp), %edx
addl $0x8, %edx
movl 0xc(%rsp), %eax
jmp 0x354d
addl $0x8, %eax
jmp 0x353b
movsbl 0x29e0(%rip), %ecx      # 0x60ba
testl %ecx, %ecx
js 0x36f6
movl $0x20000, %eax          # imm = 0x20000
shll %cl, %eax
movzbl %cl, %ecx
leal (%rax,%rcx), %edi
addl $0xffff0001, %edi       # imm = 0xFFFF0001
callq 0x3732
movq 0x2a5b(%rip), %rsi      # 0x6158
movl $0xff, %edi
callq 0x10b0
movq 0x2a4a(%rip), %rsi      # 0x6158
movl $0xd9, %edi
callq 0x10b0
movq 0x2a31(%rip), %rdi      # 0x6150
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1040