void testQSort() {
  testQSort_((char *[]){"asdfd);", "tabloid", "elapid", "venomous", "curtain",
                        "applicable", "applicable", "innovative", "nest"},
             (int[]){5, 6, 0, 4, 2, 7, 8, 1, 3}, 9);
  testQSort_((char *[]){"1", "2", "5", "3", "4"}, (int[]){0, 1, 3, 4, 2}, 5);
  testQSort_((char *[]){"4", "2", "3", "1"}, (int[]){3, 1, 2, 0}, 4);
  testQSort_((char *[]){"1", "2", "1", "1"}, (int[]){0, 2, 3, 1}, 4);
  testQSort_((char *[]){"1", "2", "1", "1", "2", "1", "2", "2", "1", "1", "2"},
             (int[]){0, 2, 3, 5, 8, 9, 1, 4, 6, 7, 10}, 11);
}


x86 assembly (clang, -O0):
<testQSort>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1b0,%rsp
lea    -0x48(%rbp),%rdi
lea    0x2efa(%rip),%rsi
mov    $0x48,%edx
call   1040 <memcpy@plt>
lea    -0x48(%rbp),%rax
mov    %rax,-0x1a8(%rbp)
lea    -0x6c(%rbp),%rdi
lea    0x2f22(%rip),%rsi
mov    $0x24,%edx
call   1040 <memcpy@plt>
mov    -0x1a8(%rbp),%rdi
lea    -0x6c(%rbp),%rsi
mov    $0x9,%edx
mov    $0x0,%al
call   1030 <testQSort_@plt>
lea    -0x98(%rbp),%rdi
lea    0x2f1b(%rip),%rsi
mov    $0x28,%edx
call   1040 <memcpy@plt>
lea    -0x98(%rbp),%rdi
mov    0x2f2b(%rip),%rax
mov    %rax,-0xac(%rbp)
mov    0x2f25(%rip),%rax
mov    %rax,-0xa4(%rbp)
mov    0x2f20(%rip),%eax
mov    %eax,-0x9c(%rbp)
lea    -0xac(%rbp),%rsi
mov    $0x5,%edx
mov    $0x0,%al
call   1030 <testQSort_@plt>
mov    0x2f08(%rip),%rax
mov    %rax,-0xd0(%rbp)
mov    0x2f02(%rip),%rax
mov    %rax,-0xc8(%rbp)
mov    0x2efc(%rip),%rax
mov    %rax,-0xc0(%rbp)
mov    0x2ef6(%rip),%rax
mov    %rax,-0xb8(%rbp)
lea    -0xd0(%rbp),%rdi
movl   $0x3,-0xe0(%rbp)
movl   $0x1,-0xdc(%rbp)
movl   $0x2,-0xd8(%rbp)
movl   $0x0,-0xd4(%rbp)
lea    -0xe0(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1030 <testQSort_@plt>
mov    0x2eae(%rip),%rax
mov    %rax,-0x100(%rbp)
mov    0x2ea8(%rip),%rax
mov    %rax,-0xf8(%rbp)
mov    0x2ea2(%rip),%rax
mov    %rax,-0xf0(%rbp)
mov    0x2e9c(%rip),%rax
mov    %rax,-0xe8(%rbp)
lea    -0x100(%rbp),%rdi
movl   $0x0,-0x110(%rbp)
movl   $0x2,-0x10c(%rbp)
movl   $0x3,-0x108(%rbp)
movl   $0x1,-0x104(%rbp)
lea    -0x110(%rbp),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1030 <testQSort_@plt>
lea    -0x168(%rbp),%rdi
lea    0x2e4d(%rip),%rsi
mov    $0x58,%edx
call   1040 <memcpy@plt>
lea    -0x168(%rbp),%rax
mov    %rax,-0x1a0(%rbp)
lea    -0x194(%rbp),%rdi
lea    0x2e7f(%rip),%rsi
mov    $0x2c,%edx
call   1040 <memcpy@plt>
mov    -0x1a0(%rbp),%rdi
lea    -0x194(%rbp),%rsi
mov    $0xb,%edx
mov    $0x0,%al
call   1030 <testQSort_@plt>
add    $0x1b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<testQSort>:
sub    $0x1b8,%rsp
mov    0x2c3a(%rip),%rax
mov    %rax,0x150(%rsp)
movups 0x2c1b(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movups 0x2bfc(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movups 0x2bdd(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movups 0x2bbe(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movups 0xf07(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movups 0xf0b(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
mov    0xf10(%rip),%eax
mov    %eax,0x60(%rsp)
lea    0x110(%rsp),%rdi
lea    0x40(%rsp),%rsi
mov    $0x9,%edx
xor    %eax,%eax
call   1030 <testQSort_@plt>
movups 0x2bbc(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movups 0x2bc0(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
mov    0x2bc1(%rip),%rax
mov    %rax,0x90(%rsp)
movups 0xec6(%rip),%xmm0
movaps %xmm0,(%rsp)
mov    0xecc(%rip),%eax
mov    %eax,0x10(%rsp)
lea    0x70(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x5,%edx
xor    %eax,%eax
call   1030 <testQSort_@plt>
movups 0x2b91(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movups 0x2b92(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xdeb(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
lea    0xc0(%rsp),%rdi
lea    0x30(%rsp),%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   1030 <testQSort_@plt>
movups 0x2b6e(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movups 0x2b6f(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xdb8(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
lea    0xa0(%rsp),%rdi
lea    0x20(%rsp),%rsi
mov    $0x4,%edx
xor    %eax,%eax
call   1030 <testQSort_@plt>
movups 0x2b4b(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movups 0x2b4c(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movups 0x2b4d(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movups 0x2b4e(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movups 0x2b4f(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
mov    0x2b50(%rip),%rax
mov    %rax,0x1b0(%rsp)
movups 0xdd1(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movups 0xdd2(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movups 0xdcf(%rip),%xmm0
movups %xmm0,0xfc(%rsp)
lea    0x160(%rsp),%rdi
lea    0xe0(%rsp),%rsi
mov    $0xb,%edx
xor    %eax,%eax
call   1030 <testQSort_@plt>
add    $0x1b8,%rsp
ret

LLVM IR (-O0):
@.str = [8 x i8] c"asdfd);\00"
@.str.1 = [8 x i8] c"tabloid\00"
@.str.2 = [7 x i8] c"elapid\00"
@.str.3 = [9 x i8] c"venomous\00"
@.str.4 = [8 x i8] c"curtain\00"
@.str.5 = [11 x i8] c"applicable\00"
@.str.6 = [11 x i8] c"innovative\00"
@.str.7 = [5 x i8] c"nest\00"
@constinit = private global [9 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i32 0, i32 0)]
@constinit.8 = private global [9 x i32] [i32 5, i32 6, i32 0, i32 4, i32 2, i32 7, i32 8, i32 1, i32 3]
@.str.9 = [2 x i8] c"1\00"
@.str.10 = [2 x i8] c"2\00"
@.str.11 = [2 x i8] c"5\00"
@.str.12 = [2 x i8] c"3\00"
@.str.13 = [2 x i8] c"4\00"
@constinit.14 = private global [5 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i32 0, i32 0)]
@constinit.15 = private global [5 x i32] [i32 0, i32 1, i32 3, i32 4, i32 2]
@constinit.16 = private global [4 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0)]
@constinit.17 = private global [4 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0)]
@constinit.18 = private global [11 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0)]
@constinit.19 = private global [11 x i32] [i32 0, i32 2, i32 3, i32 5, i32 8, i32 9, i32 1, i32 4, i32 6, i32 7, i32 10]
define void @testQSort() {
%1 = alloca [9 x i8*]
%2 = alloca [9 x i32]
%3 = alloca [5 x i8*]
%4 = alloca [5 x i32]
%5 = alloca [4 x i8*]
%6 = alloca [4 x i32]
%7 = alloca [4 x i8*]
%8 = alloca [4 x i32]
%9 = alloca [11 x i8*]
%10 = alloca [11 x i32]
%11 = getelementptr inbounds [9 x i8*], [9 x i8*]* %1, i64 0, i64 0
%12 = bitcast [9 x i8*]* %1 to i8*
%13 = getelementptr inbounds [9 x i8*], [9 x i8*]* %1, i64 0, i64 0
%14 = getelementptr inbounds [9 x i32], [9 x i32]* %2, i64 0, i64 0
%15 = bitcast [9 x i32]* %2 to i8*
%16 = getelementptr inbounds [9 x i32], [9 x i32]* %2, i64 0, i64 0
%17 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %13, i32* %16, i32 9)
%18 = getelementptr inbounds [5 x i8*], [5 x i8*]* %3, i64 0, i64 0
%19 = bitcast [5 x i8*]* %3 to i8*
%20 = getelementptr inbounds [5 x i8*], [5 x i8*]* %3, i64 0, i64 0
%21 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 0
%22 = bitcast [5 x i32]* %4 to i8*
%23 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 0
%24 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %20, i32* %23, i32 5)
%25 = getelementptr inbounds [4 x i8*], [4 x i8*]* %5, i64 0, i64 0
%26 = bitcast [4 x i8*]* %5 to i8*
%27 = getelementptr inbounds [4 x i8*], [4 x i8*]* %5, i64 0, i64 0
%28 = getelementptr inbounds [4 x i32], [4 x i32]* %6, i64 0, i64 0
store i32 3, i32* %28
%29 = getelementptr inbounds i32, i32* %28, i64 1
store i32 1, i32* %29
%30 = getelementptr inbounds i32, i32* %29, i64 1
store i32 2, i32* %30
%31 = getelementptr inbounds i32, i32* %30, i64 1
store i32 0, i32* %31
%32 = getelementptr inbounds [4 x i32], [4 x i32]* %6, i64 0, i64 0
%33 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %27, i32* %32, i32 4)
%34 = getelementptr inbounds [4 x i8*], [4 x i8*]* %7, i64 0, i64 0
%35 = bitcast [4 x i8*]* %7 to i8*
%36 = getelementptr inbounds [4 x i8*], [4 x i8*]* %7, i64 0, i64 0
%37 = getelementptr inbounds [4 x i32], [4 x i32]* %8, i64 0, i64 0
store i32 0, i32* %37
%38 = getelementptr inbounds i32, i32* %37, i64 1
store i32 2, i32* %38
%39 = getelementptr inbounds i32, i32* %38, i64 1
store i32 3, i32* %39
%40 = getelementptr inbounds i32, i32* %39, i64 1
store i32 1, i32* %40
%41 = getelementptr inbounds [4 x i32], [4 x i32]* %8, i64 0, i64 0
%42 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %36, i32* %41, i32 4)
%43 = getelementptr inbounds [11 x i8*], [11 x i8*]* %9, i64 0, i64 0
%44 = bitcast [11 x i8*]* %9 to i8*
%45 = getelementptr inbounds [11 x i8*], [11 x i8*]* %9, i64 0, i64 0
%46 = getelementptr inbounds [11 x i32], [11 x i32]* %10, i64 0, i64 0
%47 = bitcast [11 x i32]* %10 to i8*
%48 = getelementptr inbounds [11 x i32], [11 x i32]* %10, i64 0, i64 0
%49 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %45, i32* %48, i32 11)
ret void
}

LLVM IR (-O2):
@.str = [8 x i8] c"asdfd);\00"
@.str.1 = [8 x i8] c"tabloid\00"
@.str.2 = [7 x i8] c"elapid\00"
@.str.3 = [9 x i8] c"venomous\00"
@.str.4 = [8 x i8] c"curtain\00"
@.str.5 = [11 x i8] c"applicable\00"
@.str.6 = [11 x i8] c"innovative\00"
@.str.7 = [5 x i8] c"nest\00"
@constinit = [9 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i32 0, i32 0)]
@constinit.8 = [9 x i32] [i32 5, i32 6, i32 0, i32 4, i32 2, i32 7, i32 8, i32 1, i32 3]
@.str.9 = [2 x i8] c"1\00"
@.str.10 = [2 x i8] c"2\00"
@.str.11 = [2 x i8] c"5\00"
@.str.12 = [2 x i8] c"3\00"
@.str.13 = [2 x i8] c"4\00"
@constinit.14 = [5 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i32 0, i32 0)]
@constinit.15 = [5 x i32] [i32 0, i32 1, i32 3, i32 4, i32 2]
@constinit.16 = [4 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0)]
@constinit.17 = [4 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0)]
@constinit.18 = [11 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i32 0, i32 0)]
@constinit.19 = [11 x i32] [i32 0, i32 2, i32 3, i32 5, i32 8, i32 9, i32 1, i32 4, i32 6, i32 7, i32 10]
define void @testQSort() {
%1 = alloca [9 x i8*]
%2 = alloca [9 x i32]
%3 = alloca [5 x i8*]
%4 = alloca [5 x i32]
%5 = alloca [4 x i8*]
%6 = alloca <4 x i32>
%7 = alloca [4 x i8*]
%8 = alloca <4 x i32>
%9 = alloca [11 x i8*]
%10 = alloca [11 x i32]
%11 = bitcast [9 x i8*]* %1 to i8*
%12 = getelementptr inbounds [9 x i8*], [9 x i8*]* %1, i64 0, i64 0
%13 = bitcast [9 x i32]* %2 to i8*
%14 = getelementptr inbounds [9 x i32], [9 x i32]* %2, i64 0, i64 0
%15 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %12, i32* %14, i32 9)
%16 = bitcast [5 x i8*]* %3 to i8*
%17 = getelementptr inbounds [5 x i8*], [5 x i8*]* %3, i64 0, i64 0
%18 = bitcast [5 x i32]* %4 to i8*
%19 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 0
%20 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %17, i32* %19, i32 5)
%21 = bitcast [4 x i8*]* %5 to i8*
%22 = getelementptr inbounds [4 x i8*], [4 x i8*]* %5, i64 0, i64 0
%23 = getelementptr inbounds <4 x i32>, <4 x i32>* %6, i64 0, i64 0
store <4 x i32> <i32 3, i32 1, i32 2, i32 0>, <4 x i32>* %6
%24 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %22, i32* %23, i32 4)
%25 = bitcast [4 x i8*]* %7 to i8*
%26 = getelementptr inbounds [4 x i8*], [4 x i8*]* %7, i64 0, i64 0
%27 = getelementptr inbounds <4 x i32>, <4 x i32>* %8, i64 0, i64 0
store <4 x i32> <i32 0, i32 2, i32 3, i32 1>, <4 x i32>* %8
%28 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %26, i32* %27, i32 4)
%29 = bitcast [11 x i8*]* %9 to i8*
%30 = getelementptr inbounds [11 x i8*], [11 x i8*]* %9, i64 0, i64 0
%31 = bitcast [11 x i32]* %10 to i8*
%32 = getelementptr inbounds [11 x i32], [11 x i32]* %10, i64 0, i64 0
%33 = call i32 (i8**, i32*, i32, ...) bitcast (i32 (...)* @testQSort_ to i32 (i8**, i32*, i32, ...)*)(i8** %30, i32* %32, i32 11)
ret void
}