// File: /workspace/github_cpp_makefile_star2_O2/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
pushq $0x8
popq %r14
movq %r14, %rdi
callq 0x2130
movq %rax, %rbx
movq %r14, %rdi
callq 0x2130
leaq 0x29e3(%rip), %r12      # 0x4d38
movq %r12, (%rax)
movq %rax, (%rbx)
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x260e
leaq 0xc92(%rip), %rsi       # 0x3004
movq %r14, %rdi
callq 0x2060
testl %eax, %eax
jne 0x2526
leaq 0x8(%rsp), %rdi
callq 0x20a0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x239a
movq (%rdi), %rax
callq *0x8(%rax)
pushq $0x8
popq %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2140
movq %r14, %rdi
callq 0x2130
movq %rax, %rbx
movq %r14, %rdi
callq 0x2130
leaq 0x29c5(%rip), %r15      # 0x4d88
movq %r15, (%rax)
movq %rax, (%rbx)
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x2716
leaq 0xc66(%rip), %rsi       # 0x3046
movq %r14, %rdi
callq 0x2060
testl %eax, %eax
jne 0x253f
leaq 0x8(%rsp), %rdi
callq 0x20a0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x2408
movq (%rdi), %rax
callq *0x8(%rax)
pushq $0x8
popq %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2140
movq %r14, %rdi
callq 0x2130
movq %r12, (%rax)
movq %rax, %rdi
callq 0x25aa
movq %r14, %rdi
callq 0x2130
movq %rax, %rbx
callq 0x2738
movq %rax, (%rbx)
movq (%rax), %rcx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq *0x10(%rcx)
leaq 0xbaf(%rip), %rsi       # 0x3004
movq %r14, %rdi
callq 0x2060
testl %eax, %eax
jne 0x2558
leaq 0x8(%rsp), %rdi
callq 0x20a0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x247d
movq (%rdi), %rax
callq *0x8(%rax)
pushq $0x8
popq %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2140
movq %r14, %rdi
callq 0x2130
movq %r15, (%rax)
movq %rax, %rdi
callq 0x25aa
movq %r14, %rdi
callq 0x2130
movq %rax, %rbx
callq 0x2738
movq %rax, (%rbx)
movq (%rax), %rcx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq *0x10(%rcx)
leaq 0xb7c(%rip), %rsi       # 0x3046
movq %r14, %rdi
callq 0x2060
testl %eax, %eax
jne 0x2571
leaq 0x8(%rsp), %rdi
callq 0x20a0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x24f2
movq (%rdi), %rax
callq *0x8(%rax)
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x2140
movq 0x2ad4(%rip), %rdi      # 0x4fd8
leaq 0xb60(%rip), %rsi       # 0x306b
callq 0x2120
movq %rax, %rdi
callq 0x20b0
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0xadb(%rip), %rdi       # 0x3008
leaq 0xaf5(%rip), %rsi       # 0x3029
leaq 0xb00(%rip), %rcx       # 0x303b
pushq $0x4f
jmp 0x2588
leaq 0xb04(%rip), %rdi       # 0x304a
leaq 0xadc(%rip), %rsi       # 0x3029
leaq 0xae7(%rip), %rcx       # 0x303b
pushq $0x53
jmp 0x2588
leaq 0xaa9(%rip), %rdi       # 0x3008
leaq 0xac3(%rip), %rsi       # 0x3029
leaq 0xace(%rip), %rcx       # 0x303b
pushq $0x58
jmp 0x2588
leaq 0xad2(%rip), %rdi       # 0x304a
leaq 0xaaa(%rip), %rsi       # 0x3029
leaq 0xab5(%rip), %rcx       # 0x303b
pushq $0x5d
popq %rdx
callq 0x20c0
jmp 0x2594
jmp 0x2594
jmp 0x2594
movq %rax, %r14
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x2140
movq %r14, %rdi
callq 0x21a0