// File: /workspace/github_c_makefile_star2_O0/Mithreindeir[P]ewcc/src/debug.c
// Function: node_debug
void node_debug(struct node *n)
{
	static char depth_str[256] = { 0 };
	static int di = 0;
	if (di > 250) {
		di = 0;
	}
	if (!n)
		return;
	if (di)
		printf("%.*s`--", di - 1, depth_str);
	switch (n->type) {
	case node_ident:
		printf("ident: %s\n", IDENT(n));
		break;
	case node_cnum:
		printf("cnum: %ld\n", CNUM(n));
		break;
	case node_unop:
		printf("unop \'%s\'\n", operator_str[UNOP(n)->op]);
		depth_str[di++] = ' ';
		depth_str[di++] = ' ';
		node_debug(UNOP(n)->term);
		di -= 2;
		break;
	case node_binop:
		printf("binop \'%s\':\n", operator_str[BINOP(n)->op]);
		depth_str[di++] = ' ';
		depth_str[di++] = '|';
		node_debug(BINOP(n)->lhs);
		depth_str[di - 1] = ' ';
		node_debug(BINOP(n)->rhs);
		di -= 2;
		break;
	case node_unit:
		for (int i = 0; i < UNIT(n)->num_decls; i++)
			node_debug(UNIT(n)->edecls[i]);
		break;
	case node_block:
		printf("block:\n");
		depth_str[di++] = ' ';
		depth_str[di++] = '|';
		for (int i = 0; i < BLOCK(n)->num_stmt; i++) {
			if ((i + 1) >= BLOCK(n)->num_stmt)
				depth_str[di - 1] = ' ';
			node_debug(BLOCK(n)->stmt_list[i]);
		}
		di -= 2;
		break;
	case node_cond:
		printf("conditional:\n");
		depth_str[di++] = '|';
		depth_str[di++] = ' ';
		node_debug(COND(n)->condition);
		if (!COND(n)->otherwise)
			depth_str[di - 2] = ' ';
		node_debug(COND(n)->body);
		depth_str[di - 2] = ' ';
		if (COND(n)->otherwise)
			node_debug(COND(n)->otherwise);
		di -= 2;;
		break;
	case node_loop:
		printf("loop:\n");
		depth_str[di++] = ' ';
		depth_str[di++] = '|';
		node_debug(LOOP(n)->init);
		node_debug(LOOP(n)->condition);
		if (!LOOP(n)->body)
			depth_str[di - 1] = ' ';
		node_debug(LOOP(n)->iter);
		depth_str[di - 1] = ' ';
		node_debug(LOOP(n)->body);
		di -= 2;
		break;
	case node_func:
		printf("func %s: ", FUNC(n)->ident);
		print_type(FUNC(n)->ftype);
		printf("\n");
		depth_str[di++] = ' ';
		depth_str[di++] = ' ';
		node_debug(FUNC(n)->body);
		di -= 2;
		break;
	case node_call:
		printf("call\n");
		depth_str[di++] = ' ';
		depth_str[di++] = '|';
		node_debug(CALL(n)->func);
		for (int i = 0; i < CALL(n)->argc;i++) {
			if ((i + 1) >= CALL(n)->argc)
				depth_str[di - 1] = ' ';
			node_debug(CALL(n)->argv[i]);
		}
		depth_str[di-1] = ' ';
		di -= 2;

		break;
	case node_decl:
		printf("decl:");
		print_type(DECL(n)->type);
		printf(" %s\n", DECL(n)->ident);
		depth_str[di++] = ' ';
		depth_str[di++] = ' ';
		if (DECL(n)->initializer) {
			node_debug(DECL(n)->initializer);
		}
		di -= 2;
		break;
	case node_empty:
		printf("empty\n");
		break;
	case node_break:
		printf("break\n");
		break;
	case node_continue:
		printf("continue\n");
		break;
	case node_return:
		printf("return\n");
		depth_str[di++] = ' ';
		depth_str[di++] = ' ';
		node_debug(RET(n));
		di -= 2;
		break;
	case node_cast:
		printf("cast: ");
		print_type(TYPE(n));
		printf("\n");
		depth_str[di++] = ' ';
		depth_str[di++] = ' ';
		node_debug(n->child);
		di -= 2;
		break;
	default:
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
cmpl $0xfa, 0xdcfa(%rip)     # 0x10700
jle 0x2a12
movl $0x0, 0xdcee(%rip)      # 0x10700
cmpq $0x0, -0x8(%rbp)
jne 0x2a1e
jmp 0x3202
cmpl $0x0, 0xdcdb(%rip)      # 0x10700
je 0x2a45
movl 0xdcd3(%rip), %esi      # 0x10700
subl $0x1, %esi
leaq 0x978a(%rip), %rdi      # 0xc1c1
leaq 0xdbc2(%rip), %rdx      # 0x10600
movb $0x0, %al
callq 0x2060
movq -0x8(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x20(%rbp)
subq $0xf, %rax
ja 0x3200
movq -0x20(%rbp), %rax
leaq 0x95a0(%rip), %rcx      # 0xc004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0x974a(%rip), %rdi      # 0xc1c9
movb $0x0, %al
callq 0x2060
jmp 0x3202
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0x9737(%rip), %rdi      # 0xc1d4
movb $0x0, %al
callq 0x2060
jmp 0x3202
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, %ecx
leaq 0xd9e3(%rip), %rax      # 0x104a0
movq (%rax,%rcx,8), %rsi
leaq 0x9717(%rip), %rdi      # 0xc1df
movb $0x0, %al
callq 0x2060
movl 0xdc2b(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xdc20(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xdb16(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xdc0c(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xdc01(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xdaf7(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x29f0
movl 0xdbdd(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xdbd4(%rip)      # 0x10700
jmp 0x3202
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, %ecx
leaq 0xd95b(%rip), %rax      # 0x104a0
movq (%rax,%rcx,8), %rsi
leaq 0x969a(%rip), %rdi      # 0xc1ea
movb $0x0, %al
callq 0x2060
movl 0xdba3(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xdb98(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xda8e(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xdb84(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xdb79(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xda6f(%rip), %rax      # 0x10600
movb $0x7c, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x29f0
movl 0xdb55(%rip), %eax      # 0x10700
subl $0x1, %eax
movslq %eax, %rcx
leaq 0xda48(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x29f0
movl 0xdb2d(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xdb24(%rip)      # 0x10700
jmp 0x3202
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
cmpl 0x8(%rcx), %eax
jge 0x2c1b
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x29f0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x2be8
jmp 0x3202
leaq 0x95d0(%rip), %rdi      # 0xc1f7
movb $0x0, %al
callq 0x2060
movl 0xdacc(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xdac1(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd9b7(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xdaad(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xdaa2(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd998(%rip), %rax      # 0x10600
movb $0x7c, (%rax,%rcx)
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
cmpl 0x8(%rcx), %eax
jge 0x2cd0
movl -0x10(%rbp), %eax
addl $0x1, %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
cmpl 0x8(%rcx), %eax
jl 0x2cad
movl 0xda64(%rip), %eax      # 0x10700
subl $0x1, %eax
movslq %eax, %rcx
leaq 0xd957(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x29f0
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x2c73
movl 0xda2a(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xda21(%rip)      # 0x10700
jmp 0x3202
leaq 0x9514(%rip), %rdi      # 0xc1ff
movb $0x0, %al
callq 0x2060
movl 0xda08(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd9fd(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd8f3(%rip), %rax      # 0x10600
movb $0x7c, (%rax,%rcx)
movl 0xd9e9(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd9de(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd8d4(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x29f0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2d66
movl 0xd9ab(%rip), %eax      # 0x10700
subl $0x2, %eax
movslq %eax, %rcx
leaq 0xd89e(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x29f0
movl 0xd983(%rip), %eax      # 0x10700
subl $0x2, %eax
movslq %eax, %rcx
leaq 0xd876(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x2dae
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x29f0
movl 0xd94c(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xd943(%rip)      # 0x10700
jmp 0x3202
leaq 0x9444(%rip), %rdi      # 0xc20d
movb $0x0, %al
callq 0x2060
movl 0xd92a(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd91f(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd815(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xd90b(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd900(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd7f6(%rip), %rax      # 0x10600
movb $0x7c, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x29f0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x29f0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x18(%rax)
jne 0x2e55
movl 0xd8bc(%rip), %eax      # 0x10700
subl $0x1, %eax
movslq %eax, %rcx
leaq 0xd7af(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x29f0
movl 0xd894(%rip), %eax      # 0x10700
subl $0x1, %eax
movslq %eax, %rcx
leaq 0xd787(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x29f0
movl 0xd86c(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xd863(%rip)      # 0x10700
jmp 0x3202
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0x9360(%rip), %rdi      # 0xc214
movb $0x0, %al
callq 0x2060
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0xb460
leaq 0x951c(%rip), %rdi      # 0xc3ef
movb $0x0, %al
callq 0x2060
movl 0xd820(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd815(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd70b(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xd801(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd7f6(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd6ec(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x29f0
movl 0xd7d1(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xd7c8(%rip)      # 0x10700
jmp 0x3202
leaq 0x92da(%rip), %rdi      # 0xc21e
movb $0x0, %al
callq 0x2060
movl 0xd7af(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd7a4(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd69a(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xd790(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd785(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd67b(%rip), %rax      # 0x10600
movb $0x7c, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x29f0
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
cmpl (%rcx), %eax
jge 0x2ffd
movl -0x14(%rbp), %eax
addl $0x1, %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
cmpl (%rcx), %eax
jl 0x2fd9
movl 0xd738(%rip), %eax      # 0x10700
subl $0x1, %eax
movslq %eax, %rcx
leaq 0xd62b(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x29f0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x2fa1
movl 0xd6fd(%rip), %eax      # 0x10700
subl $0x1, %eax
movslq %eax, %rcx
leaq 0xd5f0(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xd6e6(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xd6dd(%rip)      # 0x10700
jmp 0x3202
leaq 0x91f5(%rip), %rdi      # 0xc224
movb $0x0, %al
callq 0x2060
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0xb460
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0x9176(%rip), %rdi      # 0xc1cf
movb $0x0, %al
callq 0x2060
movl 0xd69a(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd68f(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd585(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xd67b(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd670(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd566(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x30be
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x29f0
movl 0xd63c(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xd633(%rip)      # 0x10700
jmp 0x3202
leaq 0x9151(%rip), %rdi      # 0xc22a
movb $0x0, %al
callq 0x2060
jmp 0x3202
leaq 0x9145(%rip), %rdi      # 0xc231
movb $0x0, %al
callq 0x2060
jmp 0x3202
leaq 0x9139(%rip), %rdi      # 0xc238
movb $0x0, %al
callq 0x2060
jmp 0x3202
leaq 0x9130(%rip), %rdi      # 0xc242
movb $0x0, %al
callq 0x2060
movl 0xd5e1(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd5d6(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd4cc(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xd5c2(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd5b7(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd4ad(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x29f0
movl 0xd596(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xd58d(%rip)      # 0x10700
jmp 0x3202
leaq 0x90cb(%rip), %rdi      # 0xc24a
movb $0x0, %al
callq 0x2060
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0xb460
leaq 0x9252(%rip), %rdi      # 0xc3ef
movb $0x0, %al
callq 0x2060
movl 0xd556(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd54b(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd441(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movl 0xd537(%rip), %eax      # 0x10700
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xd52c(%rip)      # 0x10700
movslq %eax, %rcx
leaq 0xd422(%rip), %rax      # 0x10600
movb $0x20, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x29f0
movl 0xd50b(%rip), %eax      # 0x10700
subl $0x2, %eax
movl %eax, 0xd502(%rip)      # 0x10700
jmp 0x3202
jmp 0x3202
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)