// File: zencoders[P]algoritmica/tests/littletest.hpp
// Function: littletest::test<empty_insertsort>::run_test(littletest::test_runner*)
virtual void run_test(test_runner* tr)
        {
            double set_up_duration = 0.0, tear_down_duration = 0.0, test_duration = 0.0;
            timeval before, after;
            try
            {
                gettimeofday(&before, NULL);
                static_cast<test_impl* >(this)->suite_set_up();
                gettimeofday(&after, NULL);
                set_up_duration = calculate_duration(&before, &after);
                tr->add_set_up_time(set_up_duration);
            }
            catch(std::exception& e)
            {
                std::cout << "Exception during " << static_cast<test_impl* >(this)->__lt_name__ << " set up" << std::endl;
                std::cout << e.what() << std::endl;
            }
            catch(...)
            {
                std::cout << "Exception during " << static_cast<test_impl* >(this)->__lt_name__ << " set up" << std::endl;
            }
            try
            {
                gettimeofday(&before, NULL);
                (*static_cast<test_impl*>(this))(tr);
            }
            catch(assert_unattended& au)
            {
                ;
            }
            catch(std::exception& e)
            {
                std::cout << "Exception during " << static_cast<test_impl* >(this)->__lt_name__ << " run" << std::endl;
                std::cout << e.what() << std::endl;
                if(tr->last_checkpoint_line != -1)
                    std::cout << "Last checkpoint in " << tr->last_checkpoint_file << ":" << tr->last_checkpoint_line << std::endl;
            }
            catch(...)
            {
                std::cout << "Exception during " << static_cast<test_impl* >(this)->__lt_name__ << " run" << std::endl;
                if(tr->last_checkpoint_line != -1)
                    std::cout << "Last checkpoint in " << tr->last_checkpoint_file << ":" << tr->last_checkpoint_line << std::endl;
            }
            gettimeofday(&after, NULL);

            test_duration = calculate_duration(&before, &after);

            tr->add_good_time(test_duration);

            std::cout << "- Time spent during \"" << static_cast<test_impl* >(this)->__lt_name__ << "\": " << test_duration << std::endl;

            try
            {
                gettimeofday(&before, NULL);
                static_cast<test_impl* >(this)->suite_tear_down();
                gettimeofday(&after, NULL);
                tear_down_duration = calculate_duration(&before, &after);
                tr->add_tear_down_time(tear_down_duration);
            }
            catch(std::exception& e)
            {
                std::cout << "Exception during " << static_cast<test_impl* >(this)->__lt_name__ << " tear down" << std::endl;
                std::cout << e.what() << std::endl;
            }
            catch(...)
            {
                std::cout << "Exception during " << static_cast<test_impl* >(this)->__lt_name__ << " tear down" << std::endl;
            }
            double total = set_up_duration + test_duration + tear_down_duration;
            tr->add_total_time(total);
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x3250
movq -0x88(%rbp), %rdi
addq $0x10, %rdi
callq 0x5470
jmp 0x4415
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x3250
movq -0x90(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x3600
movsd %xmm0, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movsd -0x18(%rbp), %xmm0
callq 0x5490
jmp 0x444e
jmp 0x4528
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x454c
movq -0x50(%rbp), %rdi
callq 0x3060
movq %rax, -0x60(%rbp)
movq 0xdb55(%rip), %rdi      # 0x11fd8
leaq 0x8bdb(%rip), %rsi      # 0xd065
callq 0x3190
movq %rax, -0x98(%rbp)
jmp 0x4498
movq -0x98(%rbp), %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3190
movq %rax, -0xa0(%rbp)
jmp 0x44b8
movq -0xa0(%rbp), %rdi
leaq 0x8bb1(%rip), %rsi      # 0xd077
callq 0x3190
movq %rax, -0xa8(%rbp)
jmp 0x44d4
movq -0xa8(%rbp), %rdi
movq 0xdade(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x44e9
movq -0x60(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
movq 0xdad8(%rip), %rdi      # 0x11fd8
callq 0x3190
movq %rax, -0xb0(%rbp)
jmp 0x450e
movq -0xb0(%rbp), %rdi
movq 0xdaa4(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x4523
callq 0x3270
xorl %eax, %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x3250
movq -0x88(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x54c0
jmp 0x4547
jmp 0x4630
movq -0x50(%rbp), %rdi
callq 0x3060
movq 0xda7c(%rip), %rdi      # 0x11fd8
leaq 0x8b02(%rip), %rsi      # 0xd065
callq 0x3190
movq %rax, -0xb8(%rbp)
jmp 0x4571
movq -0xb8(%rbp), %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3190
movq %rax, -0xc0(%rbp)
jmp 0x4591
movq -0xc0(%rbp), %rdi
leaq 0x8ad8(%rip), %rsi      # 0xd077
callq 0x3190
movq %rax, -0xc8(%rbp)
jmp 0x45ad
movq -0xc8(%rbp), %rdi
movq 0xda05(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x45c2
callq 0x3270
jmp 0x4528
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x3270
jmp 0x45df
jmp 0x4b7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x3270
jmp 0x45f7
jmp 0x4b7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl %eax, -0xcc(%rbp)
movl $0x3, %ecx
cmpl %ecx, %eax
jne 0x4729
movq -0x50(%rbp), %rdi
callq 0x3060
movq %rax, -0x70(%rbp)
callq 0x3270
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0xd8(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x3250
movq -0xe8(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x3600
movsd %xmm0, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movsd -0x28(%rbp), %xmm0
callq 0x5940
movq 0xd95c(%rip), %rdi      # 0x11fd8
leaq 0x8a17(%rip), %rsi      # 0xd09a
callq 0x3190
movq %rax, %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3190
movq %rax, %rdi
leaq 0x8a0b(%rip), %rsi      # 0xd0b0
callq 0x3190
movq %rax, %rdi
movsd -0x28(%rbp), %xmm0
callq 0x32e0
movq %rax, %rdi
movq 0xd8ff(%rip), %rsi      # 0x11fc0
callq 0x31c0
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
callq 0x3250
movq -0x88(%rbp), %rdi
addq $0x10, %rdi
callq 0x5970
jmp 0x46eb
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x3250
movq -0xf0(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x3600
movsd %xmm0, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movsd -0x20(%rbp), %xmm0
callq 0x5990
jmp 0x4724
jmp 0x4aa6
movl -0xcc(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x4885
movq -0x50(%rbp), %rdi
callq 0x3060
movq %rax, -0x68(%rbp)
movq 0xd888(%rip), %rdi      # 0x11fd8
leaq 0x890e(%rip), %rsi      # 0xd065
callq 0x3190
movq %rax, -0xf8(%rbp)
jmp 0x4765
movq -0xf8(%rbp), %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3190
movq %rax, -0x100(%rbp)
jmp 0x4785
movq -0x100(%rbp), %rdi
leaq 0x88ec(%rip), %rsi      # 0xd07f
callq 0x3190
movq %rax, -0x108(%rbp)
jmp 0x47a1
movq -0x108(%rbp), %rdi
movq 0xd811(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x47b6
movq -0x68(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
movq 0xd80b(%rip), %rdi      # 0x11fd8
callq 0x3190
movq %rax, -0x110(%rbp)
jmp 0x47db
movq -0x110(%rbp), %rdi
movq 0xd7d7(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x47f0
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x20(%rax)
je 0x49c2
movq 0xd7d3(%rip), %rdi      # 0x11fd8
leaq 0x8878(%rip), %rsi      # 0xd084
callq 0x3190
movq %rax, -0x118(%rbp)
jmp 0x481a
movq -0x118(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3170
movq %rax, -0x120(%rbp)
jmp 0x4833
movq -0x120(%rbp), %rdi
leaq 0x8857(%rip), %rsi      # 0xd098
callq 0x3190
movq %rax, -0x128(%rbp)
jmp 0x484f
movq -0x128(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x20(%rax), %esi
callq 0x3290
movq %rax, -0x130(%rbp)
jmp 0x486b
movq -0x130(%rbp), %rdi
movq 0xd747(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x4880
jmp 0x49c2
movq -0x50(%rbp), %rdi
callq 0x3060
movq 0xd743(%rip), %rdi      # 0x11fd8
leaq 0x87c9(%rip), %rsi      # 0xd065
callq 0x3190
movq %rax, -0x138(%rbp)
jmp 0x48aa
movq -0x138(%rbp), %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3190
movq %rax, -0x140(%rbp)
jmp 0x48ca
movq -0x140(%rbp), %rdi
leaq 0x87a7(%rip), %rsi      # 0xd07f
callq 0x3190
movq %rax, -0x148(%rbp)
jmp 0x48e6
movq -0x148(%rbp), %rdi
movq 0xd6cc(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x48fb
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x20(%rax)
je 0x49a0
movq 0xd6c8(%rip), %rdi      # 0x11fd8
leaq 0x876d(%rip), %rsi      # 0xd084
callq 0x3190
movq %rax, -0x150(%rbp)
jmp 0x4925
movq -0x150(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3170
movq %rax, -0x158(%rbp)
jmp 0x493e
movq -0x158(%rbp), %rdi
leaq 0x874c(%rip), %rsi      # 0xd098
callq 0x3190
movq %rax, -0x160(%rbp)
jmp 0x495a
movq -0x160(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x20(%rax), %esi
callq 0x3290
movq %rax, -0x168(%rbp)
jmp 0x4976
movq -0x168(%rbp), %rdi
movq 0xd63c(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x498b
jmp 0x49a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x3270
jmp 0x49aa
callq 0x3270
jmp 0x4630
jmp 0x4b7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x3270
jmp 0x49cc
callq 0x3270
jmp 0x4630
jmp 0x4b7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x4ad1
movq -0x50(%rbp), %rdi
callq 0x3060
movq %rax, -0x78(%rbp)
movq 0xd5d7(%rip), %rdi      # 0x11fd8
leaq 0x865d(%rip), %rsi      # 0xd065
callq 0x3190
movq %rax, -0x170(%rbp)
jmp 0x4a16
movq -0x170(%rbp), %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3190
movq %rax, -0x178(%rbp)
jmp 0x4a36
movq -0x178(%rbp), %rdi
leaq 0x8670(%rip), %rsi      # 0xd0b4
callq 0x3190
movq %rax, -0x180(%rbp)
jmp 0x4a52
movq -0x180(%rbp), %rdi
movq 0xd560(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x4a67
movq -0x78(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
movq 0xd55a(%rip), %rdi      # 0x11fd8
callq 0x3190
movq %rax, -0x188(%rbp)
jmp 0x4a8c
movq -0x188(%rbp), %rdi
movq 0xd526(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x4aa1
callq 0x3270
movsd -0x18(%rbp), %xmm0
addsd -0x28(%rbp), %xmm0
addsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movq -0x10(%rbp), %rdi
movsd -0x80(%rbp), %xmm0
callq 0x59c0
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x3060
movq 0xd4f7(%rip), %rdi      # 0x11fd8
leaq 0x857d(%rip), %rsi      # 0xd065
callq 0x3190
movq %rax, -0x190(%rbp)
jmp 0x4af6
movq -0x190(%rbp), %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x3190
movq %rax, -0x198(%rbp)
jmp 0x4b16
movq -0x198(%rbp), %rdi
leaq 0x8590(%rip), %rsi      # 0xd0b4
callq 0x3190
movq %rax, -0x1a0(%rbp)
jmp 0x4b32
movq -0x1a0(%rbp), %rdi
movq 0xd480(%rip), %rsi      # 0x11fc0
callq 0x31c0
jmp 0x4b47
callq 0x3270
jmp 0x4aa6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x3270
jmp 0x4b64
jmp 0x4b7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x3270
jmp 0x4b79
jmp 0x4b7b
movq -0x50(%rbp), %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x42f0
nopl (%rax)