// File: /workspace/github_cpp_makefile_star2_O2/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, %r13
movl %esi, %ebx
movq %rdi, %r14
leaq 0xd9ce(%rip), %rdi      # 0x18478
movq %rdx, %rsi
callq 0xae02
leaq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0x32e0
movq 0xd503(%rip), %rdi      # 0x17fc8
movq %r14, -0x30(%rbp)
movq %r14, %rsi
callq 0x3210
testb %bl, %bl
je 0xaaf1
movq 0xd4ec(%rip), %rdi      # 0x17fc8
leaq 0x5a54(%rip), %rsi      # 0x10537
callq 0x3230
leaq 0x5d6b(%rip), %rsi      # 0x1085a
jmp 0xab0b
movq 0xd4d0(%rip), %rdi      # 0x17fc8
leaq 0x5a3b(%rip), %rsi      # 0x1053a
callq 0x3230
leaq 0x5a32(%rip), %rsi      # 0x1053d
movq -0x30(%rbp), %rdi
callq 0x3420
movq 0xd4ad(%rip), %rdi      # 0x17fc8
leaq -0x50(%rbp), %rsi
callq 0x3210
leaq 0x5d98(%rip), %rsi      # 0x108c3
movq %rax, %rdi
callq 0x3230
movl 0x4(%r13), %esi
movq %rax, %rdi
callq 0x33d0
leaq 0x5d14(%rip), %rsi      # 0x1085a
movq %rax, %rdi
callq 0x3230
leaq 0x38(%r13), %rsi
movq %rax, %rdi
callq 0x3210
movq 0xd467(%rip), %r15      # 0x17fc8
movq %r13, %rbx
movq 0x10(%rbx), %rbx
testq %rbx, %rbx
je 0xac01
movq %r15, %rdi
leaq 0x5af0(%rip), %rsi      # 0x1066b
callq 0x3230
movq %rax, %r14
leaq 0xd8ee(%rip), %rdi      # 0x18478
movq %rbx, %rsi
callq 0xae02
movq %r14, %rdi
movq %rax, %rsi
callq 0x3210
movq 0x8(%rbx), %r14
testq %r14, %r14
je 0xabd2
movq %r15, %rdi
leaq 0x5d13(%rip), %rsi      # 0x108c3
callq 0x3230
movq %rax, %r12
leaq 0xd889(%rip), %rdi      # 0x18448
movq %r14, %rsi
callq 0xae54
movq %r12, %rdi
movq %rax, %rsi
callq 0x3210
movq %r15, %rdi
leaq 0x5c7e(%rip), %rsi      # 0x1085a
callq 0x3230
leaq 0x38(%rbx), %rsi
movq %rax, %rdi
callq 0x3210
movq %rax, %rdi
leaq 0x570f(%rip), %rsi      # 0x10306
callq 0x3230
jmp 0xab64
movq 0xd3c0(%rip), %rdi      # 0x17fc8
callq 0x3150
addq $0x20, %r13
pushq $0x1
popq %rbx
leaq -0x70(%rbp), %r14
movq %r13, %r15
movq (%r15), %r15
cmpq %r13, %r15
je 0xac5c
movq %r15, %rdi
movq %rbx, %rsi
callq 0xaea5
movq %rax, %r12
movq %r14, %rdi
movq -0x30(%rbp), %rsi
callq 0x32e0
xorl %esi, %esi
cmpq %r13, %r12
sete %sil
movq 0x10(%r15), %rdx
movq %r14, %rdi
callq 0xaa8a
movq %r14, %rdi
callq 0x3140
jmp 0xac1b
leaq -0x50(%rbp), %rdi
callq 0x3140
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xac8c
jmp 0xac8c
jmp 0xac8c
jmp 0xac8c
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x3140
jmp 0xac8f
jmp 0xac8c
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x33e0