void testsSort(void (*sort)(int *a, int n)) {
  testSort((int[]){1}, 1, sort);
  testSort((int[]){1, 2}, 2, sort);
  testSort((int[]){2, 1}, 2, sort);
  testSort((int[]){1, 2, 3}, 3, sort);
  testSort((int[]){1, 3, 2}, 3, sort);
  testSort((int[]){2, 1, 3}, 3, sort);
  testSort((int[]){2, 3, 1}, 3, sort);
  testSort((int[]){3, 1, 2}, 3, sort);
  testSort((int[]){3, 2, 1}, 3, sort);
  testSort((int[]){1, 2, 3, 4}, 4, sort);
  testSort((int[]){1, 2, 4, 3}, 4, sort);
  testSort((int[]){1, 3, 2, 4}, 4, sort);
  testSort((int[]){1, 3, 4, 2}, 4, sort);
  testSort((int[]){1, 4, 2, 3}, 4, sort);
  testSort((int[]){1, 4, 3, 2}, 4, sort);
  testSort((int[]){5, 1, 2, 3, 4}, 5, sort);
  testSort((int[]){5, 1, 2, 4, 3}, 5, sort);
  testSort((int[]){5, 1, 3, 2, 4}, 5, sort);
  testSort((int[]){5, 1, 3, 4, 2}, 5, sort);
  testSort((int[]){5, 1, 4, 2, 3}, 5, sort);
  testSort((int[]){5, 1, 4, 3, 2}, 5, sort);
  testSort((int[]){5, 1, 2, 6, 3, 4}, 6, sort);
  testSort((int[]){5, 1, 2, 6, 4, 3}, 6, sort);
  testSort((int[]){5, 1, 3, 6, 2, 4}, 6, sort);
  testSort((int[]){5, 1, 3, 6, 4, 2}, 6, sort);
  testSort((int[]){5, 1, 4, 6, 2, 3}, 6, sort);
  testSort((int[]){5, 1, 4, 6, 3, 2}, 6, sort);
  testSort((int[]){5, 1, 7, 2, 6, 3, 4}, 7, sort);
  testSort((int[]){5, 1, 7, 2, 6, 4, 3}, 7, sort);
  testSort((int[]){5, 1, 7, 3, 6, 2, 4}, 7, sort);
  testSort((int[]){5, 1, 7, 3, 6, 4, 2}, 7, sort);
  testSort((int[]){5, 1, 7, 4, 6, 2, 3}, 7, sort);
  testSort((int[]){5, 1, 7, 4, 6, 3, 2}, 7, sort);
  testSort((int[]){5, 1, 7, 2, 6, 7, 4}, 7, sort);
  testSort((int[]){5, 1, 7, 2, 6, 4, 7}, 7, sort);
  testSort((int[]){5, 1, 7, 7, 6, 2, 4}, 7, sort);
  testSort((int[]){5, 1, 7, 7, 6, 4, 2}, 7, sort);
  testSort((int[]){5, 1, 7, 4, 6, 2, 7}, 7, sort);
  testSort((int[]){5, 1, 7, 4, 6, 7, 2}, 7, sort);
  puts("testsSort done.");
}


