// File: /workspace/github_c_makefile_star2_O1/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
testq %rdi, %rdi
je 0x14f1e
testq %rsi, %rsi
je 0x14f3d
testq %rdx, %rdx
je 0x14f5c
cmpb $0x1, (%rdi)
jne 0x148f2
movb $-0x10, (%rsi)
movl $0x1, %eax
jmp 0x148f4
xorl %eax, %eax
cmpb $0x1, 0x1(%rdi)
jne 0x1490a
cmpq %rdx, %rax
jae 0x14fd8
movb $-0xe, (%rsi,%rax)
incq %rax
cmpb $0x1, 0x2(%rdi)
jne 0x14920
cmpq %rdx, %rax
jae 0x14ff7
movb $-0xd, (%rsi,%rax)
incq %rax
cmpb $0x1, 0x3(%rdi)
jne 0x14939
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x15016
movb $0x2e, (%rsi,%rax)
jmp 0x1493c
movq %rax, %rcx
cmpb $0x1, 0x4(%rdi)
jne 0x14955
leaq 0x1(%rcx), %rax
cmpq %rdx, %rax
ja 0x15035
movb $0x36, (%rsi,%rcx)
jmp 0x14958
movq %rcx, %rax
cmpb $0x1, 0x5(%rdi)
jne 0x14971
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x15054
movb $0x3e, (%rsi,%rax)
jmp 0x14974
movq %rax, %rcx
cmpb $0x1, 0x6(%rdi)
jne 0x1498d
leaq 0x1(%rcx), %rax
cmpq %rdx, %rax
ja 0x15073
movb $0x26, (%rsi,%rcx)
jmp 0x14990
movq %rcx, %rax
cmpb $0x1, 0x7(%rdi)
jne 0x149a9
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x15092
movb $0x64, (%rsi,%rax)
jmp 0x149ac
movq %rax, %rcx
cmpb $0x1, 0x8(%rdi)
jne 0x149c5
leaq 0x1(%rcx), %rax
cmpq %rdx, %rax
ja 0x150b1
movb $0x65, (%rsi,%rcx)
jmp 0x149c8
movq %rcx, %rax
cmpb $0x1, 0x9(%rdi)
jne 0x149e1
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x150d0
movb $0x2e, (%rsi,%rax)
jmp 0x149e4
movq %rax, %rcx
cmpb $0x1, 0xa(%rdi)
jne 0x149fd
leaq 0x1(%rcx), %rax
cmpq %rdx, %rax
ja 0x150ef
movb $0x3e, (%rsi,%rcx)
jmp 0x14a00
movq %rcx, %rax
cmpb $0x1, 0xb(%rdi)
jne 0x14a19
leaq 0x1(%rax), %r8
cmpq %rdx, %r8
ja 0x1510e
movb $0x66, (%rsi,%rax)
jmp 0x14a1c
movq %rax, %r8
cmpb $0x1, 0xc(%rdi)
jne 0x14a36
leaq 0x1(%r8), %rcx
cmpq %rdx, %rcx
ja 0x1512d
movb $0x67, (%rsi,%r8)
jmp 0x14a39
movq %r8, %rcx
cmpb $0x1, 0xd(%rdi)
jne 0x14a77
leaq 0x1(%rcx), %rax
cmpq %rdx, %rax
ja 0x1514c
movb 0xe(%rdi), %r8b
movb 0xf(%rdi), %r9b
movb 0x10(%rdi), %r10b
addb %r10b, %r10b
orb 0x11(%rdi), %r10b
shlb $0x2, %r9b
orb %r10b, %r9b
shlb $0x3, %r8b
orb %r9b, %r8b
orb $0x40, %r8b
movb %r8b, (%rsi,%rcx)
jmp 0x14a7a
movq %rcx, %rax
movzbl 0x12(%rdi), %ecx
cmpl $0x3, %ecx
je 0x14b0e
cmpl $0x2, %ecx
je 0x14ac7
cmpl $0x1, %ecx
jne 0x151e7
leaq 0x1(%rax), %rcx
movl $0x13, %r8d
cmpq %rdx, %rcx
jbe 0x14b4e
leaq 0x1ca64(%rip), %rdi     # 0x31513
leaq 0x1c9ea(%rip), %rsi     # 0x314a0
leaq 0x1ca00(%rip), %rcx     # 0x314bd
movl $0x97, %edx
callq 0xa0b0
leaq 0x1(%rax), %r9
cmpq %rdx, %r9
ja 0x15206
movb 0x13(%rdi), %cl
movb %cl, (%rsi,%rax)
movq %rax, %rcx
addq $0x2, %rcx
movl $0x14, %r8d
movq %r9, %rax
cmpq %rdx, %rcx
jbe 0x14b4e
leaq 0x1ca1d(%rip), %rdi     # 0x31513
leaq 0x1c9a3(%rip), %rsi     # 0x314a0
leaq 0x1c9b9(%rip), %rcx     # 0x314bd
movl $0x9c, %edx
callq 0xa0b0
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x15225
movb 0x13(%rdi), %cl
movb %cl, (%rsi,%rax)
leaq 0x2(%rax), %r9
cmpq %rdx, %r9
ja 0x15244
movb 0x14(%rdi), %cl
movb %cl, 0x1(%rsi,%rax)
movq %rax, %rcx
addq $0x3, %rcx
movl $0x15, %r8d
movq %r9, %rax
cmpq %rdx, %rcx
ja 0x15263
movb (%rdi,%r8), %r8b
movb %r8b, (%rsi,%rax)
cmpb $0x1, 0x16(%rdi)
jne 0x14b8b
leaq 0x1(%rcx), %r8
cmpq %rdx, %r8
ja 0x1516b
movb 0x17(%rdi), %al
movb 0x18(%rdi), %r9b
shlb $0x6, %al
shlb $0x3, %r9b
andb $0x38, %r9b
orb %al, %r9b
movb 0x19(%rdi), %al
andb $0x7, %al
orb %r9b, %al
movb %al, (%rsi,%rcx)
jmp 0x14b8e
movq %rcx, %r8
cmpb $0x1, 0x1a(%rdi)
jne 0x14bc5
leaq 0x1(%r8), %rax
cmpq %rdx, %rax
ja 0x1518a
movb 0x1b(%rdi), %cl
movb 0x1c(%rdi), %r9b
shlb $0x6, %cl
shlb $0x3, %r9b
andb $0x38, %r9b
orb %cl, %r9b
movb 0x1d(%rdi), %cl
andb $0x7, %cl
orb %r9b, %cl
movb %cl, (%rsi,%r8)
jmp 0x14bc8
movq %r8, %rax
movzbl 0x1e(%rdi), %ecx
cmpq $0x8, %rcx
ja 0x152c0
leaq 0x1c87b(%rip), %r8      # 0x31458
movslq (%r8,%rcx,4), %rcx
addq %r8, %rcx
jmpq *%rcx
leaq 0x1(%rax), %r9
cmpq %rdx, %r9
ja 0x15282
movq 0x20(%rdi), %r8
movq %rax, %rcx
jmp 0x14d21
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14ee0
movb 0x20(%rdi), %cl
movb %cl, (%rsi,%rax)
leaq 0x2(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14ee0
movb 0x21(%rdi), %cl
movb %cl, 0x1(%rsi,%rax)
leaq 0x3(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14ee0
movb 0x22(%rdi), %cl
movb %cl, 0x2(%rsi,%rax)
leaq 0x4(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14ee0
movb 0x23(%rdi), %cl
movb %cl, 0x3(%rsi,%rax)
leaq 0x5(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14ee0
movb 0x24(%rdi), %cl
movb %cl, 0x4(%rsi,%rax)
leaq 0x6(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14ee0
movb 0x25(%rdi), %cl
movb %cl, 0x5(%rsi,%rax)
leaq 0x7(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14ee0
movb 0x26(%rdi), %r8b
movb %r8b, 0x6(%rsi,%rax)
addq $0x8, %rax
cmpq %rdx, %rax
ja 0x14ee0
movzbl 0x27(%rdi), %r8d
jmp 0x14d1e
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x151a9
movb 0x20(%rdi), %r8b
movb %r8b, (%rsi,%rax)
addq $0x2, %rax
cmpq %rdx, %rax
ja 0x151a9
movq 0x20(%rdi), %r8
shrq $0x8, %r8
jmp 0x14d1e
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14f9a
movb 0x20(%rdi), %cl
movb %cl, (%rsi,%rax)
leaq 0x2(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14f9a
movb 0x21(%rdi), %cl
movb %cl, 0x1(%rsi,%rax)
leaq 0x3(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14f9a
movb 0x22(%rdi), %r8b
movb %r8b, 0x2(%rsi,%rax)
addq $0x4, %rax
cmpq %rdx, %rax
ja 0x14f9a
movq 0x20(%rdi), %r8
shrq $0x18, %r8
movq %rax, %r9
movb %r8b, (%rsi,%rcx)
movq %r9, %rax
movzbl 0x28(%rdi), %ecx
cmpq $0x8, %rcx
ja 0x152df
leaq 0x1c73f(%rip), %r8      # 0x3147c
movslq (%r8,%rcx,4), %rcx
addq %r8, %rcx
jmpq *%rcx
leaq 0x1(%rax), %r9
cmpq %rdx, %r9
ja 0x152a1
movq 0x30(%rdi), %r8
movq %rax, %rcx
jmp 0x14e81
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14eff
movb 0x30(%rdi), %cl
movb %cl, (%rsi,%rax)
leaq 0x2(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14eff
movb 0x31(%rdi), %cl
movb %cl, 0x1(%rsi,%rax)
leaq 0x3(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14eff
movb 0x32(%rdi), %cl
movb %cl, 0x2(%rsi,%rax)
leaq 0x4(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14eff
movb 0x33(%rdi), %cl
movb %cl, 0x3(%rsi,%rax)
leaq 0x5(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14eff
movb 0x34(%rdi), %cl
movb %cl, 0x4(%rsi,%rax)
leaq 0x6(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14eff
movb 0x35(%rdi), %cl
movb %cl, 0x5(%rsi,%rax)
leaq 0x7(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14eff
movb 0x36(%rdi), %r8b
movb %r8b, 0x6(%rsi,%rax)
addq $0x8, %rax
cmpq %rdx, %rax
ja 0x14eff
movzbl 0x37(%rdi), %r8d
jmp 0x14e7e
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x151c8
movb 0x30(%rdi), %r8b
movb %r8b, (%rsi,%rax)
addq $0x2, %rax
cmpq %rdx, %rax
ja 0x151c8
movq 0x30(%rdi), %r8
shrq $0x8, %r8
jmp 0x14e7e
leaq 0x1(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14fb9
movb 0x30(%rdi), %cl
movb %cl, (%rsi,%rax)
leaq 0x2(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14fb9
movb 0x31(%rdi), %cl
movb %cl, 0x1(%rsi,%rax)
leaq 0x3(%rax), %rcx
cmpq %rdx, %rcx
ja 0x14fb9
movb 0x32(%rdi), %r8b
movb %r8b, 0x2(%rsi,%rax)
addq $0x4, %rax
cmpq %rdx, %rax
ja 0x14fb9
movq 0x30(%rdi), %r8
shrq $0x18, %r8
movq %rax, %r9
movb %r8b, (%rsi,%rcx)
movq %r9, %rax
cmpb $0x20, 0x38(%rdi)
ja 0x14f7b
cmpb $0x0, 0x38(%rdi)
je 0x14ebf
addq %rax, %rsi
xorl %ecx, %ecx
leaq (%rax,%rcx), %r8
cmpq %rdx, %r8
jae 0x14ec1
movb 0x39(%rdi,%rcx), %r8b
movb %r8b, (%rsi,%rcx)
incq %rcx
movzbl 0x38(%rdi), %r8d
cmpq %r8, %rcx
jb 0x14e9d
addq %rcx, %rax
popq %rbp
retq
leaq 0x1c64b(%rip), %rdi     # 0x31513
leaq 0x1c5d1(%rip), %rsi     # 0x314a0
leaq 0x1c5e7(%rip), %rcx     # 0x314bd
movl $0x106, %edx            # imm = 0x106
callq 0xa0b0
leaq 0x1c62c(%rip), %rdi     # 0x31513
leaq 0x1c5b2(%rip), %rsi     # 0x314a0
leaq 0x1c5c8(%rip), %rcx     # 0x314bd
movl $0xdd, %edx
callq 0xa0b0
leaq 0x1c60d(%rip), %rdi     # 0x31513
leaq 0x1c593(%rip), %rsi     # 0x314a0
leaq 0x1c5a9(%rip), %rcx     # 0x314bd
movl $0xf8, %edx
callq 0xa0b0
leaq 0x1c855(%rip), %rdi     # 0x3177a
leaq 0x1c574(%rip), %rsi     # 0x314a0
leaq 0x1c58a(%rip), %rcx     # 0x314bd
movl $0xf, %edx
callq 0xa0b0
leaq 0x1c5b8(%rip), %rdi     # 0x314fc
leaq 0x1c555(%rip), %rsi     # 0x314a0
leaq 0x1c56b(%rip), %rcx     # 0x314bd
movl $0x10, %edx
callq 0xa0b0
leaq 0x1c5a0(%rip), %rdi     # 0x31503
leaq 0x1c536(%rip), %rsi     # 0x314a0
leaq 0x1c54c(%rip), %rcx     # 0x314bd
movl $0x11, %edx
callq 0xa0b0
leaq 0x1a412(%rip), %rdi     # 0x2f394
leaq 0x1c517(%rip), %rsi     # 0x314a0
leaq 0x1c52d(%rip), %rcx     # 0x314bd
movl $0x103, %edx            # imm = 0x103
callq 0xa0b0
leaq 0x1c572(%rip), %rdi     # 0x31513
leaq 0x1c4f8(%rip), %rsi     # 0x314a0
leaq 0x1c50e(%rip), %rcx     # 0x314bd
movl $0xd9, %edx
callq 0xa0b0
leaq 0x1c553(%rip), %rdi     # 0x31513
leaq 0x1c4d9(%rip), %rsi     # 0x314a0
leaq 0x1c4ef(%rip), %rcx     # 0x314bd
movl $0xf4, %edx
callq 0xa0b0
leaq 0x1c534(%rip), %rdi     # 0x31513
leaq 0x1c4ba(%rip), %rsi     # 0x314a0
leaq 0x1c4d0(%rip), %rcx     # 0x314bd
movl $0x3a, %edx
callq 0xa0b0
leaq 0x1c515(%rip), %rdi     # 0x31513
leaq 0x1c49b(%rip), %rsi     # 0x314a0
leaq 0x1c4b1(%rip), %rcx     # 0x314bd
movl $0x3f, %edx
callq 0xa0b0
leaq 0x1c4f6(%rip), %rdi     # 0x31513
leaq 0x1c47c(%rip), %rsi     # 0x314a0
leaq 0x1c492(%rip), %rcx     # 0x314bd
movl $0x47, %edx
callq 0xa0b0
leaq 0x1c4d7(%rip), %rdi     # 0x31513
leaq 0x1c45d(%rip), %rsi     # 0x314a0
leaq 0x1c473(%rip), %rcx     # 0x314bd
movl $0x4c, %edx
callq 0xa0b0
leaq 0x1c4b8(%rip), %rdi     # 0x31513
leaq 0x1c43e(%rip), %rsi     # 0x314a0
leaq 0x1c454(%rip), %rcx     # 0x314bd
movl $0x51, %edx
callq 0xa0b0
leaq 0x1c499(%rip), %rdi     # 0x31513
leaq 0x1c41f(%rip), %rsi     # 0x314a0
leaq 0x1c435(%rip), %rcx     # 0x314bd
movl $0x56, %edx
callq 0xa0b0
leaq 0x1c47a(%rip), %rdi     # 0x31513
leaq 0x1c400(%rip), %rsi     # 0x314a0
leaq 0x1c416(%rip), %rcx     # 0x314bd
movl $0x5b, %edx
callq 0xa0b0
leaq 0x1c45b(%rip), %rdi     # 0x31513
leaq 0x1c3e1(%rip), %rsi     # 0x314a0
leaq 0x1c3f7(%rip), %rcx     # 0x314bd
movl $0x60, %edx
callq 0xa0b0
leaq 0x1c43c(%rip), %rdi     # 0x31513
leaq 0x1c3c2(%rip), %rsi     # 0x314a0
leaq 0x1c3d8(%rip), %rcx     # 0x314bd
movl $0x65, %edx
callq 0xa0b0
leaq 0x1c41d(%rip), %rdi     # 0x31513
leaq 0x1c3a3(%rip), %rsi     # 0x314a0
leaq 0x1c3b9(%rip), %rcx     # 0x314bd
movl $0x6a, %edx
callq 0xa0b0
leaq 0x1c3fe(%rip), %rdi     # 0x31513
leaq 0x1c384(%rip), %rsi     # 0x314a0
leaq 0x1c39a(%rip), %rcx     # 0x314bd
movl $0x72, %edx
callq 0xa0b0
leaq 0x1c3df(%rip), %rdi     # 0x31513
leaq 0x1c365(%rip), %rsi     # 0x314a0
leaq 0x1c37b(%rip), %rcx     # 0x314bd
movl $0x7a, %edx
callq 0xa0b0
leaq 0x1c3c0(%rip), %rdi     # 0x31513
leaq 0x1c346(%rip), %rsi     # 0x314a0
leaq 0x1c35c(%rip), %rcx     # 0x314bd
movl $0x91, %edx
callq 0xa0b0
leaq 0x1c3a1(%rip), %rdi     # 0x31513
leaq 0x1c327(%rip), %rsi     # 0x314a0
leaq 0x1c33d(%rip), %rcx     # 0x314bd
movl $0xb8, %edx
callq 0xa0b0
leaq 0x1c382(%rip), %rdi     # 0x31513
leaq 0x1c308(%rip), %rsi     # 0x314a0
leaq 0x1c31e(%rip), %rcx     # 0x314bd
movl $0xc8, %edx
callq 0xa0b0
leaq 0x1c363(%rip), %rdi     # 0x31513
leaq 0x1c2e9(%rip), %rsi     # 0x314a0
leaq 0x1c2ff(%rip), %rcx     # 0x314bd
movl $0xd5, %edx
callq 0xa0b0
leaq 0x1c344(%rip), %rdi     # 0x31513
leaq 0x1c2ca(%rip), %rsi     # 0x314a0
leaq 0x1c2e0(%rip), %rcx     # 0x314bd
movl $0xf0, %edx
callq 0xa0b0
leaq 0x1a1a6(%rip), %rdi     # 0x2f394
leaq 0x1c2ab(%rip), %rsi     # 0x314a0
leaq 0x1c2c1(%rip), %rcx     # 0x314bd
movl $0xa6, %edx
callq 0xa0b0
leaq 0x1c306(%rip), %rdi     # 0x31513
leaq 0x1c28c(%rip), %rsi     # 0x314a0
leaq 0x1c2a2(%rip), %rcx     # 0x314bd
movl $0x9b, %edx
callq 0xa0b0
leaq 0x1c2e7(%rip), %rdi     # 0x31513
leaq 0x1c26d(%rip), %rsi     # 0x314a0
leaq 0x1c283(%rip), %rcx     # 0x314bd
movl $0xa0, %edx
callq 0xa0b0
leaq 0x1c2c8(%rip), %rdi     # 0x31513
leaq 0x1c24e(%rip), %rsi     # 0x314a0
leaq 0x1c264(%rip), %rcx     # 0x314bd
movl $0xa1, %edx
callq 0xa0b0
leaq 0x1c2a9(%rip), %rdi     # 0x31513
leaq 0x1c22f(%rip), %rsi     # 0x314a0
leaq 0x1c245(%rip), %rcx     # 0x314bd
movl $0xa2, %edx
callq 0xa0b0
leaq 0x1c28a(%rip), %rdi     # 0x31513
leaq 0x1c210(%rip), %rsi     # 0x314a0
leaq 0x1c226(%rip), %rcx     # 0x314bd
movl $0xd1, %edx
callq 0xa0b0
leaq 0x1c26b(%rip), %rdi     # 0x31513
leaq 0x1c1f1(%rip), %rsi     # 0x314a0
leaq 0x1c207(%rip), %rcx     # 0x314bd
movl $0xec, %edx
callq 0xa0b0
leaq 0x1a0cd(%rip), %rdi     # 0x2f394
leaq 0x1c1d2(%rip), %rsi     # 0x314a0
leaq 0x1c1e8(%rip), %rcx     # 0x314bd
movl $0xe1, %edx
callq 0xa0b0
leaq 0x1a0ae(%rip), %rdi     # 0x2f394
leaq 0x1c1b3(%rip), %rsi     # 0x314a0
leaq 0x1c1c9(%rip), %rcx     # 0x314bd
movl $0xfc, %edx
callq 0xa0b0
nop