// File: baziotis[P]minijava-cpp/ast.cpp
// Function: TypeDeclaration::print() const
void TypeDeclaration::print() const {
    LOG_SCOPE;
    if (this->is_undefined()) {
        debug_line("Undefined TypeDeclaration (Error)");
        return;
    }
    debug_print("(TypeDeclaration %s", this->id);
    if (this->extends) {
        printf(" _EXTENDS_ %s\n", this->extends);
    } else {
        printf("\n");
    }
    {
        LOG_SCOPE;
        debug_print("Member Vars:\n");
        for (LocalDeclaration *ld : this->vars) {
            ld->print();
        }
    }
    {
        LOG_SCOPE;
        debug_print("Member Methods:\n");
        {
            for (MethodDeclaration *md : this->methods) {
                md->print();
            }
        }
    }
    debug_print(")\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq -0x9(%rbp), %rdi
callq 0x3da0
movq -0x80(%rbp), %rdi
callq 0x3a30
movb %al, -0x71(%rbp)
jmp 0x31be
movb -0x71(%rbp), %al
testb $0x1, %al
jne 0x31c7
jmp 0x31f4
leaq 0x1626a(%rip), %rdi     # 0x19438
xorl %eax, %eax
callq 0x3f10
jmp 0x31d7
movl $0x1, -0x20(%rbp)
jmp 0x33bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x33d1
movq -0x80(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0x16257(%rip), %rdi     # 0x1945a
xorl %eax, %eax
callq 0x3e60
jmp 0x320c
movq -0x80(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x3231
movq -0x80(%rbp), %rax
movq 0x10(%rax), %rsi
leaq 0x16248(%rip), %rdi     # 0x1946e
xorl %eax, %eax
callq 0x2030
jmp 0x322f
jmp 0x3243
leaq 0x1750c(%rip), %rdi     # 0x1a744
xorl %eax, %eax
callq 0x2030
jmp 0x3241
jmp 0x3243
leaq -0x21(%rbp), %rdi
callq 0x3da0
jmp 0x324e
leaq 0x16228(%rip), %rdi     # 0x1947d
xorl %eax, %eax
callq 0x3e60
jmp 0x325e
movq -0x80(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x3a70
movq %rax, -0x88(%rbp)
jmp 0x327c
movq -0x88(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x3a90
movq %rax, -0x90(%rbp)
jmp 0x3299
movq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
cmpq -0x40(%rbp), %rax
je 0x32ee
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0x33f0
jmp 0x32c4
jmp 0x32c6
movq -0x38(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x38(%rbp)
jmp 0x32a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x21(%rbp), %rdi
callq 0x3dd0
jmp 0x33d1
leaq -0x21(%rbp), %rdi
callq 0x3dd0
leaq -0x49(%rbp), %rdi
callq 0x3da0
jmp 0x3302
leaq 0x16182(%rip), %rdi     # 0x1948b
xorl %eax, %eax
callq 0x3e60
jmp 0x3312
movq -0x80(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0x3ab0
movq %rax, -0x98(%rbp)
jmp 0x3330
movq -0x98(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
callq 0x3ad0
movq %rax, -0xa0(%rbp)
jmp 0x334d
movq -0xa0(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x68(%rbp), %rax
je 0x339f
movq -0x60(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
callq 0x3470
jmp 0x3378
jmp 0x337a
movq -0x60(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x60(%rbp)
jmp 0x3358
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x49(%rbp), %rdi
callq 0x3dd0
jmp 0x33d1
leaq -0x49(%rbp), %rdi
callq 0x3dd0
leaq 0x19087(%rip), %rdi     # 0x1c436
xorl %eax, %eax
callq 0x3e60
jmp 0x33b8
movl $0x0, -0x20(%rbp)
leaq -0x9(%rbp), %rdi
callq 0x3dd0
addq $0xa0, %rsp
popq %rbp
retq
leaq -0x9(%rbp), %rdi
callq 0x3dd0
movq -0x18(%rbp), %rdi
callq 0x21c0
nopw %cs:(%rax,%rax)