// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/assembler/enc_ins.c
// Function: enc_ins_encode
size_t enc_ins_encode(
	EncoderInstruction *ins,
	uint8_t *buffer,
	size_t buffer_size
) {
	assert(ins);
	assert(buffer);
	assert(buffer_size > 0);

	size_t buffer_index = 0;

	#define	_BYTE(v, i)	((uint8_t)((v) >> (i * 8)))
	#define	_OUT_BYTE(v) {	\
		assert(buffer_index + 1 <= buffer_size);	\
		buffer[buffer_index++] = v;	\
	}
	#define	_OUT_2BYTE(v) {	\
		_OUT_BYTE(_BYTE(v, 0))	\
		_OUT_BYTE(_BYTE(v, 1))	\
	}
	#define	_OUT_4BYTE(v) {	\
		_OUT_BYTE(_BYTE(v, 0))	\
		_OUT_BYTE(_BYTE(v, 1))	\
		_OUT_BYTE(_BYTE(v, 2))	\
		_OUT_BYTE(_BYTE(v, 3))	\
	}
	#define	_OUT_8BYTE(v) {	\
		_OUT_BYTE(_BYTE(v, 0))	\
		_OUT_BYTE(_BYTE(v, 1))	\
		_OUT_BYTE(_BYTE(v, 2))	\
		_OUT_BYTE(_BYTE(v, 3))	\
		_OUT_BYTE(_BYTE(v, 4))	\
		_OUT_BYTE(_BYTE(v, 5))	\
		_OUT_BYTE(_BYTE(v, 6))	\
		_OUT_BYTE(_BYTE(v, 7))	\
	}
	
	// Legacy Prefix
	// ==================================================
	// Group 1
	// ==================================================
	// LOCK, 0xF0
	if (ins->legacy_prefix.lock) {
		_OUT_BYTE(0xF0)
	}

	// REPNE/REPNZ, 0xF2
	if (ins->legacy_prefix.repne) {
		_OUT_BYTE(0xF2)
	}

	// REP/REPE/REPZ, 0xF3
	if (ins->legacy_prefix.rep) {
		_OUT_BYTE(0xF3)
	}

	// ==================================================
	// Group 2
	// ==================================================
	// CS, 0x2E
	if (ins->legacy_prefix.cs) {
		_OUT_BYTE(0x2E)
	}

	// SS, 0x36
	if (ins->legacy_prefix.ss) {
		_OUT_BYTE(0x36)
	}

	// DS, 0x3E
	if (ins->legacy_prefix.ds) {
		_OUT_BYTE(0x3E)
	}

	// ES, 0x26
	if (ins->legacy_prefix.es) {
		_OUT_BYTE(0x26)
	}

	// FS, 0x64
	if (ins->legacy_prefix.fs) {
		_OUT_BYTE(0x64)
	}

	// GS, 0x65
	if (ins->legacy_prefix.gs) {
		_OUT_BYTE(0x65)
	}

	// Branch not taken, 0x2E
	if (ins->legacy_prefix.branch_not_taken) {
		_OUT_BYTE(0x2E)
	}

	// Branch taken, 0x3E
	if (ins->legacy_prefix.branch_taken) {
		_OUT_BYTE(0x3E)
	}

	// ==================================================
	// Group 3
	// ==================================================
	// Operand-size override, 0x66
	if (ins->legacy_prefix.operand_size_override) {
		_OUT_BYTE(0x66)
	}

	// ==================================================
	// Group 4
	// ==================================================
	// Address-size override, 0x67
	if (ins->legacy_prefix.address_size_override) {
		_OUT_BYTE(0x67)
	}

	// REX Prefix
	if (ins->rex_prefix_used) {
		uint8_t rex_prefix = 0x40;

		if (ins->rex_prefix.b) {
			rex_prefix |= 0x01;
		}

		if (ins->rex_prefix.x) {
			rex_prefix |= 0x02;
		}

		if (ins->rex_prefix.r) {
			rex_prefix |= 0x04;
		}

		if (ins->rex_prefix.w) {
			rex_prefix |= 0x08;
		}

		_OUT_BYTE(rex_prefix)
	}

	// Opcode
	switch (ins->opcode_len) {
		case 1: {
			_OUT_BYTE(ins->opcode[0])
			break;
		}
		case 2: {
			_OUT_BYTE(ins->opcode[0])
			_OUT_BYTE(ins->opcode[1])
			break;
		}
		case 3: {
			_OUT_BYTE(ins->opcode[0])
			_OUT_BYTE(ins->opcode[1])
			_OUT_BYTE(ins->opcode[2])
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	// ModR/M
	if (ins->mod_rm_used) {
		uint8_t mod_rm = 0x00;

		// Mod
		mod_rm |= ((ins->mod_rm.mod & 0x03) << 6);

		// Reg
		mod_rm |= ((ins->mod_rm.reg & 0x07) << 3);

		// R/M
		mod_rm |= ins->mod_rm.rm & 0x07;

		_OUT_BYTE(mod_rm)
	}

	// SIB
	if (ins->sib_used) {
		uint8_t sib = 0x00;

		// Scale
		sib |= ((ins->sib.scale & 0x03) << 6);

		// Index
		sib |= ((ins->sib.index & 0x07) << 3);
		
		// Base
		sib |= ins->sib.base & 0x07;

		_OUT_BYTE(sib)
	}

	// Displacement
	switch (ins->disp_len) {
		case 0: {
			break;
		}
		case 1: {
			_OUT_BYTE(ins->disp);
			break;
		}
		case 2: {
			_OUT_2BYTE(ins->disp);
			break;
		}
		case 4: {
			_OUT_4BYTE(ins->disp);
			break;
		}
		case 8: {
			_OUT_8BYTE(ins->disp);
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	// Immediate
	switch (ins->imm_len) {
		case 0: {
			break;
		}
		case 1: {
			_OUT_BYTE(ins->imm);
			break;
		}
		case 2: {
			_OUT_2BYTE(ins->imm);
			break;
		}
		case 4: {
			_OUT_4BYTE(ins->imm);
			break;
		}
		case 8: {
			_OUT_8BYTE(ins->imm);
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	// 扩展字段
	if (ins->ext_len > ENCODER_INSTRUCTION_EXT_MAX_LEN) {
		assert(0);
	}
	for (int i = 0; i < ins->ext_len; i++) {
		_OUT_BYTE(ins->ext[i]);
	}

	#undef	_BYTE
	#undef	_OUT_BYTE
	#undef	_OUT_2BYTE
	#undef	_OUT_4BYTE
	#undef	_OUT_8BYTE

	return buffer_index;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x1922d
jmp 0x1924c
leaq 0x308d2(%rip), %rdi     # 0x49b06
leaq 0x3060d(%rip), %rsi     # 0x49848
movl $0xf, %edx
leaq 0x3061e(%rip), %rcx     # 0x49865
callq 0xa0b0
cmpq $0x0, -0x10(%rbp)
je 0x19255
jmp 0x19274
leaq 0x30648(%rip), %rdi     # 0x498a4
leaq 0x305e5(%rip), %rsi     # 0x49848
movl $0x10, %edx
leaq 0x305f6(%rip), %rcx     # 0x49865
callq 0xa0b0
cmpq $0x0, -0x18(%rbp)
jbe 0x1927d
jmp 0x1929c
leaq 0x30627(%rip), %rdi     # 0x498ab
leaq 0x305bd(%rip), %rsi     # 0x49848
movl $0x11, %edx
leaq 0x305ce(%rip), %rcx     # 0x49865
callq 0xa0b0
movq $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, (%rax)
je 0x192f3
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x192bd
jmp 0x192dc
leaq 0x305f7(%rip), %rdi     # 0x498bb
leaq 0x3057d(%rip), %rsi     # 0x49848
movl $0x35, %edx
leaq 0x3058e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $-0x10, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x1(%rax)
je 0x19343
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1930d
jmp 0x1932c
leaq 0x305a7(%rip), %rdi     # 0x498bb
leaq 0x3052d(%rip), %rsi     # 0x49848
movl $0x3a, %edx
leaq 0x3053e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $-0xe, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x2(%rax)
je 0x19393
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1935d
jmp 0x1937c
leaq 0x30557(%rip), %rdi     # 0x498bb
leaq 0x304dd(%rip), %rsi     # 0x49848
movl $0x3f, %edx
leaq 0x304ee(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $-0xd, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x3(%rax)
je 0x193e3
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x193ad
jmp 0x193cc
leaq 0x30507(%rip), %rdi     # 0x498bb
leaq 0x3048d(%rip), %rsi     # 0x49848
movl $0x47, %edx
leaq 0x3049e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x2e, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x4(%rax)
je 0x19433
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x193fd
jmp 0x1941c
leaq 0x304b7(%rip), %rdi     # 0x498bb
leaq 0x3043d(%rip), %rsi     # 0x49848
movl $0x4c, %edx
leaq 0x3044e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x36, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x5(%rax)
je 0x19483
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1944d
jmp 0x1946c
leaq 0x30467(%rip), %rdi     # 0x498bb
leaq 0x303ed(%rip), %rsi     # 0x49848
movl $0x51, %edx
leaq 0x303fe(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x3e, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x6(%rax)
je 0x194d3
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1949d
jmp 0x194bc
leaq 0x30417(%rip), %rdi     # 0x498bb
leaq 0x3039d(%rip), %rsi     # 0x49848
movl $0x56, %edx
leaq 0x303ae(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x26, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x7(%rax)
je 0x19523
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x194ed
jmp 0x1950c
leaq 0x303c7(%rip), %rdi     # 0x498bb
leaq 0x3034d(%rip), %rsi     # 0x49848
movl $0x5b, %edx
leaq 0x3035e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x64, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x8(%rax)
je 0x19573
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1953d
jmp 0x1955c
leaq 0x30377(%rip), %rdi     # 0x498bb
leaq 0x302fd(%rip), %rsi     # 0x49848
movl $0x60, %edx
leaq 0x3030e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x65, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x9(%rax)
je 0x195c3
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1958d
jmp 0x195ac
leaq 0x30327(%rip), %rdi     # 0x498bb
leaq 0x302ad(%rip), %rsi     # 0x49848
movl $0x65, %edx
leaq 0x302be(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x2e, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0xa(%rax)
je 0x19613
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x195dd
jmp 0x195fc
leaq 0x302d7(%rip), %rdi     # 0x498bb
leaq 0x3025d(%rip), %rsi     # 0x49848
movl $0x6a, %edx
leaq 0x3026e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x3e, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0xb(%rax)
je 0x19663
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1962d
jmp 0x1964c
leaq 0x30287(%rip), %rdi     # 0x498bb
leaq 0x3020d(%rip), %rsi     # 0x49848
movl $0x72, %edx
leaq 0x3021e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x66, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0xc(%rax)
je 0x196b3
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1967d
jmp 0x1969c
leaq 0x30237(%rip), %rdi     # 0x498bb
leaq 0x301bd(%rip), %rsi     # 0x49848
movl $0x7a, %edx
leaq 0x301ce(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x20(%rbp)
movb $0x67, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0xd(%rax)
je 0x1975d
movb $0x40, -0x21(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0x11(%rax)
je 0x196d9
movzbl -0x21(%rbp), %eax
orl $0x1, %eax
movb %al, -0x21(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0x10(%rax)
je 0x196ed
movzbl -0x21(%rbp), %eax
orl $0x2, %eax
movb %al, -0x21(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0xf(%rax)
je 0x19701
movzbl -0x21(%rbp), %eax
orl $0x4, %eax
movb %al, -0x21(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0xe(%rax)
je 0x19715
movzbl -0x21(%rbp), %eax
orl $0x8, %eax
movb %al, -0x21(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19725
jmp 0x19744
leaq 0x3018f(%rip), %rdi     # 0x498bb
leaq 0x30115(%rip), %rsi     # 0x49848
movl $0x91, %edx
leaq 0x30126(%rip), %rcx     # 0x49865
callq 0xa0b0
movb -0x21(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movsbl 0x12(%rax), %eax
movl %eax, -0x2c(%rbp)
subl $0x1, %eax
je 0x1978a
jmp 0x1976f
movl -0x2c(%rbp), %eax
subl $0x2, %eax
je 0x197db
jmp 0x19779
movl -0x2c(%rbp), %eax
subl $0x3, %eax
je 0x19878
jmp 0x1995e
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1979a
jmp 0x197b9
leaq 0x3011a(%rip), %rdi     # 0x498bb
leaq 0x300a0(%rip), %rsi     # 0x49848
movl $0x97, %edx
leaq 0x300b1(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movb 0x13(%rax), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x1997d
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x197eb
jmp 0x1980a
leaq 0x300c9(%rip), %rdi     # 0x498bb
leaq 0x3004f(%rip), %rsi     # 0x49848
movl $0x9b, %edx
leaq 0x30060(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movb 0x13(%rax), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19837
jmp 0x19856
leaq 0x3007d(%rip), %rdi     # 0x498bb
leaq 0x30003(%rip), %rsi     # 0x49848
movl $0x9c, %edx
leaq 0x30014(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movb 0x14(%rax), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x1997d
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19888
jmp 0x198a7
leaq 0x3002c(%rip), %rdi     # 0x498bb
leaq 0x2ffb2(%rip), %rsi     # 0x49848
movl $0xa0, %edx
leaq 0x2ffc3(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movb 0x13(%rax), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x198d4
jmp 0x198f3
leaq 0x2ffe0(%rip), %rdi     # 0x498bb
leaq 0x2ff66(%rip), %rsi     # 0x49848
movl $0xa1, %edx
leaq 0x2ff77(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movb 0x14(%rax), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19920
jmp 0x1993f
leaq 0x2ff94(%rip), %rdi     # 0x498bb
leaq 0x2ff1a(%rip), %rsi     # 0x49848
movl $0xa2, %edx
leaq 0x2ff2b(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movb 0x15(%rax), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x1997d
leaq 0x2db00(%rip), %rdi     # 0x47465
leaq 0x2fedc(%rip), %rsi     # 0x49848
movl $0xa6, %edx
leaq 0x2feed(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
testb $0x1, 0x16(%rax)
je 0x19a19
movb $0x0, -0x22(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x17(%rax), %ecx
andl $0x3, %ecx
shll $0x6, %ecx
movzbl -0x22(%rbp), %eax
orl %ecx, %eax
movb %al, -0x22(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x18(%rax), %ecx
andl $0x7, %ecx
shll $0x3, %ecx
movzbl -0x22(%rbp), %eax
orl %ecx, %eax
movb %al, -0x22(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x19(%rax), %ecx
andl $0x7, %ecx
movzbl -0x22(%rbp), %eax
orl %ecx, %eax
movb %al, -0x22(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x199e1
jmp 0x19a00
leaq 0x2fed3(%rip), %rdi     # 0x498bb
leaq 0x2fe59(%rip), %rsi     # 0x49848
movl $0xb8, %edx
leaq 0x2fe6a(%rip), %rcx     # 0x49865
callq 0xa0b0
movb -0x22(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
testb $0x1, 0x1a(%rax)
je 0x19ab5
movb $0x0, -0x23(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x1b(%rax), %ecx
andl $0x3, %ecx
shll $0x6, %ecx
movzbl -0x23(%rbp), %eax
orl %ecx, %eax
movb %al, -0x23(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x1c(%rax), %ecx
andl $0x7, %ecx
shll $0x3, %ecx
movzbl -0x23(%rbp), %eax
orl %ecx, %eax
movb %al, -0x23(%rbp)
movq -0x8(%rbp), %rax
movzbl 0x1d(%rax), %ecx
andl $0x7, %ecx
movzbl -0x23(%rbp), %eax
orl %ecx, %eax
movb %al, -0x23(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19a7d
jmp 0x19a9c
leaq 0x2fe37(%rip), %rdi     # 0x498bb
leaq 0x2fdbd(%rip), %rsi     # 0x49848
movl $0xc8, %edx
leaq 0x2fdce(%rip), %rcx     # 0x49865
callq 0xa0b0
movb -0x23(%rbp), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movzbl 0x1e(%rax), %eax
movq %rax, -0x38(%rbp)
subq $0x8, %rax
ja 0x19fce
movq -0x38(%rbp), %rax
leaq 0x2fd2a(%rip), %rcx     # 0x49800
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x19fed
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19af4
jmp 0x19b13
leaq 0x2fdc0(%rip), %rdi     # 0x498bb
leaq 0x2fd46(%rip), %rsi     # 0x49848
movl $0xd1, %edx
leaq 0x2fd57(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x19fed
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19b48
jmp 0x19b67
leaq 0x2fd6c(%rip), %rdi     # 0x498bb
leaq 0x2fcf2(%rip), %rsi     # 0x49848
movl $0xd5, %edx
leaq 0x2fd03(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x0, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19b9b
jmp 0x19bba
leaq 0x2fd19(%rip), %rdi     # 0x498bb
leaq 0x2fc9f(%rip), %rsi     # 0x49848
movl $0xd5, %edx
leaq 0x2fcb0(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x8, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x19fed
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19bf3
jmp 0x19c12
leaq 0x2fcc1(%rip), %rdi     # 0x498bb
leaq 0x2fc47(%rip), %rsi     # 0x49848
movl $0xd9, %edx
leaq 0x2fc58(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x0, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19c46
jmp 0x19c65
leaq 0x2fc6e(%rip), %rdi     # 0x498bb
leaq 0x2fbf4(%rip), %rsi     # 0x49848
movl $0xd9, %edx
leaq 0x2fc05(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x8, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19c99
jmp 0x19cb8
leaq 0x2fc1b(%rip), %rdi     # 0x498bb
leaq 0x2fba1(%rip), %rsi     # 0x49848
movl $0xd9, %edx
leaq 0x2fbb2(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x10, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19cec
jmp 0x19d0b
leaq 0x2fbc8(%rip), %rdi     # 0x498bb
leaq 0x2fb4e(%rip), %rsi     # 0x49848
movl $0xd9, %edx
leaq 0x2fb5f(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x18, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x19fed
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19d44
jmp 0x19d63
leaq 0x2fb70(%rip), %rdi     # 0x498bb
leaq 0x2faf6(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2fb07(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x0, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19d97
jmp 0x19db6
leaq 0x2fb1d(%rip), %rdi     # 0x498bb
leaq 0x2faa3(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2fab4(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x8, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19dea
jmp 0x19e09
leaq 0x2faca(%rip), %rdi     # 0x498bb
leaq 0x2fa50(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2fa61(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x10, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19e3d
jmp 0x19e5c
leaq 0x2fa77(%rip), %rdi     # 0x498bb
leaq 0x2f9fd(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2fa0e(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x18, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19e90
jmp 0x19eaf
leaq 0x2fa24(%rip), %rdi     # 0x498bb
leaq 0x2f9aa(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2f9bb(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x20, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19ee3
jmp 0x19f02
leaq 0x2f9d1(%rip), %rdi     # 0x498bb
leaq 0x2f957(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2f968(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x28, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19f36
jmp 0x19f55
leaq 0x2f97e(%rip), %rdi     # 0x498bb
leaq 0x2f904(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2f915(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x30, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x19f89
jmp 0x19fa8
leaq 0x2f92b(%rip), %rdi     # 0x498bb
leaq 0x2f8b1(%rip), %rsi     # 0x49848
movl $0xdd, %edx
leaq 0x2f8c2(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
shrq $0x38, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x19fed
leaq 0x2d490(%rip), %rdi     # 0x47465
leaq 0x2f86c(%rip), %rsi     # 0x49848
movl $0xe1, %edx
leaq 0x2f87d(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movzbl 0x28(%rax), %eax
movq %rax, -0x40(%rbp)
subq $0x8, %rax
ja 0x1a506
movq -0x40(%rbp), %rax
leaq 0x2f816(%rip), %rcx     # 0x49824
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x1a525
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a02c
jmp 0x1a04b
leaq 0x2f888(%rip), %rdi     # 0x498bb
leaq 0x2f80e(%rip), %rsi     # 0x49848
movl $0xec, %edx
leaq 0x2f81f(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x1a525
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a080
jmp 0x1a09f
leaq 0x2f834(%rip), %rdi     # 0x498bb
leaq 0x2f7ba(%rip), %rsi     # 0x49848
movl $0xf0, %edx
leaq 0x2f7cb(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x0, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a0d3
jmp 0x1a0f2
leaq 0x2f7e1(%rip), %rdi     # 0x498bb
leaq 0x2f767(%rip), %rsi     # 0x49848
movl $0xf0, %edx
leaq 0x2f778(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x8, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x1a525
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a12b
jmp 0x1a14a
leaq 0x2f789(%rip), %rdi     # 0x498bb
leaq 0x2f70f(%rip), %rsi     # 0x49848
movl $0xf4, %edx
leaq 0x2f720(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x0, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a17e
jmp 0x1a19d
leaq 0x2f736(%rip), %rdi     # 0x498bb
leaq 0x2f6bc(%rip), %rsi     # 0x49848
movl $0xf4, %edx
leaq 0x2f6cd(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x8, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a1d1
jmp 0x1a1f0
leaq 0x2f6e3(%rip), %rdi     # 0x498bb
leaq 0x2f669(%rip), %rsi     # 0x49848
movl $0xf4, %edx
leaq 0x2f67a(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x10, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a224
jmp 0x1a243
leaq 0x2f690(%rip), %rdi     # 0x498bb
leaq 0x2f616(%rip), %rsi     # 0x49848
movl $0xf4, %edx
leaq 0x2f627(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x18, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x1a525
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a27c
jmp 0x1a29b
leaq 0x2f638(%rip), %rdi     # 0x498bb
leaq 0x2f5be(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f5cf(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x0, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a2cf
jmp 0x1a2ee
leaq 0x2f5e5(%rip), %rdi     # 0x498bb
leaq 0x2f56b(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f57c(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x8, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a322
jmp 0x1a341
leaq 0x2f592(%rip), %rdi     # 0x498bb
leaq 0x2f518(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f529(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x10, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a375
jmp 0x1a394
leaq 0x2f53f(%rip), %rdi     # 0x498bb
leaq 0x2f4c5(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f4d6(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x18, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a3c8
jmp 0x1a3e7
leaq 0x2f4ec(%rip), %rdi     # 0x498bb
leaq 0x2f472(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f483(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x20, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a41b
jmp 0x1a43a
leaq 0x2f499(%rip), %rdi     # 0x498bb
leaq 0x2f41f(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f430(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x28, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a46e
jmp 0x1a48d
leaq 0x2f446(%rip), %rdi     # 0x498bb
leaq 0x2f3cc(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f3dd(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x30, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a4c1
jmp 0x1a4e0
leaq 0x2f3f3(%rip), %rdi     # 0x498bb
leaq 0x2f379(%rip), %rsi     # 0x49848
movl $0xf8, %edx
leaq 0x2f38a(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
shrq $0x38, %rax
movb %al, %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x1a525
leaq 0x2cf58(%rip), %rdi     # 0x47465
leaq 0x2f334(%rip), %rsi     # 0x49848
movl $0xfc, %edx
leaq 0x2f345(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movzbl 0x38(%rax), %eax
cmpl $0x20, %eax
jle 0x1a551
leaq 0x2cf2c(%rip), %rdi     # 0x47465
leaq 0x2f308(%rip), %rsi     # 0x49848
movl $0x103, %edx            # imm = 0x103
leaq 0x2f319(%rip), %rcx     # 0x49865
callq 0xa0b0
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x8(%rbp), %rcx
movzbl 0x38(%rcx), %ecx
cmpl %ecx, %eax
jge 0x1a5c3
movq -0x20(%rbp), %rax
addq $0x1, %rax
cmpq -0x18(%rbp), %rax
ja 0x1a577
jmp 0x1a596
leaq 0x2f33d(%rip), %rdi     # 0x498bb
leaq 0x2f2c3(%rip), %rsi     # 0x49848
movl $0x106, %edx            # imm = 0x106
leaq 0x2f2d4(%rip), %rcx     # 0x49865
callq 0xa0b0
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movb 0x39(%rax,%rcx), %dl
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x20(%rbp)
movb %dl, (%rax,%rcx)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x1a558
movq -0x20(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)