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

	ParserASTNode *ins_node = data->ins_node;

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

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

	ins_check_operand_type(data->ctx, ins, gv_node, ev_node, NULL);

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

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

	ins_fill_EX(data->ctx, ins, ev_node, &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 0x185e1
movq %rsi, %rbx
testq %rsi, %rsi
je 0x185ea
movq (%rbx), %r12
testq %r12, %r12
je 0x185f3
cmpl $0x2, 0x44(%r12)
jne 0x185fc
movq %rdi, %r14
movq 0x48(%r12), %rax
movq (%rax), %r13
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x16a9b
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %rcx
movq %r14, %rsi
movq %r12, %rdx
movq %rcx, %r12
callq 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r12, %rcx
callq 0x156a1
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x157df
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x19192(%rip), %rdi     # 0x3177a
jmp 0x18603
leaq 0x1f003(%rip), %rdi     # 0x375f4
jmp 0x18603
leaq 0x1a6f7(%rip), %rdi     # 0x32cf1
jmp 0x18603
leaq 0x1a6fd(%rip), %rdi     # 0x32d00
leaq 0x1a68a(%rip), %rsi     # 0x32c94
leaq 0x1a78e(%rip), %rcx     # 0x32d9f
movl $0x7d, %edx
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_XXX_Gv_Ew
void ins_enc_XXX_Gv_Ew(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ins_enc_XXX_Gv_Ev(
		ins,
		data
	);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
testq %rdi, %rdi
je 0x1863d
testq %rsi, %rsi
je 0x18646
movq (%rsi), %rax
testq %rax, %rax
je 0x1864f
cmpl $0x2, 0x44(%rax)
jne 0x18658
popq %rbp
jmp 0x18528
leaq 0x19136(%rip), %rdi     # 0x3177a
jmp 0x1865f
leaq 0x1efa7(%rip), %rdi     # 0x375f4
jmp 0x1865f
leaq 0x1a69b(%rip), %rdi     # 0x32cf1
jmp 0x1865f
leaq 0x1a6a1(%rip), %rdi     # 0x32d00
leaq 0x1a62e(%rip), %rsi     # 0x32c94
leaq 0x1a772(%rip), %rcx     # 0x32ddf
movl $0x96, %edx
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_XXX_AL_Ib
void ins_enc_XXX_AL_Ib(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(2);

	ParserASTNode *ins_node = data->ins_node;

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

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

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

	ins_fill_imm8(data->ctx, ins, ib_node, &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 0x186e9
movq %rsi, %rbx
testq %rsi, %rsi
je 0x186f2
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x186fb
cmpl $0x2, 0x44(%rdx)
jne 0x18704
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15fb3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1908a(%rip), %rdi     # 0x3177a
jmp 0x1870b
leaq 0x1eefb(%rip), %rdi     # 0x375f4
jmp 0x1870b
leaq 0x1a5ef(%rip), %rdi     # 0x32cf1
jmp 0x1870b
leaq 0x1a5f5(%rip), %rdi     # 0x32d00
leaq 0x1a582(%rip), %rsi     # 0x32c94
leaq 0x1a706(%rip), %rcx     # 0x32e1f
movl $0xa2, %edx
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_opcode
void ins_enc_opcode(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS_WITHOUT_OPRD_COUNT();

	ParserASTNode *ins_node = data->ins_node;

	EncoderInstruction enc_ins;

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

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x18981
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1898a
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x18993
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %r14
movq %r14, %rcx
callq 0x155a6
movq %rbx, %rdi
movq %r14, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x18df2(%rip), %rdi     # 0x3177a
jmp 0x1899a
leaq 0x1ec63(%rip), %rdi     # 0x375f4
jmp 0x1899a
leaq 0x1a357(%rip), %rdi     # 0x32cf1
leaq 0x1a2f3(%rip), %rsi     # 0x32c94
leaq 0x1a54c(%rip), %rcx     # 0x32ef4
movl $0x121, %edx            # imm = 0x121
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_opcode_eXX
void ins_enc_opcode_eXX(
	Instruction *ins,
	InstructionEncoderData *data
) {
	_CHECK_PARAMS(1);

	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);

	int arch = ASM_PARSER_CONTEXT_DATA_GET_ARCH(data->ctx);

	InsRegister *target_reg = ASM_REG_AST_NODE_GET_REG(target);

	switch (arch) {
		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: {
			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;
		}
	}

	_output(data, &enc_ins);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x60, %rsp
testq %rdi, %rdi
je 0x18a8c
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18a95
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x18a9e
cmpl $0x1, 0x44(%rdx)
jne 0x18aa7
movq %rdi, %rsi
movq 0x48(%rdx), %rax
movq (%rax), %r14
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
callq 0x155a6
movq 0x8(%rbx), %rax
movl 0xb0(%rax), %ecx
movq 0x60(%r14), %rax
cmpl $0x2, %ecx
je 0x18a47
cmpl $0x1, %ecx
jne 0x18ac6
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x18a77
cmpl $0x4, %eax
je 0x18a73
leaq 0x16965(%rip), %rdi     # 0x2f394
leaq 0x1a25e(%rip), %rsi     # 0x32c94
leaq 0x1a4f4(%rip), %rcx     # 0x32f31
movl $0x14a, %edx            # imm = 0x14A
callq 0xa0b0
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x18a73
cmpl $0x4, %eax
je 0x18a77
leaq 0x16939(%rip), %rdi     # 0x2f394
leaq 0x1a232(%rip), %rsi     # 0x32c94
leaq 0x1a4c8(%rip), %rcx     # 0x32f31
movl $0x15b, %edx            # imm = 0x15B
callq 0xa0b0
movb $0x1, -0x65(%rbp)
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x18ce7(%rip), %rdi     # 0x3177a
jmp 0x18aae
leaq 0x1eb58(%rip), %rdi     # 0x375f4
jmp 0x18aae
leaq 0x1a24c(%rip), %rdi     # 0x32cf1
jmp 0x18aae
leaq 0x1a4c4(%rip), %rdi     # 0x32f72
leaq 0x1a1df(%rip), %rsi     # 0x32c94
leaq 0x1a475(%rip), %rcx     # 0x32f31
movl $0x130, %edx            # imm = 0x130
callq 0xa0b0
leaq 0x168c7(%rip), %rdi     # 0x2f394
leaq 0x1a1c0(%rip), %rsi     # 0x32c94
leaq 0x1a456(%rip), %rcx     # 0x32f31
movl $0x162, %edx            # imm = 0x162
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_bound_Gv_Ma
void ins_enc_bound_Gv_Ma(
	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 != 2 && target_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 0x18d5f
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18d68
movq (%rbx), %r12
testq %r12, %r12
je 0x18d71
cmpl $0x2, 0x44(%r12)
jne 0x18d7a
movq %rdi, %r14
movq 0x48(%r12), %rax
movq (%rax), %r13
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
movq 0x8(%rbx), %rdi
movq %r13, %rsi
callq 0x16a49
cmpq $0x2, %rax
je 0x18d07
cmpq $0x4, %rax
je 0x18d07
movq 0x8(%rbx), %rdi
leaq 0x19046(%rip), %rdx     # 0x31d47
movq %r13, %rsi
callq *0x58(%rdi)
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %r15
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x156a1
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rcx
callq 0x157df
movq %rbx, %rdi
movq %r15, %rsi
callq 0x181fc
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x18a14(%rip), %rdi     # 0x3177a
jmp 0x18d81
leaq 0x1e885(%rip), %rdi     # 0x375f4
jmp 0x18d81
leaq 0x19f79(%rip), %rdi     # 0x32cf1
jmp 0x18d81
leaq 0x19f7f(%rip), %rdi     # 0x32d00
leaq 0x19f0c(%rip), %rsi     # 0x32c94
leaq 0x1a26d(%rip), %rcx     # 0x32ffc
movl $0x1d5, %edx            # imm = 0x1D5
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/Ihsoh[P]ilang/compiler/assembler/ins_enc.c
// Function: ins_enc_arpl_Ew_Gw
void ins_enc_arpl_Ew_Gw(
	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);

	ins_fill_GX(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 0x18e27
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18e30
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x18e39
cmpl $0x2, 0x44(%rdx)
jne 0x18e42
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r13, %rcx
callq 0x157df
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x156a1
movq %rbx, %rdi
movq %r13, %rsi
callq 0x181fc
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1894c(%rip), %rdi     # 0x3177a
jmp 0x18e49
leaq 0x1e7bd(%rip), %rdi     # 0x375f4
jmp 0x18e49
leaq 0x19eb1(%rip), %rdi     # 0x32cf1
jmp 0x18e49
leaq 0x19eb7(%rip), %rdi     # 0x32d00
leaq 0x19e44(%rip), %rsi     # 0x32c94
leaq 0x1a1e7(%rip), %rcx     # 0x3303e
movl $0x1f1, %edx            # imm = 0x1F1
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x18edc
movq %rsi, %rbx
testq %rsi, %rsi
je 0x18ee5
movq (%rbx), %r14
testq %r14, %r14
je 0x18eee
cmpl $0x0, 0x44(%r14)
jne 0x18ef7
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x155a6
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x18eba
cmpl $0x2, %eax
je 0x18ec7
cmpl $0x1, %eax
jne 0x18f16
movb $0x1, -0x65(%rbp)
jmp 0x18ec7
leaq 0x1a111(%rip), %rdx     # 0x32fd2
movq %r14, %rsi
callq *0x58(%rdi)
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x18897(%rip), %rdi     # 0x3177a
jmp 0x18efe
leaq 0x1e708(%rip), %rdi     # 0x375f4
jmp 0x18efe
leaq 0x19dfc(%rip), %rdi     # 0x32cf1
jmp 0x18efe
leaq 0x1a1c4(%rip), %rdi     # 0x330c2
leaq 0x19d8f(%rip), %rsi     # 0x32c94
leaq 0x1a173(%rip), %rcx     # 0x3307f
movl $0x208, %edx            # imm = 0x208
callq 0xa0b0
leaq 0x16477(%rip), %rdi     # 0x2f394
leaq 0x19d70(%rip), %rsi     # 0x32c94
leaq 0x1a154(%rip), %rcx     # 0x3307f
movl $0x223, %edx            # imm = 0x223
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x19024
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1902d
movq (%rbx), %r12
testq %r12, %r12
je 0x19036
cmpl $0x2, 0x44(%r12)
jne 0x1903f
movq %rdi, %r14
movq 0x48(%r12), %rax
movq (%rax), %r13
movq 0x8(%rax), %r15
movq 0x8(%rbx), %rdi
movq %r13, %rsi
callq 0x16a49
cmpq $0x8, %rax
je 0x18fa5
movq 0x8(%rbx), %rdi
leaq 0x18da8(%rip), %rdx     # 0x31d47
movq %r13, %rsi
callq *0x58(%rdi)
movq 0x8(%rbx), %rdi
movq %r15, -0x30(%rbp)
movq %r15, %rsi
callq 0x16a49
cmpq $0x4, %rax
je 0x18fcc
movq 0x8(%rbx), %rdi
leaq 0x18d81(%rip), %rdx     # 0x31d47
movq %r13, %rsi
callq *0x58(%rdi)
movq 0x8(%rbx), %rdi
leaq -0x90(%rbp), %r15
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0x156a1
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rcx
callq 0x157df
movq %rbx, %rdi
movq %r15, %rsi
callq 0x181fc
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1874f(%rip), %rdi     # 0x3177a
jmp 0x19046
leaq 0x1e5c0(%rip), %rdi     # 0x375f4
jmp 0x19046
leaq 0x19cb4(%rip), %rdi     # 0x32cf1
jmp 0x19046
leaq 0x19cba(%rip), %rdi     # 0x32d00
leaq 0x19c47(%rip), %rsi     # 0x32c94
leaq 0x1a08d(%rip), %rcx     # 0x330e1
movl $0x22f, %edx            # imm = 0x22F
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x19154
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1915d
movq (%rbx), %r12
testq %r12, %r12
je 0x19166
cmpl $0x1, 0x44(%r12)
jne 0x1916f
movq %rdi, %r14
movq 0x48(%r12), %rax
movq (%rax), %rax
movq 0x8(%rbx), %rdi
movq 0x10(%rax), %rsi
callq 0x1f0af
movq %rax, %r13
movq 0x8(%rbx), %rdi
leaq -0xb0(%rbp), %r15
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x155a6
movb $0x1, 0x1e(%r15)
movq $0x0, 0x20(%r15)
leaq -0x50(%rbp), %r14
movl $0x20, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x148c4
movq 0x8(%rbx), %rcx
addq 0xc0(%rcx), %rax
subq %rax, %r13
movq %r13, 0x20(%r15)
movl $0x20, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x148c4
movq 0x8(%rbx), %rcx
addq %rax, 0xc0(%rcx)
cmpl $0x1, 0xc8(%rcx)
je 0x19142
movq 0xb8(%rcx), %rcx
leaq -0x50(%rbp), %rdi
movl $0x1, %edx
movq %rax, %rsi
callq 0xa170
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1861f(%rip), %rdi     # 0x3177a
jmp 0x19176
leaq 0x1e490(%rip), %rdi     # 0x375f4
jmp 0x19176
leaq 0x19b84(%rip), %rdi     # 0x32cf1
jmp 0x19176
leaq 0x19dfc(%rip), %rdi     # 0x32f72
leaq 0x19b17(%rip), %rsi     # 0x32c94
leaq 0x19f9a(%rip), %rcx     # 0x3311e
movl $0x258, %edx            # imm = 0x258
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1923e
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19247
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19250
cmpl $0x2, 0x44(%rdx)
jne 0x19259
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 0x155a6
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 0x157df
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r15, %rcx
callq 0x15fb3
movq %rbx, %rdi
movq %r15, %rsi
callq 0x181fc
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x18535(%rip), %rdi     # 0x3177a
jmp 0x19260
leaq 0x1e3a6(%rip), %rdi     # 0x375f4
jmp 0x19260
leaq 0x19a9a(%rip), %rdi     # 0x32cf1
jmp 0x19260
leaq 0x19aa0(%rip), %rdi     # 0x32d00
leaq 0x19a2d(%rip), %rsi     # 0x32c94
leaq 0x19ee9(%rip), %rcx     # 0x33157
movl $0x27c, %edx            # imm = 0x27C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1936a
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19373
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1937c
cmpl $0x2, 0x44(%rdx)
jne 0x19385
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 0x155a6
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 0x157df
movq 0x8(%rbx), %rdi
movq %r12, %rsi
callq 0x16a49
cmpq $0x8, %rax
je 0x19336
cmpq $0x4, %rax
je 0x19336
cmpq $0x2, %rax
jne 0x193a4
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x160a9
jmp 0x1934c
movq 0x8(%rbx), %rdi
leaq -0x88(%rbp), %rcx
movq %r14, %rsi
movq %r15, %rdx
callq 0x1619f
leaq -0x88(%rbp), %rsi
movq %rbx, %rdi
callq 0x181fc
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x18409(%rip), %rdi     # 0x3177a
jmp 0x1938c
leaq 0x1e27a(%rip), %rdi     # 0x375f4
jmp 0x1938c
leaq 0x1996e(%rip), %rdi     # 0x32cf1
jmp 0x1938c
leaq 0x19974(%rip), %rdi     # 0x32d00
leaq 0x19901(%rip), %rsi     # 0x32c94
leaq 0x19e04(%rip), %rcx     # 0x3319e
movl $0x296, %edx            # imm = 0x296
callq 0xa0b0
leaq 0x15fe9(%rip), %rdi     # 0x2f394
leaq 0x198e2(%rip), %rsi     # 0x32c94
leaq 0x19de5(%rip), %rcx     # 0x3319e
movl $0x2b5, %edx            # imm = 0x2B5
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x194ff
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19508
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19511
cmpl $0x0, 0x44(%rdx)
jne 0x1951a
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %r14
movq %r14, %rcx
callq 0x155a6
movb $0x1, 0x2(%r14)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x18274(%rip), %rdi     # 0x3177a
jmp 0x19521
leaq 0x1e0e5(%rip), %rdi     # 0x375f4
jmp 0x19521
leaq 0x197d9(%rip), %rdi     # 0x32cf1
jmp 0x19521
leaq 0x19ba1(%rip), %rdi     # 0x330c2
leaq 0x1976c(%rip), %rsi     # 0x32c94
leaq 0x19cfd(%rip), %rcx     # 0x3322c
movl $0x2db, %edx            # imm = 0x2DB
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x19788
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19791
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1979a
cmpl $0x2, 0x44(%rdx)
jne 0x197a3
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x157df
movq 0x8(%rbx), %rax
cmpl $0x4, 0xb0(%rax)
jne 0x1976b
movb $0x8, -0x62(%rbp)
leaq -0x80(%rbp), %rsi
movb $0x0, 0x16(%rsi)
movq %rbx, %rdi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17feb(%rip), %rdi     # 0x3177a
jmp 0x197aa
leaq 0x1de5c(%rip), %rdi     # 0x375f4
jmp 0x197aa
leaq 0x19550(%rip), %rdi     # 0x32cf1
jmp 0x197aa
leaq 0x19556(%rip), %rdi     # 0x32d00
leaq 0x194e3(%rip), %rsi     # 0x32c94
leaq 0x19af3(%rip), %rcx     # 0x332ab
movl $0x35c, %edx            # imm = 0x35C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x19849
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19852
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1985b
cmpl $0x2, 0x44(%rdx)
jne 0x19864
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x157df
movq 0x8(%rbx), %rax
cmpl $0x4, 0xb0(%rax)
jne 0x1982c
movb $0x8, -0x62(%rbp)
leaq -0x80(%rbp), %rsi
movb $0x0, 0x16(%rsi)
movq %rbx, %rdi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17f2a(%rip), %rdi     # 0x3177a
jmp 0x1986b
leaq 0x1dd9b(%rip), %rdi     # 0x375f4
jmp 0x1986b
leaq 0x1948f(%rip), %rdi     # 0x32cf1
jmp 0x1986b
leaq 0x19495(%rip), %rdi     # 0x32d00
leaq 0x19422(%rip), %rsi     # 0x32c94
leaq 0x19a73(%rip), %rcx     # 0x332ec
movl $0x378, %edx            # imm = 0x378
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x198e7
movq %rsi, %rbx
testq %rsi, %rsi
je 0x198f0
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x198f9
cmpl $0x0, 0x44(%rdx)
jne 0x19902
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x68(%rbp), %rcx
callq 0x155a6
movq 0x8(%rbx), %rax
movl 0xb0(%rax), %eax
cmpl $0x1, %eax
je 0x198d4
cmpl $0x2, %eax
je 0x198d0
cmpl $0x4, %eax
jne 0x19921
movb $0x1, -0x5d(%rbp)
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x181fc
addq $0x68, %rsp
popq %rbx
popq %rbp
retq
leaq 0x17e8c(%rip), %rdi     # 0x3177a
jmp 0x19909
leaq 0x1dcfd(%rip), %rdi     # 0x375f4
jmp 0x19909
leaq 0x193f1(%rip), %rdi     # 0x32cf1
jmp 0x19909
leaq 0x197b9(%rip), %rdi     # 0x330c2
leaq 0x19384(%rip), %rsi     # 0x32c94
leaq 0x19a16(%rip), %rcx     # 0x3332d
movl $0x394, %edx            # imm = 0x394
callq 0xa0b0
leaq 0x15a6c(%rip), %rdi     # 0x2f394
leaq 0x19365(%rip), %rsi     # 0x32c94
leaq 0x199f7(%rip), %rcx     # 0x3332d
movl $0x3aa, %edx            # imm = 0x3AA
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x19a83
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19a8c
movq (%rbx), %r14
testq %r14, %r14
je 0x19a95
cmpl $0x0, 0x44(%r14)
jne 0x19a9e
movq %rdi, %rsi
movq 0x8(%rbx), %rdi
leaq -0x70(%rbp), %rcx
movq %r14, %rdx
callq 0x155a6
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %eax
cmpl $0x4, %eax
je 0x19a68
cmpl $0x2, %eax
je 0x19a59
cmpl $0x1, %eax
jne 0x19abd
leaq 0x19449(%rip), %rdx     # 0x32ea0
jmp 0x19a60
leaq 0x1946a(%rip), %rdx     # 0x32eca
movq %r14, %rsi
callq *0x58(%rdi)
jmp 0x19a6e
movw $0x101, -0x63(%rbp)     # imm = 0x101
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x17cf0(%rip), %rdi     # 0x3177a
jmp 0x19aa5
leaq 0x1db61(%rip), %rdi     # 0x375f4
jmp 0x19aa5
leaq 0x19255(%rip), %rdi     # 0x32cf1
jmp 0x19aa5
leaq 0x1961d(%rip), %rdi     # 0x330c2
leaq 0x191e8(%rip), %rsi     # 0x32c94
leaq 0x198f2(%rip), %rcx     # 0x333a5
movl $0x3d7, %edx            # imm = 0x3D7
callq 0xa0b0
leaq 0x158d0(%rip), %rdi     # 0x2f394
leaq 0x191c9(%rip), %rsi     # 0x32c94
leaq 0x198d3(%rip), %rcx     # 0x333a5
movl $0x3f7, %edx            # imm = 0x3F7
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x19b4e
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19b57
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19b60
cmpl $0x2, 0x44(%rdx)
jne 0x19b69
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15fb3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17c25(%rip), %rdi     # 0x3177a
jmp 0x19b70
leaq 0x1da96(%rip), %rdi     # 0x375f4
jmp 0x19b70
leaq 0x1918a(%rip), %rdi     # 0x32cf1
jmp 0x19b70
leaq 0x19190(%rip), %rdi     # 0x32d00
leaq 0x1911d(%rip), %rsi     # 0x32c94
leaq 0x19863(%rip), %rcx     # 0x333e1
movl $0x403, %edx            # imm = 0x403
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x19c06
movq %rsi, %rbx
testq %rsi, %rsi
je 0x19c0f
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x19c18
cmpl $0x2, 0x44(%rdx)
jne 0x19c21
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15fb3
movb $0x1, %al
movb %al, 0xd(%r12)
movb %al, 0x11(%r12)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17b6d(%rip), %rdi     # 0x3177a
jmp 0x19c28
leaq 0x1d9de(%rip), %rdi     # 0x375f4
jmp 0x19c28
leaq 0x190d2(%rip), %rdi     # 0x32cf1
jmp 0x19c28
leaq 0x190d8(%rip), %rdi     # 0x32d00
leaq 0x19065(%rip), %rsi     # 0x32c94
leaq 0x197eb(%rip), %rcx     # 0x33421
movl $0x418, %edx            # imm = 0x418
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a0e3
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a0ec
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a0f5
cmpl $0x1, 0x44(%rdx)
jne 0x1a0fe
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x160a9
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17690(%rip), %rdi     # 0x3177a
jmp 0x1a105
leaq 0x1d501(%rip), %rdi     # 0x375f4
jmp 0x1a105
leaq 0x18bf5(%rip), %rdi     # 0x32cf1
jmp 0x1a105
leaq 0x18e6d(%rip), %rdi     # 0x32f72
leaq 0x18b88(%rip), %rsi     # 0x32c94
leaq 0x193df(%rip), %rcx     # 0x334f2
movl $0x50f, %edx            # imm = 0x50F
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a26c
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a275
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a27e
cmpl $0x1, 0x44(%rdx)
jne 0x1a287
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 0x155a6
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 0x15fb3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17507(%rip), %rdi     # 0x3177a
jmp 0x1a28e
leaq 0x1d378(%rip), %rdi     # 0x375f4
jmp 0x1a28e
leaq 0x18a6c(%rip), %rdi     # 0x32cf1
jmp 0x1a28e
leaq 0x18ce4(%rip), %rdi     # 0x32f72
leaq 0x189ff(%rip), %rsi     # 0x32c94
leaq 0x192d1(%rip), %rcx     # 0x3356d
movl $0x539, %edx            # imm = 0x539
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a3d9
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a3e2
movq (%rbx), %r12
testq %r12, %r12
je 0x1a3eb
cmpl $0x1, 0x44(%r12)
jne 0x1a3f4
movq %rdi, %r15
movq 0x48(%r12), %rax
movq (%rax), %rax
movq 0x8(%rbx), %rdi
movq 0x10(%rax), %rsi
callq 0x1f0af
movq %rax, %r14
movq 0x8(%rbx), %rdi
leaq -0xb0(%rbp), %r13
movq %r15, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x155a6
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 0x1a350
cmpl $0x4, %eax
je 0x1a34c
cmpl $0x2, %eax
jne 0x1a413
movb $0x4, %al
jmp 0x1a352
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 0x148c4
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 0x148c4
movq 0x8(%rbx), %rcx
addq %rax, 0xc0(%rcx)
cmpl $0x1, 0xc8(%rcx)
je 0x1a3c7
movq 0xb8(%rcx), %rcx
leaq -0x50(%rbp), %rdi
movl $0x1, %edx
movq %rax, %rsi
callq 0xa170
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1739a(%rip), %rdi     # 0x3177a
jmp 0x1a3fb
leaq 0x1d20b(%rip), %rdi     # 0x375f4
jmp 0x1a3fb
leaq 0x188ff(%rip), %rdi     # 0x32cf1
jmp 0x1a3fb
leaq 0x18b77(%rip), %rdi     # 0x32f72
leaq 0x18892(%rip), %rsi     # 0x32c94
leaq 0x191a1(%rip), %rcx     # 0x335aa
movl $0x550, %edx            # imm = 0x550
callq 0xa0b0
leaq 0x14f7a(%rip), %rdi     # 0x2f394
leaq 0x18873(%rip), %rsi     # 0x32c94
leaq 0x19182(%rip), %rcx     # 0x335aa
movl $0x56b, %edx            # imm = 0x56B
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a4b7
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a4c0
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a4c9
cmpl $0x2, 0x44(%rdx)
jne 0x1a4d2
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 0x155a6
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 0x157df
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x172bc(%rip), %rdi     # 0x3177a
jmp 0x1a4d9
leaq 0x1d12d(%rip), %rdi     # 0x375f4
jmp 0x1a4d9
leaq 0x18821(%rip), %rdi     # 0x32cf1
jmp 0x1a4d9
leaq 0x18827(%rip), %rdi     # 0x32d00
leaq 0x187b4(%rip), %rsi     # 0x32c94
leaq 0x19100(%rip), %rcx     # 0x335e7
movl $0x586, %edx            # imm = 0x586
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a562
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a56b
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a574
cmpl $0x1, 0x44(%rdx)
jne 0x1a57d
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15fb3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17211(%rip), %rdi     # 0x3177a
jmp 0x1a584
leaq 0x1d082(%rip), %rdi     # 0x375f4
jmp 0x1a584
leaq 0x18776(%rip), %rdi     # 0x32cf1
jmp 0x1a584
leaq 0x189ee(%rip), %rdi     # 0x32f72
leaq 0x18709(%rip), %rsi     # 0x32c94
leaq 0x19091(%rip), %rcx     # 0x33623
movl $0x59c, %edx            # imm = 0x59C
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a6b9
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a6c2
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a6cb
cmpl $0x2, 0x44(%rdx)
jne 0x1a6d4
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15fb3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x170ba(%rip), %rdi     # 0x3177a
jmp 0x1a6db
leaq 0x1cf2b(%rip), %rdi     # 0x375f4
jmp 0x1a6db
leaq 0x1861f(%rip), %rdi     # 0x32cf1
jmp 0x1a6db
leaq 0x18625(%rip), %rdi     # 0x32d00
leaq 0x185b2(%rip), %rsi     # 0x32c94
leaq 0x18fba(%rip), %rcx     # 0x336a3
movl $0x5c2, %edx            # imm = 0x5C2
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a7f3
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a7fc
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a805
cmpl $0x2, 0x44(%rdx)
jne 0x1a80e
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 0x155a6
movq 0x60(%r12), %rax
movq 0x8(%rbx), %rdi
movl 0xb0(%rdi), %ecx
cmpl $0x4, %ecx
je 0x1a799
cmpl $0x2, %ecx
je 0x1a799
cmpl $0x1, %ecx
jne 0x1a82d
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x1a7c9
cmpl $0x4, %eax
je 0x1a7c5
leaq 0x14c13(%rip), %rdi     # 0x2f394
leaq 0x1850c(%rip), %rsi     # 0x32c94
leaq 0x18f53(%rip), %rcx     # 0x336e2
movl $0x5ef, %edx            # imm = 0x5EF
callq 0xa0b0
movl 0xc(%rax), %eax
cmpl $0x3, %eax
je 0x1a7c5
cmpl $0x4, %eax
je 0x1a7c9
leaq 0x14be7(%rip), %rdi     # 0x2f394
leaq 0x184e0(%rip), %rsi     # 0x32c94
leaq 0x18f27(%rip), %rcx     # 0x336e2
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 0x15fb3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16f80(%rip), %rdi     # 0x3177a
jmp 0x1a815
leaq 0x1cdf1(%rip), %rdi     # 0x375f4
jmp 0x1a815
leaq 0x184e5(%rip), %rdi     # 0x32cf1
jmp 0x1a815
leaq 0x184eb(%rip), %rdi     # 0x32d00
leaq 0x18478(%rip), %rsi     # 0x32c94
leaq 0x18ebf(%rip), %rcx     # 0x336e2
movl $0x5d5, %edx            # imm = 0x5D5
callq 0xa0b0
leaq 0x14b60(%rip), %rdi     # 0x2f394
leaq 0x18459(%rip), %rsi     # 0x32c94
leaq 0x18ea0(%rip), %rcx     # 0x336e2
movl $0x608, %edx            # imm = 0x608
callq 0xa0b0
// File: /workspace/github_c_makefile_star2_O1/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 0x1a8bd
movq %rsi, %rbx
testq %rsi, %rsi
je 0x1a8c6
movq (%rbx), %rdx
testq %rdx, %rdx
je 0x1a8cf
cmpl $0x2, 0x44(%rdx)
jne 0x1a8d8
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 0x155a6
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
callq 0x15fb3
movq %rbx, %rdi
movq %r12, %rsi
callq 0x181fc
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x16eb6(%rip), %rdi     # 0x3177a
jmp 0x1a8df
leaq 0x1cd27(%rip), %rdi     # 0x375f4
jmp 0x1a8df
leaq 0x1841b(%rip), %rdi     # 0x32cf1
jmp 0x1a8df
leaq 0x18421(%rip), %rdi     # 0x32d00
leaq 0x183ae(%rip), %rsi     # 0x32c94
leaq 0x18e35(%rip), %rcx     # 0x33722
movl $0x616, %edx            # imm = 0x616
callq 0xa0b0