#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 */

/* Variables and functions */
int /*<<< orphan*/ sfree(int *);
int *smalloc(int);
void sorts3d(double *vals[8][8], int *indices[8][8], int nvtxs) {
  int *space;
  int nsets = 8;
  int nlists = 13;
  int *temp[13];
  int i, j;
  void mergesort();
  space = smalloc(nvtxs * sizeof(int));
  for (i = 0; i < nlists; i++) {
    temp[i] = smalloc(nvtxs * sizeof(int));
  }
  mergesort(vals[0][1], nvtxs, temp[0], space);
  mergesort(vals[0][2], nvtxs, temp[1], space);
  mergesort(vals[0][4], nvtxs, temp[2], space);
  mergesort(vals[0][3], nvtxs, temp[3], space);
  mergesort(vals[1][2], nvtxs, temp[4], space);
  mergesort(vals[0][5], nvtxs, temp[5], space);
  mergesort(vals[1][4], nvtxs, temp[6], space);
  mergesort(vals[0][6], nvtxs, temp[7], space);
  mergesort(vals[2][4], nvtxs, temp[8], space);
  mergesort(vals[0][7], nvtxs, temp[9], space);
  mergesort(vals[1][6], nvtxs, temp[10], space);
  mergesort(vals[2][5], nvtxs, temp[11], space);
  mergesort(vals[3][4], nvtxs, temp[12], space);
  sfree(space);
  indices[0][1] = indices[2][3] = indices[4][5] = indices[6][7] = temp[0];
  indices[0][2] = indices[1][3] = indices[4][6] = indices[5][7] = temp[1];
  indices[0][4] = indices[1][5] = indices[2][6] = indices[3][7] = temp[2];
  indices[0][3] = indices[4][7] = temp[3];
  indices[1][2] = indices[5][6] = temp[4];
  indices[0][5] = indices[2][7] = temp[5];
  indices[1][4] = indices[3][6] = temp[6];
  indices[0][6] = indices[1][7] = temp[7];
  indices[2][4] = indices[3][5] = temp[8];
  indices[0][7] = temp[9];
  indices[1][6] = temp[10];
  indices[2][5] = temp[11];
  indices[3][4] = temp[12];
  for (i = 0; i < nsets; i++) {
    for (j = i + 1; j < nsets; j++) {
      indices[j][i] = indices[i][j];
    }
  }
}


