LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_pushad_popad
void ins_enc_pushad_popad(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(0);

	ParserASTNode *ins_node = data->ins_node;

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	int arch = ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx);

	switch (arch) {
		case ASM_ARCH_BIT16: {
			enc_ins.legacy_prefix.operand_size_override = true;
			break;
		}
		case ASM_ARCH_BIT32: {
			break;
		}
		case ASM_ARCH_BIT64: {
			data->ctx->syntax_error_node_msg(
				data->ctx,
				ins_node,
				"instruction not supported in 64-bit mode."
			);
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x17e54
movq %rsi, %rbx
testq %rsi, %rsi
je 0x17e5d
movq (%rbx), %r14
testq %r14, %r14
je 0x17e66
cmpl $0x0, 0x44(%r14)
jne 0x17e6f
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x1470f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x17e32
cmpl $0x2, %eax
je 0x17e3f
cmpl $0x1, %eax
jne 0x17e8e
movb $0x1, -0x65(%rbp)
jmp 0x17e3f
leaq 0x19159(%rip), %rdx     # 0x30f92
movq %r14, %rsi
callq *0x58(%rdi)
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x178df(%rip), %rdi     # 0x2f73a
jmp 0x17e76
leaq 0x1d787(%rip), %rdi     # 0x355eb
jmp 0x17e76
leaq 0x18e44(%rip), %rdi     # 0x30cb1
jmp 0x17e76
leaq 0x1920c(%rip), %rdi     # 0x31082
leaq 0x18dd7(%rip), %rsi     # 0x30c54
leaq 0x191bb(%rip), %rcx     # 0x3103f
movl $0x208, %edx            # imm = 0x208
callq 0xa0b0
leaq 0x154db(%rip), %rdi     # 0x2d370
leaq 0x18db8(%rip), %rsi     # 0x30c54
leaq 0x1919c(%rip), %rcx     # 0x3103f
movl $0x223, %edx            # imm = 0x223
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_movsxd
void ins_enc_movsxd(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	ParserASTNode *source = data->ins_node->childs[1];

	size_t target_size = ins_get_oprd_size(data->ctx, target);
	if (target_size != 8) {
		data->ctx->syntax_error_node_msg(
			data->ctx,
			target,
			"operand type not matched."
		);
	}

	size_t source_size = ins_get_oprd_size(data->ctx, source);
	if (source_size != 4) {
		data->ctx->syntax_error_node_msg(
			data->ctx,
			target,
			"operand type not matched."
		);
	}

	EncoderInstruction enc_ins;
	
	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_GX(data->ctx, ins, target, &enc_ins);

	ins_fill_EX(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x17f9c
movq %rsi, %rbx
testq %rsi, %rsi
je 0x17fa5
movq (%rbx), %r12
testq %r12, %r12
je 0x17fae
cmpl $0x2, 0x44(%r12)
jne 0x17fb7
movq %rdi, %r14
movq 0x48(%r12), %rax
movq (%rax), %r13
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
movq %r13, %rsi
callq 0x15a8f
cmpq $0x8, %rax
je 0x17f1d
movq 0x8(%rbx), %rdi
leaq 0x17df0(%rip), %rdx     # 0x2fd07
movq %r13, %rsi
callq *0x58(%rdi)
movq 0x8(%rbx), %rdi
movq %r15, -0x30(%rbp)
movq %r15, %rsi
callq 0x15a8f
cmpq $0x4, %rax
je 0x17f44
movq 0x8(%rbx), %rdi
leaq 0x17dc9(%rip), %rdx     # 0x2fd07
movq %r13, %rsi
callq *0x58(%rdi)
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %r15
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x1480a
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rcx
callq 0x14948
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17180
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17797(%rip), %rdi     # 0x2f73a
jmp 0x17fbe
leaq 0x1d63f(%rip), %rdi     # 0x355eb
jmp 0x17fbe
leaq 0x18cfc(%rip), %rdi     # 0x30cb1
jmp 0x17fbe
leaq 0x18d02(%rip), %rdi     # 0x30cc0
leaq 0x18c8f(%rip), %rsi     # 0x30c54
leaq 0x190d5(%rip), %rcx     # 0x310a1
movl $0x22f, %edx            # imm = 0x22F
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_Jb
void ins_enc_Jb(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *node_label = data->ins_node->childs[0];

	uint64_t addr = asm_parser_get_symbol_by_token_key(data->ctx, node_label->token);

	EncoderInstruction enc_ins;
	
	ins_init(data->ctx, ins, ins_node, &enc_ins);

	enc_ins.disp_len = 1;
	enc_ins.disp = 0;

	uint8_t buffer[32];
	size_t len = enc_ins_encode(&enc_ins, buffer, sizeof(buffer));

	uint64_t ip = ASM_PARSER_CONTEXT_DATA_GET_ADDRESS_COUNTER(data->ctx) + len;
	uint64_t offset = addr - ip;
	enc_ins.disp = offset;

	len = enc_ins_encode(&enc_ins, buffer, sizeof(buffer));

	ASM_PARSER_CONTEXT_DATA_INC_ADDRESS_COUNTER(data->ctx, len);
	if (ASM_PARSER_CONTEXT_DATA_GET_STEP(data->ctx) == ASM_STEP_SCAN) {
		return;
	}

	fwrite(buffer, len, 1, ASM_PARSER_CONTEXT_DATA_GET_OUT(data->ctx));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
testq %rdi, %rdi
je 0x180c5
movq %rsi, %rbx
testq %rsi, %rsi
je 0x180ce
movq (%rbx), %r15
testq %r15, %r15
je 0x180d7
cmpl $0x1, 0x44(%r15)
jne 0x180e0
movq %rdi, %r14
movq 0x48(%r15), %rax
movq (%rax), %rax
movq 0x8(%rbx), %rdi
movq 0x10(%rax), %rsi
callq 0x1fb4a
movq %rax, %r12
movq 0x8(%rbx), %rdi
leaq -0xb0(%rbp), %r13
movq %r14, %rsi
movq %r15, %rdx
movq %r13, %rcx
callq 0x1470f
movb $0x1, 0x1e(%r13)
andq $0x0, 0x20(%r13)
leaq -0x50(%rbp), %r14
pushq $0x20
popq %r15
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x13adc
movq 0x8(%rbx), %rcx
addq 0xc0(%rcx), %rax
subq %rax, %r12
movq %r12, 0x20(%r13)
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x13adc
movq 0x8(%rbx), %rcx
addq %rax, 0xc0(%rcx)
cmpl $0x1, 0xc8(%rcx)
je 0x180b3
movq 0xb8(%rcx), %rcx
leaq -0x50(%rbp), %rdi
pushq $0x1
popq %rdx
movq %rax, %rsi
callq 0xa170
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1766e(%rip), %rdi     # 0x2f73a
jmp 0x180e7
leaq 0x1d516(%rip), %rdi     # 0x355eb
jmp 0x180e7
leaq 0x18bd3(%rip), %rdi     # 0x30cb1
jmp 0x180e7
leaq 0x18e4b(%rip), %rdi     # 0x30f32
leaq 0x18b66(%rip), %rsi     # 0x30c54
leaq 0x18fe9(%rip), %rcx     # 0x310de
movl $0x258, %edx            # imm = 0x258
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_opcode_ext_Eb_Ib
void ins_enc_opcode_ext_Eb_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	ParserASTNode *source = data->ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	enc_ins.mod_rm_used = true;
	enc_ins.mod_rm.reg = ins->opcode_ext.reg;

	ins_fill_EX(data->ctx, ins, target, &enc_ins);

	ins_fill_imm8(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x181af
movq %rsi, %rbx
testq %rsi, %rsi
je 0x181b8
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x181c1
cmpl $0x2, 0x44(%rdx)
jne 0x181ca
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r13
movq 0x8(%rax), %r12
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %r15
movq %r14, %rsi
movq %r15, %rcx
callq 0x1470f
movb $0x1, 0x16(%r15)
movb 0x22(%r14), %al
shrb $0x2, %al
andb $0x7, %al
movb %al, 0x18(%r15)
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x14948
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17180
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17584(%rip), %rdi     # 0x2f73a
jmp 0x181d1
leaq 0x1d42c(%rip), %rdi     # 0x355eb
jmp 0x181d1
leaq 0x18ae9(%rip), %rdi     # 0x30cb1
jmp 0x181d1
leaq 0x18aef(%rip), %rdi     # 0x30cc0
leaq 0x18a7c(%rip), %rsi     # 0x30c54
leaq 0x18f38(%rip), %rcx     # 0x31117
movl $0x27c, %edx            # imm = 0x27C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_opcode_ext_Ev_Iz
void ins_enc_opcode_ext_Ev_Iz(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	ParserASTNode *source = data->ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	int arch = ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx);

	enc_ins.mod_rm_used = true;
	enc_ins.mod_rm.reg = ins->opcode_ext.reg;

	ins_fill_EX(data->ctx, ins, target, &enc_ins);

	size_t target_size = ins_get_oprd_size(data->ctx, target);
	switch (target_size) {
		case 2: {
			ins_fill_imm16(data->ctx, ins, source, &enc_ins);
			break;
		}
		case 4:
		case 8: {
			ins_fill_imm32(data->ctx, ins, source, &enc_ins);
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x182db
movq %rsi, %rbx
testq %rsi, %rsi
je 0x182e4
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x182ed
cmpl $0x2, 0x44(%rdx)
jne 0x182f6
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r12
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %r13
movq %r14, %rsi
movq %r13, %rcx
callq 0x1470f
movb $0x1, 0x16(%r13)
movb 0x22(%r14), %al
shrb $0x2, %al
andb $0x7, %al
movb %al, 0x18(%r13)
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x14948
movq 0x8(%rbx), %rdi
movq %r12, %rsi
callq 0x15a8f
cmpq $0x8, %rax
je 0x182a7
cmpq $0x4, %rax
je 0x182a7
cmpq $0x2, %rax
jne 0x18315
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x151f8
jmp 0x182bd
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x152ee
leaq -0x88(%rbp), %rsi
movq %rbx, %rdi
callq 0x17180
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17458(%rip), %rdi     # 0x2f73a
jmp 0x182fd
leaq 0x1d300(%rip), %rdi     # 0x355eb
jmp 0x182fd
leaq 0x189bd(%rip), %rdi     # 0x30cb1
jmp 0x182fd
leaq 0x189c3(%rip), %rdi     # 0x30cc0
leaq 0x18950(%rip), %rsi     # 0x30c54
leaq 0x18e53(%rip), %rcx     # 0x3115e
movl $0x296, %edx            # imm = 0x296
callq 0xa0b0
leaq 0x15054(%rip), %rdi     # 0x2d370
leaq 0x18931(%rip), %rsi     # 0x30c54
leaq 0x18e34(%rip), %rcx     # 0x3115e
movl $0x2b5, %edx            # imm = 0x2B5
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_pause
void ins_enc_pause(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(0);

	ParserASTNode *ins_node = data->ins_node;

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	enc_ins.legacy_prefix.rep = true;

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x18470
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18479
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x18482
cmpl $0x0, 0x44(%rdx)
jne 0x1848b
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %r14
movq %r14, %rcx
callq 0x1470f
movb $0x1, 0x2(%r14)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x172c3(%rip), %rdi     # 0x2f73a
jmp 0x18492
leaq 0x1d16b(%rip), %rdi     # 0x355eb
jmp 0x18492
leaq 0x18828(%rip), %rdi     # 0x30cb1
jmp 0x18492
leaq 0x18bf0(%rip), %rdi     # 0x31082
leaq 0x187bb(%rip), %rsi     # 0x30c54
leaq 0x18d4c(%rip), %rcx     # 0x311ec
movl $0x2db, %edx            # imm = 0x2DB
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_mov_rAX_Ob
void ins_enc_mov_rAX_Ob(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	ParserASTNode *source = data->ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_EX(data->ctx, ins, source, &enc_ins);

	int arch = ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx);
	if (arch == ASM_ARCH_BIT64) {
		enc_ins.disp_len = 8;
	}

	enc_ins.mod_rm_used = false;

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x186f9
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18702
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1870b
cmpl $0x2, 0x44(%rdx)
jne 0x18714
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x14948
movq 0x8(%rbx), %rax
cmpl $0x4, 0xb0(%rax)
jne 0x186dc
movb $0x8, -0x62(%rbp)
leaq -0x80(%rbp), %rsi
movb $0x0, 0x16(%rsi)
movq %rbx, %rdi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1703a(%rip), %rdi     # 0x2f73a
jmp 0x1871b
leaq 0x1cee2(%rip), %rdi     # 0x355eb
jmp 0x1871b
leaq 0x1859f(%rip), %rdi     # 0x30cb1
jmp 0x1871b
leaq 0x185a5(%rip), %rdi     # 0x30cc0
leaq 0x18532(%rip), %rsi     # 0x30c54
leaq 0x18b42(%rip), %rcx     # 0x3126b
movl $0x35c, %edx            # imm = 0x35C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_mov_Ob_rAX
void ins_enc_mov_Ob_rAX(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	ParserASTNode *source = data->ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_EX(data->ctx, ins, target, &enc_ins);

	int arch = ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx);
	if (arch == ASM_ARCH_BIT64) {
		enc_ins.disp_len = 8;
	}

	enc_ins.mod_rm_used = false;

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x187ba
movq %rsi, %rbx
testq %rsi, %rsi
je 0x187c3
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x187cc
cmpl $0x2, 0x44(%rdx)
jne 0x187d5
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x14948
movq 0x8(%rbx), %rax
cmpl $0x4, 0xb0(%rax)
jne 0x1879d
movb $0x8, -0x62(%rbp)
leaq -0x80(%rbp), %rsi
movb $0x0, 0x16(%rsi)
movq %rbx, %rdi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16f79(%rip), %rdi     # 0x2f73a
jmp 0x187dc
leaq 0x1ce21(%rip), %rdi     # 0x355eb
jmp 0x187dc
leaq 0x184de(%rip), %rdi     # 0x30cb1
jmp 0x187dc
leaq 0x184e4(%rip), %rdi     # 0x30cc0
leaq 0x18471(%rip), %rsi     # 0x30c54
leaq 0x18ac2(%rip), %rcx     # 0x312ac
movl $0x378, %edx            # imm = 0x378
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_XXXsw
void ins_enc_XXXsw(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(0);

	ParserASTNode *ins_node = data->ins_node;

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	int arch = ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx);
	switch (arch) {
		case ASM_ARCH_BIT16: {
			break;
		}
		case ASM_ARCH_BIT32: {
			enc_ins.legacy_prefix.operand_size_override = true;
			break;
		}
		case ASM_ARCH_BIT64: {
			enc_ins.legacy_prefix.operand_size_override = true;
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x18858
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18861
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1886a
cmpl $0x0, 0x44(%rdx)
jne 0x18873
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x68(%rbp), %rcx
callq 0x1470f
movq 0x8(%rbx), %rax
movl 0xb0(%rax), %eax
cmpl $0x1, %eax
je 0x18845
cmpl $0x2, %eax
je 0x18841
cmpl $0x4, %eax
jne 0x18892
movb $0x1, -0x5d(%rbp)
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x17180
addq $0x68, %rsp
popq %rbx
popq %rbp
retq
leaq 0x16edb(%rip), %rdi     # 0x2f73a
jmp 0x1887a
leaq 0x1cd83(%rip), %rdi     # 0x355eb
jmp 0x1887a
leaq 0x18440(%rip), %rdi     # 0x30cb1
jmp 0x1887a
leaq 0x18808(%rip), %rdi     # 0x31082
leaq 0x183d3(%rip), %rsi     # 0x30c54
leaq 0x18a65(%rip), %rcx     # 0x312ed
movl $0x394, %edx            # imm = 0x394
callq 0xa0b0
leaq 0x14ad7(%rip), %rdi     # 0x2d370
leaq 0x183b4(%rip), %rsi     # 0x30c54
leaq 0x18a46(%rip), %rcx     # 0x312ed
movl $0x3aa, %edx            # imm = 0x3AA
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_XXXsq
void ins_enc_XXXsq(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(0);

	ParserASTNode *ins_node = data->ins_node;

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	int arch = ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx);
	switch (arch) {
		case ASM_ARCH_BIT16: {
			data->ctx->syntax_error_node_msg(
				data->ctx,
				ins_node,
				"instruction not supported in 16-bit mode."
			);
			break;
		}
		case ASM_ARCH_BIT32: {
			data->ctx->syntax_error_node_msg(
				data->ctx,
				ins_node,
				"instruction not supported in 32-bit mode."
			);
			break;
		}
		case ASM_ARCH_BIT64: {
			enc_ins.rex_prefix_used = true;
			enc_ins.rex_prefix.w = true;
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x189f4
movq %rsi, %rbx
testq %rsi, %rsi
je 0x189fd
movq (%rbx), %r14
testq %r14, %r14
je 0x18a06
cmpl $0x0, 0x44(%r14)
jne 0x18a0f
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x1470f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x189d9
cmpl $0x2, %eax
je 0x189ca
cmpl $0x1, %eax
jne 0x18a2e
leaq 0x18498(%rip), %rdx     # 0x30e60
jmp 0x189d1
leaq 0x184b9(%rip), %rdx     # 0x30e8a
movq %r14, %rsi
callq *0x58(%rdi)
jmp 0x189df
movw $0x101, -0x63(%rbp)     # imm = 0x101
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x16d3f(%rip), %rdi     # 0x2f73a
jmp 0x18a16
leaq 0x1cbe7(%rip), %rdi     # 0x355eb
jmp 0x18a16
leaq 0x182a4(%rip), %rdi     # 0x30cb1
jmp 0x18a16
leaq 0x1866c(%rip), %rdi     # 0x31082
leaq 0x18237(%rip), %rsi     # 0x30c54
leaq 0x18941(%rip), %rcx     # 0x31365
movl $0x3d7, %edx            # imm = 0x3D7
callq 0xa0b0
leaq 0x1493b(%rip), %rdi     # 0x2d370
leaq 0x18218(%rip), %rsi     # 0x30c54
leaq 0x18922(%rip), %rcx     # 0x31365
movl $0x3f7, %edx            # imm = 0x3F7
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_mov_xL_Ib
void ins_enc_mov_xL_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	ParserASTNode *source = data->ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);
	
	ins_fill_imm8(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x18abf
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18ac8
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x18ad1
cmpl $0x2, 0x44(%rdx)
jne 0x18ada
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16c74(%rip), %rdi     # 0x2f73a
jmp 0x18ae1
leaq 0x1cb1c(%rip), %rdi     # 0x355eb
jmp 0x18ae1
leaq 0x181d9(%rip), %rdi     # 0x30cb1
jmp 0x18ae1
leaq 0x181df(%rip), %rdi     # 0x30cc0
leaq 0x1816c(%rip), %rsi     # 0x30c54
leaq 0x188b2(%rip), %rcx     # 0x313a1
movl $0x403, %edx            # imm = 0x403
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_mov_RxL_Ib
void ins_enc_mov_RxL_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	ParserASTNode *source = data->ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);
	
	ins_fill_imm8(data->ctx, ins, source, &enc_ins);

	enc_ins.rex_prefix_used = true;
	enc_ins.rex_prefix.b = true;

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x18b77
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18b80
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x18b89
cmpl $0x2, 0x44(%rdx)
jne 0x18b92
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movb $0x1, %al
movb %al, 0xd(%r12)
movb %al, 0x11(%r12)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16bbc(%rip), %rdi     # 0x2f73a
jmp 0x18b99
leaq 0x1ca64(%rip), %rdi     # 0x355eb
jmp 0x18b99
leaq 0x18121(%rip), %rdi     # 0x30cb1
jmp 0x18b99
leaq 0x18127(%rip), %rdi     # 0x30cc0
leaq 0x180b4(%rip), %rsi     # 0x30c54
leaq 0x1883a(%rip), %rcx     # 0x313e1
movl $0x418, %edx            # imm = 0x418
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_ret_Iw
void ins_enc_ret_Iw(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *source = data->ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_imm16(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x19054
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1905d
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19066
cmpl $0x1, 0x44(%rdx)
jne 0x1906f
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x151f8
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x166df(%rip), %rdi     # 0x2f73a
jmp 0x19076
leaq 0x1c587(%rip), %rdi     # 0x355eb
jmp 0x19076
leaq 0x17c44(%rip), %rdi     # 0x30cb1
jmp 0x19076
leaq 0x17ebc(%rip), %rdi     # 0x30f32
leaq 0x17bd7(%rip), %rsi     # 0x30c54
leaq 0x1842e(%rip), %rcx     # 0x314b2
movl $0x50f, %edx            # imm = 0x50F
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_xabort
void ins_enc_xabort(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *source = ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	enc_ins.mod_rm_used = true;
	enc_ins.mod_rm.mod = 0x3;
	enc_ins.mod_rm.reg = ins->opcode_ext.reg;

	ins_fill_imm8(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x191dd
movq %rsi, %rbx
testq %rsi, %rsi
je 0x191e6
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x191ef
cmpl $0x1, 0x44(%rdx)
jne 0x191f8
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movw $0x301, 0x16(%r12)      # imm = 0x301
movb 0x22(%r14), %al
shrb $0x2, %al
andb $0x7, %al
movb %al, 0x18(%r12)
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16556(%rip), %rdi     # 0x2f73a
jmp 0x191ff
leaq 0x1c3fe(%rip), %rdi     # 0x355eb
jmp 0x191ff
leaq 0x17abb(%rip), %rdi     # 0x30cb1
jmp 0x191ff
leaq 0x17d33(%rip), %rdi     # 0x30f32
leaq 0x17a4e(%rip), %rsi     # 0x30c54
leaq 0x18320(%rip), %rcx     # 0x3152d
movl $0x539, %edx            # imm = 0x539
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_xbegin
void ins_enc_xbegin(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *node_label = ins_node->childs[0];

	uint64_t addr = asm_parser_get_symbol_by_token_key(data->ctx, node_label->token);

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	enc_ins.mod_rm_used = true;
	enc_ins.mod_rm.mod = 0x3;
	enc_ins.mod_rm.reg = ins->opcode_ext.reg;

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		case ASM_ARCH_BIT16: {
			enc_ins.disp_len = 2;
			break;
		}
		case ASM_ARCH_BIT32:
		case ASM_ARCH_BIT64: {
			enc_ins.disp_len = 4;
			break;
		}
		default: {
			assert(0);
			break;
		}
	}
	enc_ins.disp = 0;

	uint8_t buffer[32];
	size_t len = enc_ins_encode(&enc_ins, buffer, sizeof(buffer));

	uint64_t ip = ASM_PARSER_CONTEXT_DATA_GET_ADDRESS_COUNTER(data->ctx) + len;
	uint64_t offset = addr - ip;
	enc_ins.disp = offset;

	len = enc_ins_encode(&enc_ins, buffer, sizeof(buffer));

	ASM_PARSER_CONTEXT_DATA_INC_ADDRESS_COUNTER(data->ctx, len);
	if (ASM_PARSER_CONTEXT_DATA_GET_STEP(data->ctx) == ASM_STEP_SCAN) {
		return;
	}

	fwrite(buffer, len, 1, ASM_PARSER_CONTEXT_DATA_GET_OUT(data->ctx));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
testq %rdi, %rdi
je 0x19345
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1934e
movq (%rbx), %r12
testq %r12, %r12
je 0x19357
cmpl $0x1, 0x44(%r12)
jne 0x19360
movq %rdi, %r15
movq 0x48(%r12), %rax
movq (%rax), %rax
movq 0x8(%rbx), %rdi
movq 0x10(%rax), %rsi
callq 0x1fb4a
movq %rax, %r14
movq 0x8(%rbx), %rdi
leaq -0xb0(%rbp), %r13
movq %r15, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1470f
movw $0x301, 0x16(%r13)      # imm = 0x301
movb 0x22(%r15), %al
shrb $0x2, %al
andb $0x7, %al
movb %al, 0x18(%r13)
movq 0x8(%rbx), %rax
movl 0xb0(%rax), %eax
cmpl $0x1, %eax
je 0x192c1
cmpl $0x4, %eax
je 0x192bd
cmpl $0x2, %eax
jne 0x1937f
movb $0x4, %al
jmp 0x192c3
movb $0x2, %al
leaq -0xb0(%rbp), %r15
movb %al, 0x1e(%r15)
andq $0x0, 0x20(%r15)
leaq -0x50(%rbp), %r12
pushq $0x20
popq %r13
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x13adc
movq 0x8(%rbx), %rcx
addq 0xc0(%rcx), %rax
subq %rax, %r14
movq %r14, 0x20(%r15)
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x13adc
movq 0x8(%rbx), %rcx
addq %rax, 0xc0(%rcx)
cmpl $0x1, 0xc8(%rcx)
je 0x19333
movq 0xb8(%rcx), %rcx
leaq -0x50(%rbp), %rdi
pushq $0x1
popq %rdx
movq %rax, %rsi
callq 0xa170
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x163ee(%rip), %rdi     # 0x2f73a
jmp 0x19367
leaq 0x1c296(%rip), %rdi     # 0x355eb
jmp 0x19367
leaq 0x17953(%rip), %rdi     # 0x30cb1
jmp 0x19367
leaq 0x17bcb(%rip), %rdi     # 0x30f32
leaq 0x178e6(%rip), %rsi     # 0x30c54
leaq 0x181f5(%rip), %rcx     # 0x3156a
movl $0x550, %edx            # imm = 0x550
callq 0xa0b0
leaq 0x13fea(%rip), %rdi     # 0x2d370
leaq 0x178c7(%rip), %rsi     # 0x30c54
leaq 0x181d6(%rip), %rcx     # 0x3156a
movl $0x56b, %edx            # imm = 0x56B
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: int_enc_shift
void int_enc_shift(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = data->ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	enc_ins.mod_rm_used = true;
	enc_ins.mod_rm.reg = ins->opcode_ext.reg;

	ins_fill_EX(data->ctx, ins, target, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x19423
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1942c
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19435
cmpl $0x2, 0x44(%rdx)
jne 0x1943e
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movb $0x1, 0x16(%r12)
movb 0x22(%r14), %al
shrb $0x2, %al
andb $0x7, %al
movb %al, 0x18(%r12)
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x14948
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16310(%rip), %rdi     # 0x2f73a
jmp 0x19445
leaq 0x1c1b8(%rip), %rdi     # 0x355eb
jmp 0x19445
leaq 0x17875(%rip), %rdi     # 0x30cb1
jmp 0x19445
leaq 0x1787b(%rip), %rdi     # 0x30cc0
leaq 0x17808(%rip), %rsi     # 0x30c54
leaq 0x18154(%rip), %rcx     # 0x315a7
movl $0x586, %edx            # imm = 0x586
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_opcode_Ib
void ins_enc_opcode_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *source = ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_imm8(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x194ce
movq %rsi, %rbx
testq %rsi, %rsi
je 0x194d7
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x194e0
cmpl $0x1, 0x44(%rdx)
jne 0x194e9
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16265(%rip), %rdi     # 0x2f73a
jmp 0x194f0
leaq 0x1c10d(%rip), %rdi     # 0x355eb
jmp 0x194f0
leaq 0x177ca(%rip), %rdi     # 0x30cb1
jmp 0x194f0
leaq 0x17a42(%rip), %rdi     # 0x30f32
leaq 0x1775d(%rip), %rsi     # 0x30c54
leaq 0x180e5(%rip), %rcx     # 0x315e3
movl $0x59c, %edx            # imm = 0x59C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_IN_AL_Ib
void ins_enc_IN_AL_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *source = ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_imm8(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x19625
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1962e
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19637
cmpl $0x2, 0x44(%rdx)
jne 0x19640
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1610e(%rip), %rdi     # 0x2f73a
jmp 0x19647
leaq 0x1bfb6(%rip), %rdi     # 0x355eb
jmp 0x19647
leaq 0x17673(%rip), %rdi     # 0x30cb1
jmp 0x19647
leaq 0x17679(%rip), %rdi     # 0x30cc0
leaq 0x17606(%rip), %rsi     # 0x30c54
leaq 0x1800e(%rip), %rcx     # 0x31663
movl $0x5c2, %edx            # imm = 0x5C2
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_IN_eAX_Ib
void ins_enc_IN_eAX_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = ins_node->childs[0];

	ParserASTNode *source = ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	InsRegister *target_reg = ASM_REG_AST_NODE_GET_REG(target);

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		case ASM_ARCH_BIT16: {
			switch (target_reg->type) {
				case INS_REGISTER_GENERAL_2BYTE: {
					// 无需操作数大小前缀。
					break;
				}
				case INS_REGISTER_GENERAL_4BYTE: {
					enc_ins.legacy_prefix.operand_size_override = true;
					break;
				}
				default: {
					assert(0);
					break;
				}
			}
			break;
		}
		case ASM_ARCH_BIT32:
		case ASM_ARCH_BIT64: {
			switch (target_reg->type) {
				case INS_REGISTER_GENERAL_2BYTE: {
					enc_ins.legacy_prefix.operand_size_override = true;
					break;
				}
				case INS_REGISTER_GENERAL_4BYTE: {
					// 无需操作数大小前缀。
					break;
				}
				default: {
					assert(0);
					break;
				}
			}
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	ins_fill_imm8(data->ctx, ins, source, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x1975f
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19768
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19771
cmpl $0x2, 0x44(%rdx)
jne 0x1977a
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r12
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %rcx
movq %r14, %rsi
callq 0x1470f
movq 0x60(%r12), %rax
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %ecx
cmpl $0x4, %ecx
je 0x19705
cmpl $0x2, %ecx
je 0x19705
cmpl $0x1, %ecx
jne 0x19799
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x19735
cmpl $0x4, %eax
je 0x19731
leaq 0x13c83(%rip), %rdi     # 0x2d370
leaq 0x17560(%rip), %rsi     # 0x30c54
leaq 0x17fa7(%rip), %rcx     # 0x316a2
movl $0x5ef, %edx            # imm = 0x5EF
callq 0xa0b0
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x19731
cmpl $0x4, %eax
je 0x19735
leaq 0x13c57(%rip), %rdi     # 0x2d370
leaq 0x17534(%rip), %rsi     # 0x30c54
leaq 0x17f7b(%rip), %rcx     # 0x316a2
movl $0x601, %edx            # imm = 0x601
callq 0xa0b0
movb $0x1, -0x75(%rbp)
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15fd4(%rip), %rdi     # 0x2f73a
jmp 0x19781
leaq 0x1be7c(%rip), %rdi     # 0x355eb
jmp 0x19781
leaq 0x17539(%rip), %rdi     # 0x30cb1
jmp 0x19781
leaq 0x1753f(%rip), %rdi     # 0x30cc0
leaq 0x174cc(%rip), %rsi     # 0x30c54
leaq 0x17f13(%rip), %rcx     # 0x316a2
movl $0x5d5, %edx            # imm = 0x5D5
callq 0xa0b0
leaq 0x13bd0(%rip), %rdi     # 0x2d370
leaq 0x174ad(%rip), %rsi     # 0x30c54
leaq 0x17ef4(%rip), %rcx     # 0x316a2
movl $0x608, %edx            # imm = 0x608
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_OUT_Ib_AL
void ins_enc_OUT_Ib_AL(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_imm8(data->ctx, ins, target, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x19829
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19832
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1983b
cmpl $0x2, 0x44(%rdx)
jne 0x19844
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15f0a(%rip), %rdi     # 0x2f73a
jmp 0x1984b
leaq 0x1bdb2(%rip), %rdi     # 0x355eb
jmp 0x1984b
leaq 0x1746f(%rip), %rdi     # 0x30cb1
jmp 0x1984b
leaq 0x17475(%rip), %rdi     # 0x30cc0
leaq 0x17402(%rip), %rsi     # 0x30c54
leaq 0x17e89(%rip), %rcx     # 0x316e2
movl $0x616, %edx            # imm = 0x616
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_OUT_Ib_eAX
void ins_enc_OUT_Ib_eAX(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = ins_node->childs[0];

	ParserASTNode *source = ins_node->childs[1];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	InsRegister *source_reg = ASM_REG_AST_NODE_GET_REG(source);

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		case ASM_ARCH_BIT16: {
			switch (source_reg->type) {
				case INS_REGISTER_GENERAL_2BYTE: {
					// 无需操作数大小前缀。
					break;
				}
				case INS_REGISTER_GENERAL_4BYTE: {
					enc_ins.legacy_prefix.operand_size_override = true;
					break;
				}
				default: {
					assert(0);
					break;
				}
			}
			break;
		}
		case ASM_ARCH_BIT32:
		case ASM_ARCH_BIT64: {
			switch (source_reg->type) {
				case INS_REGISTER_GENERAL_2BYTE: {
					enc_ins.legacy_prefix.operand_size_override = true;
					break;
				}
				case INS_REGISTER_GENERAL_4BYTE: {
					// 无需操作数大小前缀。
					break;
				}
				default: {
					assert(0);
					break;
				}
			}
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	ins_fill_imm8(data->ctx, ins, target, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x19963
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1996c
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19975
cmpl $0x2, 0x44(%rdx)
jne 0x1997e
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %rcx
movq %r14, %rsi
callq 0x1470f
movq 0x60(%r12), %rax
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %ecx
cmpl $0x4, %ecx
je 0x19909
cmpl $0x2, %ecx
je 0x19909
cmpl $0x1, %ecx
jne 0x1999d
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x19939
cmpl $0x4, %eax
je 0x19935
leaq 0x13a7f(%rip), %rdi     # 0x2d370
leaq 0x1735c(%rip), %rsi     # 0x30c54
leaq 0x17e23(%rip), %rcx     # 0x31722
movl $0x643, %edx            # imm = 0x643
callq 0xa0b0
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x19935
cmpl $0x4, %eax
je 0x19939
leaq 0x13a53(%rip), %rdi     # 0x2d370
leaq 0x17330(%rip), %rsi     # 0x30c54
leaq 0x17df7(%rip), %rcx     # 0x31722
movl $0x655, %edx            # imm = 0x655
callq 0xa0b0
movb $0x1, -0x75(%rbp)
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15dd0(%rip), %rdi     # 0x2f73a
jmp 0x19985
leaq 0x1bc78(%rip), %rdi     # 0x355eb
jmp 0x19985
leaq 0x17335(%rip), %rdi     # 0x30cb1
jmp 0x19985
leaq 0x1733b(%rip), %rdi     # 0x30cc0
leaq 0x172c8(%rip), %rsi     # 0x30c54
leaq 0x17d8f(%rip), %rcx     # 0x31722
movl $0x629, %edx            # imm = 0x629
callq 0xa0b0
leaq 0x139cc(%rip), %rdi     # 0x2d370
leaq 0x172a9(%rip), %rsi     # 0x30c54
leaq 0x17d70(%rip), %rcx     # 0x31722
movl $0x65c, %edx            # imm = 0x65C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_opcode_ext_Eb
void ins_enc_opcode_ext_Eb(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *oprd = ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	enc_ins.mod_rm_used = true;
	enc_ins.mod_rm.reg = ins->opcode_ext.reg;

	ins_fill_EX(data->ctx, ins, oprd, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x19a41
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19a4a
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19a53
cmpl $0x1, 0x44(%rdx)
jne 0x19a5c
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movb $0x1, 0x16(%r12)
movb 0x22(%r14), %al
shrb $0x2, %al
andb $0x7, %al
movb %al, 0x18(%r12)
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x14948
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15cf2(%rip), %rdi     # 0x2f73a
jmp 0x19a63
leaq 0x1bb9a(%rip), %rdi     # 0x355eb
jmp 0x19a63
leaq 0x17257(%rip), %rdi     # 0x30cb1
jmp 0x19a63
leaq 0x174cf(%rip), %rdi     # 0x30f32
leaq 0x171ea(%rip), %rsi     # 0x30c54
leaq 0x17cf2(%rip), %rcx     # 0x31763
movl $0x66a, %edx            # imm = 0x66A
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_XXX_Iz
void ins_enc_XXX_Iz(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *oprd = ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		case ASM_ARCH_BIT16: {
			ins_fill_imm16(data->ctx, ins, oprd, &enc_ins);
			break;
		}
		case ASM_ARCH_BIT32:
		case ASM_ARCH_BIT64: {
			ins_fill_imm32(data->ctx, ins, oprd, &enc_ins);
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x19bdc
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19be5
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19bee
cmpl $0x1, 0x44(%rdx)
jne 0x19bf7
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x78(%rbp), %rcx
movq %r14, %rsi
callq 0x1470f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x19bb6
cmpl $0x2, %eax
je 0x19bb6
cmpl $0x1, %eax
jne 0x19c16
leaq -0x78(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x151f8
jmp 0x19bc5
leaq -0x78(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x152ee
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq 0x17180
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15b57(%rip), %rdi     # 0x2f73a
jmp 0x19bfe
leaq 0x1b9ff(%rip), %rdi     # 0x355eb
jmp 0x19bfe
leaq 0x170bc(%rip), %rdi     # 0x30cb1
jmp 0x19bfe
leaq 0x17334(%rip), %rdi     # 0x30f32
leaq 0x1704f(%rip), %rsi     # 0x30c54
leaq 0x17bdf(%rip), %rcx     # 0x317eb
movl $0x696, %edx            # imm = 0x696
callq 0xa0b0
leaq 0x13753(%rip), %rdi     # 0x2d370
leaq 0x17030(%rip), %rsi     # 0x30c54
leaq 0x17bc0(%rip), %rcx     # 0x317eb
movl $0x6ab, %edx            # imm = 0x6AB
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_IMUL_Gv_Ev_Iz
void ins_enc_IMUL_Gv_Ev_Iz(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(3);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *target = ins_node->childs[0];

	ParserASTNode *source1 = ins_node->childs[1];

	ParserASTNode *source2 = ins_node->childs[2];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_GX(data->ctx, ins, target, &enc_ins);

	ins_fill_EX(data->ctx, ins, source1, &enc_ins);

	ins_check_operand_type(data->ctx, ins, target, source1, NULL);

	switch (ins_get_oprd_size(data->ctx, target)) {
		case 2: {
			ins_fill_imm16(data->ctx, ins, source2, &enc_ins);
			break;
		}
		case 4:
		case 8: {
			ins_fill_imm32(data->ctx, ins, source2, &enc_ins);
			break;
		}
		default: {
			assert(0);
			break;
		}
	}

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x19d46
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19d4f
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19d58
cmpl $0x3, 0x44(%rdx)
jne 0x19d61
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r12
movq 0x8(%rax), %r13
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %r15
movq %r14, %rsi
movq %r15, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x1480a
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x14948
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
xorl %r8d, %r8d
callq 0x15ae1
movq 0x8(%rbx), %rdi
movq %r12, %rsi
callq 0x15a8f
cmpq $0x8, %rax
je 0x19d11
cmpq $0x4, %rax
je 0x19d11
cmpq $0x2, %rax
jne 0x19d80
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %rcx
movq %r14, %rsi
movq -0x30(%rbp), %rdx
callq 0x151f8
jmp 0x19d28
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %rcx
movq %r14, %rsi
movq -0x30(%rbp), %rdx
callq 0x152ee
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x17180
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x159ed(%rip), %rdi     # 0x2f73a
jmp 0x19d68
leaq 0x1b895(%rip), %rdi     # 0x355eb
jmp 0x19d68
leaq 0x16f52(%rip), %rdi     # 0x30cb1
jmp 0x19d68
leaq 0x17b04(%rip), %rdi     # 0x3186c
leaq 0x16ee5(%rip), %rsi     # 0x30c54
leaq 0x17ab2(%rip), %rcx     # 0x31828
movl $0x6b7, %edx            # imm = 0x6B7
callq 0xa0b0
leaq 0x135e9(%rip), %rdi     # 0x2d370
leaq 0x16ec6(%rip), %rsi     # 0x30c54
leaq 0x17a93(%rip), %rcx     # 0x31828
movl $0x6d6, %edx            # imm = 0x6D6
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O2/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_XXX_Ib
void ins_enc_XXX_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *oprd = ins_node->childs[0];

	EncoderInstruction enc_ins;

	ins_init(data->ctx, ins, ins_node, &enc_ins);

	ins_fill_imm8(data->ctx, ins, oprd, &enc_ins);

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x19e10
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19e19
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19e22
cmpl $0x1, 0x44(%rdx)
jne 0x19e2b
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %r12
movq %r14, %rsi
movq %r12, %rcx
callq 0x1470f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15102
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17180
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15923(%rip), %rdi     # 0x2f73a
jmp 0x19e32
leaq 0x1b7cb(%rip), %rdi     # 0x355eb
jmp 0x19e32
leaq 0x16e88(%rip), %rdi     # 0x30cb1
jmp 0x19e32
leaq 0x17100(%rip), %rdi     # 0x30f32
leaq 0x16e1b(%rip), %rsi     # 0x30c54
leaq 0x17a4b(%rip), %rcx     # 0x3188b
movl $0x6e2, %edx            # imm = 0x6E2
callq 0xa0b0