// File: /workspace/github_cpp_makefile_star2_O2/miniplane[P]mintree/simpletest.C
// Function: main
int main() {
 
   Container<ETYPE>* c = 0;
   bool traceIt = false;
   std::cout.setf( std::ios_base::boolalpha );
 
   while (true) {
     if (traceIt) {
       if (c) {
         std::cout << std::endl << "container: " << *c;
       } else {
         std::cout << std::endl << "no container";
       }
     }
     std::cout << std::endl << "> ";
 
     std::string cmdline;
     if (!std::getline( std::cin, cmdline )) break;
 
     std::istringstream cmdstream( cmdline );
     std::string cmd;
 
     cmdstream >> cmd;
 
     try {
       if (cmd.length() == 0) {
       } else if (match( cmd, "quit" )) {
         break;
       } else if (match( cmd, "new" )) {
         if (c) {
           std::cerr << "container exists, 'delete' it first";
         } else {
           //c = new CONTAINERTYPE<ETYPE,13>;
           c = new CONTAINERTYPE<ETYPE>;
         }
       } else if (match( cmd, "help" ) || cmd == "?") {
         std::cout << helpstr;
       } else if (match( cmd, "trace" )) {
         std::cout << "trace " << ((traceIt = !traceIt) ? "on" : "off");
       } else if (!c) {
         std::cout << "no container (use 'new')";
       } else {
         ETYPE key;
         if (match( cmd, "delete" )) {
           delete c;
           c = 0;
         } else if (match( cmd, "add" )) {
           while (cmdstream >> key) { c->add( key ); }
         } else if (match( cmd, "remove" )) {
           while (cmdstream >> key) { c->remove( key ); }
         } else if (match( cmd, "member" )) {
           cmdstream >> key;
           std::cout << "returns " << c->member( key );
         } else if (match( cmd, "size" )) {
           std::cout << "returns " << c->size( );
         } else if (match( cmd, "empty" )) {
           std::cout << "returns " << c->empty( );
         } else if (match( cmd, "min" )) {
           std::cout << "returns " << c->min( );
         } else if (match( cmd, "max" )) {
           std::cout << "returns " << c->max( );
         } else if (match( cmd, "print" )) {
           std::cout << *c;
         } else if (match( cmd, "apply" )) {
           int n = 0;
           std::string order = "dontcare";
           cmdstream >> order >> n;
           size_t rc = c->apply( PrintN<ETYPE>( n ), match( order, "ascending" ) ? ascending : match( order, "descending" ) ? descending : dontcare );
           std::cout << "\nreturns " << rc;
         } else if (match( cmd, "fadd" )) {
           std::string filename;
           cmdstream >> filename;
           std::ifstream keystream( filename.c_str() );
           while (keystream >> key) { c->add( key ); }
         } else if (match( cmd, "fremove" )) {
           std::string filename;
           cmdstream >> filename;
           std::ifstream keystream( filename.c_str() );
           while (keystream >> key) { c->remove( key ); }
         } else if (match( cmd, "radd" )) {
           int seed = -1, count = 1;
           cmdstream >> count >> seed;
           if (seed != -1) setrandom( seed );
           while (count-- > 0) c->add( nextrandom<ETYPE>() );
         } else if (match( cmd, "rremove" )) {
           int seed = -1, count = 1;
           cmdstream >> count >> seed;
           if (seed != -1) setrandom( seed );
           while (count-- > 0) c->remove( nextrandom<ETYPE>() );
         } else {
           std::cout << cmd << "? try 'help'";
         }
       }
     } catch (ContainerException& e) {
       std::cout << "ContainerException " << e.what();
     } catch (std::exception& e) {
       std::cout << "Exception " << e.what();
     } catch (...) {
       std::cout << "OOPS!";
     }
   }
   return 0;
 }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x428, %rsp            # imm = 0x428
