// File: lhydave[P]SysYCompilerLab/front/node.cpp
// Function: sysY_AST::gen_vardecl[abi:cxx11](sysY_AST::var_entry const&, bool)
static string gen_vardecl(const var_entry &var, bool indent)
{
	string prefix = indent ? "\t" : "";
	if (var.is_param) // parameters
		return "";
	if (!var.is_array) // variable
		return prefix + "var " + var.eeyore_name + "\n";
	else // array
	{
		auto size = std::accumulate(
			var.dim.begin(), var.dim.end(), int_size, std::multiplies<int>());
		return prefix + "var " + to_string(size) + " " + var.eeyore_name + "\n";
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x178(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x170(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %dl
leaq 0x42dda(%rip), %rcx     # 0x4ec5f
leaq 0x42dd4(%rip), %rax     # 0x4ec60
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0x168(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0x5620
movq -0x168(%rbp), %rsi
movq -0x160(%rbp), %rdx
leaq -0x38(%rbp), %rdi
callq 0x8780
jmp 0xbec3
leaq -0x39(%rbp), %rdi
callq 0x5370
movq -0x10(%rbp), %rax
testb $0x1, 0x42(%rax)
je 0xbf4b
leaq -0x4d(%rbp), %rdi
movq %rdi, -0x180(%rbp)
callq 0x5620
movq -0x178(%rbp), %rdi
movq -0x180(%rbp), %rdx
leaq 0x42d65(%rip), %rsi     # 0x4ec60
callq 0x8780
jmp 0xbf02
leaq -0x4d(%rbp), %rdi
callq 0x5370
movl $0x1, -0x54(%rbp)
jmp 0xc1bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x5370
jmp 0xc1e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4d(%rbp), %rdi
callq 0x5370
jmp 0xc1d8
movq -0x10(%rbp), %rax
testb $0x1, 0x40(%rax)
jne 0xc007
leaq 0x41f47(%rip), %rdx     # 0x4dea7
leaq -0x98(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x140a0
jmp 0xbf72
movq -0x10(%rbp), %rdx
leaq -0x78(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x132d0
jmp 0xbf88
movq -0x178(%rbp), %rdi
leaq 0x41caa(%rip), %rdx     # 0x4dc40
leaq -0x78(%rbp), %rsi
callq 0x12d10
jmp 0xbfa1
leaq -0x78(%rbp), %rdi
callq 0x56c0
leaq -0x98(%rbp), %rdi
callq 0x56c0
movl $0x1, -0x54(%rbp)
jmp 0xc1bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xc1d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xbff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x56c0
leaq -0x98(%rbp), %rdi
callq 0x56c0
jmp 0xc1d8
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
callq 0x14570
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
addq $0x48, %rdi
callq 0x145a0
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movl $0x4, %edx
callq 0x14510
movl %eax, -0x184(%rbp)
jmp 0xc04f
movl -0x184(%rbp), %eax
movl %eax, -0x9c(%rbp)
leaq 0x41e45(%rip), %rdx     # 0x4dea7
leaq -0x138(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x140a0
jmp 0xc074
movl -0x9c(%rbp), %esi
leaq -0x158(%rbp), %rdi
callq 0x13410
jmp 0xc088
leaq -0x118(%rbp), %rdi
leaq -0x138(%rbp), %rsi
leaq -0x158(%rbp), %rdx
callq 0x13340
jmp 0xc0a4
leaq 0x41d1f(%rip), %rdx     # 0x4ddca
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x12d10
jmp 0xc0c0
movq -0x10(%rbp), %rdx
leaq -0xd8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x132d0
jmp 0xc0d9
movq -0x178(%rbp), %rdi
leaq 0x41b59(%rip), %rdx     # 0x4dc40
leaq -0xd8(%rbp), %rsi
callq 0x12d10
jmp 0xc0f5
leaq -0xd8(%rbp), %rdi
callq 0x56c0
leaq -0xf8(%rbp), %rdi
callq 0x56c0
leaq -0x118(%rbp), %rdi
callq 0x56c0
leaq -0x158(%rbp), %rdi
callq 0x56c0
leaq -0x138(%rbp), %rdi
callq 0x56c0
movl $0x1, -0x54(%rbp)
jmp 0xc1bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xc1b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xc1a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xc199
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xc18d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x56c0
leaq -0xf8(%rbp), %rdi
callq 0x56c0
leaq -0x118(%rbp), %rdi
callq 0x56c0
leaq -0x158(%rbp), %rdi
callq 0x56c0
leaq -0x138(%rbp), %rdi
callq 0x56c0
jmp 0xc1d8
leaq -0x38(%rbp), %rdi
callq 0x56c0
movq -0x170(%rbp), %rax
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0x56c0
movq -0x48(%rbp), %rdi
callq 0x5610
nopw (%rax,%rax)