// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/preprocessor/gen.c
// Function: gen_info
static void _gen_info(
	PPGeneratorContext *ctx,
	ParserASTNode *node
) {
	assert(ctx);
	assert(node);
	assert(node->type == PP_NODE_DIRECTIVE_INFO);
	assert(node->nchilds == 0);

	const char *content = node->token->content;
	int len = node->token->len;

	char cmd[] = "#info";
	ResizableString temp;
	rstr_init(&temp);
	int idx = sizeof(cmd);

	#define	_GET_CHAR(i) ((i) >= len ? -1 : content[(i)])

	while (isspace(_GET_CHAR(idx))) {
		idx++;
	}

	while (_GET_CHAR(idx) != -1) {
		rstr_append_with_char(&temp, _GET_CHAR(idx));
		idx++;
	}

	fprintf(stdout, "%s\n", RSTR_CSTR(&temp));

	rstr_free(&temp);

	#undef	_GET_CHAR
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x3eec9
jmp 0x3eee8
leaq 0xec91(%rip), %rdi      # 0x4db61
leaq 0x1001e(%rip), %rsi     # 0x4eef5
movl $0x311, %edx            # imm = 0x311
leaq 0x10a0e(%rip), %rcx     # 0x4f8f1
callq 0xa0b0
cmpq $0x0, -0x10(%rbp)
je 0x3eef1
jmp 0x3ef10
leaq 0xc18f(%rip), %rdi      # 0x4b087
leaq 0xfff6(%rip), %rsi      # 0x4eef5
movl $0x312, %edx            # imm = 0x312
leaq 0x109e6(%rip), %rcx     # 0x4f8f1
callq 0xa0b0
movq -0x10(%rbp), %rax
cmpl $0x20a, (%rax)          # imm = 0x20A
jne 0x3ef1e
jmp 0x3ef3d
leaq 0x10a02(%rip), %rdi     # 0x4f927
leaq 0xffc9(%rip), %rsi      # 0x4eef5
movl $0x313, %edx            # imm = 0x313
leaq 0x109b9(%rip), %rcx     # 0x4f8f1
callq 0xa0b0
movq -0x10(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jne 0x3ef49
jmp 0x3ef68
leaq 0x109fc(%rip), %rdi     # 0x4f94c
leaq 0xff9e(%rip), %rsi      # 0x4eef5
movl $0x314, %edx            # imm = 0x314
leaq 0x1098e(%rip), %rcx     # 0x4f8f1
callq 0xa0b0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x4(%rax), %eax
movl %eax, -0x1c(%rbp)
movl 0x109d3(%rip), %eax     # 0x4f95f
movl %eax, -0x22(%rbp)
movw 0x109cd(%rip), %ax      # 0x4f963
movw %ax, -0x1e(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xfca0
movl $0x6, -0x3c(%rbp)
callq 0xa1a0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jl 0x3efc8
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x4c(%rbp)
jmp 0x3efd7
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movl %eax, -0x4c(%rbp)
movq -0x48(%rbp), %rax
movl -0x4c(%rbp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x3effa
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x3efaa
jmp 0x3effc
movl -0x3c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jl 0x3f00e
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x50(%rbp)
jmp 0x3f01d
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl $-0x1, %eax
je 0x3f060
movl -0x3c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jl 0x3f037
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x54(%rbp)
jmp 0x3f046
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
leaq -0x38(%rbp), %rdi
movsbl %al, %esi
callq 0xfeb0
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x3effc
movq 0x18f71(%rip), %rax     # 0x57fd8
movq (%rax), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x3f082
leaq 0x880b(%rip), %rax      # 0x47887
movq %rax, -0x68(%rbp)
jmp 0x3f08a
movq -0x30(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
movq -0x68(%rbp), %rdx
leaq 0x74a8(%rip), %rsi      # 0x46541
movb $0x0, %al
callq 0xa100
leaq -0x38(%rbp), %rdi
callq 0x10320
addq $0x70, %rsp
popq %rbp
retq
nop