x86 assembly (clang, -O0):
<testsSort>:
push   %rbp
mov    %rsp,%rbp
sub    $0x320,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x1,-0xc(%rbp)
lea    -0xc(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x1,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0x14(%rbp)
movl   $0x2,-0x10(%rbp)
lea    -0x14(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x2,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x2,-0x1c(%rbp)
movl   $0x1,-0x18(%rbp)
lea    -0x1c(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x2,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0x28(%rbp)
movl   $0x2,-0x24(%rbp)
movl   $0x3,-0x20(%rbp)
lea    -0x28(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x3,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0x34(%rbp)
movl   $0x3,-0x30(%rbp)
movl   $0x2,-0x2c(%rbp)
lea    -0x34(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x3,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x2,-0x40(%rbp)
movl   $0x1,-0x3c(%rbp)
movl   $0x3,-0x38(%rbp)
lea    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x3,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x2,-0x4c(%rbp)
movl   $0x3,-0x48(%rbp)
movl   $0x1,-0x44(%rbp)
lea    -0x4c(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x3,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x3,-0x58(%rbp)
movl   $0x1,-0x54(%rbp)
movl   $0x2,-0x50(%rbp)
lea    -0x58(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x3,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x3,-0x64(%rbp)
movl   $0x2,-0x60(%rbp)
movl   $0x1,-0x5c(%rbp)
lea    -0x64(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x3,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0x74(%rbp)
movl   $0x2,-0x70(%rbp)
movl   $0x3,-0x6c(%rbp)
movl   $0x4,-0x68(%rbp)
lea    -0x74(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x4,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0x84(%rbp)
movl   $0x2,-0x80(%rbp)
movl   $0x4,-0x7c(%rbp)
movl   $0x3,-0x78(%rbp)
lea    -0x84(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x4,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0x94(%rbp)
movl   $0x3,-0x90(%rbp)
movl   $0x2,-0x8c(%rbp)
movl   $0x4,-0x88(%rbp)
lea    -0x94(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x4,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0xa4(%rbp)
movl   $0x3,-0xa0(%rbp)
movl   $0x4,-0x9c(%rbp)
movl   $0x2,-0x98(%rbp)
lea    -0xa4(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x4,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0xb4(%rbp)
movl   $0x4,-0xb0(%rbp)
movl   $0x2,-0xac(%rbp)
movl   $0x3,-0xa8(%rbp)
lea    -0xb4(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x4,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
movl   $0x1,-0xc4(%rbp)
movl   $0x4,-0xc0(%rbp)
movl   $0x3,-0xbc(%rbp)
movl   $0x2,-0xb8(%rbp)
lea    -0xc4(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x4,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2c43(%rip),%rax
mov    %rax,-0xd8(%rbp)
mov    0x2c3d(%rip),%rax
mov    %rax,-0xd0(%rbp)
mov    0x2c38(%rip),%eax
mov    %eax,-0xc8(%rbp)
lea    -0xd8(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x5,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2c18(%rip),%rax
mov    %rax,-0xec(%rbp)
mov    0x2c12(%rip),%rax
mov    %rax,-0xe4(%rbp)
mov    0x2c0d(%rip),%eax
mov    %eax,-0xdc(%rbp)
lea    -0xec(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x5,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2bed(%rip),%rax
mov    %rax,-0x100(%rbp)
mov    0x2be7(%rip),%rax
mov    %rax,-0xf8(%rbp)
mov    0x2be2(%rip),%eax
mov    %eax,-0xf0(%rbp)
lea    -0x100(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x5,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2bc2(%rip),%rax
mov    %rax,-0x114(%rbp)
mov    0x2bbc(%rip),%rax
mov    %rax,-0x10c(%rbp)
mov    0x2bb7(%rip),%eax
mov    %eax,-0x104(%rbp)
lea    -0x114(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x5,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2b97(%rip),%rax
mov    %rax,-0x128(%rbp)
mov    0x2b91(%rip),%rax
mov    %rax,-0x120(%rbp)
mov    0x2b8c(%rip),%eax
mov    %eax,-0x118(%rbp)
lea    -0x128(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x5,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2b6c(%rip),%rax
mov    %rax,-0x13c(%rbp)
mov    0x2b66(%rip),%rax
mov    %rax,-0x134(%rbp)
mov    0x2b61(%rip),%eax
mov    %eax,-0x12c(%rbp)
lea    -0x13c(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x5,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2b41(%rip),%rax
mov    %rax,-0x154(%rbp)
mov    0x2b3b(%rip),%rax
mov    %rax,-0x14c(%rbp)
mov    0x2b35(%rip),%rax
mov    %rax,-0x144(%rbp)
lea    -0x154(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x6,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2b18(%rip),%rax
mov    %rax,-0x16c(%rbp)
mov    0x2b12(%rip),%rax
mov    %rax,-0x164(%rbp)
mov    0x2b0c(%rip),%rax
mov    %rax,-0x15c(%rbp)
lea    -0x16c(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x6,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2aef(%rip),%rax
mov    %rax,-0x184(%rbp)
mov    0x2ae9(%rip),%rax
mov    %rax,-0x17c(%rbp)
mov    0x2ae3(%rip),%rax
mov    %rax,-0x174(%rbp)
lea    -0x184(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x6,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2ac6(%rip),%rax
mov    %rax,-0x19c(%rbp)
mov    0x2ac0(%rip),%rax
mov    %rax,-0x194(%rbp)
mov    0x2aba(%rip),%rax
mov    %rax,-0x18c(%rbp)
lea    -0x19c(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x6,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2a9d(%rip),%rax
mov    %rax,-0x1b4(%rbp)
mov    0x2a97(%rip),%rax
mov    %rax,-0x1ac(%rbp)
mov    0x2a91(%rip),%rax
mov    %rax,-0x1a4(%rbp)
lea    -0x1b4(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x6,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2a74(%rip),%rax
mov    %rax,-0x1cc(%rbp)
mov    0x2a6e(%rip),%rax
mov    %rax,-0x1c4(%rbp)
mov    0x2a68(%rip),%rax
mov    %rax,-0x1bc(%rbp)
lea    -0x1cc(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x6,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2a4b(%rip),%rax
mov    %rax,-0x1e8(%rbp)
mov    0x2a45(%rip),%rax
mov    %rax,-0x1e0(%rbp)
mov    0x2a3f(%rip),%rax
mov    %rax,-0x1d8(%rbp)
mov    0x2a3a(%rip),%eax
mov    %eax,-0x1d0(%rbp)
lea    -0x1e8(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2a1a(%rip),%rax
mov    %rax,-0x204(%rbp)
mov    0x2a14(%rip),%rax
mov    %rax,-0x1fc(%rbp)
mov    0x2a0e(%rip),%rax
mov    %rax,-0x1f4(%rbp)
mov    0x2a09(%rip),%eax
mov    %eax,-0x1ec(%rbp)
lea    -0x204(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x29e9(%rip),%rax
mov    %rax,-0x220(%rbp)
mov    0x29e3(%rip),%rax
mov    %rax,-0x218(%rbp)
mov    0x29dd(%rip),%rax
mov    %rax,-0x210(%rbp)
mov    0x29d8(%rip),%eax
mov    %eax,-0x208(%rbp)
lea    -0x220(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x29b8(%rip),%rax
mov    %rax,-0x23c(%rbp)
mov    0x29b2(%rip),%rax
mov    %rax,-0x234(%rbp)
mov    0x29ac(%rip),%rax
mov    %rax,-0x22c(%rbp)
mov    0x29a7(%rip),%eax
mov    %eax,-0x224(%rbp)
lea    -0x23c(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2987(%rip),%rax
mov    %rax,-0x258(%rbp)
mov    0x2981(%rip),%rax
mov    %rax,-0x250(%rbp)
mov    0x297b(%rip),%rax
mov    %rax,-0x248(%rbp)
mov    0x2976(%rip),%eax
mov    %eax,-0x240(%rbp)
lea    -0x258(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2956(%rip),%rax
mov    %rax,-0x274(%rbp)
mov    0x2950(%rip),%rax
mov    %rax,-0x26c(%rbp)
mov    0x294a(%rip),%rax
mov    %rax,-0x264(%rbp)
mov    0x2945(%rip),%eax
mov    %eax,-0x25c(%rbp)
lea    -0x274(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2925(%rip),%rax
mov    %rax,-0x290(%rbp)
mov    0x291f(%rip),%rax
mov    %rax,-0x288(%rbp)
mov    0x2919(%rip),%rax
mov    %rax,-0x280(%rbp)
mov    0x2914(%rip),%eax
mov    %eax,-0x278(%rbp)
lea    -0x290(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x28f4(%rip),%rax
mov    %rax,-0x2ac(%rbp)
mov    0x28ee(%rip),%rax
mov    %rax,-0x2a4(%rbp)
mov    0x28e8(%rip),%rax
mov    %rax,-0x29c(%rbp)
mov    0x28e3(%rip),%eax
mov    %eax,-0x294(%rbp)
lea    -0x2ac(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x28c3(%rip),%rax
mov    %rax,-0x2c8(%rbp)
mov    0x28bd(%rip),%rax
mov    %rax,-0x2c0(%rbp)
mov    0x28b7(%rip),%rax
mov    %rax,-0x2b8(%rbp)
mov    0x28b2(%rip),%eax
mov    %eax,-0x2b0(%rbp)
lea    -0x2c8(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2892(%rip),%rax
mov    %rax,-0x2e4(%rbp)
mov    0x288c(%rip),%rax
mov    %rax,-0x2dc(%rbp)
mov    0x2886(%rip),%rax
mov    %rax,-0x2d4(%rbp)
mov    0x2881(%rip),%eax
mov    %eax,-0x2cc(%rbp)
lea    -0x2e4(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2861(%rip),%rax
mov    %rax,-0x300(%rbp)
mov    0x285b(%rip),%rax
mov    %rax,-0x2f8(%rbp)
mov    0x2855(%rip),%rax
mov    %rax,-0x2f0(%rbp)
mov    0x2850(%rip),%eax
mov    %eax,-0x2e8(%rbp)
lea    -0x300(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
mov    0x2830(%rip),%rax
mov    %rax,-0x31c(%rbp)
mov    0x282a(%rip),%rax
mov    %rax,-0x314(%rbp)
mov    0x2824(%rip),%rax
mov    %rax,-0x30c(%rbp)
mov    0x281f(%rip),%eax
mov    %eax,-0x304(%rbp)
lea    -0x31c(%rbp),%rdi
mov    -0x8(%rbp),%rdx
mov    $0x7,%esi
mov    $0x0,%al
call   1040 <testSort@plt>
lea    0x577(%rip),%rdi
mov    $0x0,%al
call   1030 <puts@plt>
add    $0x320,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<testsSort>:
push   %r15
push   %r14
push   %rbx
sub    $0x3c0,%rsp
mov    %rdi,%rbx
movl   $0x1,0x4(%rsp)
lea    0x4(%rsp),%rdi
mov    $0x1,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movabs $0x200000001,%r15
mov    %r15,0x58(%rsp)
lea    0x58(%rsp),%rdi
mov    $0x2,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movabs $0x100000002,%r14
mov    %r14,0x50(%rsp)
lea    0x50(%rsp),%rdi
mov    $0x2,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
mov    %r15,0x44(%rsp)
movl   $0x3,0x4c(%rsp)
lea    0x44(%rsp),%rdi
mov    $0x3,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movabs $0x300000001,%rax
mov    %rax,0x38(%rsp)
movl   $0x2,0x40(%rsp)
lea    0x38(%rsp),%rdi
mov    $0x3,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
mov    %r14,0x2c(%rsp)
movl   $0x3,0x34(%rsp)
lea    0x2c(%rsp),%rdi
mov    $0x3,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movabs $0x300000002,%rax
mov    %rax,0x20(%rsp)
movl   $0x1,0x28(%rsp)
lea    0x20(%rsp),%rdi
mov    $0x3,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movabs $0x100000003,%rax
mov    %rax,0x14(%rsp)
movl   $0x2,0x1c(%rsp)
lea    0x14(%rsp),%rdi
mov    $0x3,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movabs $0x200000003,%rax
mov    %rax,0x8(%rsp)
movl   $0x1,0x10(%rsp)
lea    0x8(%rsp),%rdi
mov    $0x3,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movaps 0xd7a(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
lea    0x230(%rsp),%rdi
mov    $0x4,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movaps 0xd64(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
lea    0x220(%rsp),%rdi
mov    $0x4,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movaps 0xd4e(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
lea    0x210(%rsp),%rdi
mov    $0x4,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movaps 0xd38(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
lea    0x200(%rsp),%rdi
mov    $0x4,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movaps 0xd22(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
lea    0x1f0(%rsp),%rdi
mov    $0x4,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movaps 0xd0c(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
lea    0x1e0(%rsp),%rdi
mov    $0x4,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xcf6(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
mov    0xcf8(%rip),%eax
mov    %eax,0x110(%rsp)
lea    0x100(%rsp),%rdi
mov    $0x5,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xcd7(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
mov    0xcd9(%rip),%eax
mov    %eax,0xf0(%rsp)
lea    0xe0(%rsp),%rdi
mov    $0x5,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xcb8(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
mov    0xcba(%rip),%eax
mov    %eax,0xd0(%rsp)
lea    0xc0(%rsp),%rdi
mov    $0x5,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xc99(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
mov    0xc9b(%rip),%eax
mov    %eax,0xb0(%rsp)
lea    0xa0(%rsp),%rdi
mov    $0x5,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xc7a(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
mov    0xc7c(%rip),%eax
mov    %eax,0x90(%rsp)
lea    0x80(%rsp),%rdi
mov    $0x5,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xc5b(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
mov    0xc60(%rip),%eax
mov    %eax,0x70(%rsp)
lea    0x60(%rsp),%rdi
mov    $0x5,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xc45(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
mov    0xc46(%rip),%rax
mov    %rax,0x1d0(%rsp)
lea    0x1c0(%rsp),%rdi
mov    $0x6,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xc28(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
mov    0xc29(%rip),%rax
mov    %rax,0x1b0(%rsp)
lea    0x1a0(%rsp),%rdi
mov    $0x6,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xc0b(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
mov    0xc0c(%rip),%rax
mov    %rax,0x190(%rsp)
lea    0x180(%rsp),%rdi
mov    $0x6,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xbee(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
mov    0xbef(%rip),%rax
mov    %rax,0x170(%rsp)
lea    0x160(%rsp),%rdi
mov    $0x6,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xbd1(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
mov    0xbd2(%rip),%rax
mov    %rax,0x150(%rsp)
lea    0x140(%rsp),%rdi
mov    $0x6,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xbb4(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
mov    0xbb5(%rip),%rax
mov    %rax,0x130(%rsp)
lea    0x120(%rsp),%rdi
mov    $0x6,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xb97(%rip),%xmm0
movaps %xmm0,0x3a0(%rsp)
movups 0xb94(%rip),%xmm0
movups %xmm0,0x3ac(%rsp)
lea    0x3a0(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xb7e(%rip),%xmm0
movaps %xmm0,0x380(%rsp)
movups 0xb7b(%rip),%xmm0
movups %xmm0,0x38c(%rsp)
lea    0x380(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xb65(%rip),%xmm0
movaps %xmm0,0x360(%rsp)
movups 0xb62(%rip),%xmm0
movups %xmm0,0x36c(%rsp)
lea    0x360(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xb4c(%rip),%xmm0
movaps %xmm0,0x340(%rsp)
movups 0xb49(%rip),%xmm0
movups %xmm0,0x34c(%rsp)
lea    0x340(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xb33(%rip),%xmm0
movaps %xmm0,0x320(%rsp)
movups 0xb30(%rip),%xmm0
movups %xmm0,0x32c(%rsp)
lea    0x320(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xb1a(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movups 0xb17(%rip),%xmm0
movups %xmm0,0x30c(%rsp)
lea    0x300(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xb01(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movups 0xafe(%rip),%xmm0
movups %xmm0,0x2ec(%rsp)
lea    0x2e0(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xae8(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movups 0xae5(%rip),%xmm0
movups %xmm0,0x2cc(%rsp)
lea    0x2c0(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xacf(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movups 0xacc(%rip),%xmm0
movups %xmm0,0x2ac(%rsp)
lea    0x2a0(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xab6(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movups 0xab3(%rip),%xmm0
movups %xmm0,0x28c(%rsp)
lea    0x280(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xa9d(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movups 0xa9a(%rip),%xmm0
movups %xmm0,0x26c(%rsp)
lea    0x260(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
movups 0xa84(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movups 0xa81(%rip),%xmm0
movups %xmm0,0x24c(%rsp)
lea    0x240(%rsp),%rdi
mov    $0x7,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <testSort@plt>
lea    0xa6b(%rip),%rdi
xor    %eax,%eax
call   1030 <puts@plt>
add    $0x3c0,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@constinit = private global [5 x i32] [i32 5, i32 1, i32 2, i32 3, i32 4]
@constinit.1 = private global [5 x i32] [i32 5, i32 1, i32 2, i32 4, i32 3]
@constinit.2 = private global [5 x i32] [i32 5, i32 1, i32 3, i32 2, i32 4]
@constinit.3 = private global [5 x i32] [i32 5, i32 1, i32 3, i32 4, i32 2]
@constinit.4 = private global [5 x i32] [i32 5, i32 1, i32 4, i32 2, i32 3]
@constinit.5 = private global [5 x i32] [i32 5, i32 1, i32 4, i32 3, i32 2]
@constinit.6 = private global [6 x i32] [i32 5, i32 1, i32 2, i32 6, i32 3, i32 4]
@constinit.7 = private global [6 x i32] [i32 5, i32 1, i32 2, i32 6, i32 4, i32 3]
@constinit.8 = private global [6 x i32] [i32 5, i32 1, i32 3, i32 6, i32 2, i32 4]
@constinit.9 = private global [6 x i32] [i32 5, i32 1, i32 3, i32 6, i32 4, i32 2]
@constinit.10 = private global [6 x i32] [i32 5, i32 1, i32 4, i32 6, i32 2, i32 3]
@constinit.11 = private global [6 x i32] [i32 5, i32 1, i32 4, i32 6, i32 3, i32 2]
@constinit.12 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 3, i32 4]
@constinit.13 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 4, i32 3]
@constinit.14 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 3, i32 6, i32 2, i32 4]
@constinit.15 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 3, i32 6, i32 4, i32 2]
@constinit.16 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 2, i32 3]
@constinit.17 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 3, i32 2]
@constinit.18 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 7, i32 4]
@constinit.19 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 4, i32 7]
@constinit.20 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 7, i32 6, i32 2, i32 4]
@constinit.21 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 7, i32 6, i32 4, i32 2]
@constinit.22 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 2, i32 7]
@constinit.23 = private global [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 7, i32 2]
@.str = [16 x i8] c"testsSort done.\00"
define void @testsSort(void (i32*, i32)* %0) {
%2 = alloca void (i32*, i32)*
%3 = alloca [1 x i32]
%4 = alloca [2 x i32]
%5 = alloca [2 x i32]
%6 = alloca [3 x i32]
%7 = alloca [3 x i32]
%8 = alloca [3 x i32]
%9 = alloca [3 x i32]
%10 = alloca [3 x i32]
%11 = alloca [3 x i32]
%12 = alloca [4 x i32]
%13 = alloca [4 x i32]
%14 = alloca [4 x i32]
%15 = alloca [4 x i32]
%16 = alloca [4 x i32]
%17 = alloca [4 x i32]
%18 = alloca [5 x i32]
%19 = alloca [5 x i32]
%20 = alloca [5 x i32]
%21 = alloca [5 x i32]
%22 = alloca [5 x i32]
%23 = alloca [5 x i32]
%24 = alloca [6 x i32]
%25 = alloca [6 x i32]
%26 = alloca [6 x i32]
%27 = alloca [6 x i32]
%28 = alloca [6 x i32]
%29 = alloca [6 x i32]
%30 = alloca [7 x i32]
%31 = alloca [7 x i32]
%32 = alloca [7 x i32]
%33 = alloca [7 x i32]
%34 = alloca [7 x i32]
%35 = alloca [7 x i32]
%36 = alloca [7 x i32]
%37 = alloca [7 x i32]
%38 = alloca [7 x i32]
%39 = alloca [7 x i32]
%40 = alloca [7 x i32]
%41 = alloca [7 x i32]
store void (i32*, i32)* %0, void (i32*, i32)** %2
%42 = getelementptr inbounds [1 x i32], [1 x i32]* %3, i64 0, i64 0
store i32 1, i32* %42
%43 = getelementptr inbounds [1 x i32], [1 x i32]* %3, i64 0, i64 0
%44 = load void (i32*, i32)*, void (i32*, i32)** %2
%45 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %43, i32 1, void (i32*, i32)* %44)
%46 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 0
store i32 1, i32* %46
%47 = getelementptr inbounds i32, i32* %46, i64 1
store i32 2, i32* %47
%48 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 0
%49 = load void (i32*, i32)*, void (i32*, i32)** %2
%50 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %48, i32 2, void (i32*, i32)* %49)
%51 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 0
store i32 2, i32* %51
%52 = getelementptr inbounds i32, i32* %51, i64 1
store i32 1, i32* %52
%53 = getelementptr inbounds [2 x i32], [2 x i32]* %5, i64 0, i64 0
%54 = load void (i32*, i32)*, void (i32*, i32)** %2
%55 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %53, i32 2, void (i32*, i32)* %54)
%56 = getelementptr inbounds [3 x i32], [3 x i32]* %6, i64 0, i64 0
store i32 1, i32* %56
%57 = getelementptr inbounds i32, i32* %56, i64 1
store i32 2, i32* %57
%58 = getelementptr inbounds i32, i32* %57, i64 1
store i32 3, i32* %58
%59 = getelementptr inbounds [3 x i32], [3 x i32]* %6, i64 0, i64 0
%60 = load void (i32*, i32)*, void (i32*, i32)** %2
%61 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %59, i32 3, void (i32*, i32)* %60)
%62 = getelementptr inbounds [3 x i32], [3 x i32]* %7, i64 0, i64 0
store i32 1, i32* %62
%63 = getelementptr inbounds i32, i32* %62, i64 1
store i32 3, i32* %63
%64 = getelementptr inbounds i32, i32* %63, i64 1
store i32 2, i32* %64
%65 = getelementptr inbounds [3 x i32], [3 x i32]* %7, i64 0, i64 0
%66 = load void (i32*, i32)*, void (i32*, i32)** %2
%67 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %65, i32 3, void (i32*, i32)* %66)
%68 = getelementptr inbounds [3 x i32], [3 x i32]* %8, i64 0, i64 0
store i32 2, i32* %68
%69 = getelementptr inbounds i32, i32* %68, i64 1
store i32 1, i32* %69
%70 = getelementptr inbounds i32, i32* %69, i64 1
store i32 3, i32* %70
%71 = getelementptr inbounds [3 x i32], [3 x i32]* %8, i64 0, i64 0
%72 = load void (i32*, i32)*, void (i32*, i32)** %2
%73 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %71, i32 3, void (i32*, i32)* %72)
%74 = getelementptr inbounds [3 x i32], [3 x i32]* %9, i64 0, i64 0
store i32 2, i32* %74
%75 = getelementptr inbounds i32, i32* %74, i64 1
store i32 3, i32* %75
%76 = getelementptr inbounds i32, i32* %75, i64 1
store i32 1, i32* %76
%77 = getelementptr inbounds [3 x i32], [3 x i32]* %9, i64 0, i64 0
%78 = load void (i32*, i32)*, void (i32*, i32)** %2
%79 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %77, i32 3, void (i32*, i32)* %78)
%80 = getelementptr inbounds [3 x i32], [3 x i32]* %10, i64 0, i64 0
store i32 3, i32* %80
%81 = getelementptr inbounds i32, i32* %80, i64 1
store i32 1, i32* %81
%82 = getelementptr inbounds i32, i32* %81, i64 1
store i32 2, i32* %82
%83 = getelementptr inbounds [3 x i32], [3 x i32]* %10, i64 0, i64 0
%84 = load void (i32*, i32)*, void (i32*, i32)** %2
%85 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %83, i32 3, void (i32*, i32)* %84)
%86 = getelementptr inbounds [3 x i32], [3 x i32]* %11, i64 0, i64 0
store i32 3, i32* %86
%87 = getelementptr inbounds i32, i32* %86, i64 1
store i32 2, i32* %87
%88 = getelementptr inbounds i32, i32* %87, i64 1
store i32 1, i32* %88
%89 = getelementptr inbounds [3 x i32], [3 x i32]* %11, i64 0, i64 0
%90 = load void (i32*, i32)*, void (i32*, i32)** %2
%91 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %89, i32 3, void (i32*, i32)* %90)
%92 = getelementptr inbounds [4 x i32], [4 x i32]* %12, i64 0, i64 0
store i32 1, i32* %92
%93 = getelementptr inbounds i32, i32* %92, i64 1
store i32 2, i32* %93
%94 = getelementptr inbounds i32, i32* %93, i64 1
store i32 3, i32* %94
%95 = getelementptr inbounds i32, i32* %94, i64 1
store i32 4, i32* %95
%96 = getelementptr inbounds [4 x i32], [4 x i32]* %12, i64 0, i64 0
%97 = load void (i32*, i32)*, void (i32*, i32)** %2
%98 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %96, i32 4, void (i32*, i32)* %97)
%99 = getelementptr inbounds [4 x i32], [4 x i32]* %13, i64 0, i64 0
store i32 1, i32* %99
%100 = getelementptr inbounds i32, i32* %99, i64 1
store i32 2, i32* %100
%101 = getelementptr inbounds i32, i32* %100, i64 1
store i32 4, i32* %101
%102 = getelementptr inbounds i32, i32* %101, i64 1
store i32 3, i32* %102
%103 = getelementptr inbounds [4 x i32], [4 x i32]* %13, i64 0, i64 0
%104 = load void (i32*, i32)*, void (i32*, i32)** %2
%105 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %103, i32 4, void (i32*, i32)* %104)
%106 = getelementptr inbounds [4 x i32], [4 x i32]* %14, i64 0, i64 0
store i32 1, i32* %106
%107 = getelementptr inbounds i32, i32* %106, i64 1
store i32 3, i32* %107
%108 = getelementptr inbounds i32, i32* %107, i64 1
store i32 2, i32* %108
%109 = getelementptr inbounds i32, i32* %108, i64 1
store i32 4, i32* %109
%110 = getelementptr inbounds [4 x i32], [4 x i32]* %14, i64 0, i64 0
%111 = load void (i32*, i32)*, void (i32*, i32)** %2
%112 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %110, i32 4, void (i32*, i32)* %111)
%113 = getelementptr inbounds [4 x i32], [4 x i32]* %15, i64 0, i64 0
store i32 1, i32* %113
%114 = getelementptr inbounds i32, i32* %113, i64 1
store i32 3, i32* %114
%115 = getelementptr inbounds i32, i32* %114, i64 1
store i32 4, i32* %115
%116 = getelementptr inbounds i32, i32* %115, i64 1
store i32 2, i32* %116
%117 = getelementptr inbounds [4 x i32], [4 x i32]* %15, i64 0, i64 0
%118 = load void (i32*, i32)*, void (i32*, i32)** %2
%119 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %117, i32 4, void (i32*, i32)* %118)
%120 = getelementptr inbounds [4 x i32], [4 x i32]* %16, i64 0, i64 0
store i32 1, i32* %120
%121 = getelementptr inbounds i32, i32* %120, i64 1
store i32 4, i32* %121
%122 = getelementptr inbounds i32, i32* %121, i64 1
store i32 2, i32* %122
%123 = getelementptr inbounds i32, i32* %122, i64 1
store i32 3, i32* %123
%124 = getelementptr inbounds [4 x i32], [4 x i32]* %16, i64 0, i64 0
%125 = load void (i32*, i32)*, void (i32*, i32)** %2
%126 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %124, i32 4, void (i32*, i32)* %125)
%127 = getelementptr inbounds [4 x i32], [4 x i32]* %17, i64 0, i64 0
store i32 1, i32* %127
%128 = getelementptr inbounds i32, i32* %127, i64 1
store i32 4, i32* %128
%129 = getelementptr inbounds i32, i32* %128, i64 1
store i32 3, i32* %129
%130 = getelementptr inbounds i32, i32* %129, i64 1
store i32 2, i32* %130
%131 = getelementptr inbounds [4 x i32], [4 x i32]* %17, i64 0, i64 0
%132 = load void (i32*, i32)*, void (i32*, i32)** %2
%133 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %131, i32 4, void (i32*, i32)* %132)
%134 = getelementptr inbounds [5 x i32], [5 x i32]* %18, i64 0, i64 0
%135 = bitcast [5 x i32]* %18 to i8*
%136 = getelementptr inbounds [5 x i32], [5 x i32]* %18, i64 0, i64 0
%137 = load void (i32*, i32)*, void (i32*, i32)** %2
%138 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %136, i32 5, void (i32*, i32)* %137)
%139 = getelementptr inbounds [5 x i32], [5 x i32]* %19, i64 0, i64 0
%140 = bitcast [5 x i32]* %19 to i8*
%141 = getelementptr inbounds [5 x i32], [5 x i32]* %19, i64 0, i64 0
%142 = load void (i32*, i32)*, void (i32*, i32)** %2
%143 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %141, i32 5, void (i32*, i32)* %142)
%144 = getelementptr inbounds [5 x i32], [5 x i32]* %20, i64 0, i64 0
%145 = bitcast [5 x i32]* %20 to i8*
%146 = getelementptr inbounds [5 x i32], [5 x i32]* %20, i64 0, i64 0
%147 = load void (i32*, i32)*, void (i32*, i32)** %2
%148 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %146, i32 5, void (i32*, i32)* %147)
%149 = getelementptr inbounds [5 x i32], [5 x i32]* %21, i64 0, i64 0
%150 = bitcast [5 x i32]* %21 to i8*
%151 = getelementptr inbounds [5 x i32], [5 x i32]* %21, i64 0, i64 0
%152 = load void (i32*, i32)*, void (i32*, i32)** %2
%153 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %151, i32 5, void (i32*, i32)* %152)
%154 = getelementptr inbounds [5 x i32], [5 x i32]* %22, i64 0, i64 0
%155 = bitcast [5 x i32]* %22 to i8*
%156 = getelementptr inbounds [5 x i32], [5 x i32]* %22, i64 0, i64 0
%157 = load void (i32*, i32)*, void (i32*, i32)** %2
%158 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %156, i32 5, void (i32*, i32)* %157)
%159 = getelementptr inbounds [5 x i32], [5 x i32]* %23, i64 0, i64 0
%160 = bitcast [5 x i32]* %23 to i8*
%161 = getelementptr inbounds [5 x i32], [5 x i32]* %23, i64 0, i64 0
%162 = load void (i32*, i32)*, void (i32*, i32)** %2
%163 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %161, i32 5, void (i32*, i32)* %162)
%164 = getelementptr inbounds [6 x i32], [6 x i32]* %24, i64 0, i64 0
%165 = bitcast [6 x i32]* %24 to i8*
%166 = getelementptr inbounds [6 x i32], [6 x i32]* %24, i64 0, i64 0
%167 = load void (i32*, i32)*, void (i32*, i32)** %2
%168 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %166, i32 6, void (i32*, i32)* %167)
%169 = getelementptr inbounds [6 x i32], [6 x i32]* %25, i64 0, i64 0
%170 = bitcast [6 x i32]* %25 to i8*
%171 = getelementptr inbounds [6 x i32], [6 x i32]* %25, i64 0, i64 0
%172 = load void (i32*, i32)*, void (i32*, i32)** %2
%173 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %171, i32 6, void (i32*, i32)* %172)
%174 = getelementptr inbounds [6 x i32], [6 x i32]* %26, i64 0, i64 0
%175 = bitcast [6 x i32]* %26 to i8*
%176 = getelementptr inbounds [6 x i32], [6 x i32]* %26, i64 0, i64 0
%177 = load void (i32*, i32)*, void (i32*, i32)** %2
%178 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %176, i32 6, void (i32*, i32)* %177)
%179 = getelementptr inbounds [6 x i32], [6 x i32]* %27, i64 0, i64 0
%180 = bitcast [6 x i32]* %27 to i8*
%181 = getelementptr inbounds [6 x i32], [6 x i32]* %27, i64 0, i64 0
%182 = load void (i32*, i32)*, void (i32*, i32)** %2
%183 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %181, i32 6, void (i32*, i32)* %182)
%184 = getelementptr inbounds [6 x i32], [6 x i32]* %28, i64 0, i64 0
%185 = bitcast [6 x i32]* %28 to i8*
%186 = getelementptr inbounds [6 x i32], [6 x i32]* %28, i64 0, i64 0
%187 = load void (i32*, i32)*, void (i32*, i32)** %2
%188 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %186, i32 6, void (i32*, i32)* %187)
%189 = getelementptr inbounds [6 x i32], [6 x i32]* %29, i64 0, i64 0
%190 = bitcast [6 x i32]* %29 to i8*
%191 = getelementptr inbounds [6 x i32], [6 x i32]* %29, i64 0, i64 0
%192 = load void (i32*, i32)*, void (i32*, i32)** %2
%193 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %191, i32 6, void (i32*, i32)* %192)
%194 = getelementptr inbounds [7 x i32], [7 x i32]* %30, i64 0, i64 0
%195 = bitcast [7 x i32]* %30 to i8*
%196 = getelementptr inbounds [7 x i32], [7 x i32]* %30, i64 0, i64 0
%197 = load void (i32*, i32)*, void (i32*, i32)** %2
%198 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %196, i32 7, void (i32*, i32)* %197)
%199 = getelementptr inbounds [7 x i32], [7 x i32]* %31, i64 0, i64 0
%200 = bitcast [7 x i32]* %31 to i8*
%201 = getelementptr inbounds [7 x i32], [7 x i32]* %31, i64 0, i64 0
%202 = load void (i32*, i32)*, void (i32*, i32)** %2
%203 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %201, i32 7, void (i32*, i32)* %202)
%204 = getelementptr inbounds [7 x i32], [7 x i32]* %32, i64 0, i64 0
%205 = bitcast [7 x i32]* %32 to i8*
%206 = getelementptr inbounds [7 x i32], [7 x i32]* %32, i64 0, i64 0
%207 = load void (i32*, i32)*, void (i32*, i32)** %2
%208 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %206, i32 7, void (i32*, i32)* %207)
%209 = getelementptr inbounds [7 x i32], [7 x i32]* %33, i64 0, i64 0
%210 = bitcast [7 x i32]* %33 to i8*
%211 = getelementptr inbounds [7 x i32], [7 x i32]* %33, i64 0, i64 0
%212 = load void (i32*, i32)*, void (i32*, i32)** %2
%213 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %211, i32 7, void (i32*, i32)* %212)
%214 = getelementptr inbounds [7 x i32], [7 x i32]* %34, i64 0, i64 0
%215 = bitcast [7 x i32]* %34 to i8*
%216 = getelementptr inbounds [7 x i32], [7 x i32]* %34, i64 0, i64 0
%217 = load void (i32*, i32)*, void (i32*, i32)** %2
%218 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %216, i32 7, void (i32*, i32)* %217)
%219 = getelementptr inbounds [7 x i32], [7 x i32]* %35, i64 0, i64 0
%220 = bitcast [7 x i32]* %35 to i8*
%221 = getelementptr inbounds [7 x i32], [7 x i32]* %35, i64 0, i64 0
%222 = load void (i32*, i32)*, void (i32*, i32)** %2
%223 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %221, i32 7, void (i32*, i32)* %222)
%224 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 0
%225 = bitcast [7 x i32]* %36 to i8*
%226 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 0
%227 = load void (i32*, i32)*, void (i32*, i32)** %2
%228 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %226, i32 7, void (i32*, i32)* %227)
%229 = getelementptr inbounds [7 x i32], [7 x i32]* %37, i64 0, i64 0
%230 = bitcast [7 x i32]* %37 to i8*
%231 = getelementptr inbounds [7 x i32], [7 x i32]* %37, i64 0, i64 0
%232 = load void (i32*, i32)*, void (i32*, i32)** %2
%233 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %231, i32 7, void (i32*, i32)* %232)
%234 = getelementptr inbounds [7 x i32], [7 x i32]* %38, i64 0, i64 0
%235 = bitcast [7 x i32]* %38 to i8*
%236 = getelementptr inbounds [7 x i32], [7 x i32]* %38, i64 0, i64 0
%237 = load void (i32*, i32)*, void (i32*, i32)** %2
%238 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %236, i32 7, void (i32*, i32)* %237)
%239 = getelementptr inbounds [7 x i32], [7 x i32]* %39, i64 0, i64 0
%240 = bitcast [7 x i32]* %39 to i8*
%241 = getelementptr inbounds [7 x i32], [7 x i32]* %39, i64 0, i64 0
%242 = load void (i32*, i32)*, void (i32*, i32)** %2
%243 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %241, i32 7, void (i32*, i32)* %242)
%244 = getelementptr inbounds [7 x i32], [7 x i32]* %40, i64 0, i64 0
%245 = bitcast [7 x i32]* %40 to i8*
%246 = getelementptr inbounds [7 x i32], [7 x i32]* %40, i64 0, i64 0
%247 = load void (i32*, i32)*, void (i32*, i32)** %2
%248 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %246, i32 7, void (i32*, i32)* %247)
%249 = getelementptr inbounds [7 x i32], [7 x i32]* %41, i64 0, i64 0
%250 = bitcast [7 x i32]* %41 to i8*
%251 = getelementptr inbounds [7 x i32], [7 x i32]* %41, i64 0, i64 0
%252 = load void (i32*, i32)*, void (i32*, i32)** %2
%253 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %251, i32 7, void (i32*, i32)* %252)
%254 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@constinit = [5 x i32] [i32 5, i32 1, i32 2, i32 3, i32 4]
@constinit.1 = [5 x i32] [i32 5, i32 1, i32 2, i32 4, i32 3]
@constinit.2 = [5 x i32] [i32 5, i32 1, i32 3, i32 2, i32 4]
@constinit.3 = [5 x i32] [i32 5, i32 1, i32 3, i32 4, i32 2]
@constinit.4 = [5 x i32] [i32 5, i32 1, i32 4, i32 2, i32 3]
@constinit.5 = [5 x i32] [i32 5, i32 1, i32 4, i32 3, i32 2]
@constinit.6 = [6 x i32] [i32 5, i32 1, i32 2, i32 6, i32 3, i32 4]
@constinit.7 = [6 x i32] [i32 5, i32 1, i32 2, i32 6, i32 4, i32 3]
@constinit.8 = [6 x i32] [i32 5, i32 1, i32 3, i32 6, i32 2, i32 4]
@constinit.9 = [6 x i32] [i32 5, i32 1, i32 3, i32 6, i32 4, i32 2]
@constinit.10 = [6 x i32] [i32 5, i32 1, i32 4, i32 6, i32 2, i32 3]
@constinit.11 = [6 x i32] [i32 5, i32 1, i32 4, i32 6, i32 3, i32 2]
@constinit.12 = [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 3, i32 4]
@constinit.13 = [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 4, i32 3]
@constinit.14 = [7 x i32] [i32 5, i32 1, i32 7, i32 3, i32 6, i32 2, i32 4]
@constinit.15 = [7 x i32] [i32 5, i32 1, i32 7, i32 3, i32 6, i32 4, i32 2]
@constinit.16 = [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 2, i32 3]
@constinit.17 = [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 3, i32 2]
@constinit.18 = [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 7, i32 4]
@constinit.19 = [7 x i32] [i32 5, i32 1, i32 7, i32 2, i32 6, i32 4, i32 7]
@constinit.20 = [7 x i32] [i32 5, i32 1, i32 7, i32 7, i32 6, i32 2, i32 4]
@constinit.21 = [7 x i32] [i32 5, i32 1, i32 7, i32 7, i32 6, i32 4, i32 2]
@constinit.22 = [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 2, i32 7]
@constinit.23 = [7 x i32] [i32 5, i32 1, i32 7, i32 4, i32 6, i32 7, i32 2]
@.str = [16 x i8] c"testsSort done.\00"
define void @testsSort(void (i32*, i32)* %0) {
%2 = alloca [1 x i32]
%3 = alloca [2 x i32]
%4 = alloca [2 x i32]
%5 = alloca [3 x i32]
%6 = alloca [3 x i32]
%7 = alloca [3 x i32]
%8 = alloca [3 x i32]
%9 = alloca [3 x i32]
%10 = alloca [3 x i32]
%11 = alloca <4 x i32>
%12 = alloca <4 x i32>
%13 = alloca <4 x i32>
%14 = alloca <4 x i32>
%15 = alloca <4 x i32>
%16 = alloca <4 x i32>
%17 = alloca [5 x i32]
%18 = alloca [5 x i32]
%19 = alloca [5 x i32]
%20 = alloca [5 x i32]
%21 = alloca [5 x i32]
%22 = alloca [5 x i32]
%23 = alloca [6 x i32]
%24 = alloca [6 x i32]
%25 = alloca [6 x i32]
%26 = alloca [6 x i32]
%27 = alloca [6 x i32]
%28 = alloca [6 x i32]
%29 = alloca [7 x i32]
%30 = alloca [7 x i32]
%31 = alloca [7 x i32]
%32 = alloca [7 x i32]
%33 = alloca [7 x i32]
%34 = alloca [7 x i32]
%35 = alloca [7 x i32]
%36 = alloca [7 x i32]
%37 = alloca [7 x i32]
%38 = alloca [7 x i32]
%39 = alloca [7 x i32]
%40 = alloca [7 x i32]
%41 = getelementptr inbounds [1 x i32], [1 x i32]* %2, i64 0, i64 0
store i32 1, i32* %41
%42 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %41, i32 1, void (i32*, i32)* %0)
%43 = getelementptr inbounds [2 x i32], [2 x i32]* %3, i64 0, i64 0
store i32 1, i32* %43
%44 = getelementptr inbounds [2 x i32], [2 x i32]* %3, i64 0, i64 1
store i32 2, i32* %44
%45 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %43, i32 2, void (i32*, i32)* %0)
%46 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 0
store i32 2, i32* %46
%47 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 1
store i32 1, i32* %47
%48 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %46, i32 2, void (i32*, i32)* %0)
%49 = getelementptr inbounds [3 x i32], [3 x i32]* %5, i64 0, i64 0
store i32 1, i32* %49
%50 = getelementptr inbounds [3 x i32], [3 x i32]* %5, i64 0, i64 1
store i32 2, i32* %50
%51 = getelementptr inbounds [3 x i32], [3 x i32]* %5, i64 0, i64 2
store i32 3, i32* %51
%52 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %49, i32 3, void (i32*, i32)* %0)
%53 = getelementptr inbounds [3 x i32], [3 x i32]* %6, i64 0, i64 0
store i32 1, i32* %53
%54 = getelementptr inbounds [3 x i32], [3 x i32]* %6, i64 0, i64 1
store i32 3, i32* %54
%55 = getelementptr inbounds [3 x i32], [3 x i32]* %6, i64 0, i64 2
store i32 2, i32* %55
%56 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %53, i32 3, void (i32*, i32)* %0)
%57 = getelementptr inbounds [3 x i32], [3 x i32]* %7, i64 0, i64 0
store i32 2, i32* %57
%58 = getelementptr inbounds [3 x i32], [3 x i32]* %7, i64 0, i64 1
store i32 1, i32* %58
%59 = getelementptr inbounds [3 x i32], [3 x i32]* %7, i64 0, i64 2
store i32 3, i32* %59
%60 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %57, i32 3, void (i32*, i32)* %0)
%61 = getelementptr inbounds [3 x i32], [3 x i32]* %8, i64 0, i64 0
store i32 2, i32* %61
%62 = getelementptr inbounds [3 x i32], [3 x i32]* %8, i64 0, i64 1
store i32 3, i32* %62
%63 = getelementptr inbounds [3 x i32], [3 x i32]* %8, i64 0, i64 2
store i32 1, i32* %63
%64 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %61, i32 3, void (i32*, i32)* %0)
%65 = getelementptr inbounds [3 x i32], [3 x i32]* %9, i64 0, i64 0
store i32 3, i32* %65
%66 = getelementptr inbounds [3 x i32], [3 x i32]* %9, i64 0, i64 1
store i32 1, i32* %66
%67 = getelementptr inbounds [3 x i32], [3 x i32]* %9, i64 0, i64 2
store i32 2, i32* %67
%68 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %65, i32 3, void (i32*, i32)* %0)
%69 = getelementptr inbounds [3 x i32], [3 x i32]* %10, i64 0, i64 0
store i32 3, i32* %69
%70 = getelementptr inbounds [3 x i32], [3 x i32]* %10, i64 0, i64 1
store i32 2, i32* %70
%71 = getelementptr inbounds [3 x i32], [3 x i32]* %10, i64 0, i64 2
store i32 1, i32* %71
%72 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %69, i32 3, void (i32*, i32)* %0)
%73 = getelementptr inbounds <4 x i32>, <4 x i32>* %11, i64 0, i64 0
store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, <4 x i32>* %11
%74 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %73, i32 4, void (i32*, i32)* %0)
%75 = getelementptr inbounds <4 x i32>, <4 x i32>* %12, i64 0, i64 0
store <4 x i32> <i32 1, i32 2, i32 4, i32 3>, <4 x i32>* %12
%76 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %75, i32 4, void (i32*, i32)* %0)
%77 = getelementptr inbounds <4 x i32>, <4 x i32>* %13, i64 0, i64 0
store <4 x i32> <i32 1, i32 3, i32 2, i32 4>, <4 x i32>* %13
%78 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %77, i32 4, void (i32*, i32)* %0)
%79 = getelementptr inbounds <4 x i32>, <4 x i32>* %14, i64 0, i64 0
store <4 x i32> <i32 1, i32 3, i32 4, i32 2>, <4 x i32>* %14
%80 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %79, i32 4, void (i32*, i32)* %0)
%81 = getelementptr inbounds <4 x i32>, <4 x i32>* %15, i64 0, i64 0
store <4 x i32> <i32 1, i32 4, i32 2, i32 3>, <4 x i32>* %15
%82 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %81, i32 4, void (i32*, i32)* %0)
%83 = getelementptr inbounds <4 x i32>, <4 x i32>* %16, i64 0, i64 0
store <4 x i32> <i32 1, i32 4, i32 3, i32 2>, <4 x i32>* %16
%84 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %83, i32 4, void (i32*, i32)* %0)
%85 = bitcast [5 x i32]* %17 to i8*
%86 = getelementptr inbounds [5 x i32], [5 x i32]* %17, i64 0, i64 0
%87 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %86, i32 5, void (i32*, i32)* %0)
%88 = bitcast [5 x i32]* %18 to i8*
%89 = getelementptr inbounds [5 x i32], [5 x i32]* %18, i64 0, i64 0
%90 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %89, i32 5, void (i32*, i32)* %0)
%91 = bitcast [5 x i32]* %19 to i8*
%92 = getelementptr inbounds [5 x i32], [5 x i32]* %19, i64 0, i64 0
%93 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %92, i32 5, void (i32*, i32)* %0)
%94 = bitcast [5 x i32]* %20 to i8*
%95 = getelementptr inbounds [5 x i32], [5 x i32]* %20, i64 0, i64 0
%96 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %95, i32 5, void (i32*, i32)* %0)
%97 = bitcast [5 x i32]* %21 to i8*
%98 = getelementptr inbounds [5 x i32], [5 x i32]* %21, i64 0, i64 0
%99 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %98, i32 5, void (i32*, i32)* %0)
%100 = bitcast [5 x i32]* %22 to i8*
%101 = getelementptr inbounds [5 x i32], [5 x i32]* %22, i64 0, i64 0
%102 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %101, i32 5, void (i32*, i32)* %0)
%103 = bitcast [6 x i32]* %23 to i8*
%104 = getelementptr inbounds [6 x i32], [6 x i32]* %23, i64 0, i64 0
%105 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %104, i32 6, void (i32*, i32)* %0)
%106 = bitcast [6 x i32]* %24 to i8*
%107 = getelementptr inbounds [6 x i32], [6 x i32]* %24, i64 0, i64 0
%108 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %107, i32 6, void (i32*, i32)* %0)
%109 = bitcast [6 x i32]* %25 to i8*
%110 = getelementptr inbounds [6 x i32], [6 x i32]* %25, i64 0, i64 0
%111 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %110, i32 6, void (i32*, i32)* %0)
%112 = bitcast [6 x i32]* %26 to i8*
%113 = getelementptr inbounds [6 x i32], [6 x i32]* %26, i64 0, i64 0
%114 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %113, i32 6, void (i32*, i32)* %0)
%115 = bitcast [6 x i32]* %27 to i8*
%116 = getelementptr inbounds [6 x i32], [6 x i32]* %27, i64 0, i64 0
%117 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %116, i32 6, void (i32*, i32)* %0)
%118 = bitcast [6 x i32]* %28 to i8*
%119 = getelementptr inbounds [6 x i32], [6 x i32]* %28, i64 0, i64 0
%120 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %119, i32 6, void (i32*, i32)* %0)
%121 = bitcast [7 x i32]* %29 to i8*
%122 = getelementptr inbounds [7 x i32], [7 x i32]* %29, i64 0, i64 0
%123 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %122, i32 7, void (i32*, i32)* %0)
%124 = bitcast [7 x i32]* %30 to i8*
%125 = getelementptr inbounds [7 x i32], [7 x i32]* %30, i64 0, i64 0
%126 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %125, i32 7, void (i32*, i32)* %0)
%127 = bitcast [7 x i32]* %31 to i8*
%128 = getelementptr inbounds [7 x i32], [7 x i32]* %31, i64 0, i64 0
%129 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %128, i32 7, void (i32*, i32)* %0)
%130 = bitcast [7 x i32]* %32 to i8*
%131 = getelementptr inbounds [7 x i32], [7 x i32]* %32, i64 0, i64 0
%132 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %131, i32 7, void (i32*, i32)* %0)
%133 = bitcast [7 x i32]* %33 to i8*
%134 = getelementptr inbounds [7 x i32], [7 x i32]* %33, i64 0, i64 0
%135 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %134, i32 7, void (i32*, i32)* %0)
%136 = bitcast [7 x i32]* %34 to i8*
%137 = getelementptr inbounds [7 x i32], [7 x i32]* %34, i64 0, i64 0
%138 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %137, i32 7, void (i32*, i32)* %0)
%139 = bitcast [7 x i32]* %35 to i8*
%140 = getelementptr inbounds [7 x i32], [7 x i32]* %35, i64 0, i64 0
%141 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %140, i32 7, void (i32*, i32)* %0)
%142 = bitcast [7 x i32]* %36 to i8*
%143 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 0
%144 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %143, i32 7, void (i32*, i32)* %0)
%145 = bitcast [7 x i32]* %37 to i8*
%146 = getelementptr inbounds [7 x i32], [7 x i32]* %37, i64 0, i64 0
%147 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %146, i32 7, void (i32*, i32)* %0)
%148 = bitcast [7 x i32]* %38 to i8*
%149 = getelementptr inbounds [7 x i32], [7 x i32]* %38, i64 0, i64 0
%150 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %149, i32 7, void (i32*, i32)* %0)
%151 = bitcast [7 x i32]* %39 to i8*
%152 = getelementptr inbounds [7 x i32], [7 x i32]* %39, i64 0, i64 0
%153 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %152, i32 7, void (i32*, i32)* %0)
%154 = bitcast [7 x i32]* %40 to i8*
%155 = getelementptr inbounds [7 x i32], [7 x i32]* %40, i64 0, i64 0
%156 = call i32 (i32*, i32, void (i32*, i32)*, ...) bitcast (i32 (...)* @testSort to i32 (i32*, i32, void (i32*, i32)*, ...)*)(i32* %155, i32 7, void (i32*, i32)* %0)
%157 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0))
ret void
}