// File: /workspace/github_cpp_makefile_star2_O1/taurheim[P]AgNES/./util/symbolTableUtil.h
// Function: printEntry(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, STEntry*)
static void printEntry(std::string indent, bool last, STEntry * entry) {
    std::string nodeString = stEntryTypeToString[entry->entryType];

    std::cout << indent;

    if (last) {
        std::cout << "\\-";
        indent.append(" ");
    } else {
        std::cout << "|-";
        indent.append("| ");
    }

    std::cout << nodeString << ":" << entry->scopeId << " " << entry->name;

    // Print all variables at this scope
    STEntry * currentEntry = entry->next;

    while(currentEntry != nullptr) {
        std::cout << " --> (" << stEntryTypeToString[currentEntry->entryType];

        if (currentEntry->typeDescriptor != nullptr) {
            STTypeDescriptor * td = currentEntry->typeDescriptor;
            
            std::cout << ":" << varTypeToString[td->type];
        }
        
        std::cout << " " << currentEntry->name << ")";
        currentEntry = currentEntry->next;
    }

    std::cout << std::endl;

    // Go through all children scopes
    for(auto it = entry->childScopes.begin(); it != entry->childScopes.end(); ++it ){
        bool isLast = std::next(it) == entry->childScopes.end();
        printEntry(indent, isLast, *it);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %r12
movl %esi, %ebx
movq %rdi, %r14
leaq 0xcf24(%rip), %rdi      # 0x18488
movq %rdx, %rsi
callq 0xb93e
leaq -0x40(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x50(%rbp), %rdi
callq 0x6992
movq (%r14), %rsi
movq %r14, -0x30(%rbp)
movq 0x8(%r14), %rdx
movq 0xca37(%rip), %rdi      # 0x17fd0
callq 0x32d0
testb %bl, %bl
je 0xb5c3
movq 0xca27(%rip), %rdi      # 0x17fd0
leaq 0x6f7e(%rip), %rsi      # 0x1252e
movl $0x2, %edx
callq 0x32d0
leaq 0x7291(%rip), %rsi      # 0x12852
jmp 0xb5e2
movq 0xca06(%rip), %rdi      # 0x17fd0
leaq 0x6f60(%rip), %rsi      # 0x12531
movl $0x2, %edx
callq 0x32d0
leaq 0x6f52(%rip), %rsi      # 0x12534
movq -0x30(%rbp), %rdi
callq 0x3460
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0xc9d6(%rip), %rdi      # 0x17fd0
callq 0x32d0
movq %rax, %rbx
leaq 0x72b2(%rip), %rsi      # 0x128bb
movl $0x1, %edx
movq %rax, %rdi
callq 0x32d0
movl 0x4(%r12), %esi
movq %rbx, %rdi
callq 0x3410
movq %rax, %rbx
leaq 0x7225(%rip), %rsi      # 0x12852
movl $0x1, %edx
movq %rax, %rdi
callq 0x32d0
movq 0x38(%r12), %rsi
movq 0x40(%r12), %rdx
movq %rbx, %rdi
callq 0x32d0
movq 0xc97d(%rip), %r15      # 0x17fd0
leaq 0x700c(%rip), %r14      # 0x12666
movq %r12, %rbx
movq 0x10(%rbx), %rbx
testq %rbx, %rbx
je 0xb710
movl $0x6, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x32d0
leaq 0xce07(%rip), %rdi      # 0x18488
movq %rbx, %rsi
callq 0xb93e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r15, %rdi
callq 0x32d0
movq 0x8(%rbx), %r13
testq %r13, %r13
je 0xb6d3
movl $0x1, %edx
movq %r15, %rdi
leaq 0x720b(%rip), %rsi      # 0x128bb
callq 0x32d0
leaq 0xcd9c(%rip), %rdi      # 0x18458
movq %r13, %rsi
callq 0xb9a6
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r15, %rdi
callq 0x32d0
movl $0x1, %edx
movq %r15, %rdi
leaq 0x7170(%rip), %rsi      # 0x12852
callq 0x32d0
movq 0x38(%rbx), %rsi
movq 0x40(%rbx), %rdx
movq %r15, %rdi
callq 0x32d0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x6bfb(%rip), %rsi      # 0x12301
callq 0x32d0
jmp 0xb65d
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0xc8a2(%rip), %rdi      # 0x17fd0
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x20(%r12), %r15
addq $0x20, %r12
cmpq %r12, %r15
je 0xb799
leaq -0x60(%rbp), %r13
leaq -0x70(%rbp), %rbx
movq (%r15), %r14
movq %r13, -0x70(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x6992
xorl %esi, %esi
cmpq %r12, %r14
sete %sil
movq 0x10(%r15), %rdx
movq %rbx, %rdi
callq 0xb544
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0xb791
callq 0x3250
movq (%r15), %r15
cmpq %r12, %r15
jne 0xb751
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xb7ab
callq 0x3250
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xb7d5
jmp 0xb7d5
jmp 0xb7d5
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0xb7d8
callq 0x3250
jmp 0xb7d8
jmp 0xb7d5
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xb7ea
callq 0x3250
movq %rbx, %rdi
callq 0x3420