// File: /workspace/github_cpp_makefile_star2_O2/lhydave[P]SysYCompilerLab/front/symtab.cpp
// Function: sysY_AST::init_tables()
void init_tables()
{
	var_stack.clear();
	func_table.clear();
	var_stack.push_back(var_table_t());

	// register system functions
	reg_func("getint", INT);

	reg_func("getch", INT);

	reg_func("getarray", INT);
	auto temp = var_entry(true, false, true, vector<int>(1, 0));
	temp.sysy_name = "p0";
	func_table["getarray"].params.push_back(temp);

	reg_func("putint", VOID);
	temp = var_entry(false, false, true, vector<int>());
	func_table["putint"].params.push_back(temp);

	reg_func("putch", VOID);
	temp = var_entry(false, false, true, vector<int>());
	func_table["putch"].params.push_back(temp);

	reg_func("putarray", VOID);
	temp = var_entry(false, false, true, vector<int>());
	func_table["putarray"].params.push_back(temp);
	temp = var_entry(true, false, true, vector<int>(1, 0));
	func_table["putarray"].params.push_back(temp);

	reg_func("_sysy_starttime", VOID);
	temp = var_entry(false, false, true, vector<int>());
	func_table["_sysy_starttime"].params.push_back(temp);

	reg_func("_sysy_stoptime", VOID);
	temp = var_entry(false, false, true, vector<int>());
	func_table["_sysy_stoptime"].params.push_back(temp);
}

