#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ e;
typedef int /*<<< orphan*/ d;
typedef int /*<<< orphan*/ a;

/* Variables and functions */
int /*<<< orphan*/ bubleSort(int *, int);
int /*<<< orphan*/ fastSort(int *, int);
int /*<<< orphan*/ insertSort(int *, int);
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ selectSort(int *, int);
int /*<<< orphan*/ shellSort(int *, int);
int main() {
  int a[] = {1,  5,  2,  4,  7,  9,  11, 3,  4, 56,
             34, 12, 32, 14, 17, 23, 26, 78, 91};
  int len = sizeof(a) / sizeof(int);
  insertSort(a, len);
  for (int i = 0; i < len; ++i)
    printf("%d ", a[i]);
  printf("\n%d\n", len);
  int b[] = {1,  5,  2,  4,  7,  9,  11, 3,  4, 56,
             34, 12, 32, 14, 17, 23, 26, 78, 91};
  selectSort(b, len);
  for (int i = 0; i < len; ++i)
    printf("%d ", b[i]);
  printf("\n%d\n", len);
  int c[] = {1,  5,  2,  4,  7,  9,  11, 3,  4, 56,
             34, 12, 32, 14, 17, 23, 26, 78, 91};
  bubleSort(c, len);
  for (int i = 0; i < len; ++i)
    printf("%d ", c[i]);
  printf("\n%d\n", len);
  int d[] = {1,  5,  2,  4,  7,  9,  11, 3,  4,  56, 34, 12,
             32, 14, 17, 23, 26, 78, 91, 19, 29, 46, 58, 59};
  len = sizeof(d) / sizeof(int);
  fastSort(d, len);
  for (int i = 0; i < len; ++i)
    printf("%d ", d[i]);
  printf("\n%d\n", len);
  int e[] = {1,  5,  2,  4,  7,  9,  11, 3,  4,  56, 34, 12,
             32, 14, 17, 23, 26, 78, 91, 19, 29, 46, 58, 59};
  len = sizeof(e) / sizeof(int);
  shellSort(e, len);
  for (int i = 0; i < len; ++i)
    printf("%d ", e[i]);
  printf("\n%d\n", len);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1f0,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x50(%rbp),%rdi
lea    0xe73(%rip),%rsi
mov    $0x4c,%edx
call   1070 <memcpy@plt>
movl   $0x13,-0x54(%rbp)
lea    -0x50(%rbp),%rdi
mov    -0x54(%rbp),%esi
call   1050 <insertSort@plt>
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    11df <main+0x6f>
movslq -0x58(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%esi
lea    0xfe4(%rip),%rdi
call   1060 <printf@plt>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    11b1 <main+0x41>
mov    -0x54(%rbp),%esi
lea    0xfcb(%rip),%rdi
call   1060 <printf@plt>
lea    -0xb0(%rbp),%rdi
lea    0xe54(%rip),%rsi
mov    $0x4c,%edx
call   1070 <memcpy@plt>
lea    -0xb0(%rbp),%rdi
mov    -0x54(%rbp),%esi
call   1080 <selectSort@plt>
movl   $0x0,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    125c <main+0xec>
movslq -0xb4(%rbp),%rax
mov    -0xb0(%rbp,%rax,4),%esi
lea    0xf6d(%rip),%rdi
call   1060 <printf@plt>
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    121f <main+0xaf>
mov    -0x54(%rbp),%esi
lea    0xf4e(%rip),%rdi
call   1060 <printf@plt>
lea    -0x100(%rbp),%rdi
lea    0xe27(%rip),%rsi
mov    $0x4c,%edx
call   1070 <memcpy@plt>
lea    -0x100(%rbp),%rdi
mov    -0x54(%rbp),%esi
call   1030 <bubleSort@plt>
movl   $0x0,-0x104(%rbp)
mov    -0x104(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    12d9 <main+0x169>
movslq -0x104(%rbp),%rax
mov    -0x100(%rbp,%rax,4),%esi
lea    0xef0(%rip),%rdi
call   1060 <printf@plt>
mov    -0x104(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x104(%rbp)
jmp    129c <main+0x12c>
mov    -0x54(%rbp),%esi
lea    0xed1(%rip),%rdi
call   1060 <printf@plt>
lea    -0x170(%rbp),%rdi
lea    0xdfa(%rip),%rsi
mov    $0x60,%edx
call   1070 <memcpy@plt>
movl   $0x18,-0x54(%rbp)
lea    -0x170(%rbp),%rdi
mov    -0x54(%rbp),%esi
call   1090 <fastSort@plt>
movl   $0x0,-0x174(%rbp)
mov    -0x174(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    135d <main+0x1ed>
movslq -0x174(%rbp),%rax
mov    -0x170(%rbp,%rax,4),%esi
lea    0xe6c(%rip),%rdi
call   1060 <printf@plt>
mov    -0x174(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x174(%rbp)
jmp    1320 <main+0x1b0>
mov    -0x54(%rbp),%esi
lea    0xe4d(%rip),%rdi
call   1060 <printf@plt>
lea    -0x1e0(%rbp),%rdi
lea    0xdd6(%rip),%rsi
mov    $0x60,%edx
call   1070 <memcpy@plt>
movl   $0x18,-0x54(%rbp)
lea    -0x1e0(%rbp),%rdi
mov    -0x54(%rbp),%esi
call   1040 <shellSort@plt>
movl   $0x0,-0x1e4(%rbp)
mov    -0x1e4(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    13e1 <main+0x271>
movslq -0x1e4(%rbp),%rax
mov    -0x1e0(%rbp,%rax,4),%esi
lea    0xde8(%rip),%rdi
call   1060 <printf@plt>
mov    -0x1e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1e4(%rbp)
jmp    13a4 <main+0x234>
mov    -0x54(%rbp),%esi
lea    0xdc9(%rip),%rdi
call   1060 <printf@plt>
xor    %eax,%eax
add    $0x1f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x1b8,%rsp
movups 0xedb(%rip),%xmm0
movups %xmm0,0xdc(%rsp)
movaps 0xec0(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xea1(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xe82(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xe63(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
lea    0xa0(%rsp),%rdi
mov    $0x13,%esi
call   1050 <insertSort@plt>
mov    0xa0(%rsp),%esi
lea    0xe2b(%rip),%rbx
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xa4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xa8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xac(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xb0(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xb4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xb8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xbc(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xc0(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xc4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xc8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xcc(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xd0(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xd4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xd8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xdc(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xe0(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xe4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xe8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
lea    0xd12(%rip),%r14
mov    %r14,%rdi
mov    $0x13,%esi
call   1060 <printf@plt>
movups 0xd46(%rip),%xmm0
movups %xmm0,0x8c(%rsp)
movaps 0xd2b(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xd0c(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xcf0(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xcd4(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
lea    0x50(%rsp),%rdi
mov    $0x13,%esi
call   1070 <selectSort@plt>
mov    0x50(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x54(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x58(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x5c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x60(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x64(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x68(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x6c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x70(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x74(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x78(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x7c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x80(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x84(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x88(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x8c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x90(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x94(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x98(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    %r14,%rdi
mov    $0x13,%esi
call   1060 <printf@plt>
movups 0xbef(%rip),%xmm0
movups %xmm0,0x3c(%rsp)
movaps 0xbd7(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xbbb(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xb9f(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xb83(%rip),%xmm0
movaps %xmm0,(%rsp)
mov    %rsp,%rdi
mov    $0x13,%esi
call   1030 <bubleSort@plt>
mov    (%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xc(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x10(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x14(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x18(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x1c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x20(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x24(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x28(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x2c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x30(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x34(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x38(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x3c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x40(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x44(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x48(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    %r14,%rdi
mov    $0x13,%esi
call   1060 <printf@plt>
movaps 0xb1b(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0xafc(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0xadd(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movaps 0xabe(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0xa9f(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0xa80(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
lea    0x150(%rsp),%rdi
mov    $0x18,%esi
call   1080 <fastSort@plt>
mov    0x150(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x154(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x158(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x15c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x160(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x164(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x168(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x16c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x170(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x174(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x178(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x17c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x180(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x184(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x188(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x18c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x190(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x194(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x198(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x19c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x1a0(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x1a4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x1a8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x1ac(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    %r14,%rdi
mov    $0x18,%esi
call   1060 <printf@plt>
movaps 0x93a(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0x91b(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0x8fc(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x8dd(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0x8be(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0x89f(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
lea    0xf0(%rsp),%rdi
mov    $0x18,%esi
call   1040 <shellSort@plt>
mov    0xf0(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xf4(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xf8(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0xfc(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x100(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x104(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x108(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x10c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x110(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x114(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x118(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x11c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x120(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x124(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x128(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x12c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x130(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x134(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x138(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x13c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x140(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x144(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x148(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    0x14c(%rsp),%esi
mov    %rbx,%rdi
call   1060 <printf@plt>
mov    %r14,%rdi
mov    $0x18,%esi
call   1060 <printf@plt>
xor    %eax,%eax
add    $0x1b8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@__const.main.a = [19 x i32] [i32 1, i32 5, i32 2, i32 4, i32 7, i32 9, i32 11, i32 3, i32 4, i32 56, i32 34, i32 12, i32 32, i32 14, i32 17, i32 23, i32 26, i32 78, i32 91]
@.str = [4 x i8] c"%d \00"
@.str.1 = [5 x i8] c"\0A%d\0A\00"
@__const.main.b = [19 x i32] [i32 1, i32 5, i32 2, i32 4, i32 7, i32 9, i32 11, i32 3, i32 4, i32 56, i32 34, i32 12, i32 32, i32 14, i32 17, i32 23, i32 26, i32 78, i32 91]
@__const.main.c = [19 x i32] [i32 1, i32 5, i32 2, i32 4, i32 7, i32 9, i32 11, i32 3, i32 4, i32 56, i32 34, i32 12, i32 32, i32 14, i32 17, i32 23, i32 26, i32 78, i32 91]
@__const.main.d = [24 x i32] [i32 1, i32 5, i32 2, i32 4, i32 7, i32 9, i32 11, i32 3, i32 4, i32 56, i32 34, i32 12, i32 32, i32 14, i32 17, i32 23, i32 26, i32 78, i32 91, i32 19, i32 29, i32 46, i32 58, i32 59]
@__const.main.e = [24 x i32] [i32 1, i32 5, i32 2, i32 4, i32 7, i32 9, i32 11, i32 3, i32 4, i32 56, i32 34, i32 12, i32 32, i32 14, i32 17, i32 23, i32 26, i32 78, i32 91, i32 19, i32 29, i32 46, i32 58, i32 59]
define i32 @main() {
%1 = alloca i32
%2 = alloca [19 x i32]
%3 = alloca i32
%4 = alloca i32
%5 = alloca [19 x i32]
%6 = alloca i32
%7 = alloca [19 x i32]
%8 = alloca i32
%9 = alloca [24 x i32]
%10 = alloca i32
%11 = alloca [24 x i32]
%12 = alloca i32
store i32 0, i32* %1
%13 = bitcast [19 x i32]* %2 to i8*
store i32 19, i32* %3
%14 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 0
%15 = load i32, i32* %3
%16 = call i32 @insertSort(i32* %14, i32 %15)
store i32 0, i32* %4
br label %17
17: ; preds = %27, %0
%18 = load i32, i32* %4
%19 = load i32, i32* %3
%20 = icmp slt i32 %18, %19
br i1 %20, label %21, label %30
21: ; preds = %17
%22 = load i32, i32* %4
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 %23
%25 = load i32, i32* %24
%26 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %25)
br label %27
27: ; preds = %21
%28 = load i32, i32* %4
%29 = add nsw i32 %28, 1
store i32 %29, i32* %4
br label %17
30: ; preds = %17
%31 = load i32, i32* %3
%32 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %31)
%33 = bitcast [19 x i32]* %5 to i8*
%34 = getelementptr inbounds [19 x i32], [19 x i32]* %5, i64 0, i64 0
%35 = load i32, i32* %3
%36 = call i32 @selectSort(i32* %34, i32 %35)
store i32 0, i32* %6
br label %37
37: ; preds = %47, %30
%38 = load i32, i32* %6
%39 = load i32, i32* %3
%40 = icmp slt i32 %38, %39
br i1 %40, label %41, label %50
41: ; preds = %37
%42 = load i32, i32* %6
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds [19 x i32], [19 x i32]* %5, i64 0, i64 %43
%45 = load i32, i32* %44
%46 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %45)
br label %47
47: ; preds = %41
%48 = load i32, i32* %6
%49 = add nsw i32 %48, 1
store i32 %49, i32* %6
br label %37
50: ; preds = %37
%51 = load i32, i32* %3
%52 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %51)
%53 = bitcast [19 x i32]* %7 to i8*
%54 = getelementptr inbounds [19 x i32], [19 x i32]* %7, i64 0, i64 0
%55 = load i32, i32* %3
%56 = call i32 @bubleSort(i32* %54, i32 %55)
store i32 0, i32* %8
br label %57
57: ; preds = %67, %50
%58 = load i32, i32* %8
%59 = load i32, i32* %3
%60 = icmp slt i32 %58, %59
br i1 %60, label %61, label %70
61: ; preds = %57
%62 = load i32, i32* %8
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [19 x i32], [19 x i32]* %7, i64 0, i64 %63
%65 = load i32, i32* %64
%66 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %65)
br label %67
67: ; preds = %61
%68 = load i32, i32* %8
%69 = add nsw i32 %68, 1
store i32 %69, i32* %8
br label %57
70: ; preds = %57
%71 = load i32, i32* %3
%72 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %71)
%73 = bitcast [24 x i32]* %9 to i8*
store i32 24, i32* %3
%74 = getelementptr inbounds [24 x i32], [24 x i32]* %9, i64 0, i64 0
%75 = load i32, i32* %3
%76 = call i32 @fastSort(i32* %74, i32 %75)
store i32 0, i32* %10
br label %77
77: ; preds = %87, %70
%78 = load i32, i32* %10
%79 = load i32, i32* %3
%80 = icmp slt i32 %78, %79
br i1 %80, label %81, label %90
81: ; preds = %77
%82 = load i32, i32* %10
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds [24 x i32], [24 x i32]* %9, i64 0, i64 %83
%85 = load i32, i32* %84
%86 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %85)
br label %87
87: ; preds = %81
%88 = load i32, i32* %10
%89 = add nsw i32 %88, 1
store i32 %89, i32* %10
br label %77
90: ; preds = %77
%91 = load i32, i32* %3
%92 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %91)
%93 = bitcast [24 x i32]* %11 to i8*
store i32 24, i32* %3
%94 = getelementptr inbounds [24 x i32], [24 x i32]* %11, i64 0, i64 0
%95 = load i32, i32* %3
%96 = call i32 @shellSort(i32* %94, i32 %95)
store i32 0, i32* %12
br label %97
97: ; preds = %107, %90
%98 = load i32, i32* %12
%99 = load i32, i32* %3
%100 = icmp slt i32 %98, %99
br i1 %100, label %101, label %110
101: ; preds = %97
%102 = load i32, i32* %12
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds [24 x i32], [24 x i32]* %11, i64 0, i64 %103
%105 = load i32, i32* %104
%106 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %105)
br label %107
107: ; preds = %101
%108 = load i32, i32* %12
%109 = add nsw i32 %108, 1
store i32 %109, i32* %12
br label %97
110: ; preds = %97
%111 = load i32, i32* %3
%112 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %111)
ret i32 0
}

LLVM IR (-O2):
@.str = [4 x i8] c"%d \00"
@.str.1 = [5 x i8] c"\0A%d\0A\00"
@__const.main.c = [19 x i32] [i32 1, i32 5, i32 2, i32 4, i32 7, i32 9, i32 11, i32 3, i32 4, i32 56, i32 34, i32 12, i32 32, i32 14, i32 17, i32 23, i32 26, i32 78, i32 91]
@__const.main.e = [24 x i32] [i32 1, i32 5, i32 2, i32 4, i32 7, i32 9, i32 11, i32 3, i32 4, i32 56, i32 34, i32 12, i32 32, i32 14, i32 17, i32 23, i32 26, i32 78, i32 91, i32 19, i32 29, i32 46, i32 58, i32 59]
define i32 @main() {
%1 = alloca [19 x i32]
%2 = alloca [19 x i32]
%3 = alloca [19 x i32]
%4 = alloca [24 x i32]
%5 = alloca [24 x i32]
%6 = bitcast [19 x i32]* %1 to i8*
%7 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 0
%8 = call i32 @insertSort(i32* %7, i32 19)
%9 = load i32, i32* %7
%10 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %9)
%11 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 1
%12 = load i32, i32* %11
%13 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %12)
%14 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 2
%15 = load i32, i32* %14
%16 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %15)
%17 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 3
%18 = load i32, i32* %17
%19 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %18)
%20 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 4
%21 = load i32, i32* %20
%22 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %21)
%23 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 5
%24 = load i32, i32* %23
%25 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %24)
%26 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 6
%27 = load i32, i32* %26
%28 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %27)
%29 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 7
%30 = load i32, i32* %29
%31 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %30)
%32 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 8
%33 = load i32, i32* %32
%34 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %33)
%35 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 9
%36 = load i32, i32* %35
%37 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %36)
%38 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 10
%39 = load i32, i32* %38
%40 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %39)
%41 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 11
%42 = load i32, i32* %41
%43 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %42)
%44 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 12
%45 = load i32, i32* %44
%46 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %45)
%47 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 13
%48 = load i32, i32* %47
%49 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %48)
%50 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 14
%51 = load i32, i32* %50
%52 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %51)
%53 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 15
%54 = load i32, i32* %53
%55 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %54)
%56 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 16
%57 = load i32, i32* %56
%58 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %57)
%59 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 17
%60 = load i32, i32* %59
%61 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %60)
%62 = getelementptr inbounds [19 x i32], [19 x i32]* %1, i64 0, i64 18
%63 = load i32, i32* %62
%64 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %63)
%65 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 19)
%66 = bitcast [19 x i32]* %2 to i8*
%67 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 0
%68 = call i32 @selectSort(i32* %67, i32 19)
%69 = load i32, i32* %67
%70 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %69)
%71 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 1
%72 = load i32, i32* %71
%73 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %72)
%74 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 2
%75 = load i32, i32* %74
%76 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %75)
%77 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 3
%78 = load i32, i32* %77
%79 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %78)
%80 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 4
%81 = load i32, i32* %80
%82 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %81)
%83 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 5
%84 = load i32, i32* %83
%85 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %84)
%86 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 6
%87 = load i32, i32* %86
%88 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %87)
%89 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 7
%90 = load i32, i32* %89
%91 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %90)
%92 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 8
%93 = load i32, i32* %92
%94 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %93)
%95 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 9
%96 = load i32, i32* %95
%97 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %96)
%98 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 10
%99 = load i32, i32* %98
%100 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %99)
%101 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 11
%102 = load i32, i32* %101
%103 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %102)
%104 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 12
%105 = load i32, i32* %104
%106 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %105)
%107 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 13
%108 = load i32, i32* %107
%109 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %108)
%110 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 14
%111 = load i32, i32* %110
%112 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %111)
%113 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 15
%114 = load i32, i32* %113
%115 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %114)
%116 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 16
%117 = load i32, i32* %116
%118 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %117)
%119 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 17
%120 = load i32, i32* %119
%121 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %120)
%122 = getelementptr inbounds [19 x i32], [19 x i32]* %2, i64 0, i64 18
%123 = load i32, i32* %122
%124 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %123)
%125 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 19)
%126 = bitcast [19 x i32]* %3 to i8*
%127 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 0
%128 = call i32 @bubleSort(i32* %127, i32 19)
%129 = load i32, i32* %127
%130 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %129)
%131 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 1
%132 = load i32, i32* %131
%133 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %132)
%134 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 2
%135 = load i32, i32* %134
%136 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %135)
%137 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 3
%138 = load i32, i32* %137
%139 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %138)
%140 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 4
%141 = load i32, i32* %140
%142 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %141)
%143 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 5
%144 = load i32, i32* %143
%145 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %144)
%146 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 6
%147 = load i32, i32* %146
%148 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %147)
%149 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 7
%150 = load i32, i32* %149
%151 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %150)
%152 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 8
%153 = load i32, i32* %152
%154 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %153)
%155 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 9
%156 = load i32, i32* %155
%157 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %156)
%158 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 10
%159 = load i32, i32* %158
%160 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %159)
%161 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 11
%162 = load i32, i32* %161
%163 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %162)
%164 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 12
%165 = load i32, i32* %164
%166 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %165)
%167 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 13
%168 = load i32, i32* %167
%169 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %168)
%170 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 14
%171 = load i32, i32* %170
%172 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %171)
%173 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 15
%174 = load i32, i32* %173
%175 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %174)
%176 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 16
%177 = load i32, i32* %176
%178 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %177)
%179 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 17
%180 = load i32, i32* %179
%181 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %180)
%182 = getelementptr inbounds [19 x i32], [19 x i32]* %3, i64 0, i64 18
%183 = load i32, i32* %182
%184 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %183)
%185 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 19)
%186 = bitcast [24 x i32]* %4 to i8*
%187 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 0
%188 = call i32 @fastSort(i32* %187, i32 24)
%189 = load i32, i32* %187
%190 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %189)
%191 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 1
%192 = load i32, i32* %191
%193 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %192)
%194 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 2
%195 = load i32, i32* %194
%196 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %195)
%197 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 3
%198 = load i32, i32* %197
%199 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %198)
%200 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 4
%201 = load i32, i32* %200
%202 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %201)
%203 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 5
%204 = load i32, i32* %203
%205 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %204)
%206 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 6
%207 = load i32, i32* %206
%208 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %207)
%209 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 7
%210 = load i32, i32* %209
%211 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %210)
%212 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 8
%213 = load i32, i32* %212
%214 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %213)
%215 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 9
%216 = load i32, i32* %215
%217 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %216)
%218 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 10
%219 = load i32, i32* %218
%220 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %219)
%221 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 11
%222 = load i32, i32* %221
%223 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %222)
%224 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 12
%225 = load i32, i32* %224
%226 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %225)
%227 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 13
%228 = load i32, i32* %227
%229 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %228)
%230 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 14
%231 = load i32, i32* %230
%232 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %231)
%233 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 15
%234 = load i32, i32* %233
%235 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %234)
%236 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 16
%237 = load i32, i32* %236
%238 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %237)
%239 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 17
%240 = load i32, i32* %239
%241 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %240)
%242 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 18
%243 = load i32, i32* %242
%244 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %243)
%245 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 19
%246 = load i32, i32* %245
%247 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %246)
%248 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 20
%249 = load i32, i32* %248
%250 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %249)
%251 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 21
%252 = load i32, i32* %251
%253 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %252)
%254 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 22
%255 = load i32, i32* %254
%256 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %255)
%257 = getelementptr inbounds [24 x i32], [24 x i32]* %4, i64 0, i64 23
%258 = load i32, i32* %257
%259 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %258)
%260 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 24)
%261 = bitcast [24 x i32]* %5 to i8*
%262 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 0
%263 = call i32 @shellSort(i32* %262, i32 24)
%264 = load i32, i32* %262
%265 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %264)
%266 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 1
%267 = load i32, i32* %266
%268 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %267)
%269 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 2
%270 = load i32, i32* %269
%271 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %270)
%272 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 3
%273 = load i32, i32* %272
%274 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %273)
%275 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 4
%276 = load i32, i32* %275
%277 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %276)
%278 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 5
%279 = load i32, i32* %278
%280 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %279)
%281 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 6
%282 = load i32, i32* %281
%283 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %282)
%284 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 7
%285 = load i32, i32* %284
%286 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %285)
%287 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 8
%288 = load i32, i32* %287
%289 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %288)
%290 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 9
%291 = load i32, i32* %290
%292 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %291)
%293 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 10
%294 = load i32, i32* %293
%295 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %294)
%296 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 11
%297 = load i32, i32* %296
%298 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %297)
%299 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 12
%300 = load i32, i32* %299
%301 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %300)
%302 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 13
%303 = load i32, i32* %302
%304 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %303)
%305 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 14
%306 = load i32, i32* %305
%307 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %306)
%308 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 15
%309 = load i32, i32* %308
%310 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %309)
%311 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 16
%312 = load i32, i32* %311
%313 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %312)
%314 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 17
%315 = load i32, i32* %314
%316 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %315)
%317 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 18
%318 = load i32, i32* %317
%319 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %318)
%320 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 19
%321 = load i32, i32* %320
%322 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %321)
%323 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 20
%324 = load i32, i32* %323
%325 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %324)
%326 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 21
%327 = load i32, i32* %326
%328 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %327)
%329 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 22
%330 = load i32, i32* %329
%331 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %330)
%332 = getelementptr inbounds [24 x i32], [24 x i32]* %5, i64 0, i64 23
%333 = load i32, i32* %332
%334 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %333)
%335 = call i32 @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 24)
ret i32 0
}