// File: Blaze2305[P]Compiler-Design-2021-Assignment/src/SymTab/SymTab.cpp
// Function: SymbolTable::showSymbolTable()
void SymbolTable::showSymbolTable(){
	std::string line = std::string(70,'-');
	std::ostringstream out ;
	out<<line<<"\n";
	out<<std::setw(40)<<"SYMBOL TABLE\n\n";
	// out<<std::setw(15)<<"Symbol Name"<<std::setw(15)<<"Type"<<std::setw(15)<<"Value"<<std::setw(20)<<"Line Number\n";
	out<<std::setw(15)<<"Symbol Name"<<std::setw(15)<<"Type"<<std::setw(20)<<"Line Number\n";
	out<<line<<"\n";
	for(auto const& [key,value] : SymbolTableMap){
		// out<<std::setw(15)<<value.symbolName<<std::setw(15)<<value.type<<std::setw(15)<<value.attribute<<std::setw(20)<<value.lineNumber<<"\n";
		out<<std::setw(15)<<value.symbolName<<std::setw(15)<<value.type<<std::setw(20)<<value.lineNumber<<"\n";
	}
	out<<line<<"\n";
	std::cout<<out.str()<<std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2f0, %rsp            # imm = 0x2F0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x238(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x3510
movq -0x230(%rbp), %rcx
leaq -0x28(%rbp), %rdi
movl $0x46, %esi
movl $0x2d, %edx
callq 0x123b0
jmp 0x131a6
leaq -0x29(%rbp), %rdi
callq 0x3300
leaq -0x1b8(%rbp), %rdi
callq 0x33e0
jmp 0x131bd
leaq -0x1b8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x3260
movq %rax, -0x240(%rbp)
jmp 0x131d6
movq -0x240(%rbp), %rdi
leaq 0x6247(%rip), %rsi      # 0x1942b
callq 0x3290
jmp 0x131eb
movl $0x28, %edi
callq 0x13950
movl %eax, -0x244(%rbp)
jmp 0x131fd
movl -0x244(%rbp), %eax
movl %eax, -0x1bc(%rbp)
movl -0x1bc(%rbp), %esi
leaq -0x1b8(%rbp), %rdi
callq 0x3330
movq %rax, -0x250(%rbp)
jmp 0x13224
movq -0x250(%rbp), %rdi
leaq 0x61ec(%rip), %rsi      # 0x1941e
callq 0x3290
jmp 0x13239
movl $0xf, %edi
callq 0x13950
movl %eax, -0x254(%rbp)
jmp 0x1324b
movl -0x254(%rbp), %eax
movl %eax, -0x1c0(%rbp)
movl -0x1c0(%rbp), %esi
leaq -0x1b8(%rbp), %rdi
callq 0x3330
movq %rax, -0x260(%rbp)
jmp 0x13272
movq -0x260(%rbp), %rdi
leaq 0x61ad(%rip), %rsi      # 0x1942d
callq 0x3290
movq %rax, -0x268(%rbp)
jmp 0x1328e
movl $0xf, %edi
callq 0x13950
movl %eax, -0x26c(%rbp)
jmp 0x132a0
movq -0x268(%rbp), %rdi
movl -0x26c(%rbp), %eax
movl %eax, -0x1c4(%rbp)
movl -0x1c4(%rbp), %esi
callq 0x3330
movq %rax, -0x278(%rbp)
jmp 0x132c7
movq -0x278(%rbp), %rdi
leaq 0x5ff4(%rip), %rsi      # 0x192c9
callq 0x3290
movq %rax, -0x280(%rbp)
jmp 0x132e3
movl $0x14, %edi
callq 0x13950
movl %eax, -0x284(%rbp)
jmp 0x132f5
movq -0x280(%rbp), %rdi
movl -0x284(%rbp), %eax
movl %eax, -0x1c8(%rbp)
movl -0x1c8(%rbp), %esi
callq 0x3330
movq %rax, -0x290(%rbp)
jmp 0x1331c
movq -0x290(%rbp), %rdi
leaq 0x610f(%rip), %rsi      # 0x19439
callq 0x3290
jmp 0x13331
leaq -0x1b8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x3260
movq %rax, -0x298(%rbp)
jmp 0x1334a
movq -0x298(%rbp), %rdi
leaq 0x60d3(%rip), %rsi      # 0x1942b
callq 0x3290
jmp 0x1335f
movq -0x238(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x1d0(%rbp), %rdi
callq 0x13970
movq %rax, -0x1d8(%rbp)
movq -0x1d0(%rbp), %rdi
callq 0x13920
movq %rax, -0x1e0(%rbp)
leaq -0x1d8(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x138c0
testb $0x1, %al
jne 0x133af
jmp 0x13552
leaq -0x1d8(%rbp), %rdi
callq 0x139a0
movq %rax, -0x1e8(%rbp)
movq -0x1e8(%rbp), %rdi
callq 0x139c0
movq %rax, -0x1f0(%rbp)
movq -0x1e8(%rbp), %rdi
callq 0x139e0
movq %rax, -0x1f8(%rbp)
movl $0xf, %edi
callq 0x13950
movl %eax, -0x29c(%rbp)
jmp 0x133fa
movl -0x29c(%rbp), %eax
movl %eax, -0x1fc(%rbp)
movl -0x1fc(%rbp), %esi
leaq -0x1b8(%rbp), %rdi
callq 0x3330
movq %rax, -0x2a8(%rbp)
jmp 0x13421
movq -0x2a8(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
callq 0x3260
movq %rax, -0x2b0(%rbp)
jmp 0x1343d
movl $0xf, %edi
callq 0x13950
movl %eax, -0x2b4(%rbp)
jmp 0x1344f
movq -0x2b0(%rbp), %rdi
movl -0x2b4(%rbp), %eax
movl %eax, -0x200(%rbp)
movl -0x200(%rbp), %esi
callq 0x3330
movq %rax, -0x2c0(%rbp)
jmp 0x13476
movq -0x2c0(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
addq $0x20, %rsi
callq 0x3260
movq %rax, -0x2c8(%rbp)
jmp 0x13496
movl $0x14, %edi
callq 0x13950
movl %eax, -0x2cc(%rbp)
jmp 0x134a8
movq -0x2c8(%rbp), %rdi
movl -0x2cc(%rbp), %eax
movl %eax, -0x204(%rbp)
movl -0x204(%rbp), %esi
callq 0x3330
movq %rax, -0x2d8(%rbp)
jmp 0x134cf
movq -0x2d8(%rbp), %rdi
movq -0x1f8(%rbp), %rax
movl 0x60(%rax), %esi
callq 0x34e0
movq %rax, -0x2e0(%rbp)
jmp 0x134ee
movq -0x2e0(%rbp), %rdi
leaq 0x5f2f(%rip), %rsi      # 0x1942b
callq 0x3290
jmp 0x13503
jmp 0x13505
leaq -0x1d8(%rbp), %rdi
callq 0x13a00
jmp 0x13393
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x3300
jmp 0x1361d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x13614
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x13608
leaq -0x1b8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x3260
movq %rax, -0x2e8(%rbp)
jmp 0x1356b
movq -0x2e8(%rbp), %rdi
leaq 0x5eb2(%rip), %rsi      # 0x1942b
callq 0x3290
jmp 0x13580
leaq -0x228(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x32c0
jmp 0x13595
movq 0xea2c(%rip), %rdi      # 0x21fc8
leaq -0x228(%rbp), %rsi
callq 0x3260
movq %rax, -0x2f0(%rbp)
jmp 0x135b1
movq -0x2f0(%rbp), %rdi
movq 0xe9e1(%rip), %rsi      # 0x21fa0
callq 0x32e0
jmp 0x135c6
leaq -0x228(%rbp), %rdi
callq 0x3558
leaq -0x1b8(%rbp), %rdi
callq 0x30c0
leaq -0x28(%rbp), %rdi
callq 0x3558
addq $0x2f0, %rsp            # imm = 0x2F0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x3558
leaq -0x1b8(%rbp), %rdi
callq 0x30c0
leaq -0x28(%rbp), %rdi
callq 0x3558
movq -0x38(%rbp), %rdi
callq 0x3500
nopw %cs:(%rax,%rax)