LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/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 0x1955b
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19564
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1956d
cmpl $0x0, 0x44(%rdx)
jne 0x19576
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x68(%rbp), %rcx
callq 0x1524f
movq 0x8(%rbx), %rax
movl 0xb0(%rax), %eax
cmpl $0x1, %eax
je 0x19548
cmpl $0x2, %eax
je 0x19544
cmpl $0x4, %eax
jne 0x19595
movb $0x1, -0x5d(%rbp)
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x68, %rsp
popq %rbx
popq %rbp
retq
leaq 0x171c8(%rip), %rdi     # 0x3072a
jmp 0x1957d
leaq 0x1cff0(%rip), %rdi     # 0x3655b
jmp 0x1957d
leaq 0x1872d(%rip), %rdi     # 0x31ca1
jmp 0x1957d
leaq 0x18af5(%rip), %rdi     # 0x32072
leaq 0x186c0(%rip), %rsi     # 0x31c44
leaq 0x18d52(%rip), %rcx     # 0x322dd
movl $0x394, %edx            # imm = 0x394
callq 0xa0b0
leaq 0x14dd4(%rip), %rdi     # 0x2e370
leaq 0x186a1(%rip), %rsi     # 0x31c44
leaq 0x18d33(%rip), %rcx     # 0x322dd
movl $0x3aa, %edx            # imm = 0x3AA
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x196f7
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19700
movq (%rbx), %r14
testq %r14, %r14
je 0x19709
cmpl $0x0, 0x44(%r14)
jne 0x19712
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x1524f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x196dc
cmpl $0x2, %eax
je 0x196cd
cmpl $0x1, %eax
jne 0x19731
leaq 0x18785(%rip), %rdx     # 0x31e50
jmp 0x196d4
leaq 0x187a6(%rip), %rdx     # 0x31e7a
movq %r14, %rsi
callq *0x58(%rdi)
jmp 0x196e2
movw $0x101, -0x63(%rbp)     # imm = 0x101
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x1702c(%rip), %rdi     # 0x3072a
jmp 0x19719
leaq 0x1ce54(%rip), %rdi     # 0x3655b
jmp 0x19719
leaq 0x18591(%rip), %rdi     # 0x31ca1
jmp 0x19719
leaq 0x18959(%rip), %rdi     # 0x32072
leaq 0x18524(%rip), %rsi     # 0x31c44
leaq 0x18c2e(%rip), %rcx     # 0x32355
movl $0x3d7, %edx            # imm = 0x3D7
callq 0xa0b0
leaq 0x14c38(%rip), %rdi     # 0x2e370
leaq 0x18505(%rip), %rsi     # 0x31c44
leaq 0x18c0f(%rip), %rcx     # 0x32355
movl $0x3f7, %edx            # imm = 0x3F7
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x197c2
movq %rsi, %rbx
testq %rsi, %rsi
je 0x197cb
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x197d4
cmpl $0x2, 0x44(%rdx)
jne 0x197dd
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16f61(%rip), %rdi     # 0x3072a
jmp 0x197e4
leaq 0x1cd89(%rip), %rdi     # 0x3655b
jmp 0x197e4
leaq 0x184c6(%rip), %rdi     # 0x31ca1
jmp 0x197e4
leaq 0x184cc(%rip), %rdi     # 0x31cb0
leaq 0x18459(%rip), %rsi     # 0x31c44
leaq 0x18b9f(%rip), %rcx     # 0x32391
movl $0x403, %edx            # imm = 0x403
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1987a
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19883
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1988c
cmpl $0x2, 0x44(%rdx)
jne 0x19895
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15c51
movb $0x1, %al
movb %al, 0xd(%r12)
movb %al, 0x11(%r12)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16ea9(%rip), %rdi     # 0x3072a
jmp 0x1989c
leaq 0x1ccd1(%rip), %rdi     # 0x3655b
jmp 0x1989c
leaq 0x1840e(%rip), %rdi     # 0x31ca1
jmp 0x1989c
leaq 0x18414(%rip), %rdi     # 0x31cb0
leaq 0x183a1(%rip), %rsi     # 0x31c44
leaq 0x18b27(%rip), %rcx     # 0x323d1
movl $0x418, %edx            # imm = 0x418
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x19d57
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19d60
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19d69
cmpl $0x1, 0x44(%rdx)
jne 0x19d72
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15d47
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x169cc(%rip), %rdi     # 0x3072a
jmp 0x19d79
leaq 0x1c7f4(%rip), %rdi     # 0x3655b
jmp 0x19d79
leaq 0x17f31(%rip), %rdi     # 0x31ca1
jmp 0x19d79
leaq 0x181a9(%rip), %rdi     # 0x31f22
leaq 0x17ec4(%rip), %rsi     # 0x31c44
leaq 0x1871b(%rip), %rcx     # 0x324a2
movl $0x50f, %edx            # imm = 0x50F
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x19ee0
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19ee9
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19ef2
cmpl $0x1, 0x44(%rdx)
jne 0x19efb
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 0x1524f
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 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16843(%rip), %rdi     # 0x3072a
jmp 0x19f02
leaq 0x1c66b(%rip), %rdi     # 0x3655b
jmp 0x19f02
leaq 0x17da8(%rip), %rdi     # 0x31ca1
jmp 0x19f02
leaq 0x18020(%rip), %rdi     # 0x31f22
leaq 0x17d3b(%rip), %rsi     # 0x31c44
leaq 0x1860d(%rip), %rcx     # 0x3251d
movl $0x539, %edx            # imm = 0x539
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a04d
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a056
movq (%rbx), %r12
testq %r12, %r12
je 0x1a05f
cmpl $0x1, 0x44(%r12)
jne 0x1a068
movq %rdi, %r15
movq 0x48(%r12), %rax
movq (%rax), %rax
movq 0x8(%rbx), %rdi
movq 0x10(%rax), %rsi
callq 0x207e9
movq %rax, %r14
movq 0x8(%rbx), %rdi
leaq -0xb0(%rbp), %r13
movq %r15, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1524f
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 0x19fc4
cmpl $0x4, %eax
je 0x19fc0
cmpl $0x2, %eax
jne 0x1a087
movb $0x4, %al
jmp 0x19fc6
movb $0x2, %al
leaq -0xb0(%rbp), %r15
movb %al, 0x1e(%r15)
movq $0x0, 0x20(%r15)
leaq -0x50(%rbp), %r12
movl $0x20, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x14644
movq 0x8(%rbx), %rcx
addq 0xc0(%rcx), %rax
subq %rax, %r14
movq %r14, 0x20(%r15)
movl $0x20, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x14644
movq 0x8(%rbx), %rcx
addq %rax, 0xc0(%rcx)
cmpl $0x1, 0xc8(%rcx)
je 0x1a03b
movq 0xb8(%rcx), %rcx
leaq -0x50(%rbp), %rdi
movl $0x1, %edx
movq %rax, %rsi
callq 0xa180
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x166d6(%rip), %rdi     # 0x3072a
jmp 0x1a06f
leaq 0x1c4fe(%rip), %rdi     # 0x3655b
jmp 0x1a06f
leaq 0x17c3b(%rip), %rdi     # 0x31ca1
jmp 0x1a06f
leaq 0x17eb3(%rip), %rdi     # 0x31f22
leaq 0x17bce(%rip), %rsi     # 0x31c44
leaq 0x184dd(%rip), %rcx     # 0x3255a
movl $0x550, %edx            # imm = 0x550
callq 0xa0b0
leaq 0x142e2(%rip), %rdi     # 0x2e370
leaq 0x17baf(%rip), %rsi     # 0x31c44
leaq 0x184be(%rip), %rcx     # 0x3255a
movl $0x56b, %edx            # imm = 0x56B
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a12b
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a134
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a13d
cmpl $0x2, 0x44(%rdx)
jne 0x1a146
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 0x1524f
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 0x15488
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x165f8(%rip), %rdi     # 0x3072a
jmp 0x1a14d
leaq 0x1c420(%rip), %rdi     # 0x3655b
jmp 0x1a14d
leaq 0x17b5d(%rip), %rdi     # 0x31ca1
jmp 0x1a14d
leaq 0x17b63(%rip), %rdi     # 0x31cb0
leaq 0x17af0(%rip), %rsi     # 0x31c44
leaq 0x1843c(%rip), %rcx     # 0x32597
movl $0x586, %edx            # imm = 0x586
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a1d6
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a1df
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a1e8
cmpl $0x1, 0x44(%rdx)
jne 0x1a1f1
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1654d(%rip), %rdi     # 0x3072a
jmp 0x1a1f8
leaq 0x1c375(%rip), %rdi     # 0x3655b
jmp 0x1a1f8
leaq 0x17ab2(%rip), %rdi     # 0x31ca1
jmp 0x1a1f8
leaq 0x17d2a(%rip), %rdi     # 0x31f22
leaq 0x17a45(%rip), %rsi     # 0x31c44
leaq 0x183cd(%rip), %rcx     # 0x325d3
movl $0x59c, %edx            # imm = 0x59C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a32d
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a336
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a33f
cmpl $0x2, 0x44(%rdx)
jne 0x1a348
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x163f6(%rip), %rdi     # 0x3072a
jmp 0x1a34f
leaq 0x1c21e(%rip), %rdi     # 0x3655b
jmp 0x1a34f
leaq 0x1795b(%rip), %rdi     # 0x31ca1
jmp 0x1a34f
leaq 0x17961(%rip), %rdi     # 0x31cb0
leaq 0x178ee(%rip), %rsi     # 0x31c44
leaq 0x182f6(%rip), %rcx     # 0x32653
movl $0x5c2, %edx            # imm = 0x5C2
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a467
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a470
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a479
cmpl $0x2, 0x44(%rdx)
jne 0x1a482
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 0x1524f
movq 0x60(%r12), %rax
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %ecx
cmpl $0x4, %ecx
je 0x1a40d
cmpl $0x2, %ecx
je 0x1a40d
cmpl $0x1, %ecx
jne 0x1a4a1
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x1a43d
cmpl $0x4, %eax
je 0x1a439
leaq 0x13f7b(%rip), %rdi     # 0x2e370
leaq 0x17848(%rip), %rsi     # 0x31c44
leaq 0x1828f(%rip), %rcx     # 0x32692
movl $0x5ef, %edx            # imm = 0x5EF
callq 0xa0b0
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x1a439
cmpl $0x4, %eax
je 0x1a43d
leaq 0x13f4f(%rip), %rdi     # 0x2e370
leaq 0x1781c(%rip), %rsi     # 0x31c44
leaq 0x18263(%rip), %rcx     # 0x32692
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 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x162bc(%rip), %rdi     # 0x3072a
jmp 0x1a489
leaq 0x1c0e4(%rip), %rdi     # 0x3655b
jmp 0x1a489
leaq 0x17821(%rip), %rdi     # 0x31ca1
jmp 0x1a489
leaq 0x17827(%rip), %rdi     # 0x31cb0
leaq 0x177b4(%rip), %rsi     # 0x31c44
leaq 0x181fb(%rip), %rcx     # 0x32692
movl $0x5d5, %edx            # imm = 0x5D5
callq 0xa0b0
leaq 0x13ec8(%rip), %rdi     # 0x2e370
leaq 0x17795(%rip), %rsi     # 0x31c44
leaq 0x181dc(%rip), %rcx     # 0x32692
movl $0x608, %edx            # imm = 0x608
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a531
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a53a
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a543
cmpl $0x2, 0x44(%rdx)
jne 0x1a54c
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x161f2(%rip), %rdi     # 0x3072a
jmp 0x1a553
leaq 0x1c01a(%rip), %rdi     # 0x3655b
jmp 0x1a553
leaq 0x17757(%rip), %rdi     # 0x31ca1
jmp 0x1a553
leaq 0x1775d(%rip), %rdi     # 0x31cb0
leaq 0x176ea(%rip), %rsi     # 0x31c44
leaq 0x18171(%rip), %rcx     # 0x326d2
movl $0x616, %edx            # imm = 0x616
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a66b
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a674
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a67d
cmpl $0x2, 0x44(%rdx)
jne 0x1a686
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 0x1524f
movq 0x60(%r12), %rax
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %ecx
cmpl $0x4, %ecx
je 0x1a611
cmpl $0x2, %ecx
je 0x1a611
cmpl $0x1, %ecx
jne 0x1a6a5
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x1a641
cmpl $0x4, %eax
je 0x1a63d
leaq 0x13d77(%rip), %rdi     # 0x2e370
leaq 0x17644(%rip), %rsi     # 0x31c44
leaq 0x1810b(%rip), %rcx     # 0x32712
movl $0x643, %edx            # imm = 0x643
callq 0xa0b0
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x1a63d
cmpl $0x4, %eax
je 0x1a641
leaq 0x13d4b(%rip), %rdi     # 0x2e370
leaq 0x17618(%rip), %rsi     # 0x31c44
leaq 0x180df(%rip), %rcx     # 0x32712
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 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x160b8(%rip), %rdi     # 0x3072a
jmp 0x1a68d
leaq 0x1bee0(%rip), %rdi     # 0x3655b
jmp 0x1a68d
leaq 0x1761d(%rip), %rdi     # 0x31ca1
jmp 0x1a68d
leaq 0x17623(%rip), %rdi     # 0x31cb0
leaq 0x175b0(%rip), %rsi     # 0x31c44
leaq 0x18077(%rip), %rcx     # 0x32712
movl $0x629, %edx            # imm = 0x629
callq 0xa0b0
leaq 0x13cc4(%rip), %rdi     # 0x2e370
leaq 0x17591(%rip), %rsi     # 0x31c44
leaq 0x18058(%rip), %rcx     # 0x32712
movl $0x65c, %edx            # imm = 0x65C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a749
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a752
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a75b
cmpl $0x1, 0x44(%rdx)
jne 0x1a764
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 0x1524f
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 0x15488
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15fda(%rip), %rdi     # 0x3072a
jmp 0x1a76b
leaq 0x1be02(%rip), %rdi     # 0x3655b
jmp 0x1a76b
leaq 0x1753f(%rip), %rdi     # 0x31ca1
jmp 0x1a76b
leaq 0x177b7(%rip), %rdi     # 0x31f22
leaq 0x174d2(%rip), %rsi     # 0x31c44
leaq 0x17fda(%rip), %rcx     # 0x32753
movl $0x66a, %edx            # imm = 0x66A
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1a8e4
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a8ed
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a8f6
cmpl $0x1, 0x44(%rdx)
jne 0x1a8ff
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rbx), %rdi
leaq -0x78(%rbp), %rcx
movq %r14, %rsi
callq 0x1524f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x1a8be
cmpl $0x2, %eax
je 0x1a8be
cmpl $0x1, %eax
jne 0x1a91e
leaq -0x78(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x15d47
jmp 0x1a8cd
leaq -0x78(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x15e3d
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15e3f(%rip), %rdi     # 0x3072a
jmp 0x1a906
leaq 0x1bc67(%rip), %rdi     # 0x3655b
jmp 0x1a906
leaq 0x173a4(%rip), %rdi     # 0x31ca1
jmp 0x1a906
leaq 0x1761c(%rip), %rdi     # 0x31f22
leaq 0x17337(%rip), %rsi     # 0x31c44
leaq 0x17ec7(%rip), %rcx     # 0x327db
movl $0x696, %edx            # imm = 0x696
callq 0xa0b0
leaq 0x13a4b(%rip), %rdi     # 0x2e370
leaq 0x17318(%rip), %rsi     # 0x31c44
leaq 0x17ea8(%rip), %rcx     # 0x327db
movl $0x6ab, %edx            # imm = 0x6AB
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1aa4e
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1aa57
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1aa60
cmpl $0x3, 0x44(%rdx)
jne 0x1aa69
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x1534a
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x15488
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
xorl %r8d, %r8d
callq 0x16741
movq 0x8(%rbx), %rdi
movq %r12, %rsi
callq 0x166ef
cmpq $0x8, %rax
je 0x1aa19
cmpq $0x4, %rax
je 0x1aa19
cmpq $0x2, %rax
jne 0x1aa88
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %rcx
movq %r14, %rsi
movq -0x30(%rbp), %rdx
callq 0x15d47
jmp 0x1aa30
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %rcx
movq %r14, %rsi
movq -0x30(%rbp), %rdx
callq 0x15e3d
leaq -0x90(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15cd5(%rip), %rdi     # 0x3072a
jmp 0x1aa70
leaq 0x1bafd(%rip), %rdi     # 0x3655b
jmp 0x1aa70
leaq 0x1723a(%rip), %rdi     # 0x31ca1
jmp 0x1aa70
leaq 0x17dec(%rip), %rdi     # 0x3285c
leaq 0x171cd(%rip), %rsi     # 0x31c44
leaq 0x17d9a(%rip), %rcx     # 0x32818
movl $0x6b7, %edx            # imm = 0x6B7
callq 0xa0b0
leaq 0x138e1(%rip), %rdi     # 0x2e370
leaq 0x171ae(%rip), %rsi     # 0x31c44
leaq 0x17d7b(%rip), %rcx     # 0x32818
movl $0x6d6, %edx            # imm = 0x6D6
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/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 0x1ab18
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1ab21
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1ab2a
cmpl $0x1, 0x44(%rdx)
jne 0x1ab33
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 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15c51
movq %rbx, %rdi
movq %r12, %rsi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15c0b(%rip), %rdi     # 0x3072a
jmp 0x1ab3a
leaq 0x1ba33(%rip), %rdi     # 0x3655b
jmp 0x1ab3a
leaq 0x17170(%rip), %rdi     # 0x31ca1
jmp 0x1ab3a
leaq 0x173e8(%rip), %rdi     # 0x31f22
leaq 0x17103(%rip), %rsi     # 0x31c44
leaq 0x17d33(%rip), %rcx     # 0x3287b
movl $0x6e2, %edx            # imm = 0x6E2
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_IMUL_Gv_Ev_Ib
void ins_enc_IMUL_Gv_Ev_Ib(
	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);

	ins_fill_imm8(data->ctx, ins, source2, &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 0x1ac20
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1ac29
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1ac32
cmpl $0x3, 0x44(%rdx)
jne 0x1ac3b
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r13
movq 0x8(%rax), %r12
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %r15
movq %r14, %rsi
movq %r15, %rcx
callq 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x1534a
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x15488
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r12, %rcx
xorl %r8d, %r8d
callq 0x16741
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rcx
callq 0x15c51
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17e70
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15b03(%rip), %rdi     # 0x3072a
jmp 0x1ac42
leaq 0x1b92b(%rip), %rdi     # 0x3655b
jmp 0x1ac42
leaq 0x17068(%rip), %rdi     # 0x31ca1
jmp 0x1ac42
leaq 0x17c1a(%rip), %rdi     # 0x3285c
leaq 0x16ffb(%rip), %rsi     # 0x31c44
leaq 0x17c68(%rip), %rcx     # 0x328b8
movl $0x6f5, %edx            # imm = 0x6F5
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_INS_OUTS_W
void ins_enc_INS_OUTS_W(
	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);

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

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x68, %rsp
testq %rdi, %rdi
je 0x1acb9
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1acc2
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1accb
cmpl $0x0, 0x44(%rdx)
jne 0x1acd4
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x68(%rbp), %rcx
callq 0x1524f
movq 0x8(%rbx), %rax
movl 0xb0(%rax), %eax
cmpl $0x4, %eax
je 0x1aca2
cmpl $0x2, %eax
jne 0x1aca6
movb $0x1, -0x5d(%rbp)
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x68, %rsp
popq %rbx
popq %rbp
retq
leaq 0x15a6a(%rip), %rdi     # 0x3072a
jmp 0x1acdb
leaq 0x1b892(%rip), %rdi     # 0x3655b
jmp 0x1acdb
leaq 0x16fcf(%rip), %rdi     # 0x31ca1
jmp 0x1acdb
leaq 0x17397(%rip), %rdi     # 0x32072
leaq 0x16f62(%rip), %rsi     # 0x31c44
leaq 0x17c13(%rip), %rcx     # 0x328fc
movl $0x712, %edx            # imm = 0x712
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_POP_Ev
void ins_enc_POP_Ev(
	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);

	size_t oprd_size = ins_get_oprd_size(data->ctx, oprd);

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		case ASM_ARCH_BIT16: {
			if (oprd_size == 2
					|| oprd_size == 4) {
				ins_fill_EX(data->ctx, ins, oprd, &enc_ins);
			} else {
				data->ctx->syntax_error_node_msg(
					data->ctx,
					ins_node,
					"instruction not supported in 16-bit mode."
				);
			}
			break;
		}
		case ASM_ARCH_BIT32: {
			if (oprd_size == 2
					|| oprd_size == 4) {
				ins_fill_EX(data->ctx, ins, oprd, &enc_ins);
			} else {
				data->ctx->syntax_error_node_msg(
					data->ctx,
					ins_node,
					"instruction not supported in 32-bit mode."
				);
			}
			break;
		}
		case ASM_ARCH_BIT64: {
			if (oprd_size == 2
					|| oprd_size == 8) {
				ins_fill_EX(data->ctx, ins, oprd, &enc_ins);
			} else {
				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 %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x1b0e0
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1b0e9
movq (%rbx), %r15
testq %r15, %r15
je 0x1b0f2
cmpl $0x1, 0x44(%r15)
jne 0x1b0fb
movq %rdi, %r14
movq 0x48(%r15), %rax
movq (%rax), %r12
movq 0x8(%rbx), %rdi
leaq -0x80(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x1524f
movq 0x8(%rbx), %rdi
movq %r12, %rsi
callq 0x166ef
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %ecx
cmpl $0x4, %ecx
je 0x1b09d
cmpl $0x2, %ecx
je 0x1b088
cmpl $0x1, %ecx
jne 0x1b11a
cmpq $0x4, %rax
je 0x1b0a9
cmpq $0x2, %rax
je 0x1b0a9
leaq 0x16dca(%rip), %rdx     # 0x31e50
jmp 0x1b0c1
cmpq $0x4, %rax
je 0x1b0a9
cmpq $0x2, %rax
je 0x1b0a9
leaq 0x16ddf(%rip), %rdx     # 0x31e7a
jmp 0x1b0c1
cmpq $0x8, %rax
je 0x1b0a9
cmpq $0x2, %rax
jne 0x1b0ba
leaq -0x80(%rbp), %rcx
movq %r14, %rsi
movq %r12, %rdx
callq 0x15488
jmp 0x1b0c7
leaq 0x16ec1(%rip), %rdx     # 0x31f82
movq %r15, %rsi
callq *0x58(%rdi)
leaq -0x80(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15643(%rip), %rdi     # 0x3072a
jmp 0x1b102
leaq 0x1b46b(%rip), %rdi     # 0x3655b
jmp 0x1b102
leaq 0x16ba8(%rip), %rdi     # 0x31ca1
jmp 0x1b102
leaq 0x16e20(%rip), %rdi     # 0x31f22
leaq 0x16b3b(%rip), %rsi     # 0x31c44
leaq 0x1792d(%rip), %rcx     # 0x32a3d
movl $0x78d, %edx            # imm = 0x78D
callq 0xa0b0
leaq 0x1324f(%rip), %rdi     # 0x2e370
leaq 0x16b1c(%rip), %rsi     # 0x31c44
leaq 0x1790e(%rip), %rcx     # 0x32a3d
movl $0x7c2, %edx            # imm = 0x7C2
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_opcode_implicit_oprd64
void ins_enc_opcode_implicit_oprd64(
	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);

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		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 0x1b339
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1b342
movq (%rbx), %r14
testq %r14, %r14
je 0x1b34b
cmpl $0x0, 0x44(%r14)
jne 0x1b354
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x1524f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x1b31e
cmpl $0x2, %eax
je 0x1b30f
cmpl $0x1, %eax
jne 0x1b373
leaq 0x16b43(%rip), %rdx     # 0x31e50
jmp 0x1b316
leaq 0x16b64(%rip), %rdx     # 0x31e7a
movq %r14, %rsi
callq *0x58(%rdi)
jmp 0x1b324
movw $0x101, -0x63(%rbp)     # imm = 0x101
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x153ea(%rip), %rdi     # 0x3072a
jmp 0x1b35b
leaq 0x1b212(%rip), %rdi     # 0x3655b
jmp 0x1b35b
leaq 0x1694f(%rip), %rdi     # 0x31ca1
jmp 0x1b35b
leaq 0x16d17(%rip), %rdi     # 0x32072
leaq 0x168e2(%rip), %rsi     # 0x31c44
leaq 0x177ab(%rip), %rcx     # 0x32b14
movl $0x80c, %edx            # imm = 0x80C
callq 0xa0b0
leaq 0x12ff6(%rip), %rdi     # 0x2e370
leaq 0x168c3(%rip), %rsi     # 0x31c44
leaq 0x1778c(%rip), %rcx     # 0x32b14
movl $0x82b, %edx            # imm = 0x82B
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_pushfd_popfd
void ins_enc_pushfd_popfd(
	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);

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		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 0x1b5f4
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1b5fd
movq (%rbx), %r14
testq %r14, %r14
je 0x1b606
cmpl $0x0, 0x44(%r14)
jne 0x1b60f
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x1524f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x1b5d2
cmpl $0x2, %eax
je 0x1b5df
cmpl $0x1, %eax
jne 0x1b62e
movb $0x1, -0x65(%rbp)
jmp 0x1b5df
leaq 0x169a9(%rip), %rdx     # 0x31f82
movq %r14, %rsi
callq *0x58(%rdi)
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x1512f(%rip), %rdi     # 0x3072a
jmp 0x1b616
leaq 0x1af57(%rip), %rdi     # 0x3655b
jmp 0x1b616
leaq 0x16694(%rip), %rdi     # 0x31ca1
jmp 0x1b616
leaq 0x16a5c(%rip), %rdi     # 0x32072
leaq 0x16627(%rip), %rsi     # 0x31c44
leaq 0x17576(%rip), %rcx     # 0x32b9a
movl $0x8a6, %edx            # imm = 0x8A6
callq 0xa0b0
leaq 0x12d3b(%rip), %rdi     # 0x2e370
leaq 0x16608(%rip), %rsi     # 0x31c44
leaq 0x17557(%rip), %rcx     # 0x32b9a
movl $0x8c0, %edx            # imm = 0x8C0
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_pushfq_popfq
void ins_enc_pushfq_popfq(
	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);

	switch (ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx)) {
		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: {
			
			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 0x1b6cb
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1b6d4
movq (%rbx), %r14
testq %r14, %r14
je 0x1b6dd
cmpl $0x0, 0x44(%r14)
jne 0x1b6e6
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x1524f
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x1, %eax
je 0x1b6a9
cmpl $0x4, %eax
je 0x1b6b6
cmpl $0x2, %eax
jne 0x1b705
leaq 0x167d3(%rip), %rdx     # 0x31e7a
jmp 0x1b6b0
leaq 0x167a0(%rip), %rdx     # 0x31e50
movq %r14, %rsi
callq *0x58(%rdi)
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x17e70
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x15058(%rip), %rdi     # 0x3072a
jmp 0x1b6ed
leaq 0x1ae80(%rip), %rdi     # 0x3655b
jmp 0x1b6ed
leaq 0x165bd(%rip), %rdi     # 0x31ca1
jmp 0x1b6ed
leaq 0x16985(%rip), %rdi     # 0x32072
leaq 0x16550(%rip), %rsi     # 0x31c44
leaq 0x174e2(%rip), %rcx     # 0x32bdd
movl $0x8cc, %edx            # imm = 0x8CC
callq 0xa0b0
leaq 0x12c64(%rip), %rdi     # 0x2e370
leaq 0x16531(%rip), %rsi     # 0x31c44
leaq 0x174c3(%rip), %rcx     # 0x32bdd
movl $0x8ea, %edx            # imm = 0x8EA
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O3/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_enter
void ins_enc_enter(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

	ParserASTNode *oprd_iw = ins_node->childs[0];
	ParserASTNode *oprd_ib = ins_node->childs[1];

	EncoderInstruction enc_ins;

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

	ins_add_uint16_expr_to_ext(
		data->ctx,
		ins,
		&enc_ins,
		oprd_iw
	);
	ins_add_uint8_expr_to_ext(
		data->ctx,
		ins,
		&enc_ins,
		oprd_ib
	);

	_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 0x1b7b2
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1b7bb
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1b7c4
cmpl $0x2, 0x44(%rdx)
jne 0x1b7cd
movq %rdi, %r14
movq 0x48(%rdx), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %r13
movq %r14, %rsi
movq %r13, %rcx
callq 0x1524f
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x162aa
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r12, %rcx
callq 0x161ac
movq %rbx, %rdi
movq %r13, %rsi
callq 0x17e70
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x14f71(%rip), %rdi     # 0x3072a
jmp 0x1b7d4
leaq 0x1ad99(%rip), %rdi     # 0x3655b
jmp 0x1b7d4
leaq 0x164d6(%rip), %rdi     # 0x31ca1
jmp 0x1b7d4
leaq 0x164dc(%rip), %rdi     # 0x31cb0
leaq 0x16469(%rip), %rsi     # 0x31c44
leaq 0x1743e(%rip), %rcx     # 0x32c20
movl $0x8f6, %edx            # imm = 0x8F6
callq 0xa0b0