callq 0x2170
movq 0x5950(%rip), %rcx      # 0x7fc8
movq (%rcx), %rax
movq -0x18(%rax), %rax
orl $0x1, 0x18(%rcx,%rax)
xorl %r12d, %r12d
leaq -0xc0(%rbp), %r14
leaq -0x448(%rbp), %rbx
xorl %r15d, %r15d
testb $0x1, %r12b
je 0x26d8
movq 0x5923(%rip), %rdi      # 0x7fc8
callq 0x2100
movq %rax, %rdi
testq %r15, %r15
je 0x26cc
leaq 0x2e13(%rip), %rsi      # 0x54cc
callq 0x21c0
movq (%r15), %rcx
movq %r15, %rdi
movq %rax, %rsi
callq *0x60(%rcx)
jmp 0x26d8
leaq 0x2e05(%rip), %rsi      # 0x54d8
callq 0x21c0
movq 0x58e9(%rip), %rdi      # 0x7fc8
callq 0x2100
movq %rax, %rdi
leaq 0x2df7(%rip), %rsi      # 0x54e5
callq 0x21c0
leaq -0xb0(%rbp), %rax
movq %rax, -0xc0(%rbp)
andq $0x0, -0xb8(%rbp)
movb $0x0, -0xb0(%rbp)
movq 0x58c1(%rip), %rdi      # 0x7fd8
movq %r14, %rsi
callq 0x2050
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
je 0x2734
xorl %ebx, %ebx
jmp 0x2824
movq %rbx, %rdi
movq %r14, %rsi
pushq $0x8
popq %rdx
callq 0x2290
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
movb $0x0, -0x50(%rbp)
movq %rbx, %rdi
leaq -0x60(%rbp), %rsi
callq 0x2230
movb $0x1, %bl
cmpq $0x0, -0x58(%rbp)
je 0x280f
leaq -0x60(%rbp), %rdi
leaq 0x2d71(%rip), %rsi      # 0x54e8
callq 0x2606
testb %al, %al
je 0x2787
xorl %ebx, %ebx
jmp 0x280f
leaq -0x60(%rbp), %rdi
leaq 0x2d5b(%rip), %rsi      # 0x54ed
callq 0x2606
testb %al, %al
je 0x27c6
movq 0x584e(%rip), %rdi      # 0x7ff0
leaq 0x2d48(%rip), %rsi      # 0x54f1
testq %r15, %r15
jne 0x280a
pushq $0x10
popq %rdi
callq 0x21d0
movq %rax, %r13
movq %rax, %rdi
callq 0x3070
movq %r13, %r15
jmp 0x280f
leaq -0x60(%rbp), %rdi
leaq 0x2d44(%rip), %rsi      # 0x5515
callq 0x2606
movq 0x57eb(%rip), %rdi      # 0x7fc8
leaq 0x282c(%rip), %rsi      # 0x5010
testb %al, %al
jne 0x280a
leaq -0x60(%rbp), %rdi
leaq 0x2d27(%rip), %rsi      # 0x551a
callq 0x30c1
movq 0x57c9(%rip), %rdi      # 0x7fc8
leaq 0x280a(%rip), %rsi      # 0x5010
testb %al, %al
je 0x2840
callq 0x21c0
leaq -0x60(%rbp), %rdi
callq 0x20e0
leaq -0x448(%rbp), %rdi
callq 0x20f0
movq %r14, %rdi
callq 0x20e0
testb %bl, %bl
leaq -0x448(%rbp), %rbx
jne 0x2698
jmp 0x2fb1
leaq -0x60(%rbp), %rdi
leaq 0x2cd1(%rip), %rsi      # 0x551c
callq 0x2606
testb %al, %al
je 0x2897
movq 0x576d(%rip), %rdi      # 0x7fc8
leaq 0x2cc0(%rip), %rsi      # 0x5522
callq 0x21c0
movl %r12d, %r13d
xorb $0x1, %r13b
testb $0x1, %r12b
leaq 0x2cb0(%rip), %rsi      # 0x5529
leaq 0x2cac(%rip), %rcx      # 0x552c
cmovneq %rcx, %rsi
movl %r13d, %r12d
movq %rax, %rdi
callq 0x21c0
movl %r13d, %r12d
jmp 0x280f
testq %r15, %r15
je 0x28ea
leaq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
andq $0x0, -0x98(%rbp)
movb $0x0, -0x90(%rbp)
leaq -0x60(%rbp), %rdi
leaq 0x2c85(%rip), %rsi      # 0x5549
callq 0x2606
testb %al, %al
je 0x2905
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
xorl %r15d, %r15d
leaq -0xa0(%rbp), %rdi
callq 0x20e0
jmp 0x280f
movq 0x56d7(%rip), %rdi      # 0x7fc8
leaq 0x2c38(%rip), %rsi      # 0x5530
callq 0x21c0
xorl %r15d, %r15d
jmp 0x280f
leaq -0x60(%rbp), %rdi
leaq 0x2c89(%rip), %rsi      # 0x5599
callq 0x2606
testb %al, %al
je 0x2952
leaq -0xa0(%rbp), %r13
leaq -0x448(%rbp), %rdi
movq %r13, %rsi
callq 0x2230
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x28d9
movq (%r15), %rax
movq %r15, %rdi
leaq -0xa0(%rbp), %r13
movq %r13, %rsi
callq *0x10(%rax)
jmp 0x2920
leaq -0x60(%rbp), %rdi
leaq 0x2c41(%rip), %rsi      # 0x559e
callq 0x2606
testb %al, %al
je 0x29a3
leaq -0xa0(%rbp), %r13
leaq -0x448(%rbp), %rdi
movq %r13, %rsi
callq 0x2230
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x28d9
movq (%r15), %rax
movq %r15, %rdi
leaq -0xa0(%rbp), %r13
movq %r13, %rsi
callq *0x20(%rax)
jmp 0x296d
leaq -0x60(%rbp), %rdi
leaq 0x2ba2(%rip), %rsi      # 0x5550
callq 0x2606
testb %al, %al
je 0x2a00
leaq -0x448(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x2230
movq 0x55f7(%rip), %rdi      # 0x7fc8
leaq 0x2bb7(%rip), %rsi      # 0x558f
callq 0x21c0
movq %rax, %r13
movq (%r15), %rax
movq %r15, %rdi
leaq -0xa0(%rbp), %rsi
callq *0x30(%rax)
movzbl %al, %esi
movq %r13, %rdi
callq 0x2280
jmp 0x28d9
leaq -0x60(%rbp), %rdi
leaq 0x2b4c(%rip), %rsi      # 0x5557
callq 0x2606
testb %al, %al
je 0x2a43
movq 0x55ad(%rip), %rdi      # 0x7fc8
leaq 0x2b6d(%rip), %rsi      # 0x558f
callq 0x21c0
movq %rax, %r13
movq (%r15), %rax
movq %r15, %rdi
callq *0x38(%rax)
movq %r13, %rdi
movq %rax, %rsi
callq 0x2140
jmp 0x28d9
leaq -0x60(%rbp), %rdi
leaq 0x2bc5(%rip), %rsi      # 0x5613
callq 0x2606
testb %al, %al
je 0x2a7b
movq 0x556a(%rip), %rdi      # 0x7fc8
leaq 0x2b2a(%rip), %rsi      # 0x558f
callq 0x21c0
movq %rax, %r13
movq (%r15), %rax
movq %r15, %rdi
callq *0x40(%rax)
jmp 0x29f0
leaq -0x60(%rbp), %rdi
leaq 0x2ad6(%rip), %rsi      # 0x555c
callq 0x2606
testb %al, %al
je 0x2ac9
movq 0x5532(%rip), %rdi      # 0x7fc8
leaq 0x2af2(%rip), %rsi      # 0x558f
callq 0x21c0
movq %rax, %r13
movq (%r15), %rax
leaq -0x2c8(%rbp), %rdi
movq %r15, %rsi
callq *0x50(%rax)
movq %r13, %rdi
leaq -0x2c8(%rbp), %r13
movq %r13, %rsi
callq 0x21a0
jmp 0x2b15
leaq -0x60(%rbp), %rdi
leaq 0x2a8c(%rip), %rsi      # 0x5560
callq 0x2606
testb %al, %al
je 0x2b22
movq 0x54e4(%rip), %rdi      # 0x7fc8
leaq 0x2aa4(%rip), %rsi      # 0x558f
callq 0x21c0
movq %rax, %r13
movq (%r15), %rax
leaq -0x2c8(%rbp), %rdi
movq %r15, %rsi
callq *0x58(%rax)
movq %r13, %rdi
leaq -0x2c8(%rbp), %r13
movq %r13, %rsi
callq 0x21a0
movq %r13, %rdi
callq 0x20e0
jmp 0x28d9
leaq -0x60(%rbp), %rdi
leaq 0x2a37(%rip), %rsi      # 0x5564
callq 0x2606
testb %al, %al
je 0x2b4b
movq (%r15), %rax
movq %r15, %rdi
movq 0x5485(%rip), %rsi      # 0x7fc8
callq *0x60(%rax)
jmp 0x28d9
leaq -0x60(%rbp), %rdi
leaq 0x2a14(%rip), %rsi      # 0x556a
callq 0x2606
testb %al, %al
je 0x2c24
andl $0x0, -0x3c(%rbp)
leaq -0x2c8(%rbp), %r13
movq %r13, %rdi
leaq 0x29f8(%rip), %rsi      # 0x5570
leaq -0x80(%rbp), %rdx
callq 0x30e8
leaq -0x448(%rbp), %rdi
movq %r13, %rsi
callq 0x2230
movq %rax, %rdi
leaq -0x3c(%rbp), %rsi
callq 0x2130
movl -0x3c(%rbp), %eax
leaq 0x51ba(%rip), %rcx      # 0x7d60
movq %rcx, -0x80(%rbp)
movq 0x5417(%rip), %rcx      # 0x7fc8
movq %rcx, -0x78(%rbp)
movl %eax, -0x70(%rbp)
leaq -0x2c8(%rbp), %rdi
leaq 0x29b3(%rip), %rsi      # 0x5579
callq 0x2606
pushq $0x1
popq %rdx
testb %al, %al
jne 0x2bea
leaq -0x2c8(%rbp), %rdi
leaq 0x29a3(%rip), %rsi      # 0x5583
callq 0x2606
movzbl %al, %edx
addl %edx, %edx
movq (%r15), %rax
movq %r15, %rdi
leaq -0x80(%rbp), %rsi
callq *0x48(%rax)
movq %rax, %r13
movq 0x53c7(%rip), %rdi      # 0x7fc8
leaq 0x2986(%rip), %rsi      # 0x558e
callq 0x21c0
movq %rax, %rdi
movq %r13, %rsi
callq 0x2140
leaq -0x2c8(%rbp), %rdi
jmp 0x2b18
leaq -0x60(%rbp), %rdi
leaq 0x2969(%rip), %rsi      # 0x5598
callq 0x2606
testb %al, %al
je 0x2ca9
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
movb $0x0, -0x70(%rbp)
leaq -0x448(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x2230
movq -0x80(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
pushq $0x8
popq %rdx
callq 0x22d0
leaq -0xa0(%rbp), %r13
leaq -0x2c8(%rbp), %rdi
movq %r13, %rsi
callq 0x2230
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2d2e
movq (%r15), %rax
movq %r15, %rdi
leaq -0xa0(%rbp), %r13
movq %r13, %rsi
callq *0x10(%rax)
jmp 0x2c73
leaq -0x60(%rbp), %rdi
leaq 0x28e9(%rip), %rsi      # 0x559d
callq 0x2606
testb %al, %al
je 0x2d43
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
movb $0x0, -0x70(%rbp)
leaq -0x448(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x2230
movq -0x80(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
pushq $0x8
popq %rdx
callq 0x22d0
leaq -0xa0(%rbp), %r13
leaq -0x2c8(%rbp), %rdi
movq %r13, %rsi
callq 0x2230
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2d2e
movq (%r15), %rax
movq %r15, %rdi
leaq -0xa0(%rbp), %r13
movq %r13, %rsi
callq *0x20(%rax)
jmp 0x2cfc
leaq -0x2c8(%rbp), %rdi
callq 0x2060
leaq -0x80(%rbp), %rdi
jmp 0x2b18
leaq -0x60(%rbp), %rdi
leaq 0x2857(%rip), %rsi      # 0x55a5
callq 0x2606
testb %al, %al
je 0x2dc2
orl $-0x1, -0x80(%rbp)
movl $0x1, -0x3c(%rbp)
leaq -0x448(%rbp), %rdi
leaq -0x3c(%rbp), %rsi
callq 0x2130
movq %rax, %rdi
leaq -0x80(%rbp), %rsi
callq 0x2130
movl -0x80(%rbp), %edi
cmpl $-0x1, %edi
je 0x2db0
callq 0x21b0
jmp 0x2db0
leaq -0x2c8(%rbp), %r13
movq %r13, %rdi
callq 0x24a6
movq (%r15), %rax
movq %r15, %rdi
movq %r13, %rsi
callq *0x10(%rax)
movq %r13, %rdi
callq 0x20e0
movl -0x3c(%rbp), %eax
leal -0x1(%rax), %ecx
movl %ecx, -0x3c(%rbp)
testl %eax, %eax
jg 0x2d8d
jmp 0x28d9
leaq -0x60(%rbp), %rdi
leaq 0x27dd(%rip), %rsi      # 0x55aa
callq 0x2606
testb %al, %al
je 0x2e41
orl $-0x1, -0x80(%rbp)
movl $0x1, -0x3c(%rbp)
leaq -0x448(%rbp), %rdi
leaq -0x3c(%rbp), %rsi
callq 0x2130
movq %rax, %rdi
leaq -0x80(%rbp), %rsi
callq 0x2130
movl -0x80(%rbp), %edi
cmpl $-0x1, %edi
je 0x2e2f
callq 0x21b0
jmp 0x2e2f
leaq -0x2c8(%rbp), %r13
movq %r13, %rdi
callq 0x24a6
movq (%r15), %rax
movq %r15, %rdi
movq %r13, %rsi
callq *0x20(%rax)
movq %r13, %rdi
callq 0x20e0
movl -0x3c(%rbp), %eax
leal -0x1(%rax), %ecx
movl %ecx, -0x3c(%rbp)
testl %eax, %eax
jg 0x2e0c
jmp 0x28d9
movq 0x5180(%rip), %rdi      # 0x7fc8
leaq -0x60(%rbp), %rsi
callq 0x21a0
movq %rax, %rdi
leaq 0x2757(%rip), %rsi      # 0x55b2
callq 0x21c0
jmp 0x28d9
jmp 0x2ee5
jmp 0x2ee5
jmp 0x2e6f
jmp 0x2e6f
jmp 0x2e6f
movq %rdx, -0x38(%rbp)
movq %rax, -0x30(%rbp)
jmp 0x2ec1
jmp 0x2ee5
jmp 0x2e9c
jmp 0x2ee5
jmp 0x2e83
jmp 0x2e83
movq %rdx, -0x38(%rbp)
movq %rax, -0x30(%rbp)
leaq -0x2c8(%rbp), %rdi
jmp 0x2ec5
jmp 0x2e9c
jmp 0x2ee5
jmp 0x2e9c
jmp 0x2ee5
movq %rdx, -0x38(%rbp)
movq %rax, -0x30(%rbp)
movq %r13, %rdi
jmp 0x2ec5
jmp 0x2ee5
jmp 0x2ead
movq %rdx, -0x38(%rbp)
movq %rax, -0x30(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x2060
leaq -0x80(%rbp), %rdi
callq 0x20e0
jmp 0x2eed
jmp 0x2ee5
movq %rdx, -0x38(%rbp)
movq %rax, -0x30(%rbp)
movq %r13, %rdi
pushq $0x10
popq %rsi
callq 0x21f0
jmp 0x2f03
jmp 0x2ee5
movq %rdx, -0x38(%rbp)
movq %rax, -0x30(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x20e0
jmp 0x2f03
movq %rdx, -0x38(%rbp)
movq %rax, -0x30(%rbp)
cmpl $0x3, -0x38(%rbp)
jne 0x2f4c
movq -0x30(%rbp), %rdi
callq 0x20b0
movq %rax, %r13
movq 0x50ac(%rip), %rdi      # 0x7fc8
leaq 0x26a2(%rip), %rsi      # 0x55c5
callq 0x21c0
movq %rax, -0x38(%rbp)
movq (%r13), %rax
movq %r13, %rdi
callq *0x10(%rax)
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0x21c0
callq 0x2270
jmp 0x280f
movq -0x30(%rbp), %rdi
callq 0x20b0
movq %rax, -0x30(%rbp)
cmpl $0x2, -0x38(%rbp)
jne 0x2f94
movq 0x5062(%rip), %rdi      # 0x7fc8
leaq 0x2661(%rip), %rsi      # 0x55ce
callq 0x21c0
movq %rax, %r13
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq %r13, %rdi
movq %rax, %rsi
callq 0x21c0
callq 0x2270
jmp 0x280f
movq 0x502d(%rip), %rdi      # 0x7fc8
leaq 0x261d(%rip), %rsi      # 0x55bf
callq 0x21c0
callq 0x2270
jmp 0x280f
xorl %eax, %eax
addq $0x428, %rsp            # imm = 0x428
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2ff1
movq %rax, %rbx
callq 0x2270
jmp 0x2ff4
jmp 0x2ff1
movq %rax, %rbx
callq 0x2270
jmp 0x2ff4
movq %rax, %rbx
callq 0x2270
jmp 0x2ff4
movq %rax, %rdi
callq 0x3128
jmp 0x300b
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x20e0
leaq -0x448(%rbp), %rdi
callq 0x20f0
jmp 0x300e
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x20e0
movq %rbx, %rdi
callq 0x22b0