// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen_c.c
// Function: ir_stat_va_copy
static void _ir_stat_va_copy(
	IRGeneratorCContext *ctx,
	int indentLevel,
	ParserASTNode *node
) {
	assert(ctx);
	assert(node);
	assert(node->type == FE_NODE_STAT_VA_COPY);
	assert(node->nchilds == 2);

	ParserASTNode *node_expr_target = node->childs[0];
	ParserASTNode *node_expr_source = node->childs[1];

	_OUT_INDENT(ctx, indentLevel);

	_OUT_CSTR(ctx, "va_copy(");

	ResizableString rstr_expr_target;
	rstr_init(&rstr_expr_target);
	_ir_expr_wrapper(ctx, &rstr_expr_target, node_expr_target);
	_OUT_STR(ctx, rstr_expr_target.buffer, rstr_expr_target.len);
	rstr_free(&rstr_expr_target);

	_OUT_CSTR(ctx, ", ");

	ResizableString rstr_expr_source;
	rstr_init(&rstr_expr_source);
	_ir_expr_wrapper(ctx, &rstr_expr_source, node_expr_source);
	_OUT_STR(ctx, rstr_expr_source.buffer, rstr_expr_source.len);
	rstr_free(&rstr_expr_source);

	_OUT_CSTR(ctx, ");\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x2794c
jmp 0x2796b
leaq 0x54c03(%rip), %rdi     # 0x7c556
leaq 0x4f48e(%rip), %rsi     # 0x76de8
movl $0x678, %edx            # imm = 0x678
leaq 0x504fc(%rip), %rcx     # 0x77e62
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x27974
jmp 0x27993
leaq 0x4e658(%rip), %rdi     # 0x75fd3
leaq 0x4f466(%rip), %rsi     # 0x76de8
movl $0x679, %edx            # imm = 0x679
leaq 0x504d4(%rip), %rcx     # 0x77e62
callq 0x30a0
movq -0x18(%rbp), %rax
cmpl $0xbd2, (%rax)          # imm = 0xBD2
jne 0x279a1
jmp 0x279c0
leaq 0x4f317(%rip), %rdi     # 0x76cbf
leaq 0x4f439(%rip), %rsi     # 0x76de8
movl $0x67a, %edx            # imm = 0x67A
leaq 0x504a7(%rip), %rcx     # 0x77e62
callq 0x30a0
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x279cc
jmp 0x279eb
leaq 0x56ca1(%rip), %rdi     # 0x7e674
leaq 0x4f40e(%rip), %rsi     # 0x76de8
movl $0x67b, %edx            # imm = 0x67B
leaq 0x5047c(%rip), %rcx     # 0x77e62
callq 0x30a0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x25d00
movl $0x0, -0x2c(%rbp)
movslq -0x2c(%rbp), %rax
cmpq $0x8, %rax
jae 0x27a4e
movslq -0x2c(%rbp), %rcx
leaq 0x50473(%rip), %rax     # 0x77ea5
movsbl (%rax,%rcx), %edi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x30d0
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x27a1d
leaq -0x40(%rbp), %rdi
callq 0x8c90
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0x40(%rbp), %rsi
callq 0x21d00
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jge 0x27a9b
movq -0x38(%rbp), %rax
movslq -0x44(%rbp), %rcx
movsbl (%rax,%rcx), %edi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x30d0
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x27a6f
leaq -0x40(%rbp), %rdi
callq 0x9310
movl $0x0, -0x48(%rbp)
movslq -0x48(%rbp), %rax
cmpq $0x2, %rax
jae 0x27adc
movslq -0x48(%rbp), %rcx
leaq 0x4d709(%rip), %rax     # 0x751c9
movsbl (%rax,%rcx), %edi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x30d0
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x27aab
leaq -0x58(%rbp), %rdi
callq 0x8c90
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq -0x58(%rbp), %rsi
callq 0x21d00
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x27b29
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movsbl (%rax,%rcx), %edi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x30d0
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x27afd
leaq -0x58(%rbp), %rdi
callq 0x9310
movl $0x0, -0x60(%rbp)
movslq -0x60(%rbp), %rax
cmpq $0x3, %rax
jae 0x27b6a
movslq -0x60(%rbp), %rcx
leaq 0x4fd80(%rip), %rax     # 0x778ce
movsbl (%rax,%rcx), %edi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x30d0
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x27b39
addq $0x60, %rsp
popq %rbp
retq