// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/preprocessor/gen.c
// Function: gen_block_item
static void _gen_block_item(
	PPGeneratorContext *ctx,
	ParserASTNode *node
) {
	assert(ctx);
	assert(node);

	ResizableString *rstr_file = rstr_new();
	rstr_appendf(rstr_file, "\"%s\"", node->file);
	pp_gen_define(
		ctx,
		rstr_new_with_cstr("__FILE__"),
		rstr_file
	);

	ResizableString *rstr_line = rstr_new();
	rstr_appendf(rstr_line, "%d", node->line);
	pp_gen_define(
		ctx,
		rstr_new_with_cstr("__LINE__"),
		rstr_line
	);

	switch (node->type) {
		case PP_NODE_SPACE: {
			_gen_space(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_INCLUDE: {
			_gen_include(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_DEFINE: {
			_gen_define(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_UNDEF: {
			_gen_undef(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_IF: {
			_gen_if(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_IFDEF: {
			_gen_ifdef(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_IFNDEF: {
			_gen_ifndef(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_INFO: {
			_gen_info(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_WARN: {
			_gen_warn(ctx, node);
			break;
		}
		case PP_NODE_DIRECTIVE_ERROR: {
			_gen_error(ctx, node);
			break;
		}
		case PP_NODE_CMD_LINE: {
			_gen_cmd_line(ctx, node);
			break;
		}
		case PP_NODE_LINE: {
			_gen_line(ctx, node);
			break;
		}
		default: {
			assert(0);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x3d2a9
jmp 0x3d2c8
leaq 0x108b1(%rip), %rdi     # 0x4db61
leaq 0x11c3e(%rip), %rsi     # 0x4eef5
movl $0x392, %edx            # imm = 0x392
leaq 0x11eba(%rip), %rcx     # 0x4f17d
callq 0xa0b0
cmpq $0x0, -0x10(%rbp)
je 0x3d2d1
jmp 0x3d2f0
leaq 0xddaf(%rip), %rdi      # 0x4b087
leaq 0x11c16(%rip), %rsi     # 0x4eef5
movl $0x393, %edx            # imm = 0x393
leaq 0x11e92(%rip), %rcx     # 0x4f17d
callq 0xa0b0
callq 0x101f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0x11fa0(%rip), %rsi     # 0x4f2ac
xorl %eax, %eax
movb %al, -0x31(%rbp)
callq 0x104e0
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq 0x11e94(%rip), %rdi     # 0x4f1b9
callq 0x10220
movq -0x40(%rbp), %rdi
movq %rax, %rsi
movq -0x18(%rbp), %rdx
callq 0x3d020
callq 0x101f0
movq %rax, %rcx
movb -0x31(%rbp), %al
movq %rcx, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rcx
movl 0x20(%rcx), %edx
leaq 0x13230(%rip), %rsi     # 0x5058b
callq 0x104e0
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq 0x11e53(%rip), %rdi     # 0x4f1c2
callq 0x10220
movq -0x30(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x3d020
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x24(%rbp)
subl $0x200, %eax            # imm = 0x200
je 0x3d45c
jmp 0x3d39a
movl -0x24(%rbp), %eax
subl $0x201, %eax            # imm = 0x201
je 0x3d46e
jmp 0x3d3aa
movl -0x24(%rbp), %eax
subl $0x202, %eax            # imm = 0x202
je 0x3d480
jmp 0x3d3ba
movl -0x24(%rbp), %eax
subl $0x203, %eax            # imm = 0x203
je 0x3d492
jmp 0x3d3ca
movl -0x24(%rbp), %eax
subl $0x204, %eax            # imm = 0x204
je 0x3d4a4
jmp 0x3d3da
movl -0x24(%rbp), %eax
subl $0x205, %eax            # imm = 0x205
je 0x3d4b3
jmp 0x3d3ea
movl -0x24(%rbp), %eax
subl $0x20a, %eax            # imm = 0x20A
je 0x3d4c2
jmp 0x3d3fa
movl -0x24(%rbp), %eax
subl $0x20b, %eax            # imm = 0x20B
je 0x3d4d1
jmp 0x3d40a
movl -0x24(%rbp), %eax
subl $0x20c, %eax            # imm = 0x20C
je 0x3d4e0
jmp 0x3d41a
movl -0x24(%rbp), %eax
subl $0x301, %eax            # imm = 0x301
je 0x3d4ef
jmp 0x3d42a
movl -0x24(%rbp), %eax
subl $0x302, %eax            # imm = 0x302
je 0x3d4fe
jmp 0x3d43a
movl -0x24(%rbp), %eax
subl $0x400, %eax            # imm = 0x400
jne 0x3d50d
jmp 0x3d44a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3d540
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3d650
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3dd90
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3e530
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3e7b0
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3ebb0
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3ed30
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3eeb0
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3f0b0
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3f2b0
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3f4c0
jmp 0x3d52c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3f5d0
jmp 0x3d52c
leaq 0x9f51(%rip), %rdi      # 0x47465
leaq 0x119da(%rip), %rsi     # 0x4eef5
movl $0x3d7, %edx            # imm = 0x3D7
leaq 0x11c56(%rip), %rcx     # 0x4f17d
callq 0xa0b0
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)