// File: /workspace/github_cpp_makefile_star2_O2/ostafen[P]Fast-Insertion-Sort/src/main.cpp
// Function: run_int()
void run_int()
{
  cout << "########## Type : int ##########" << endl
       << endl;

  std::vector<SortAlgorithm<int> *> algos;

  for(int i=1; i<=10; i++)
    algos.push_back(chain<int>(i));

  algos.push_back(new InplaceInsertionBlock<int>);
  
  for(int i = 2; i<=10; i++)
    algos.push_back(new FastInsertionSort<int>(i));
  
  
  algos.push_back(new QuickSort<int>);
  algos.push_back(new QuickInsertionSort<int>);
  algos.push_back(new QuickBlockInsertionSort<int>(512));
  algos.push_back(new MergeSort<int>);
  algos.push_back(new HeapSort<int>);
  
  IntArrayGenerator intGen;
  BenchmarkExecutor<int> intExcutor(&intGen, 2,  1<<20);
  intExcutor.run(&algos, 100);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq 0x7b27(%rip), %rdi      # 0xafd8
leaq 0x3b98(%rip), %rsi      # 0x7050
callq 0x31c0
movq %rax, %rdi
callq 0x30c0
movq %rax, %rdi
callq 0x30c0
leaq 0x10(%rsp), %rbx
andq $0x0, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
pushq $0x1
popq %rbp
movq %rsp, %r14
cmpl $0xb, %ebp
je 0x3502
movl %ebp, %edi
callq 0x3866
movq %rax, (%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5a8e
incl %ebp
jmp 0x34e3
pushq $0x8
popq %rdi
callq 0x31d0
leaq 0x73ff(%rip), %rcx      # 0xa910
movq %rcx, (%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x5a8e
pushq $0x2
popq %rbp
pushq $0x20
popq %rbx
leaq 0x77ef(%rip), %r13      # 0xad20
leaq 0x7458(%rip), %r12      # 0xa990
leaq 0x10(%rsp), %r14
movq %rsp, %r15
cmpl $0xb, %ebp
je 0x3570
movq %rbx, %rdi
callq 0x31d0
cvtsi2ss %ebp, %xmm0
movq %r13, (%rax)
movq %r12, 0x10(%rax)
movss %xmm0, 0x18(%rax)
movq %rax, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5a8e
incl %ebp
jmp 0x3540
pushq $0x10
popq %rdi
callq 0x31d0
leaq 0x73d9(%rip), %rcx      # 0xa958
movq %rcx, (%rax)
movq %r12, 0x8(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x5a8e
pushq $0x10
popq %rdi
callq 0x31d0
leaq 0x7423(%rip), %rcx      # 0xa9c8
movq %rcx, (%rax)
movq %r12, 0x8(%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x5a8e
pushq $0x28
popq %rdi
callq 0x31d0
leaq 0x778d(%rip), %rcx      # 0xad58
movq %rcx, (%rax)
leaq 0x77bb(%rip), %rcx      # 0xad90
movq %rcx, 0x10(%rax)
movq %r12, 0x20(%rax)
movl $0x200, 0x8(%rax)       # imm = 0x200
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x5a8e
pushq $0x8
popq %rdi
callq 0x31d0
leaq 0x73fd(%rip), %rcx      # 0xaa00
movq %rcx, (%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x5a8e
pushq $0x8
popq %rdi
callq 0x31d0
leaq 0x7413(%rip), %rcx      # 0xaa38
movq %rcx, (%rax)
movq %rsp, %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x5a8e
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x38fc
leaq 0x28(%rsp), %rdi
movq %rbx, (%rdi)
movabsq $0x10000000000002, %rax # imm = 0x10000000000002
movq %rax, 0x8(%rdi)
leaq 0x10(%rsp), %rsi
pushq $0x64
popq %rdx
callq 0x3920
leaq 0x10(%rsp), %rdi
callq 0x5750
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3691
jmp 0x3691
jmp 0x3691
jmp 0x3691
jmp 0x3691
jmp 0x3691
jmp 0x3691
jmp 0x3691
jmp 0x3691
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5750
movq %rbx, %rdi
callq 0x32c0