// File: /workspace/github_cpp_makefile_star2_O2/Davidc2525[P]Leaf/compiler/symb_tab/symbol_table.cpp
// Function: symbol_table::init()
void symbol_table::init()
{
    cout << "; iniciando tabla de simbolos" << endl;
    //PROCESS::Native * n = PROCESS::Native::getInstance();
    //Obj *o;
    cm_sp = 0;
    curScope = new Scope();
    curScope->outer = NULL;
    curLevel = 0;
    currMethodStack = (Obj **)malloc(sizeof(Obj *) * 100);

    //predeclared types
    boolType = new Struct(Struct::Bool);
    byteType = new Struct(Struct::Byte);
    intType = new Struct(Struct::Int);
    charType = new Struct(Struct::Char);
    floatType = new Struct(Struct::Float);
    doubleType = new Struct(Struct::Double);
    //stringType = new Struct(Struct::String);
    stringType = new Struct(Struct::Arr, charType);
    //string == char[]
    nullType = new Struct(Struct::Class);
    noType = new Struct(Struct::None);
    noObj = new Obj(Obj::Var, new string("???"), noType);

    //create predecared object
    insert(Obj::Type, new string(TYPES::_BOOOLEAN_), boolType);
    insert(Obj::Type, new string(TYPES::_BYTE_), byteType);
    insert(Obj::Type, new string(TYPES::_INT_), intType);
    insert(Obj::Type, new string(TYPES::_FLOAT_), floatType);
    insert(Obj::Type, new string(TYPES::_DOUBLE_), doubleType);
    insert(Obj::Type, new string(TYPES::_STRING_), stringType);
    insert(Obj::Type, new string(TYPES::_CHAR_), charType);
    insert(Obj::Con, new string(TYPES::_NULL_), nullType);
    insert(Obj::Type, new string("void"), noType);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq 0x15b24(%rip), %rdi     # 0x24fd0
leaq 0x8b8a(%rip), %rsi      # 0x1803d
callq 0x5240
movq %rax, %rdi
callq 0x5120
andl $0x0, 0x168f9(%rip)     # 0x25dc0
pushq $0x20
popq %rdi
callq 0x5260
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rax)
movaps %xmm0, (%rax)
movl $0x8, 0x10(%rax)
movq %rax, 0x16881(%rip)     # 0x25d68
andl $0x0, 0x16882(%rip)     # 0x25d70
movl $0x320, %edi            # imm = 0x320
callq 0x5330
movq %rax, 0x168c9(%rip)     # 0x25dc8
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0x8
popq %rsi
movq %rax, %rdi
callq 0xedbc
movq %r14, 0x1685c(%rip)     # 0x25d78
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0xd
popq %rsi
movq %rax, %rdi
callq 0xedbc
movq %r14, 0x16847(%rip)     # 0x25d80
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0x1
popq %rsi
movq %rax, %rdi
callq 0xedbc
movq %r14, 0x16832(%rip)     # 0x25d88
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0xb
popq %rsi
movq %rax, %rdi
callq 0xedbc
movq %r14, 0x1681d(%rip)     # 0x25d90
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rax, %rdi
callq 0xedbc
movq %r14, 0x16808(%rip)     # 0x25d98
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0x3
popq %rsi
movq %rax, %rdi
callq 0xedbc
movq %r14, 0x167f3(%rip)     # 0x25da0
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x167d1(%rip), %rdx     # 0x25d90
pushq $0x5
popq %rsi
movq %rax, %rdi
callq 0xedd6
movq %r14, 0x167d7(%rip)     # 0x25da8
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0x6
popq %rsi
movq %rax, %rdi
callq 0xedbc
movq %r14, 0x167c2(%rip)     # 0x25db0
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
movq %rax, %rdi
xorl %esi, %esi
callq 0xedbc
movq %r14, 0x167ae(%rip)     # 0x25db8
pushq $0x48
popq %rdi
callq 0x5260
movq %rax, %r14
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0x8a34(%rip), %rsi      # 0x1805b
leaq 0xf(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movq 0x1677d(%rip), %rcx     # 0x25db8
pushq $0x1
popq %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0xf244
movq %r14, 0x16798(%rip)     # 0x25de8
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x166be(%rip), %rsi     # 0x25d20
movq %rax, %rdi
callq 0x5340
movq 0x16707(%rip), %rdx     # 0x25d78
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x165d2(%rip), %rsi     # 0x25c60
movq %rax, %rdi
callq 0x5340
movq 0x166e3(%rip), %rdx     # 0x25d80
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x165c6(%rip), %rsi     # 0x25c80
movq %rax, %rdi
callq 0x5340
movq 0x166bf(%rip), %rdx     # 0x25d88
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x165ba(%rip), %rsi     # 0x25ca0
movq %rax, %rdi
callq 0x5340
movq 0x166a3(%rip), %rdx     # 0x25d98
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x165ae(%rip), %rsi     # 0x25cc0
movq %rax, %rdi
callq 0x5340
movq 0x1667f(%rip), %rdx     # 0x25da0
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x165c2(%rip), %rsi     # 0x25d00
movq %rax, %rdi
callq 0x5340
movq 0x1665b(%rip), %rdx     # 0x25da8
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x16576(%rip), %rsi     # 0x25ce0
movq %rax, %rdi
callq 0x5340
movq 0x16617(%rip), %rdx     # 0x25d90
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x165aa(%rip), %rsi     # 0x25d40
movq %rax, %rdi
callq 0x5340
movq 0x1660b(%rip), %rdx     # 0x25db0
xorl %edi, %edi
movq %r14, %rsi
callq 0xf292
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
leaq 0x889e(%rip), %rsi      # 0x1805f
leaq 0xe(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movq 0x165e3(%rip), %rdx     # 0x25db8
pushq $0x2
popq %rdi
movq %r14, %rsi
callq 0xf292
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0xf7fa
jmp 0xf7fa
jmp 0xf7fa
jmp 0xf7fa
jmp 0xf7fa
jmp 0xf7fa
jmp 0xf7fa
jmp 0xf7fa
movq %rax, %rbx
pushq $0x20
jmp 0xf82f
jmp 0xf813
movq %rax, %rbx
pushq $0x20
popq %rsi
movq %r15, %rdi
callq 0x5270
jmp 0xf816
movq %rax, %rbx
pushq $0x48
jmp 0xf82f
jmp 0xf82a
jmp 0xf82a
jmp 0xf82a
jmp 0xf82a
jmp 0xf82a
jmp 0xf82a
jmp 0xf82a
jmp 0xf82a
movq %rax, %rbx
pushq $0x30
popq %rsi
movq %r14, %rdi
callq 0x5270
movq %rbx, %rdi
callq 0x5420