// File: jahzielv[P]stingray/main.cpp
// Function: main
int main(void)
{
    std::cout << "Hello world!\n";
    DomNode *d = new DomNode(4);
    std::cout << d->getId() << std::endl;
    TextNode *tn = new TextNode("my data");
    tn->setId(5);
    std::cout << tn->getData() << "\n";
    DomNode *kid = new TextNode("child data");
    tn->addChild(kid);
    TextNode *gotChild = dynamic_cast<TextNode *>(tn->getChildren()[0]);
    std::cout << gotChild->getData() << "\n";
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movl $0x0, -0x4(%rbp)
movq 0x7bdf(%rip), %rdi      # 0x9fd8
leaq 0x3c04(%rip), %rsi      # 0x6004
callq 0x2130
movl $0x28, %edi
callq 0x2140
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xe8(%rbp)
movl $0x4, %esi
callq 0x2d70
jmp 0x2428
movq -0xe8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2db0
movl %eax, %esi
movq 0x7b93(%rip), %rdi      # 0x9fd8
callq 0x2210
movq %rax, %rdi
movq 0x7b74(%rip), %rsi      # 0x9fc8
callq 0x2160
movl $0x48, %edi
callq 0x2140
movq %rax, -0xf8(%rbp)
movb $0x1, -0x4a(%rbp)
leaq -0x49(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x2230
movq -0xf0(%rbp), %rdx
leaq 0x3b86(%rip), %rsi      # 0x6012
leaq -0x48(%rbp), %rdi
callq 0x27b0
jmp 0x2497
movq -0xf8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3030
jmp 0x24a9
movb $0x0, -0x4a(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x20b0
leaq -0x49(%rbp), %rdi
callq 0x2180
movq -0xf8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movl $0x5, %esi
callq 0x2dd0
movq -0x28(%rbp), %rsi
leaq -0x70(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x30a0
movq -0x108(%rbp), %rsi
movq 0x7ade(%rip), %rdi      # 0x9fd8
callq 0x2120
movq %rax, -0x100(%rbp)
jmp 0x2508
movq -0x100(%rbp), %rdi
leaq 0x3afa(%rip), %rsi      # 0x6010
callq 0x2130
jmp 0x251d
leaq -0x70(%rbp), %rdi
callq 0x20b0
movl $0x48, %edi
callq 0x2140
movq %rax, -0x118(%rbp)
movb $0x1, -0x9a(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x2230
movq -0x110(%rbp), %rdx
leaq 0x3abb(%rip), %rsi      # 0x601a
leaq -0x98(%rbp), %rdi
callq 0x27b0
jmp 0x256d
movq -0x118(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x3030
jmp 0x2582
movb $0x0, -0x9a(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x20b0
leaq -0x99(%rbp), %rdi
callq 0x2180
movq -0x118(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x28(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x2df0
movq -0x28(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x2e20
leaq -0xc0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2860
movq (%rax), %rax
movq %rax, -0x120(%rbp)
cmpq $0x0, %rax
je 0x26f0
movq -0x120(%rbp), %rdi
leaq 0x774d(%rip), %rsi      # 0x9d48
leaq 0x770e(%rip), %rdx      # 0x9d10
xorl %eax, %eax
movl %eax, %ecx
callq 0x21b0
movq %rax, -0x128(%rbp)
jmp 0x26fb
movq -0xe8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0x28, %esi
callq 0x2150
jmp 0x279d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x265c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x20b0
leaq -0x49(%rbp), %rdi
callq 0x2180
testb $0x1, -0x4a(%rbp)
jne 0x266d
jmp 0x267e
movq -0xf8(%rbp), %rdi
movl $0x48, %esi
callq 0x2150
jmp 0x279d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x20b0
jmp 0x279d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x26c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x20b0
leaq -0x99(%rbp), %rdi
callq 0x2180
testb $0x1, -0x9a(%rbp)
jne 0x26da
jmp 0x26eb
movq -0x118(%rbp), %rdi
movl $0x48, %esi
callq 0x2150
jmp 0x279d
xorl %eax, %eax
movq %rax, -0x128(%rbp)
jmp 0x26fb
movq -0x128(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x2880
movq -0x140(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x30a0
movq -0x138(%rbp), %rsi
movq 0x788d(%rip), %rdi      # 0x9fd8
callq 0x2120
movq %rax, -0x130(%rbp)
jmp 0x2759
movq -0x130(%rbp), %rdi
leaq 0x38a9(%rip), %rsi      # 0x6010
callq 0x2130
jmp 0x276e
leaq -0xe0(%rbp), %rdi
callq 0x20b0
xorl %eax, %eax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x20b0
movq -0x18(%rbp), %rdi
callq 0x2220
nopw %cs:(%rax,%rax)