// Assembly:
pushq %rbx
subq $0x160, %rsp            # imm = 0x160
leaq 0x2072d(%rip), %rbx     # 0x2e370
movq %rbx, %rdi
callq 0xeaec
leaq 0x20736(%rip), %rdi     # 0x2e388
callq 0xecc6
leaq 0x118(%rsp), %rax
andq $0x0, -0x10(%rax)
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
leaq 0xe8(%rsp), %rsi
movq %rbx, %rdi
callq 0xf270
leaq 0xe8(%rsp), %rdi
callq 0xed28
leaq 0x111d4(%rip), %rdi     # 0x1ee7a
pushq $0x1
popq %rbx
movl %ebx, %esi
callq 0xe3ca
leaq 0x111ca(%rip), %rdi     # 0x1ee81
movl %ebx, %esi
callq 0xe3ca
leaq 0x111c2(%rip), %rdi     # 0x1ee87
movl %ebx, %esi
callq 0xe3ca
leaq 0x30(%rsp), %rdx
andl $0x0, (%rdx)
leaq 0x50(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0xc(%rsp), %rcx
callq 0xeaf4
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
leaq 0x11c21(%rip), %rsi     # 0x1f91c
leaq 0x70(%rsp), %rbx
leaq 0xb(%rsp), %rdx
movq %rbx, %rdi
callq 0x68d2
movq %rbx, (%rsp)
leaq 0xe8(%rsp), %rdi
pushq $0x1
popq %rcx
leaq 0x50(%rsp), %r8
leaq 0x10(%rsp), %r9
movl %ecx, %esi
xorl %edx, %edx
callq 0xdae8
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x50(%rsp), %rdi
callq 0xcbaa
leaq 0x108(%rsp), %rdi
leaq 0x11134(%rip), %rsi     # 0x1ee90
callq 0x5510
leaq 0x1111f(%rip), %rsi     # 0x1ee87
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x68d2
leaq 0x2060a(%rip), %rdi     # 0x2e388
leaq 0x70(%rsp), %rsi
callq 0xf51c
addq $0x20, %rax
leaq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0xeb4a
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0x110e6(%rip), %rdi     # 0x1ee93
xorl %esi, %esi
callq 0xe3ca
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x11b48(%rip), %rsi     # 0x1f91c
leaq 0x50(%rsp), %rbx
leaq 0xc(%rsp), %rdx
movq %rbx, %rdi
callq 0x68d2
movq %rbx, (%rsp)
leaq 0x70(%rsp), %rdi
pushq $0x1
popq %rcx
leaq 0x10(%rsp), %r8
leaq 0x30(%rsp), %r9
xorl %esi, %esi
xorl %edx, %edx
callq 0xdae8
leaq 0xe8(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0xeb76
movq %rbx, %rdi
callq 0xc72c
leaq 0x50(%rsp), %rdi
callq 0x5548
leaq 0x30(%rsp), %rdi
callq 0xcbaa
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x1104c(%rip), %rsi     # 0x1ee93
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x68d2
leaq 0x2052b(%rip), %rdi     # 0x2e388
leaq 0x70(%rsp), %rsi
callq 0xf51c
addq $0x20, %rax
leaq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0xeb4a
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0x1100e(%rip), %rdi     # 0x1ee9a
xorl %esi, %esi
callq 0xe3ca
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x11a69(%rip), %rsi     # 0x1f91c
leaq 0x50(%rsp), %rbx
leaq 0xc(%rsp), %rdx
movq %rbx, %rdi
callq 0x68d2
movq %rbx, (%rsp)
leaq 0x70(%rsp), %rdi
pushq $0x1
popq %rcx
leaq 0x10(%rsp), %r8
leaq 0x30(%rsp), %r9
xorl %esi, %esi
xorl %edx, %edx
callq 0xdae8
leaq 0xe8(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0xeb76
movq %rbx, %rdi
callq 0xc72c
leaq 0x50(%rsp), %rdi
callq 0x5548
leaq 0x30(%rsp), %rdi
callq 0xcbaa
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x10f74(%rip), %rsi     # 0x1ee9a
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x68d2
leaq 0x2044c(%rip), %rdi     # 0x2e388
leaq 0x70(%rsp), %rsi
callq 0xf51c
addq $0x20, %rax
leaq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0xeb4a
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0x10f35(%rip), %rdi     # 0x1eea0
xorl %esi, %esi
callq 0xe3ca
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x1198a(%rip), %rsi     # 0x1f91c
leaq 0x50(%rsp), %rbx
leaq 0xc(%rsp), %rdx
movq %rbx, %rdi
callq 0x68d2
movq %rbx, (%rsp)
leaq 0x70(%rsp), %rdi
pushq $0x1
popq %rcx
leaq 0x10(%rsp), %r8
leaq 0x30(%rsp), %r9
xorl %esi, %esi
xorl %edx, %edx
callq 0xdae8
leaq 0xe8(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0xeb76
movq %rbx, %rdi
callq 0xc72c
leaq 0x50(%rsp), %rdi
callq 0x5548
leaq 0x30(%rsp), %rdi
callq 0xcbaa
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x10e9b(%rip), %rsi     # 0x1eea0
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x68d2
leaq 0x2036d(%rip), %rdi     # 0x2e388
leaq 0x70(%rsp), %rsi
callq 0xf51c
addq $0x20, %rax
leaq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0xeb4a
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0xc(%rsp), %rdx
andl $0x0, (%rdx)
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0xb(%rsp), %rcx
callq 0xeaf4
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x118aa(%rip), %rsi     # 0x1f91c
leaq 0x50(%rsp), %rbx
leaq 0x4f(%rsp), %rdx
movq %rbx, %rdi
callq 0x68d2
movq %rbx, (%rsp)
leaq 0x70(%rsp), %rdi
pushq $0x1
popq %rcx
leaq 0x10(%rsp), %r8
leaq 0x30(%rsp), %r9
movl %ecx, %esi
xorl %edx, %edx
callq 0xdae8
leaq 0xe8(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0xeb76
movq %rbx, %rdi
callq 0xc72c
leaq 0x50(%rsp), %rdi
callq 0x5548
leaq 0x30(%rsp), %rdi
callq 0xcbaa
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x10dbb(%rip), %rsi     # 0x1eea0
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x68d2
leaq 0x2028d(%rip), %rdi     # 0x2e388
leaq 0x70(%rsp), %rsi
callq 0xf51c
addq $0x20, %rax
leaq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0xeb4a
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0x10d7f(%rip), %rdi     # 0x1eea9
xorl %esi, %esi
callq 0xe3ca
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x117cb(%rip), %rsi     # 0x1f91c
leaq 0x50(%rsp), %rbx
leaq 0xc(%rsp), %rdx
movq %rbx, %rdi
callq 0x68d2
movq %rbx, (%rsp)
leaq 0x70(%rsp), %rdi
pushq $0x1
popq %rcx
leaq 0x10(%rsp), %r8
leaq 0x30(%rsp), %r9
xorl %esi, %esi
xorl %edx, %edx
callq 0xdae8
leaq 0xe8(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0xeb76
movq %rbx, %rdi
callq 0xc72c
leaq 0x50(%rsp), %rdi
callq 0x5548
leaq 0x30(%rsp), %rdi
callq 0xcbaa
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x10ce5(%rip), %rsi     # 0x1eea9
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x68d2
leaq 0x201ae(%rip), %rdi     # 0x2e388
leaq 0x70(%rsp), %rsi
callq 0xf51c
addq $0x20, %rax
leaq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0xeb4a
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0x10cb0(%rip), %rdi     # 0x1eeb9
xorl %esi, %esi
callq 0xe3ca
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0x116ec(%rip), %rsi     # 0x1f91c
leaq 0x50(%rsp), %rbx
leaq 0xc(%rsp), %rdx
movq %rbx, %rdi
callq 0x68d2
movq %rbx, (%rsp)
leaq 0x70(%rsp), %rdi
pushq $0x1
popq %rcx
leaq 0x10(%rsp), %r8
leaq 0x30(%rsp), %r9
xorl %esi, %esi
xorl %edx, %edx
callq 0xdae8
leaq 0xe8(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0xeb76
movq %rbx, %rdi
callq 0xc72c
leaq 0x50(%rsp), %rdi
callq 0x5548
leaq 0x30(%rsp), %rdi
callq 0xcbaa
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x10c16(%rip), %rsi     # 0x1eeb9
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x68d2
leaq 0x200cf(%rip), %rdi     # 0x2e388
leaq 0x70(%rsp), %rsi
callq 0xf51c
addq $0x20, %rax
leaq 0xe8(%rsp), %rsi
movq %rax, %rdi
callq 0xeb4a
leaq 0x70(%rsp), %rdi
callq 0x5548
leaq 0xe8(%rsp), %rdi
callq 0xc72c
addq $0x160, %rsp            # imm = 0x160
popq %rbx
retq
jmp 0xe3b2
jmp 0xe32e
jmp 0xe33d
jmp 0xe3b2
jmp 0xe32e
jmp 0xe33d
jmp 0xe3b2
jmp 0xe32e
jmp 0xe33d
jmp 0xe3b2
jmp 0xe3b2
jmp 0xe32e
jmp 0xe33d
jmp 0xe3b2
jmp 0xe32e
jmp 0xe33d
jmp 0xe3b2
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x5548
jmp 0xe340
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xcbaa
leaq 0x10(%rsp), %rdi
callq 0xcbaa
jmp 0xe3b5
jmp 0xe3b2
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x5548
jmp 0xe36a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xcbaa
leaq 0x50(%rsp), %rdi
callq 0xcbaa
jmp 0xe3c2
movq %rax, %rbx
jmp 0xe3c2
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0xed28
jmp 0xe3c2
jmp 0xe3a3
jmp 0xe3a3
jmp 0xe3a3
jmp 0xe3a3
jmp 0xe3a3
jmp 0xe3a3
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x5548
jmp 0xe3b5
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0xc72c
movq %rbx, %rdi
callq 0x54c0