// File: /workspace/github_cpp_makefile_star2_O2/rofl0r[P]ascc/cc_symboltable.cpp
// Function: symbolTable::reset()
void symbolTable::reset() {
	for (std::map<int, char*>::iterator it = nameGenCache.begin(); it != nameGenCache.end(); ++it) {
		free(it->second);
	}
	nameGenCache.clear();

	entries.clear();

    stringStructSym = 0;
    symbolTree.clear();

    add_ex("___dummy__sym0",999,0);
    normalIntSym = add_ex("int",SYM_VARTYPE,4);
    normalCharSym = add_ex("char",SYM_VARTYPE,1);
    normalLongSym = add_ex("long",SYM_VARTYPE,4);
    normalShortSym = add_ex("short",SYM_VARTYPE,2);
    normalStringSym = add_ex("string",SYM_VARTYPE,4);
    normalVoidSym = add_ex("void",SYM_VARTYPE,0);
    normalFloatSym = add_ex("float", SYM_VARTYPE, 4);
    add_ex("=",SYM_ASSIGN,0);
    add_ex(";",SYM_SEMICOLON,0);
    add_ex(",",SYM_COMMA,0);
    add_ex("(",SYM_OPENPARENTHESIS,0);
    add_ex(")",SYM_CLOSEPARENTHESIS,0);
    add_ex("{",SYM_OPENBRACE,0);
    add_ex("}",SYM_CLOSEBRACE,0);
    add_ex("+=",SYM_MASSIGN,SCMD_ADDREG);
    add_ex("-=",SYM_MASSIGN,SCMD_SUBREG);
    add_ex("*=",SYM_MASSIGN,SCMD_MULREG);
    add_ex("/=",SYM_MASSIGN,SCMD_DIVREG);
    add_ex("&=",SYM_MASSIGN,SCMD_BITAND);
    add_ex("|=",SYM_MASSIGN,SCMD_BITOR);
    add_ex("^=",SYM_MASSIGN,SCMD_XORREG);
    add_ex("<<=",SYM_MASSIGN,SCMD_SHIFTLEFT);
    add_ex(">>=",SYM_MASSIGN,SCMD_SHIFTRIGHT);
    add_ex("++",SYM_SASSIGN,SCMD_ADD);
    add_ex("--",SYM_SASSIGN,SCMD_SUB);
    // the second argument to the operators is their precedence: 1 is highest
    add_operator("!",1, SCMD_NOTREG);
    add_operator("*",2, SCMD_MULREG);
    add_operator("/",3, SCMD_DIVREG);
    add_operator("%",4, SCMD_MODREG);
    add_operator("+",5, SCMD_ADDREG);
    add_operator("-",5, SCMD_SUBREG);
    add_operator("<<",7, SCMD_SHIFTLEFT);
    add_operator(">>",8, SCMD_SHIFTRIGHT);
    add_operator("&",9, SCMD_BITAND);
    add_operator("|",10, SCMD_BITOR);
    add_operator("^",11, SCMD_XORREG);
    add_operator("==",12, SCMD_ISEQUAL);
    add_operator("!=",13, SCMD_NOTEQUAL);
    add_operator(">",14, SCMD_GREATER);
    add_operator("<",15, SCMD_LESSTHAN);
    add_operator(">=",16, SCMD_GTE);
    add_operator("<=",17, SCMD_LTE);
    add_operator("&&",18, SCMD_AND);
    add_operator("||",19, SCMD_OR);
    add_ex("new", SYM_NEW, 1);
    add_ex("[",SYM_OPENBRACKET,0);
    add_ex("]",SYM_CLOSEBRACKET,0);
    add_ex(".",SYM_DOT,0);
    add_ex("if",SYM_IF,0);
    add_ex("else",SYM_ELSE,0);
    add_ex("while",SYM_WHILE,0);
    add_ex("for",SYM_FOR,0);
    add_ex("break",SYM_BREAK,0);
    add_ex("continue",SYM_CONTINUE,0);
    add_ex("do",SYM_DO,0);
    add_ex("switch",SYM_SWITCH,0);
    add_ex("case",SYM_CASE,0);
    add_ex("default",SYM_DEFAULT,0);
    add_ex("...",SYM_VARARGS,0);
    add_ex("struct",SYM_STRUCT,0);
    add_ex("import",SYM_IMPORT,0);
    add_ex("_tryimport",SYM_IMPORT,0);
    add_ex("export",SYM_EXPORT,0);
    add_ex("return", SYM_RETURN, 0);
    add_ex("readonly",SYM_READONLY,0);
    add_ex("::", SYM_MEMBERACCESS, 0);
    add_ex(":", SYM_LABEL, 0);
    add_ex("attribute", SYM_PROPERTY, 0);
    add_ex("enum", SYM_ENUM, 0);
    add_ex("managed", SYM_MANAGED, 0);
    nullSym = add_ex("null", SYM_NULL, 0);
    add_ex("extends", SYM_EXTENDS, 0);
    add_ex("static", SYM_STATIC, 0);
    add_ex("protected", SYM_PROTECTED, 0);
    add_ex("writeprotected", SYM_WRITEPROTECTED, 0);
    add_ex("const", SYM_CONST, 0);
    add_ex("internalstring", SYM_STRINGSTRUCT, 0);
    add_ex("autoptr", SYM_AUTOPTR, 0);
    add_ex("noloopcheck", SYM_LOOPCHECKOFF, 0);
    add_ex("builtin", SYM_BUILTIN, 0);
    add_ex("?", SYM_QMARK, 0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x58(%rdi), %r14
leaq 0x48(%rdi), %r15
cmpq %r15, %r14
je 0xff11
movq 0x28(%r14), %rdi
callq 0x33a0
movq %r14, %rdi
callq 0x3250
movq %rax, %r14
jmp 0xfef6
leaq 0x40(%rbx), %rdi
callq 0x10ff2
leaq 0x28(%rbx), %rdi
callq 0x10c1c
andl $0x0, 0x20(%rbx)
leaq 0x70(%rbx), %rdi
callq 0xf54c
leaq 0xaa9e(%rip), %rsi      # 0x1a9d5
movq %rbx, %rdi
movl $0x3e7, %edx            # imm = 0x3E7
xorl %ecx, %ecx
callq 0x10628
leaq 0x959d(%rip), %rsi      # 0x194ea
pushq $0x2e
popq %r14
pushq $0x4
popq %rbp
movq %rbx, %rdi
movl %r14d, %edx
movl %ebp, %ecx
callq 0x10628
movl %eax, (%rbx)
leaq 0xb466(%rip), %rsi      # 0x1b3d0
pushq $0x1
popq %r13
movq %rbx, %rdi
movl %r14d, %edx
movl %r13d, %ecx
callq 0x10628
movl %eax, 0x4(%rbx)
leaq 0x9258(%rip), %rsi      # 0x191de
movq %rbx, %rdi
movl %r14d, %edx
movl %ebp, %ecx
callq 0x10628
movl %eax, 0x8(%rbx)
leaq 0x8f2a(%rip), %rsi      # 0x18ec7
pushq $0x2
popq %rcx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x10628
movl %eax, 0xc(%rbx)
leaq 0xb44e(%rip), %rsi      # 0x1b403
movq %rbx, %rdi
movl %r14d, %edx
movl %ebp, %ecx
callq 0x10628
movl %eax, 0x10(%rbx)
leaq 0xaa18(%rip), %rsi      # 0x1a9e4
movq %rbx, %rdi
movl %r14d, %edx
xorl %ecx, %ecx
callq 0x10628
movl %eax, 0x18(%rbx)
leaq 0xaa06(%rip), %rsi      # 0x1a9e9
movq %rbx, %rdi
movl %r14d, %edx
movl %ebp, %ecx
callq 0x10628
movl %eax, 0x14(%rbx)
leaq 0xaa2a(%rip), %rsi      # 0x1aa24
pushq $0x19
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa9e1(%rip), %rsi      # 0x1a9ef
pushq $0x28
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa9cf(%rip), %rsi      # 0x1a9f1
pushq $0x2a
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xb7fc(%rip), %rsi      # 0x1b832
pushq $0x5
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x935a(%rip), %rsi      # 0x193a4
pushq $0x6
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa995(%rip), %rsi      # 0x1a9f3
pushq $0x17
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa902(%rip), %rsi      # 0x1a974
pushq $0x18
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa96f(%rip), %rsi      # 0x1a9f5
pushq $0x1a
popq %r14
pushq $0xb
popq %rcx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x10628
leaq 0xa959(%rip), %rsi      # 0x1a9f8
pushq $0xc
popq %rcx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x10628
leaq 0xa947(%rip), %rsi      # 0x1a9fb
pushq $0x9
popq %rcx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x10628
leaq 0xa935(%rip), %rsi      # 0x1a9fe
pushq $0xa
popq %rbp
movq %rbx, %rdi
movl %r14d, %edx
movl %ebp, %ecx
callq 0x10628
leaq 0xa921(%rip), %rsi      # 0x1aa01
pushq $0xd
popq %rcx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x10628
leaq 0xa90f(%rip), %rsi      # 0x1aa04
pushq $0xe
popq %rcx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x10628
leaq 0xa8fd(%rip), %rsi      # 0x1aa07
pushq $0x29
popq %rcx
movq %rbx, %rdi
movl %r14d, %edx
callq 0x10628
leaq 0xa8eb(%rip), %rsi      # 0x1aa0a
pushq $0x2b
popq %r12
movq %rbx, %rdi
movl %r14d, %edx
movl %r12d, %ecx
callq 0x10628
leaq 0xa8d6(%rip), %rsi      # 0x1aa0e
pushq $0x2c
popq %r15
movq %rbx, %rdi
movl %r14d, %edx
movl %r15d, %ecx
callq 0x10628
leaq 0xa8c1(%rip), %rsi      # 0x1aa12
pushq $0x22
popq %r14
movq %rbx, %rdi
movl %r14d, %edx
movl %r13d, %ecx
callq 0x10628
leaq 0xa8ab(%rip), %rsi      # 0x1aa15
movq %rbx, %rdi
movl %r14d, %edx
pushq $0x2
popq %r14
movl %r14d, %ecx
callq 0x10628
leaq 0xb709(%rip), %rsi      # 0x1b88c
movq %rbx, %rdi
movl %r13d, %edx
pushq $0x2a
popq %rcx
callq 0x10822
leaq 0x8e5c(%rip), %rsi      # 0x18ff4
movq %rbx, %rdi
movl %r14d, %edx
pushq $0x9
popq %r14
movl %r14d, %ecx
callq 0x10822
leaq 0xb0f1(%rip), %rsi      # 0x1b2a2
pushq $0x3
popq %rdx
movq %rbx, %rdi
movl %ebp, %ecx
callq 0x10822
leaq 0xa853(%rip), %rsi      # 0x1aa18
movq %rbx, %rdi
pushq $0x4
popq %rdx
pushq $0x28
popq %rcx
callq 0x10822
leaq 0xa839(%rip), %rsi      # 0x1aa13
movq %rbx, %rdi
pushq $0x5
popq %rbp
movl %ebp, %edx
pushq $0xb
popq %r13
movl %r13d, %ecx
callq 0x10822
leaq 0xa821(%rip), %rsi      # 0x1aa16
movq %rbx, %rdi
movl %ebp, %edx
pushq $0xc
popq %rcx
callq 0x10822
leaq 0xa811(%rip), %rsi      # 0x1aa1a
pushq $0x7
popq %rdx
movq %rbx, %rdi
movl %r12d, %ecx
callq 0x10822
leaq 0xa7ff(%rip), %rsi      # 0x1aa1d
pushq $0x8
popq %rdx
movq %rbx, %rdi
movl %r15d, %ecx
callq 0x10822
leaq 0xa7f4(%rip), %rsi      # 0x1aa27
movq %rbx, %rdi
movl %r14d, %edx
pushq $0xd
popq %r15
movl %r15d, %ecx
callq 0x10822
leaq 0xa7de(%rip), %rsi      # 0x1aa2a
movq %rbx, %rdi
pushq $0xa
popq %rdx
pushq $0xe
popq %rbp
movl %ebp, %ecx
callq 0x10822
leaq 0xa93d(%rip), %rsi      # 0x1aba0
movq %rbx, %rdi
movl %r13d, %edx
pushq $0x29
popq %rcx
callq 0x10822
leaq 0xa7a8(%rip), %rsi      # 0x1aa20
pushq $0xf
popq %r12
movq %rbx, %rdi
pushq $0xc
popq %rdx
movl %r12d, %ecx
callq 0x10822
leaq 0xa792(%rip), %rsi      # 0x1aa23
pushq $0x10
popq %r14
movq %rbx, %rdi
movl %r15d, %edx
movl %r14d, %ecx
callq 0x10822
leaq 0xa774(%rip), %rsi      # 0x1aa1e
pushq $0x11
popq %r13
movq %rbx, %rdi
movl %ebp, %edx
movl %r13d, %ecx
callq 0x10822
leaq 0xa759(%rip), %rsi      # 0x1aa1b
pushq $0x12
popq %r15
movq %rbx, %rdi
movl %r12d, %edx
movl %r15d, %ecx
callq 0x10822
leaq 0xa734(%rip), %rsi      # 0x1aa0f
pushq $0x13
popq %r12
movq %rbx, %rdi
movl %r14d, %edx
movl %r12d, %ecx
callq 0x10822
leaq 0xa717(%rip), %rsi      # 0x1aa0b
pushq $0x14
popq %rcx
movq %rbx, %rdi
movl %r13d, %edx
callq 0x10822
leaq 0xa71d(%rip), %rsi      # 0x1aa26
pushq $0x15
popq %r14
movq %rbx, %rdi
movl %r15d, %edx
movl %r14d, %ecx
callq 0x10822
leaq 0xa707(%rip), %rsi      # 0x1aa29
pushq $0x16
popq %rcx
movq %rbx, %rdi
movl %r12d, %edx
callq 0x10822
leaq 0xa6f5(%rip), %rsi      # 0x1aa2c
pushq $0x35
popq %rdx
movq %rbx, %rdi
pushq $0x1
popq %rcx
callq 0x10628
leaq 0xa6e4(%rip), %rsi      # 0x1aa30
movq %rbx, %rdi
pushq $0x7
popq %rdx
xorl %ecx, %ecx
callq 0x10628
leaq 0xa777(%rip), %rsi      # 0x1aad7
movq %rbx, %rdi
pushq $0x8
popq %rdx
xorl %ecx, %ecx
callq 0x10628
leaq 0xa6ef(%rip), %rsi      # 0x1aa63
movq %rbx, %rdi
pushq $0x9
popq %rdx
xorl %ecx, %ecx
callq 0x10628
leaq 0xaee4(%rip), %rsi      # 0x1b26c
pushq $0x1c
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa696(%rip), %rsi      # 0x1aa32
pushq $0x1d
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x8661(%rip), %rsi      # 0x18a11
pushq $0x1f
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa673(%rip), %rsi      # 0x1aa37
pushq $0x36
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa663(%rip), %rsi      # 0x1aa3b
pushq $0x37
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa655(%rip), %rsi      # 0x1aa41
pushq $0x38
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa64a(%rip), %rsi      # 0x1aa4a
pushq $0x39
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa639(%rip), %rsi      # 0x1aa4d
pushq $0x3b
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa62c(%rip), %rsi      # 0x1aa54
pushq $0x3c
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa61d(%rip), %rsi      # 0x1aa59
pushq $0x3d
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa611(%rip), %rsi      # 0x1aa61
pushq $0x1b
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x887a(%rip), %rsi      # 0x18cde
pushq $0x1e
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x9b67(%rip), %rsi      # 0x19fdf
pushq $0x20
popq %rbp
movq %rbx, %rdi
movl %ebp, %edx
xorl %ecx, %ecx
callq 0x10628
leaq 0x9d58(%rip), %rsi      # 0x1a1e6
movq %rbx, %rdi
movl %ebp, %edx
xorl %ecx, %ecx
callq 0x10628
leaq 0xa5c4(%rip), %rsi      # 0x1aa65
pushq $0x21
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa982(%rip), %rsi      # 0x1ae37
pushq $0x23
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x9e09(%rip), %rsi      # 0x1a2d2
pushq $0x24
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x99b0(%rip), %rsi      # 0x19e8d
pushq $0x25
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x999d(%rip), %rsi      # 0x19e8e
pushq $0x3e
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa567(%rip), %rsi      # 0x1aa6c
pushq $0x26
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa55d(%rip), %rsi      # 0x1aa76
pushq $0x27
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa54e(%rip), %rsi      # 0x1aa7b
movq %rbx, %rdi
pushq $0x29
popq %rdx
xorl %ecx, %ecx
callq 0x10628
leaq 0x8e28(%rip), %rsi      # 0x19369
movq %rbx, %rdi
movl %r14d, %edx
xorl %ecx, %ecx
callq 0x10628
movl %eax, 0x1c(%rbx)
leaq 0xa52b(%rip), %rsi      # 0x1aa83
movq %rbx, %rdi
pushq $0x2b
popq %rdx
xorl %ecx, %ecx
callq 0x10628
leaq 0x9d08(%rip), %rsi      # 0x1a274
movq %rbx, %rdi
pushq $0x2c
popq %rdx
xorl %ecx, %ecx
callq 0x10628
leaq 0x9d30(%rip), %rsi      # 0x1a2b0
pushq $0x2d
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa4f7(%rip), %rsi      # 0x1aa8b
pushq $0x30
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xaae7(%rip), %rsi      # 0x1b08f
pushq $0x31
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa4de(%rip), %rsi      # 0x1aa9a
pushq $0x32
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa4d9(%rip), %rsi      # 0x1aaa9
pushq $0x33
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa4cd(%rip), %rsi      # 0x1aab1
pushq $0x34
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0xa4c5(%rip), %rsi      # 0x1aabd
pushq $0x3a
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x10628
leaq 0x8497(%rip), %rsi      # 0x18aa3
pushq $0x3f
popq %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10628
nop