// File: /workspace/github_cpp_makefile_star2_O3/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 0xd095(%rip), %rdi      # 0x18488
movq %rdx, %rsi
callq 0xb7ce
leaq -0x40(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x50(%rbp), %rdi
callq 0x6906
movq (%r14), %rsi
movq %r14, -0x30(%rbp)
movq 0x8(%r14), %rdx
movq 0xcba8(%rip), %rdi      # 0x17fd0
callq 0x32d0
testb %bl, %bl
je 0xb452
movq 0xcb98(%rip), %rdi      # 0x17fd0
leaq 0x70ef(%rip), %rsi      # 0x1252e
movl $0x2, %edx
callq 0x32d0
leaq 0x7402(%rip), %rsi      # 0x12852
jmp 0xb471
movq 0xcb77(%rip), %rdi      # 0x17fd0
leaq 0x70d1(%rip), %rsi      # 0x12531
movl $0x2, %edx
callq 0x32d0
leaq 0x70c3(%rip), %rsi      # 0x12534
movq -0x30(%rbp), %rdi
callq 0x3460
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0xcb47(%rip), %rdi      # 0x17fd0
callq 0x32d0
movq %rax, %rbx
leaq 0x7423(%rip), %rsi      # 0x128bb
movl $0x1, %edx
movq %rax, %rdi
callq 0x32d0
movl 0x4(%r12), %esi
movq %rbx, %rdi
callq 0x3410
movq %rax, %rbx
leaq 0x7396(%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 0xcaee(%rip), %r15      # 0x17fd0
leaq 0x717d(%rip), %r14      # 0x12666
movq %r12, %rbx
movq 0x10(%rbx), %rbx
testq %rbx, %rbx
je 0xb59f
movl $0x6, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x32d0
leaq 0xcf78(%rip), %rdi      # 0x18488
movq %rbx, %rsi
callq 0xb7ce
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r15, %rdi
callq 0x32d0
movq 0x8(%rbx), %r13
testq %r13, %r13
je 0xb562
movl $0x1, %edx
movq %r15, %rdi
leaq 0x737c(%rip), %rsi      # 0x128bb
callq 0x32d0
leaq 0xcf0d(%rip), %rdi      # 0x18458
movq %r13, %rsi
callq 0xb836
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r15, %rdi
callq 0x32d0
movl $0x1, %edx
movq %r15, %rdi
leaq 0x72e1(%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 0x6d6c(%rip), %rsi      # 0x12301
callq 0x32d0
jmp 0xb4ec
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0xca13(%rip), %rdi      # 0x17fd0
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x20(%r12), %r15
addq $0x20, %r12
cmpq %r12, %r15
je 0xb628
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 0x6906
xorl %esi, %esi
cmpq %r12, %r14
sete %sil
movq 0x10(%r15), %rdx
movq %rbx, %rdi
callq 0xb3d3
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0xb620
callq 0x3250
movq (%r15), %r15
cmpq %r12, %r15
jne 0xb5e0
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xb63a
callq 0x3250
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xb664
jmp 0xb664
jmp 0xb664
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r13, %rdi
je 0xb667
callq 0x3250
jmp 0xb667
jmp 0xb664
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xb679
callq 0x3250
movq %rbx, %rdi
callq 0x3420
nop