x86 assembly (clang, -O0):
<sorts3d>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
movl   $0x8,-0x24(%rbp)
movl   $0xd,-0x28(%rbp)
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1050 <smalloc@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x94(%rbp)
mov    -0x94(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    11b5 <sorts3d+0x85>
movslq -0x14(%rbp),%rax
shl    $0x2,%rax
mov    %eax,%edi
call   1050 <smalloc@plt>
mov    %rax,%rcx
movslq -0x94(%rbp),%rax
mov    %rcx,-0x90(%rbp,%rax,8)
ff
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1171 <sorts3d+0x41>
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x90(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x10(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x88(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x20(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x80(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x18(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x78(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x50(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x70(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x28(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x68(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x60(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x60(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x30(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x58(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0xa0(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x50(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x38(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x48(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0x70(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x40(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0xa8(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x38(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x8(%rbp),%rax
mov    0xe0(%rax),%rdi
mov    -0x14(%rbp),%esi
mov    -0x30(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    $0x0,%al
call   1040 <mergesort@plt>
mov    -0x20(%rbp),%rdi
call   1030 <sfree@plt>
mov    -0x90(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x1b8(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x128(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x98(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x8(%rax)
mov    -0x88(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x178(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x130(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x58(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x10(%rax)
mov    -0x80(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0xf8(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0xb0(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x68(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x20(%rax)
mov    -0x78(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x138(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x18(%rax)
mov    -0x70(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x170(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x50(%rax)
mov    -0x68(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0xb8(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x28(%rax)
mov    -0x60(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0xf0(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x60(%rax)
mov    -0x58(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x78(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0x30(%rax)
mov    -0x50(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0xe8(%rax)
mov    -0x10(%rbp),%rax
mov    %rcx,0xa0(%rax)
mov    -0x48(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x38(%rax)
mov    -0x40(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0x70(%rax)
mov    -0x38(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0xa8(%rax)
mov    -0x30(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,0xe0(%rax)
movl   $0x0,-0x94(%rbp)
mov    -0x94(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1504 <sorts3d+0x3d4>
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    14eb <sorts3d+0x3bb>
mov    -0x10(%rbp),%rax
movslq -0x94(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x98(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x10(%rbp),%rax
movslq -0x98(%rbp),%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x94(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    148e <sorts3d+0x35e>
jmp    14f0 <sorts3d+0x3c0>
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1470 <sorts3d+0x340>
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sorts3d>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %edx,%r13d
mov    %rsi,%rbx
mov    %rdi,%r14
lea    0x0(,%r13,4),%r15d
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,%rbp
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x50(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x48(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,%r12
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x40(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x38(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x30(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x28(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x20(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x18(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x10(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x8(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x58(%rsp)
mov    %r15d,%edi
call   1050 <smalloc@plt>
mov    %rax,0x60(%rsp)
mov    0x8(%r14),%rdi
mov    %r13d,%esi
mov    0x50(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x10(%r14),%rdi
mov    %r13d,%esi
mov    0x48(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x20(%r14),%rdi
mov    %r13d,%esi
mov    %r12,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x18(%r14),%rdi
mov    %r13d,%esi
mov    0x40(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x50(%r14),%rdi
mov    %r13d,%esi
mov    0x38(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x28(%r14),%rdi
mov    %r13d,%esi
mov    0x30(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x60(%r14),%rdi
mov    %r13d,%esi
mov    0x28(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x30(%r14),%rdi
mov    %r13d,%esi
mov    0x20(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0xa0(%r14),%rdi
mov    %r13d,%esi
mov    0x18(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x38(%r14),%rdi
mov    %r13d,%esi
mov    0x10(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0x70(%r14),%rdi
mov    %r13d,%esi
mov    0x8(%rsp),%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0xa8(%r14),%rdi
mov    %r13d,%esi
mov    0x58(%rsp),%r15
mov    %r15,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    0xe0(%r14),%rdi
mov    %r13d,%esi
mov    0x60(%rsp),%r13
mov    %r13,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1040 <mergesort@plt>
mov    %rbp,%rdi
call   1030 <sfree@plt>
mov    0x50(%rsp),%rax
mov    %rax,0x1b8(%rbx)
mov    %rax,0x128(%rbx)
mov    %rax,0x98(%rbx)
mov    %rax,0x8(%rbx)
mov    0x48(%rsp),%rcx
mov    %rcx,0x178(%rbx)
mov    %rcx,0x130(%rbx)
mov    %rcx,0x58(%rbx)
mov    %rcx,0x10(%rbx)
mov    %r12,0xf8(%rbx)
mov    %r12,0xb0(%rbx)
mov    %r12,0x68(%rbx)
mov    %r12,0x20(%rbx)
mov    0x40(%rsp),%rdx
mov    %rdx,0x138(%rbx)
mov    %rdx,0x18(%rbx)
mov    0x38(%rsp),%rsi
mov    %rsi,0x170(%rbx)
mov    %rsi,0x50(%rbx)
mov    0x30(%rsp),%rdi
mov    %rdi,0xb8(%rbx)
mov    %rdi,0x28(%rbx)
mov    0x28(%rsp),%rbp
mov    %rbp,0xf0(%rbx)
mov    %rbp,0x60(%rbx)
mov    0x20(%rsp),%r8
mov    %r8,0x78(%rbx)
mov    %r8,0x30(%rbx)
mov    %r8,%r9
mov    0x18(%rsp),%r8
mov    %r8,0xe8(%rbx)
mov    %r8,0xa0(%rbx)
mov    0x10(%rsp),%r10
mov    %r10,0x38(%rbx)
mov    0x8(%rsp),%r11
mov    %r11,0x70(%rbx)
mov    %r15,0xa8(%rbx)
mov    %r13,0xe0(%rbx)
mov    %rax,0x40(%rbx)
mov    %rcx,0x80(%rbx)
mov    %rdx,0xc0(%rbx)
mov    %r12,0x100(%rbx)
mov    %rdi,0x140(%rbx)
mov    %r9,0x180(%rbx)
mov    %r10,0x1c0(%rbx)
mov    %rsi,0x88(%rbx)
mov    %rcx,0xc8(%rbx)
mov    %rbp,0x108(%rbx)
mov    %r12,0x148(%rbx)
mov    %r11,0x188(%rbx)
mov    %r9,0x1c8(%rbx)
mov    %rax,0xd0(%rbx)
mov    %r8,0x110(%rbx)
mov    %r15,0x150(%rbx)
mov    %r12,0x190(%rbx)
mov    %rdi,0x1d0(%rbx)
mov    %r13,0x118(%rbx)
mov    %r8,0x158(%rbx)
mov    %rbp,0x198(%rbx)
mov    %r12,0x1d8(%rbx)
mov    %rax,0x160(%rbx)
mov    %rcx,0x1a0(%rbx)
mov    %rdx,0x1e0(%rbx)
mov    %rsi,0x1a8(%rbx)
mov    %rcx,0x1e8(%rbx)
mov    %rax,0x1f0(%rbx)
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @sorts3d([8 x double*]* nocapture %0, [8 x i32*]* %1, i32 %2) {
%4 = shl i32 %2, 2
%5 = tail call i32* @smalloc(i32 %4)
%6 = tail call i32* @smalloc(i32 %4)
%7 = tail call i32* @smalloc(i32 %4)
%8 = tail call i32* @smalloc(i32 %4)
%9 = tail call i32* @smalloc(i32 %4)
%10 = tail call i32* @smalloc(i32 %4)
%11 = tail call i32* @smalloc(i32 %4)
%12 = tail call i32* @smalloc(i32 %4)
%13 = tail call i32* @smalloc(i32 %4)
%14 = tail call i32* @smalloc(i32 %4)
%15 = tail call i32* @smalloc(i32 %4)
%16 = tail call i32* @smalloc(i32 %4)
%17 = tail call i32* @smalloc(i32 %4)
%18 = tail call i32* @smalloc(i32 %4)
%19 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 0, i64 1
%20 = load double*, double** %19
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %20, i32 %2, i32* %6, i32* %5)
%21 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 0, i64 2
%22 = load double*, double** %21
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %22, i32 %2, i32* %7, i32* %5)
%23 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 0, i64 4
%24 = load double*, double** %23
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %24, i32 %2, i32* %8, i32* %5)
%25 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 0, i64 3
%26 = load double*, double** %25
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %26, i32 %2, i32* %9, i32* %5)
%27 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 1, i64 2
%28 = load double*, double** %27
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %28, i32 %2, i32* %10, i32* %5)
%29 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 0, i64 5
%30 = load double*, double** %29
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %30, i32 %2, i32* %11, i32* %5)
%31 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 1, i64 4
%32 = load double*, double** %31
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %32, i32 %2, i32* %12, i32* %5)
%33 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 0, i64 6
%34 = load double*, double** %33
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %34, i32 %2, i32* %13, i32* %5)
%35 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 2, i64 4
%36 = load double*, double** %35
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %36, i32 %2, i32* %14, i32* %5)
%37 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 0, i64 7
%38 = load double*, double** %37
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %38, i32 %2, i32* %15, i32* %5)
%39 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 1, i64 6
%40 = load double*, double** %39
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %40, i32 %2, i32* %16, i32* %5)
%41 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 2, i64 5
%42 = load double*, double** %41
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %42, i32 %2, i32* %17, i32* %5)
%43 = getelementptr inbounds [8 x double*], [8 x double*]* %0, i64 3, i64 4
%44 = load double*, double** %43
tail call void (double*, i32, i32*, i32*, ...) bitcast (void (...)* @mergesort to void (double*, i32, i32*, i32*, ...)*)(double* %44, i32 %2, i32* %18, i32* %5)
%45 = tail call i32 @sfree(i32* %5)
%46 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 6, i64 7
store i32* %6, i32** %46
%47 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 4, i64 5
store i32* %6, i32** %47
%48 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 2, i64 3
store i32* %6, i32** %48
%49 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 0, i64 1
store i32* %6, i32** %49
%50 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 5, i64 7
store i32* %7, i32** %50
%51 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 4, i64 6
store i32* %7, i32** %51
%52 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 1, i64 3
store i32* %7, i32** %52
%53 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 0, i64 2
store i32* %7, i32** %53
%54 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 3, i64 7
store i32* %8, i32** %54
%55 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 2, i64 6
store i32* %8, i32** %55
%56 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 1, i64 5
store i32* %8, i32** %56
%57 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 0, i64 4
store i32* %8, i32** %57
%58 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 4, i64 7
store i32* %9, i32** %58
%59 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 0, i64 3
store i32* %9, i32** %59
%60 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 5, i64 6
store i32* %10, i32** %60
%61 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 1, i64 2
store i32* %10, i32** %61
%62 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 2, i64 7
store i32* %11, i32** %62
%63 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 0, i64 5
store i32* %11, i32** %63
%64 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 3, i64 6
store i32* %12, i32** %64
%65 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 1, i64 4
store i32* %12, i32** %65
%66 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 1, i64 7
store i32* %13, i32** %66
%67 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 0, i64 6
store i32* %13, i32** %67
%68 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 3, i64 5
store i32* %14, i32** %68
%69 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 2, i64 4
store i32* %14, i32** %69
%70 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 0, i64 7
store i32* %15, i32** %70
%71 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 1, i64 6
store i32* %16, i32** %71
%72 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 2, i64 5
store i32* %17, i32** %72
%73 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 3, i64 4
store i32* %18, i32** %73
%74 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 1, i64 0
store i32* %6, i32** %74
%75 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 2, i64 0
store i32* %7, i32** %75
%76 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 3, i64 0
store i32* %9, i32** %76
%77 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 4, i64 0
store i32* %8, i32** %77
%78 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 5, i64 0
store i32* %11, i32** %78
%79 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 6, i64 0
store i32* %13, i32** %79
%80 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 7, i64 0
store i32* %15, i32** %80
%81 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 2, i64 1
store i32* %10, i32** %81
%82 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 3, i64 1
store i32* %7, i32** %82
%83 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 4, i64 1
store i32* %12, i32** %83
%84 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 5, i64 1
store i32* %8, i32** %84
%85 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 6, i64 1
store i32* %16, i32** %85
%86 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 7, i64 1
store i32* %13, i32** %86
%87 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 3, i64 2
store i32* %6, i32** %87
%88 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 4, i64 2
store i32* %14, i32** %88
%89 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 5, i64 2
store i32* %17, i32** %89
%90 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 6, i64 2
store i32* %8, i32** %90
%91 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 7, i64 2
store i32* %11, i32** %91
%92 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 4, i64 3
store i32* %18, i32** %92
%93 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 5, i64 3
store i32* %14, i32** %93
%94 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 6, i64 3
store i32* %12, i32** %94
%95 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 7, i64 3
store i32* %8, i32** %95
%96 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 5, i64 4
store i32* %6, i32** %96
%97 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 6, i64 4
store i32* %7, i32** %97
%98 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 7, i64 4
store i32* %9, i32** %98
%99 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 6, i64 5
store i32* %10, i32** %99
%100 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 7, i64 5
store i32* %7, i32** %100
%101 = getelementptr inbounds [8 x i32*], [8 x i32*]* %1, i64 7, i64 6
store i32* %6, i32** %101
ret void
}