// File: /workspace/github_cpp_makefile_star2_O1/kklis[P]resolver/resolver_test.cpp
// Function: main
int main() {
    Test *t;

    t = new Test(new Foo());
    assert(t->getName().compare("Foo") == 0);
    delete t;

    t = new Test(new Bar());
    assert(t->getName().compare("Bar") == 0);
    delete t;

    Resolver::Register<IFooBar>(new Foo());
    t = new Test();
    assert(t->getName().compare("Foo") == 0);
    delete t;

    Resolver::Register<IFooBar>(new Bar());
    t = new Test();
    assert(t->getName().compare("Bar") == 0);
    delete t;

    cout << "All tests passed" << endl;

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl $0x8, %edi
callq 0x2100
movq %rax, %rbx
movl $0x8, %edi
callq 0x2100
leaq 0x2a13(%rip), %r14      # 0x4d38
movq %r14, (%rax)
movq %rax, (%rbx)
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movl $0x6f6f46, (%r15)       # imm = 0x6F6F46
leaq 0xcc2(%rip), %rsi       # 0x3004
movq $0x3, -0x8(%r15)
leaq 0x8(%rsp), %rdi
callq 0x2070
testl %eax, %eax
jne 0x2567
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2373
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2110
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x2381
movq (%rdi), %rax
callq *0x8(%rax)
movl $0x8, %esi
movq %rbx, %rdi
callq 0x2110
movl $0x8, %edi
callq 0x2100
movq %rax, %rbx
movl $0x8, %edi
callq 0x2100
leaq 0x29dc(%rip), %r12      # 0x4d88
movq %r12, (%rax)
movq %rax, (%rbx)
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
movl $0x726142, 0x10(%rdi)   # imm = 0x726142
leaq 0xc7e(%rip), %rsi       # 0x3046
movq $0x3, 0x8(%rdi)
callq 0x2070
testl %eax, %eax
jne 0x2586
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x23f4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2110
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x2402
movq (%rdi), %rax
callq *0x8(%rax)
movl $0x8, %esi
movq %rbx, %rdi
callq 0x2110
movl $0x8, %edi
callq 0x2100
movq %r14, (%rax)
movq %rax, %rdi
callq 0x2602
movl $0x8, %edi
callq 0x2100
movq %rax, %rbx
callq 0x277e
movq %rax, (%rbx)
movq (%rax), %rcx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq *0x10(%rcx)
leaq 0xbb3(%rip), %rsi       # 0x3004
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
jne 0x25a5
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2478
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2110
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x2486
movq (%rdi), %rax
callq *0x8(%rax)
movl $0x8, %esi
movq %rbx, %rdi
callq 0x2110
movl $0x8, %edi
callq 0x2100
movq %r12, (%rax)
movq %rax, %rdi
callq 0x2602
movl $0x8, %edi
callq 0x2100
movq %rax, %rbx
callq 0x277e
movq %rax, (%rbx)
movq (%rax), %rcx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq *0x10(%rcx)
leaq 0xb71(%rip), %rsi       # 0x3046
movq %r14, %rdi
callq 0x2070
testl %eax, %eax
jne 0x25c4
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x24fc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x2110
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x250a
movq (%rdi), %rax
callq *0x8(%rax)
movl $0x8, %esi
movq %rbx, %rdi
callq 0x2110
movq 0x2aba(%rip), %rbx      # 0x4fd8
leaq 0xb46(%rip), %rsi       # 0x306b
movl $0x10, %edx
movq %rbx, %rdi
callq 0x2130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0xa9a(%rip), %rdi       # 0x3008
leaq 0xab4(%rip), %rsi       # 0x3029
leaq 0xabf(%rip), %rcx       # 0x303b
movl $0x4f, %edx
callq 0x2090
leaq 0xabd(%rip), %rdi       # 0x304a
leaq 0xa95(%rip), %rsi       # 0x3029
leaq 0xaa0(%rip), %rcx       # 0x303b
movl $0x53, %edx
callq 0x2090
leaq 0xa5c(%rip), %rdi       # 0x3008
leaq 0xa76(%rip), %rsi       # 0x3029
leaq 0xa81(%rip), %rcx       # 0x303b
movl $0x58, %edx
callq 0x2090
leaq 0xa7f(%rip), %rdi       # 0x304a
leaq 0xa57(%rip), %rsi       # 0x3029
leaq 0xa62(%rip), %rcx       # 0x303b
movl $0x5d, %edx
callq 0x2090
jmp 0x25e9
jmp 0x25e9
jmp 0x25e9
movq %rax, %r14
movl $0x8, %esi
movq %rbx, %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2170
nop