// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/backend/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 == BE_NODE_FUNC_PARAMS_ITEM);

		#define _NODE_PARAM	\
			switch (node_param->type) {	\
				case BE_NODE_FUNC_PARAMS_ELLIPSIS_ITEM: {	\
					fputs("...", file);	\
					break;	\
				}	\
				case BE_NODE_FUNC_PARAMS_ITEM: {	\
					assert(node_param->nchilds == 2);	\
					ParserASTNode *node_id = node_param->childs[0];	\
					assert(node_id->type == BE_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 == BE_NODE_FUNC_PARAMS_ITEM
					|| node_param->type == BE_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 0x60aa9
jmp 0x60ac8
leaq 0x15aac(%rip), %rdi     # 0x7655c
leaq 0x21dc9(%rip), %rsi     # 0x82880
movl $0x186c, %edx           # imm = 0x186C
leaq 0x24e67(%rip), %rcx     # 0x8592a
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x60ad1
jmp 0x60af0
leaq 0x11f8b(%rip), %rdi     # 0x72a63
leaq 0x21da1(%rip), %rsi     # 0x82880
movl $0x186d, %edx           # imm = 0x186D
leaq 0x24e3f(%rip), %rcx     # 0x8592a
callq 0x30a0
movq -0x8(%rbp), %rax
cmpl $0x0, 0x44(%rax)
jle 0x60dba
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 0x60b1b
jmp 0x60b3a
leaq 0x24e39(%rip), %rdi     # 0x8595b
leaq 0x21d57(%rip), %rsi     # 0x82880
movl $0x1871, %edx           # imm = 0x1871
leaq 0x24df5(%rip), %rcx     # 0x8592a
callq 0x30a0
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
subl $0xa02, %eax            # imm = 0xA02
je 0x60b71
jmp 0x60b4c
movl -0x44(%rbp), %eax
subl $0xa03, %eax            # imm = 0xA03
jne 0x60c18
jmp 0x60b5c
movq -0x10(%rbp), %rsi
leaq 0x1df95(%rip), %rdi     # 0x7eafc
callq 0x30b0
jmp 0x60c37
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x60b7d
jmp 0x60b9c
leaq 0x221d3(%rip), %rdi     # 0x82d57
leaq 0x21cf5(%rip), %rsi     # 0x82880
movl $0x188c, %edx           # imm = 0x188C
leaq 0x24d93(%rip), %rcx     # 0x8592a
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 0x60bb9
jmp 0x60bd8
leaq 0x163e2(%rip), %rdi     # 0x76fa2
leaq 0x21cb9(%rip), %rsi     # 0x82880
movl $0x188c, %edx           # imm = 0x188C
leaq 0x24d57(%rip), %rcx     # 0x8592a
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 0x1de08(%rip), %rdi     # 0x7ea0c
callq 0x30b0
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x60360
jmp 0x60c37
leaq 0x1283b(%rip), %rdi     # 0x7345a
leaq 0x21c5a(%rip), %rsi     # 0x82880
movl $0x188c, %edx           # imm = 0x188C
leaq 0x24cf8(%rip), %rcx     # 0x8592a
callq 0x30a0
movl $0x1, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x44(%rcx), %eax
jge 0x60db8
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 0x60c7a
movq -0x18(%rbp), %rax
cmpl $0xa03, (%rax)          # imm = 0xA03
jne 0x60c7c
jmp 0x60c9b
leaq 0x24d05(%rip), %rdi     # 0x85988
leaq 0x21bf6(%rip), %rsi     # 0x82880
movl $0x1891, %edx           # imm = 0x1891
leaq 0x24c94(%rip), %rcx     # 0x8592a
callq 0x30a0
movq -0x10(%rbp), %rsi
leaq 0x24d48(%rip), %rdi     # 0x859ee
callq 0x30b0
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x48(%rbp)
subl $0xa02, %eax            # imm = 0xA02
je 0x60ce2
jmp 0x60cbd
movl -0x48(%rbp), %eax
subl $0xa03, %eax            # imm = 0xA03
jne 0x60d89
jmp 0x60ccd
movq -0x10(%rbp), %rsi
leaq 0x1de24(%rip), %rdi     # 0x7eafc
callq 0x30b0
jmp 0x60da8
movq -0x18(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x60cee
jmp 0x60d0d
leaq 0x22062(%rip), %rdi     # 0x82d57
leaq 0x21b84(%rip), %rsi     # 0x82880
movl $0x1895, %edx           # imm = 0x1895
leaq 0x24c22(%rip), %rcx     # 0x8592a
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 0x60d2a
jmp 0x60d49
leaq 0x16271(%rip), %rdi     # 0x76fa2
leaq 0x21b48(%rip), %rsi     # 0x82880
movl $0x1895, %edx           # imm = 0x1895
leaq 0x24be6(%rip), %rcx     # 0x8592a
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 0x1dc97(%rip), %rdi     # 0x7ea0c
callq 0x30b0
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x60360
jmp 0x60da8
leaq 0x126ca(%rip), %rdi     # 0x7345a
leaq 0x21ae9(%rip), %rsi     # 0x82880
movl $0x1895, %edx           # imm = 0x1895
leaq 0x24b87(%rip), %rcx     # 0x8592a
callq 0x30a0
jmp 0x60daa
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x60c3e
jmp 0x60dba
addq $0x50, %rsp
popq %rbp
retq