// File: fondoger[P]C0-Compiler/src/main.cpp
// Function: initialize()
static void initialize() 
{
    /* Initialize reserve word map */
    key2sym["const"] = CONSTSY;     key2sym["int"] = INTSY;
    key2sym["char"] = CHARSY;       key2sym["void"] = VOIDSY;
    key2sym["if"] = IFSY;           key2sym["else"] = ELSESY;
    key2sym["do"] = DOSY;           key2sym["while"] = WHILESY;
    key2sym["switch"] = SWITCHSY;   key2sym["case"] = CASESY;   
    key2sym["default"] = DEFAULTSY; key2sym["scanf"] = SCANFSY; 
    key2sym["printf"] = PRINTFSY;   key2sym["return"] = RETURNSY; 
    key2sym["main"] = MAINSY;
    /* Initialize single character(special symbols) map */
    char2sym['+'] = PLUS;       char2sym['-'] = MINUS;
    char2sym['*'] = STAR;       char2sym['/'] = SLASH;
    char2sym['<'] = LSS;        char2sym['>'] = GTR;
    char2sym['('] = LPARENT;    char2sym[')'] = RPARENT;
    char2sym['['] = LBRACK;     char2sym[']'] = RBRACK;
    char2sym['{'] = LBRACE;     char2sym['}'] = RBRACE;
    char2sym['='] = BECOMES;    char2sym[','] = COMMA;
    char2sym[':'] = COLON;      char2sym[';'] = SEMICOLON;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
leaq -0x21(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x3570
movq -0x270(%rbp), %rdx
leaq 0x11174(%rip), %rsi     # 0x350ad
leaq -0x20(%rbp), %rdi
callq 0x3440
jmp 0x23f44
leaq 0x24165(%rip), %rdi     # 0x480b0
leaq -0x20(%rbp), %rsi
callq 0x25100
movq %rax, -0x278(%rbp)
jmp 0x23f5d
movq -0x278(%rbp), %rax
movl $0x1, (%rax)
leaq -0x20(%rbp), %rdi
callq 0x35e8
leaq -0x21(%rbp), %rdi
callq 0x3370
leaq -0x59(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x3570
movq -0x280(%rbp), %rdx
leaq 0x1180f(%rip), %rsi     # 0x357a9
leaq -0x58(%rbp), %rdi
callq 0x3440
jmp 0x23fa5
leaq 0x24104(%rip), %rdi     # 0x480b0
leaq -0x58(%rbp), %rsi
callq 0x25100
movq %rax, -0x288(%rbp)
jmp 0x23fbe
movq -0x288(%rbp), %rax
movl $0x2, (%rax)
leaq -0x58(%rbp), %rdi
callq 0x35e8
leaq -0x59(%rbp), %rdi
callq 0x3370
leaq -0x81(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x3570
movq -0x290(%rbp), %rdx
leaq 0x110b5(%rip), %rsi     # 0x350b3
leaq -0x80(%rbp), %rdi
callq 0x3440
jmp 0x24009
leaq 0x240a0(%rip), %rdi     # 0x480b0
leaq -0x80(%rbp), %rsi
callq 0x25100
movq %rax, -0x298(%rbp)
jmp 0x24022
movq -0x298(%rbp), %rax
movl $0x3, (%rax)
leaq -0x80(%rbp), %rdi
callq 0x35e8
leaq -0x81(%rbp), %rdi
callq 0x3370
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x3570
movq -0x2a0(%rbp), %rdx
leaq 0x11a30(%rip), %rsi     # 0x35a95
leaq -0xa8(%rbp), %rdi
callq 0x3440
jmp 0x24073
leaq 0x24036(%rip), %rdi     # 0x480b0
leaq -0xa8(%rbp), %rsi
callq 0x25100
movq %rax, -0x2a8(%rbp)
jmp 0x2408f
movq -0x2a8(%rbp), %rax
movl $0x4, (%rax)
leaq -0xa8(%rbp), %rdi
callq 0x35e8
leaq -0xa9(%rbp), %rdi
callq 0x3370
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x3570
movq -0x2b0(%rbp), %rdx
leaq 0x10fe3(%rip), %rsi     # 0x350b8
leaq -0xd0(%rbp), %rdi
callq 0x3440
jmp 0x240e3
leaq 0x23fc6(%rip), %rdi     # 0x480b0
leaq -0xd0(%rbp), %rsi
callq 0x25100
movq %rax, -0x2b8(%rbp)
jmp 0x240ff
movq -0x2b8(%rbp), %rax
movl $0x5, (%rax)
leaq -0xd0(%rbp), %rdi
callq 0x35e8
leaq -0xd1(%rbp), %rdi
callq 0x3370
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x3570
movq -0x2c0(%rbp), %rdx
leaq 0x10f76(%rip), %rsi     # 0x350bb
leaq -0xf8(%rbp), %rdi
callq 0x3440
jmp 0x24153
leaq 0x23f56(%rip), %rdi     # 0x480b0
leaq -0xf8(%rbp), %rsi
callq 0x25100
movq %rax, -0x2c8(%rbp)
jmp 0x2416f
movq -0x2c8(%rbp), %rax
movl $0x6, (%rax)
leaq -0xf8(%rbp), %rdi
callq 0x35e8
leaq -0xf9(%rbp), %rdi
callq 0x3370
leaq -0x121(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x3570
movq -0x2d0(%rbp), %rdx
leaq 0x10f0b(%rip), %rsi     # 0x350c0
leaq -0x120(%rbp), %rdi
callq 0x3440
jmp 0x241c3
leaq 0x23ee6(%rip), %rdi     # 0x480b0
leaq -0x120(%rbp), %rsi
callq 0x25100
movq %rax, -0x2d8(%rbp)
jmp 0x241df
movq -0x2d8(%rbp), %rax
movl $0x7, (%rax)
leaq -0x120(%rbp), %rdi
callq 0x35e8
leaq -0x121(%rbp), %rdi
callq 0x3370
leaq -0x149(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x3570
movq -0x2e0(%rbp), %rdx
leaq 0x10e9e(%rip), %rsi     # 0x350c3
leaq -0x148(%rbp), %rdi
callq 0x3440
jmp 0x24233
leaq 0x23e76(%rip), %rdi     # 0x480b0
leaq -0x148(%rbp), %rsi
callq 0x25100
movq %rax, -0x2e8(%rbp)
jmp 0x2424f
movq -0x2e8(%rbp), %rax
movl $0x8, (%rax)
leaq -0x148(%rbp), %rdi
callq 0x35e8
leaq -0x149(%rbp), %rdi
callq 0x3370
leaq -0x171(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x3570
movq -0x2f0(%rbp), %rdx
leaq 0x10e34(%rip), %rsi     # 0x350c9
leaq -0x170(%rbp), %rdi
callq 0x3440
jmp 0x242a3
leaq 0x23e06(%rip), %rdi     # 0x480b0
leaq -0x170(%rbp), %rsi
callq 0x25100
movq %rax, -0x2f8(%rbp)
jmp 0x242bf
movq -0x2f8(%rbp), %rax
movl $0x9, (%rax)
leaq -0x170(%rbp), %rdi
callq 0x35e8
leaq -0x171(%rbp), %rdi
callq 0x3370
leaq -0x199(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x3570
movq -0x300(%rbp), %rdx
leaq 0x10dcb(%rip), %rsi     # 0x350d0
leaq -0x198(%rbp), %rdi
callq 0x3440
jmp 0x24313
leaq 0x23d96(%rip), %rdi     # 0x480b0
leaq -0x198(%rbp), %rsi
callq 0x25100
movq %rax, -0x308(%rbp)
jmp 0x2432f
movq -0x308(%rbp), %rax
movl $0xa, (%rax)
leaq -0x198(%rbp), %rdi
callq 0x35e8
leaq -0x199(%rbp), %rdi
callq 0x3370
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x3570
movq -0x310(%rbp), %rdx
leaq 0x10d60(%rip), %rsi     # 0x350d5
leaq -0x1c0(%rbp), %rdi
callq 0x3440
jmp 0x24383
leaq 0x23d26(%rip), %rdi     # 0x480b0
leaq -0x1c0(%rbp), %rsi
callq 0x25100
movq %rax, -0x318(%rbp)
jmp 0x2439f
movq -0x318(%rbp), %rax
movl $0xb, (%rax)
leaq -0x1c0(%rbp), %rdi
callq 0x35e8
leaq -0x1c1(%rbp), %rdi
callq 0x3370
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x3570
movq -0x320(%rbp), %rdx
leaq 0x10cf8(%rip), %rsi     # 0x350dd
leaq -0x1e8(%rbp), %rdi
callq 0x3440
jmp 0x243f3
leaq 0x23cb6(%rip), %rdi     # 0x480b0
leaq -0x1e8(%rbp), %rsi
callq 0x25100
movq %rax, -0x328(%rbp)
jmp 0x2440f
movq -0x328(%rbp), %rax
movl $0xc, (%rax)
leaq -0x1e8(%rbp), %rdi
callq 0x35e8
leaq -0x1e9(%rbp), %rdi
callq 0x3370
leaq -0x211(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x3570
movq -0x330(%rbp), %rdx
leaq 0x10c8e(%rip), %rsi     # 0x350e3
leaq -0x210(%rbp), %rdi
callq 0x3440
jmp 0x24463
leaq 0x23c46(%rip), %rdi     # 0x480b0
leaq -0x210(%rbp), %rsi
callq 0x25100
movq %rax, -0x338(%rbp)
jmp 0x2447f
movq -0x338(%rbp), %rax
movl $0xd, (%rax)
leaq -0x210(%rbp), %rdi
callq 0x35e8
leaq -0x211(%rbp), %rdi
callq 0x3370
leaq -0x239(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x3570
movq -0x340(%rbp), %rdx
leaq 0x10c25(%rip), %rsi     # 0x350ea
leaq -0x238(%rbp), %rdi
callq 0x3440
jmp 0x244d3
leaq 0x23bd6(%rip), %rdi     # 0x480b0
leaq -0x238(%rbp), %rsi
callq 0x25100
movq %rax, -0x348(%rbp)
jmp 0x244ef
movq -0x348(%rbp), %rax
movl $0xe, (%rax)
leaq -0x238(%rbp), %rdi
callq 0x35e8
leaq -0x239(%rbp), %rdi
callq 0x3370
leaq -0x261(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x3570
movq -0x350(%rbp), %rdx
leaq 0x10bbc(%rip), %rsi     # 0x350f1
leaq -0x260(%rbp), %rdi
callq 0x3440
jmp 0x24543
leaq 0x23b66(%rip), %rdi     # 0x480b0
leaq -0x260(%rbp), %rsi
callq 0x25100
movq %rax, -0x358(%rbp)
jmp 0x2455f
movq -0x358(%rbp), %rax
movl $0xf, (%rax)
leaq -0x260(%rbp), %rdi
callq 0x35e8
leaq -0x261(%rbp), %rdi
callq 0x3370
movl $0x13, 0x239ce(%rip)    # 0x47f5c
movl $0x14, 0x239cc(%rip)    # 0x47f64
movl $0x15, 0x239b6(%rip)    # 0x47f58
movl $0x16, 0x239c0(%rip)    # 0x47f6c
movl $0x19, 0x239ea(%rip)    # 0x47fa0
movl $0x1b, 0x239e8(%rip)    # 0x47fa8
movl $0x1d, 0x23986(%rip)    # 0x47f50
movl $0x1e, 0x23980(%rip)    # 0x47f54
movl $0x1f, 0x23a3e(%rip)    # 0x4801c
movl $0x20, 0x23a3c(%rip)    # 0x48024
movl $0x21, 0x23aaa(%rip)    # 0x4809c
movl $0x22, 0x23aa8(%rip)    # 0x480a4
movl $0x23, 0x2399e(%rip)    # 0x47fa4
movl $0x24, 0x23950(%rip)    # 0x47f60
movl $0x25, 0x2397e(%rip)    # 0x47f98
movl $0x26, 0x23978(%rip)    # 0x47f9c
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24650
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x35e8
leaq -0x21(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24681
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x35e8
leaq -0x59(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x246b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x35e8
leaq -0x81(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x246e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x35e8
leaq -0xa9(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24720
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x35e8
leaq -0xd1(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24757
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x35e8
leaq -0xf9(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2478e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x35e8
leaq -0x121(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x247c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x35e8
leaq -0x149(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x247fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x35e8
leaq -0x171(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24833
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x35e8
leaq -0x199(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2486a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x35e8
leaq -0x1c1(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x248a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x35e8
leaq -0x1e9(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x248d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x35e8
leaq -0x211(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x2490c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x35e8
leaq -0x239(%rbp), %rdi
callq 0x3370
jmp 0x2494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x24940
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x35e8
leaq -0x261(%rbp), %rdi
callq 0x3370
movq -0x30(%rbp), %rdi
callq 0x3560
nopw %cs:(%rax,%rax)
nop