// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/semantics.c
// Function: print_func_params
static void _print_func_params(ParserASTNode *node, FILE *file) {
	assert(node);
	assert(file);

	if (node->nchilds > 0) {
		ParserASTNode *node_param = node->childs[0];
		assert(node_param->type == FE_NODE_FUNC_PARAMS_ITEM);

		#define _NODE_PARAM	\
			switch (node_param->type) {	\
				case FE_NODE_FUNC_PARAMS_ELLIPSIS_ITEM: {	\
					fputs("...", file);	\
					break;	\
				}	\
				case FE_NODE_FUNC_PARAMS_ITEM: {	\
					assert(node_param->nchilds == 2);	\
					ParserASTNode *node_id = node_param->childs[0];	\
					assert(node_id->type == FE_NODE_IDENTIFIER);	\
					ParserASTNode *node_t = node_param->childs[1];	\
						\
					cmn_print_token(node_id->token, file);	\
						\
					fputs(":", file);	\
						\
					_print_type_node(node_t, file);	\
					break;	\
				}	\
				default: {	\
					assert(0);	\
					break;	\
				}	\
			}

		_NODE_PARAM

		for (int i = 1; i < node->nchilds; i++) {
			node_param = node->childs[i];
			assert(node_param->type == FE_NODE_FUNC_PARAMS_ITEM
					|| node_param->type == FE_NODE_FUNC_PARAMS_ELLIPSIS_ITEM);

			fputs(", ", file);

			_NODE_PARAM
		}

		#undef	_NODE_PARAM
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x5ffe9
jmp 0x60008
leaq 0x15fe3(%rip), %rdi     # 0x75fd3
leaq 0x1e253(%rip), %rsi     # 0x7e24a
movl $0x15ff, %edx           # imm = 0x15FF
leaq 0x2150f(%rip), %rcx     # 0x81512
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x60011
jmp 0x60030
leaq 0x11a4c(%rip), %rdi     # 0x71a64
leaq 0x1e22b(%rip), %rsi     # 0x7e24a
movl $0x1600, %edx           # imm = 0x1600
leaq 0x214e7(%rip), %rcx     # 0x81512
callq 0x30a0
movq -0x8(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jle 0x602fa
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0xa02, (%rax)          # imm = 0xA02
jne 0x6005b
jmp 0x6007a
leaq 0x148cd(%rip), %rdi     # 0x7492f
leaq 0x1e1e1(%rip), %rsi     # 0x7e24a
movl $0x1604, %edx           # imm = 0x1604
leaq 0x2149d(%rip), %rcx     # 0x81512
callq 0x30a0
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
subl $0xa02, %eax            # imm = 0xA02
je 0x600b1
jmp 0x6008c
movl -0x44(%rbp), %eax
subl $0xa03, %eax            # imm = 0xA03
jne 0x60158
jmp 0x6009c
movq -0x10(%rbp), %rsi
leaq 0x148b5(%rip), %rdi     # 0x7495c
callq 0x30b0
jmp 0x60177
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x600bd
jmp 0x600dc
leaq 0x1489c(%rip), %rdi     # 0x74960
leaq 0x1e17f(%rip), %rsi     # 0x7e24a
movl $0x161f, %edx           # imm = 0x161F
leaq 0x2143b(%rip), %rcx     # 0x81512
callq 0x30a0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x200, (%rax)          # imm = 0x200
jne 0x600f9
jmp 0x60118
leaq 0x1468c(%rip), %rdi     # 0x7478c
leaq 0x1e143(%rip), %rsi     # 0x7e24a
movl $0x161f, %edx           # imm = 0x161F
leaq 0x213ff(%rip), %rcx     # 0x81512
callq 0x30a0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x3e80
movq -0x10(%rbp), %rsi
leaq 0x1aa8c(%rip), %rdi     # 0x7abd0
callq 0x30b0
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5f8a0
jmp 0x60177
leaq 0x122fc(%rip), %rdi     # 0x7245b
leaq 0x1e0e4(%rip), %rsi     # 0x7e24a
movl $0x161f, %edx           # imm = 0x161F
leaq 0x213a0(%rip), %rcx     # 0x81512
callq 0x30a0
movl $0x1, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x44(%rcx), %eax
jge 0x602f8
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpl $0xa02, (%rax)          # imm = 0xA02
je 0x601ba
movq -0x18(%rbp), %rax
cmpl $0xa03, (%rax)          # imm = 0xA03
jne 0x601bc
jmp 0x601db
leaq 0x147b6(%rip), %rdi     # 0x74979
leaq 0x1e080(%rip), %rsi     # 0x7e24a
movl $0x1624, %edx           # imm = 0x1624
leaq 0x2133c(%rip), %rcx     # 0x81512
callq 0x30a0
movq -0x10(%rbp), %rsi
leaq 0x14fe3(%rip), %rdi     # 0x751c9
callq 0x30b0
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x48(%rbp)
subl $0xa02, %eax            # imm = 0xA02
je 0x60222
jmp 0x601fd
movl -0x48(%rbp), %eax
subl $0xa03, %eax            # imm = 0xA03
jne 0x602c9
jmp 0x6020d
movq -0x10(%rbp), %rsi
leaq 0x14744(%rip), %rdi     # 0x7495c
callq 0x30b0
jmp 0x602e8
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x6022e
jmp 0x6024d
leaq 0x1472b(%rip), %rdi     # 0x74960
leaq 0x1e00e(%rip), %rsi     # 0x7e24a
movl $0x1628, %edx           # imm = 0x1628
leaq 0x212ca(%rip), %rcx     # 0x81512
callq 0x30a0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
cmpl $0x200, (%rax)          # imm = 0x200
jne 0x6026a
jmp 0x60289
leaq 0x1451b(%rip), %rdi     # 0x7478c
leaq 0x1dfd2(%rip), %rsi     # 0x7e24a
movl $0x1628, %edx           # imm = 0x1628
leaq 0x2128e(%rip), %rcx     # 0x81512
callq 0x30a0
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x3e80
movq -0x10(%rbp), %rsi
leaq 0x1a91b(%rip), %rdi     # 0x7abd0
callq 0x30b0
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5f8a0
jmp 0x602e8
leaq 0x1218b(%rip), %rdi     # 0x7245b
leaq 0x1df73(%rip), %rsi     # 0x7e24a
movl $0x1628, %edx           # imm = 0x1628
leaq 0x2122f(%rip), %rcx     # 0x81512
callq 0x30a0
jmp 0x602ea
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x6017e
jmp 0x602fa
addq $0x50, %rsp
popq %rbp
retq