void get_colamd(const int m, const int n, const int nnz, int *colptr,
                int *rowind, int *perm_c) {
  int Alen, *A, i, info, *p;
  double *knobs;
  Alen = colamd_recommended(nnz, m, n);
  if (!(knobs = (double *)superlu_malloc(20 * sizeof(double)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n", "Malloc fails for knobs", 31,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dilawar/sesc/refs/heads/master/src/"
            "libsesctherm/SuperLU_MT/SRC/get_perm_c.c");
    superlu_abort_and_exit(msg);
  };
  colamd_set_defaults(knobs);
  if (!(A = (int *)superlu_malloc(Alen * sizeof(int)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n", "Malloc fails for A[]", 35,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dilawar/sesc/refs/heads/master/src/"
            "libsesctherm/SuperLU_MT/SRC/get_perm_c.c");
    superlu_abort_and_exit(msg);
  };
  if (!(p = (int *)superlu_malloc((n + 1) * sizeof(int)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n", "Malloc fails for p[]", 37,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dilawar/sesc/refs/heads/master/src/"
            "libsesctherm/SuperLU_MT/SRC/get_perm_c.c");
    superlu_abort_and_exit(msg);
  };
  for (i = 0; i <= n; ++i)
    p[i] = colptr[i];
  for (i = 0; i < nnz; ++i)
    A[i] = rowind[i];
  info = colamd(m, n, Alen, A, p, knobs);
  if (info == 0) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n", "COLAMD failed", 41,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dilawar/sesc/refs/heads/master/src/"
            "libsesctherm/SuperLU_MT/SRC/get_perm_c.c");
    superlu_abort_and_exit(msg);
  };
  for (i = 0; i < n; ++i)
    perm_c[p[i]] = i;
  superlu_free(knobs);
  superlu_free(A);
  superlu_free(p);
}


x86 assembly (clang, -O0):
<get_colamd>:
push   %rbp
mov    %rsp,%rbp
sub    $0x450,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
mov    -0xc(%rbp),%edi
mov    -0x4(%rbp),%esi
mov    -0x8(%rbp),%edx
mov    $0x0,%al
call   1040 <colamd_recommended@plt>
mov    %eax,-0x2c(%rbp)
mov    $0xa0,%edi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x50(%rbp)
cmp    $0x0,%rax
jne    11f5 <get_colamd+0x85>
lea    -0x150(%rbp),%rdi
lea    0xe33(%rip),%rsi
lea    0xe46(%rip),%rdx
mov    $0x1f,%ecx
lea    0xe51(%rip),%r8
mov    $0x0,%al
call   1090 <sprintf@plt>
lea    -0x150(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
mov    -0x50(%rbp),%rdi
mov    $0x0,%al
call   1080 <colamd_set_defaults@plt>
movslq -0x2c(%rbp),%rdi
shl    $0x2,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
jne    1255 <get_colamd+0xe5>
lea    -0x250(%rbp),%rdi
lea    0xdd3(%rip),%rsi
lea    0xea3(%rip),%rdx
mov    $0x23,%ecx
lea    0xdf1(%rip),%r8
mov    $0x0,%al
call   1090 <sprintf@plt>
lea    -0x250(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rdi
shl    $0x2,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x48(%rbp)
cmp    $0x0,%rax
jne    12af <get_colamd+0x13f>
lea    -0x350(%rbp),%rdi
lea    0xd79(%rip),%rsi
lea    0xe5e(%rip),%rdx
mov    $0x25,%ecx
lea    0xd97(%rip),%r8
mov    $0x0,%al
call   1090 <sprintf@plt>
lea    -0x350(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     12e6 <get_colamd+0x176>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x48(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    12b6 <get_colamd+0x146>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    131d <get_colamd+0x1ad>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x38(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    12ed <get_colamd+0x17d>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    -0x2c(%rbp),%edx
mov    -0x38(%rbp),%rcx
mov    -0x48(%rbp),%r8
mov    -0x50(%rbp),%r9
mov    $0x0,%al
call   1070 <colamd@plt>
mov    %eax,-0x40(%rbp)
cmpl   $0x0,-0x40(%rbp)
jne    137c <get_colamd+0x20c>
lea    -0x450(%rbp),%rdi
lea    0xcac(%rip),%rsi
lea    0xda6(%rip),%rdx
mov    $0x29,%ecx
lea    0xcca(%rip),%r8
mov    $0x0,%al
call   1090 <sprintf@plt>
lea    -0x450(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    13b3 <get_colamd+0x243>
mov    -0x3c(%rbp),%edx
mov    -0x28(%rbp),%rax
mov    -0x48(%rbp),%rcx
movslq -0x3c(%rbp),%rsi
movslq (%rcx,%rsi,4),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1383 <get_colamd+0x213>
mov    -0x50(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x38(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x48(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
add    $0x450,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_colamd>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x128,%rsp
mov    %r9,%r13
mov    %r8,%r15
mov    %rcx,%r14
mov    %edx,%eax
mov    %esi,%edx
mov    %edi,%esi
mov    %eax,0xc(%rsp)
mov    %eax,%edi
mov    %esi,0x14(%rsp)
mov    %rdx,%r12
xor    %eax,%eax
call   1040 <colamd_recommended@plt>
mov    %eax,%ebx
mov    $0xa0,%edi
xor    %eax,%eax
call   1050 <superlu_malloc@plt>
movslq %eax,%rbp
test   %ebp,%ebp
jne    11eb <get_colamd+0x7b>
lea    0xe40(%rip),%rsi
lea    0xe53(%rip),%rdx
lea    0xe63(%rip),%r8
lea    0x20(%rsp),%rdi
mov    $0x1f,%ecx
xor    %eax,%eax
call   1090 <sprintf@plt>
lea    0x20(%rsp),%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
mov    %rbp,0x18(%rsp)
mov    %rbp,%rdi
xor    %eax,%eax
call   1080 <colamd_set_defaults@plt>
mov    %ebx,0x10(%rsp)
movslq %ebx,%rdi
shl    $0x2,%rdi
xor    %eax,%eax
call   1050 <superlu_malloc@plt>
mov    %eax,0x8(%rsp)
test   %eax,%eax
jne    1247 <get_colamd+0xd7>
lea    0xde5(%rip),%rsi
lea    0xeb5(%rip),%rdx
lea    0xe08(%rip),%r8
lea    0x20(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x23,%ecx
xor    %eax,%eax
call   1090 <sprintf@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
mov    %r12,%rbp
add    $0x1,%r12d
movslq %r12d,%rdi
shl    $0x2,%rdi
xor    %eax,%eax
call   1050 <superlu_malloc@plt>
mov    %eax,%ebx
test   %eax,%eax
jne    1294 <get_colamd+0x124>
lea    0xd97(%rip),%rsi
lea    0xe7c(%rip),%rdx
lea    0xdba(%rip),%r8
lea    0x20(%rsp),%rdi
mov    $0x25,%ecx
xor    %eax,%eax
call   1090 <sprintf@plt>
lea    0x20(%rsp),%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
movslq %ebx,%rbx
test   %ebp,%ebp
mov    %rbp,%rsi
js     1404 <get_colamd+0x294>
mov    %r12d,%r9d
cmp    $0x8,%r12d
jb     12bd <get_colamd+0x14d>
lea    (%r14,%r9,4),%rcx
cmp    %rcx,%rbx
jae    1330 <get_colamd+0x1c0>
lea    (%rbx,%r9,4),%rcx
cmp    %r14,%rcx
jbe    1330 <get_colamd+0x1c0>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
add    %r9,%rdx
mov    %r9,%rax
and    $0x3,%rax
je     12f1 <get_colamd+0x181>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    (%r14,%rcx,4),%edi
mov    %edi,(%rbx,%rcx,4)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rax
jne    12e0 <get_colamd+0x170>
cmp    $0x3,%rdx
jb     1404 <get_colamd+0x294>
nopl   0x0(%rax,%rax,1)
mov    (%r14,%rcx,4),%edx
mov    %edx,(%rbx,%rcx,4)
mov    0x4(%r14,%rcx,4),%edx
mov    %edx,0x4(%rbx,%rcx,4)
mov    0x8(%r14,%rcx,4),%edx
mov    %edx,0x8(%rbx,%rcx,4)
mov    0xc(%r14,%rcx,4),%edx
mov    %edx,0xc(%rbx,%rcx,4)
add    $0x4,%rcx
cmp    %rcx,%r9
jne    1300 <get_colamd+0x190>
jmp    1404 <get_colamd+0x294>
mov    %r9d,%ecx
and    $0xfffffff8,%ecx
lea    -0x8(%rcx),%rdi
mov    %rdi,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
mov    %edx,%r8d
and    $0x3,%r8d
cmp    $0x18,%rdi
jae    1356 <get_colamd+0x1e6>
xor    %edi,%edi
jmp    13c0 <get_colamd+0x250>
and    $0xfffffffffffffffc,%rdx
xor    %edi,%edi
nopl   0x0(%rax)
movups (%r14,%rdi,4),%xmm0
movups 0x10(%r14,%rdi,4),%xmm1
movups %xmm0,(%rbx,%rdi,4)
movups %xmm1,0x10(%rbx,%rdi,4)
movups 0x20(%r14,%rdi,4),%xmm0
movups 0x30(%r14,%rdi,4),%xmm1
movups %xmm0,0x20(%rbx,%rdi,4)
movups %xmm1,0x30(%rbx,%rdi,4)
movups 0x40(%r14,%rdi,4),%xmm0
movups 0x50(%r14,%rdi,4),%xmm1
movups %xmm0,0x40(%rbx,%rdi,4)
movups %xmm1,0x50(%rbx,%rdi,4)
movups 0x60(%r14,%rdi,4),%xmm0
movups 0x70(%r14,%rdi,4),%xmm1
movups %xmm0,0x60(%rbx,%rdi,4)
movups %xmm1,0x70(%rbx,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rdx
jne    1360 <get_colamd+0x1f0>
test   %r8,%r8
je     13fb <get_colamd+0x28b>
lea    (%rbx,%rdi,4),%rax
add    $0x10,%rax
lea    (%r14,%rdi,4),%rdi
add    $0x10,%rdi
shl    $0x5,%r8
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
movups -0x10(%rdi,%rbp,1),%xmm0
movups (%rdi,%rbp,1),%xmm1
movups %xmm0,-0x10(%rax,%rbp,1)
movups %xmm1,(%rax,%rbp,1)
add    $0x20,%rbp
cmp    %rbp,%r8
jne    13e0 <get_colamd+0x270>
cmp    %r9,%rcx
jne    12bf <get_colamd+0x14f>
movslq 0x8(%rsp),%rbp
mov    0xc(%rsp),%eax
test   %eax,%eax
mov    0x18(%rsp),%r12
jle    1574 <get_colamd+0x404>
mov    %eax,%r9d
cmp    $0x8,%eax
jb     143b <get_colamd+0x2cb>
lea    (%r15,%r9,4),%rcx
cmp    %rcx,%rbp
jae    14a1 <get_colamd+0x331>
lea    0x0(,%r9,4),%rcx
add    %rbp,%rcx
cmp    %r15,%rcx
jbe    14a1 <get_colamd+0x331>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
add    %r9,%rdx
mov    %r9,%rax
and    $0x3,%rax
je     1462 <get_colamd+0x2f2>
nop
mov    (%r15,%rcx,4),%edi
mov    %edi,0x0(%rbp,%rcx,4)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rax
jne    1450 <get_colamd+0x2e0>
cmp    $0x3,%rdx
jb     1574 <get_colamd+0x404>
nopl   0x0(%rax)
mov    (%r15,%rcx,4),%edx
mov    %edx,0x0(%rbp,%rcx,4)
mov    0x4(%r15,%rcx,4),%edx
mov    %edx,0x4(%rbp,%rcx,4)
mov    0x8(%r15,%rcx,4),%edx
mov    %edx,0x8(%rbp,%rcx,4)
mov    0xc(%r15,%rcx,4),%edx
mov    %edx,0xc(%rbp,%rcx,4)
add    $0x4,%rcx
cmp    %rcx,%r9
jne    1470 <get_colamd+0x300>
jmp    1574 <get_colamd+0x404>
mov    %r9d,%ecx
and    $0xfffffff8,%ecx
lea    -0x8(%rcx),%rax
mov    %rax,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
mov    %edx,%r8d
and    $0x3,%r8d
cmp    $0x18,%rax
jae    14c7 <get_colamd+0x357>
xor    %edi,%edi
jmp    1531 <get_colamd+0x3c1>
and    $0xfffffffffffffffc,%rdx
xor    %edi,%edi
nopl   (%rax)
movups (%r15,%rdi,4),%xmm0
movups 0x10(%r15,%rdi,4),%xmm1
movups %xmm0,0x0(%rbp,%rdi,4)
movups %xmm1,0x10(%rbp,%rdi,4)
movups 0x20(%r15,%rdi,4),%xmm0
movups 0x30(%r15,%rdi,4),%xmm1
movups %xmm0,0x20(%rbp,%rdi,4)
movups %xmm1,0x30(%rbp,%rdi,4)
movups 0x40(%r15,%rdi,4),%xmm0
movups 0x50(%r15,%rdi,4),%xmm1
movups %xmm0,0x40(%rbp,%rdi,4)
movups %xmm1,0x50(%rbp,%rdi,4)
movups 0x60(%r15,%rdi,4),%xmm0
movups 0x70(%r15,%rdi,4),%xmm1
movups %xmm0,0x60(%rbp,%rdi,4)
movups %xmm1,0x70(%rbp,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rdx
jne    14d0 <get_colamd+0x360>
test   %r8,%r8
je     156b <get_colamd+0x3fb>
lea    0x10(,%rdi,4),%rax
add    %rbp,%rax
lea    (%r15,%rdi,4),%rdi
add    $0x10,%rdi
shl    $0x5,%r8
xor    %edx,%edx
nop
movups -0x10(%rdi,%rdx,1),%xmm0
movups (%rdi,%rdx,1),%xmm1
movups %xmm0,-0x10(%rax,%rdx,1)
movups %xmm1,(%rax,%rdx,1)
add    $0x20,%rdx
cmp    %rdx,%r8
jne    1550 <get_colamd+0x3e0>
cmp    %r9,%rcx
jne    143d <get_colamd+0x2cd>
mov    0x14(%rsp),%edi
mov    0x10(%rsp),%edx
mov    %rbp,%rcx
mov    %rbx,%r8
mov    %rsi,%r15
mov    %r12,%r9
xor    %eax,%eax
call   1070 <colamd@plt>
test   %eax,%eax
jne    15c6 <get_colamd+0x456>
lea    0xa66(%rip),%rsi
lea    0xb60(%rip),%rdx
lea    0xa89(%rip),%r8
lea    0x20(%rsp),%r14
mov    %r14,%rdi
mov    $0x29,%ecx
xor    %eax,%eax
call   1090 <sprintf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
test   %r15d,%r15d
jle    1643 <get_colamd+0x4d3>
mov    %r15d,%edx
lea    -0x1(%rdx),%rcx
mov    %edx,%eax
and    $0x3,%eax
cmp    $0x3,%rcx
jae    15e1 <get_colamd+0x471>
xor    %ecx,%ecx
jmp    1629 <get_colamd+0x4b9>
and    $0xfffffffc,%edx
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
movslq (%rbx,%rcx,4),%rsi
mov    %ecx,0x0(%r13,%rsi,4)
movslq 0x4(%rbx,%rcx,4),%rsi
lea    0x1(%rcx),%edi
mov    %edi,0x0(%r13,%rsi,4)
movslq 0x8(%rbx,%rcx,4),%rsi
lea    0x2(%rcx),%edi
mov    %edi,0x0(%r13,%rsi,4)
movslq 0xc(%rbx,%rcx,4),%rsi
lea    0x3(%rcx),%edi
mov    %edi,0x0(%r13,%rsi,4)
add    $0x4,%rcx
cmp    %rdx,%rcx
jne    15f0 <get_colamd+0x480>
test   %rax,%rax
je     1643 <get_colamd+0x4d3>
xchg   %ax,%ax
movslq (%rbx,%rcx,4),%rdx
mov    %ecx,0x0(%r13,%rdx,4)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rax
jne    1630 <get_colamd+0x4c0>
mov    %r12,%rdi
xor    %eax,%eax
call   1060 <superlu_free@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <superlu_free@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <superlu_free@plt>
add    $0x128,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [26 x i8] c"%s at line %d in file %s\0A\00"
@.str.1 = [23 x i8] c"Malloc fails for knobs\00"
@.str.2 = [166 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/dilawar/sesc/refs/heads/master/src/libsesctherm/SuperLU_MT/SRC/get_perm_c.c\00"
@.str.3 = [21 x i8] c"Malloc fails for A[]\00"
@.str.4 = [21 x i8] c"Malloc fails for p[]\00"
@.str.5 = [14 x i8] c"COLAMD failed\00"
define void @get_colamd(i32 %0, i32 %1, i32 %2, i32* %3, i32* %4, i32* %5) {
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i32*
%13 = alloca i32
%14 = alloca i32*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32*
%18 = alloca double*
%19 = alloca [256 x i8]
%20 = alloca [256 x i8]
%21 = alloca [256 x i8]
%22 = alloca [256 x i8]
store i32 %0, i32* %7
store i32 %1, i32* %8
store i32 %2, i32* %9
store i32* %3, i32** %10
store i32* %4, i32** %11
store i32* %5, i32** %12
%23 = load i32, i32* %9
%24 = load i32, i32* %7
%25 = load i32, i32* %8
%26 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @colamd_recommended to i32 (i32, i32, i32, ...)*)(i32 %23, i32 %24, i32 %25)
store i32 %26, i32* %13
%27 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 160)
%28 = sext i32 %27 to i64
%29 = inttoptr i64 %28 to double*
store double* %29, double** %18
%30 = icmp ne double* %29, null
br i1 %30, label %36, label %31
31: ; preds = %6
%32 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%33 = call i32 (i8*, i8*, ...) @sprintf(i8* %32, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i32 31, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%34 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%35 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %34)
br label %36
36: ; preds = %31, %6
%37 = load double*, double** %18
%38 = call i32 (double*, ...) bitcast (i32 (...)* @colamd_set_defaults to i32 (double*, ...)*)(double* %37)
%39 = load i32, i32* %13
%40 = sext i32 %39 to i64
%41 = mul i64 %40, 4
%42 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %41)
%43 = sext i32 %42 to i64
%44 = inttoptr i64 %43 to i32*
store i32* %44, i32** %14
%45 = icmp ne i32* %44, null
br i1 %45, label %51, label %46
46: ; preds = %36
%47 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%48 = call i32 (i8*, i8*, ...) @sprintf(i8* %47, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0), i32 35, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%49 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%50 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %49)
br label %51
51: ; preds = %46, %36
%52 = load i32, i32* %8
%53 = add nsw i32 %52, 1
%54 = sext i32 %53 to i64
%55 = mul i64 %54, 4
%56 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %55)
%57 = sext i32 %56 to i64
%58 = inttoptr i64 %57 to i32*
store i32* %58, i32** %17
%59 = icmp ne i32* %58, null
br i1 %59, label %65, label %60
60: ; preds = %51
%61 = getelementptr inbounds [256 x i8], [256 x i8]* %21, i64 0, i64 0
%62 = call i32 (i8*, i8*, ...) @sprintf(i8* %61, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i32 37, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%63 = getelementptr inbounds [256 x i8], [256 x i8]* %21, i64 0, i64 0
%64 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %63)
br label %65
65: ; preds = %60, %51
store i32 0, i32* %15
br label %66
66: ; preds = %80, %65
%67 = load i32, i32* %15
%68 = load i32, i32* %8
%69 = icmp sle i32 %67, %68
br i1 %69, label %70, label %83
70: ; preds = %66
%71 = load i32*, i32** %10
%72 = load i32, i32* %15
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds i32, i32* %71, i64 %73
%75 = load i32, i32* %74
%76 = load i32*, i32** %17
%77 = load i32, i32* %15
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds i32, i32* %76, i64 %78
store i32 %75, i32* %79
br label %80
80: ; preds = %70
%81 = load i32, i32* %15
%82 = add nsw i32 %81, 1
store i32 %82, i32* %15
br label %66
83: ; preds = %66
store i32 0, i32* %15
br label %84
84: ; preds = %98, %83
%85 = load i32, i32* %15
%86 = load i32, i32* %9
%87 = icmp slt i32 %85, %86
br i1 %87, label %88, label %101
88: ; preds = %84
%89 = load i32*, i32** %11
%90 = load i32, i32* %15
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i32, i32* %89, i64 %91
%93 = load i32, i32* %92
%94 = load i32*, i32** %14
%95 = load i32, i32* %15
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds i32, i32* %94, i64 %96
store i32 %93, i32* %97
br label %98
98: ; preds = %88
%99 = load i32, i32* %15
%100 = add nsw i32 %99, 1
store i32 %100, i32* %15
br label %84
101: ; preds = %84
%102 = load i32, i32* %7
%103 = load i32, i32* %8
%104 = load i32, i32* %13
%105 = load i32*, i32** %14
%106 = load i32*, i32** %17
%107 = load double*, double** %18
%108 = call i32 (i32, i32, i32, i32*, i32*, double*, ...) bitcast (i32 (...)* @colamd to i32 (i32, i32, i32, i32*, i32*, double*, ...)*)(i32 %102, i32 %103, i32 %104, i32* %105, i32* %106, double* %107)
store i32 %108, i32* %16
%109 = load i32, i32* %16
%110 = icmp eq i32 %109, 0
br i1 %110, label %111, label %116
111: ; preds = %101
%112 = getelementptr inbounds [256 x i8], [256 x i8]* %22, i64 0, i64 0
%113 = call i32 (i8*, i8*, ...) @sprintf(i8* %112, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0), i32 41, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%114 = getelementptr inbounds [256 x i8], [256 x i8]* %22, i64 0, i64 0
%115 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %114)
br label %116
116: ; preds = %111, %101
store i32 0, i32* %15
br label %117
117: ; preds = %131, %116
%118 = load i32, i32* %15
%119 = load i32, i32* %8
%120 = icmp slt i32 %118, %119
br i1 %120, label %121, label %134
121: ; preds = %117
%122 = load i32, i32* %15
%123 = load i32*, i32** %12
%124 = load i32*, i32** %17
%125 = load i32, i32* %15
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i32, i32* %124, i64 %126
%128 = load i32, i32* %127
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds i32, i32* %123, i64 %129
store i32 %122, i32* %130
br label %131
131: ; preds = %121
%132 = load i32, i32* %15
%133 = add nsw i32 %132, 1
store i32 %133, i32* %15
br label %117
134: ; preds = %117
%135 = load double*, double** %18
%136 = call i32 (double*, ...) bitcast (i32 (...)* @superlu_free to i32 (double*, ...)*)(double* %135)
%137 = load i32*, i32** %14
%138 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %137)
%139 = load i32*, i32** %17
%140 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %139)
ret void
}

LLVM IR (-O2):
@.str = [26 x i8] c"%s at line %d in file %s\0A\00"
@.str.1 = [23 x i8] c"Malloc fails for knobs\00"
@.str.2 = [166 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/dilawar/sesc/refs/heads/master/src/libsesctherm/SuperLU_MT/SRC/get_perm_c.c\00"
@.str.3 = [21 x i8] c"Malloc fails for A[]\00"
@.str.4 = [21 x i8] c"Malloc fails for p[]\00"
@.str.5 = [14 x i8] c"COLAMD failed\00"
define void @get_colamd(i32 %0, i32 %1, i32 %2, i32* nocapture %3, i32* nocapture %4, i32* nocapture writeonly %5) {
%7 = alloca [256 x i8]
%8 = alloca [256 x i8]
%9 = alloca [256 x i8]
%10 = alloca [256 x i8]
%11 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @colamd_recommended to i32 (i32, i32, i32, ...)*)(i32 %2, i32 %0, i32 %1)
%12 = tail call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 160)
%13 = sext i32 %12 to i64
%14 = inttoptr i64 %13 to double*
%15 = icmp eq i32 %12, 0
br i1 %15, label %16, label %20
16: ; preds = %6
%17 = getelementptr inbounds [256 x i8], [256 x i8]* %7, i64 0, i64 0
%18 = call i32 (i8*, i8*, ...) @sprintf(i8* %17, i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i32 31, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%19 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %17)
br label %20
20: ; preds = %16, %6
%21 = call i32 (double*, ...) bitcast (i32 (...)* @colamd_set_defaults to i32 (double*, ...)*)(double* %14)
%22 = sext i32 %11 to i64
%23 = shl nsw i64 %22, 2
%24 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %23)
%25 = sext i32 %24 to i64
%26 = inttoptr i64 %25 to i32*
%27 = inttoptr i64 %25 to i8*
%28 = icmp eq i32 %24, 0
br i1 %28, label %29, label %33
29: ; preds = %20
%30 = getelementptr inbounds [256 x i8], [256 x i8]* %8, i64 0, i64 0
%31 = call i32 (i8*, i8*, ...) @sprintf(i8* %30, i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0), i32 35, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%32 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %30)
br label %33
33: ; preds = %29, %20
%34 = add i32 %1, 1
%35 = sext i32 %34 to i64
%36 = shl nsw i64 %35, 2
%37 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %36)
%38 = sext i32 %37 to i64
%39 = inttoptr i64 %38 to i32*
%40 = inttoptr i64 %38 to i8*
%41 = icmp eq i32 %37, 0
br i1 %41, label %42, label %46
42: ; preds = %33
%43 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%44 = call i32 (i8*, i8*, ...) @sprintf(i8* %43, i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i32 37, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%45 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %43)
br label %46
46: ; preds = %42, %33
%47 = icmp slt i32 %1, 0
br i1 %47, label %155, label %48
48: ; preds = %46
%49 = zext i32 %34 to i64
%50 = icmp ult i32 %34, 8
br i1 %50, label %137, label %51
51: ; preds = %48
%52 = getelementptr i32, i32* %39, i64 %49
%53 = getelementptr i32, i32* %3, i64 %49
%54 = bitcast i32* %53 to i8*
%55 = icmp ult i8* %40, %54
%56 = icmp ugt i32* %52, %3
%57 = and i1 %55, %56
br i1 %57, label %137, label %58
58: ; preds = %51
%59 = and i64 %49, 4294967288
%60 = add nsw i64 %59, -8
%61 = lshr exact i64 %60, 3
%62 = add nuw nsw i64 %61, 1
%63 = and i64 %62, 3
%64 = icmp ult i64 %60, 24
br i1 %64, label %116, label %65
65: ; preds = %58
%66 = and i64 %62, 4611686018427387900
br label %67
67: ; preds = %67, %65
%68 = phi i64 [ 0, %65 ], [ %113, %67 ]
%69 = phi i64 [ 0, %65 ], [ %114, %67 ]
%70 = getelementptr inbounds i32, i32* %3, i64 %68
%71 = bitcast i32* %70 to <4 x i32>*
%72 = load <4 x i32>, <4 x i32>* %71
%73 = getelementptr inbounds i32, i32* %70, i64 4
%74 = bitcast i32* %73 to <4 x i32>*
%75 = load <4 x i32>, <4 x i32>* %74
%76 = getelementptr inbounds i32, i32* %39, i64 %68
%77 = bitcast i32* %76 to <4 x i32>*
store <4 x i32> %72, <4 x i32>* %77
%78 = getelementptr inbounds i32, i32* %76, i64 4
%79 = bitcast i32* %78 to <4 x i32>*
store <4 x i32> %75, <4 x i32>* %79
%80 = or i64 %68, 8
%81 = getelementptr inbounds i32, i32* %3, i64 %80
%82 = bitcast i32* %81 to <4 x i32>*
%83 = load <4 x i32>, <4 x i32>* %82
%84 = getelementptr inbounds i32, i32* %81, i64 4
%85 = bitcast i32* %84 to <4 x i32>*
%86 = load <4 x i32>, <4 x i32>* %85
%87 = getelementptr inbounds i32, i32* %39, i64 %80
%88 = bitcast i32* %87 to <4 x i32>*
store <4 x i32> %83, <4 x i32>* %88
%89 = getelementptr inbounds i32, i32* %87, i64 4
%90 = bitcast i32* %89 to <4 x i32>*
store <4 x i32> %86, <4 x i32>* %90
%91 = or i64 %68, 16
%92 = getelementptr inbounds i32, i32* %3, i64 %91
%93 = bitcast i32* %92 to <4 x i32>*
%94 = load <4 x i32>, <4 x i32>* %93
%95 = getelementptr inbounds i32, i32* %92, i64 4
%96 = bitcast i32* %95 to <4 x i32>*
%97 = load <4 x i32>, <4 x i32>* %96
%98 = getelementptr inbounds i32, i32* %39, i64 %91
%99 = bitcast i32* %98 to <4 x i32>*
store <4 x i32> %94, <4 x i32>* %99
%100 = getelementptr inbounds i32, i32* %98, i64 4
%101 = bitcast i32* %100 to <4 x i32>*
store <4 x i32> %97, <4 x i32>* %101
%102 = or i64 %68, 24
%103 = getelementptr inbounds i32, i32* %3, i64 %102
%104 = bitcast i32* %103 to <4 x i32>*
%105 = load <4 x i32>, <4 x i32>* %104
%106 = getelementptr inbounds i32, i32* %103, i64 4
%107 = bitcast i32* %106 to <4 x i32>*
%108 = load <4 x i32>, <4 x i32>* %107
%109 = getelementptr inbounds i32, i32* %39, i64 %102
%110 = bitcast i32* %109 to <4 x i32>*
store <4 x i32> %105, <4 x i32>* %110
%111 = getelementptr inbounds i32, i32* %109, i64 4
%112 = bitcast i32* %111 to <4 x i32>*
store <4 x i32> %108, <4 x i32>* %112
%113 = add nuw i64 %68, 32
%114 = add i64 %69, 4
%115 = icmp eq i64 %114, %66
br i1 %115, label %116, label %67
116: ; preds = %67, %58
%117 = phi i64 [ 0, %58 ], [ %113, %67 ]
%118 = icmp eq i64 %63, 0
br i1 %118, label %135, label %119
119: ; preds = %116, %119
%120 = phi i64 [ %132, %119 ], [ %117, %116 ]
%121 = phi i64 [ %133, %119 ], [ 0, %116 ]
%122 = getelementptr inbounds i32, i32* %3, i64 %120
%123 = bitcast i32* %122 to <4 x i32>*
%124 = load <4 x i32>, <4 x i32>* %123
%125 = getelementptr inbounds i32, i32* %122, i64 4
%126 = bitcast i32* %125 to <4 x i32>*
%127 = load <4 x i32>, <4 x i32>* %126
%128 = getelementptr inbounds i32, i32* %39, i64 %120
%129 = bitcast i32* %128 to <4 x i32>*
store <4 x i32> %124, <4 x i32>* %129
%130 = getelementptr inbounds i32, i32* %128, i64 4
%131 = bitcast i32* %130 to <4 x i32>*
store <4 x i32> %127, <4 x i32>* %131
%132 = add nuw i64 %120, 8
%133 = add i64 %121, 1
%134 = icmp eq i64 %133, %63
br i1 %134, label %135, label %119
135: ; preds = %119, %116
%136 = icmp eq i64 %59, %49
br i1 %136, label %155, label %137
137: ; preds = %51, %48, %135
%138 = phi i64 [ 0, %51 ], [ 0, %48 ], [ %59, %135 ]
%139 = xor i64 %138, -1
%140 = add nsw i64 %139, %49
%141 = and i64 %49, 3
%142 = icmp eq i64 %141, 0
br i1 %142, label %152, label %143
143: ; preds = %137, %143
%144 = phi i64 [ %149, %143 ], [ %138, %137 ]
%145 = phi i64 [ %150, %143 ], [ 0, %137 ]
%146 = getelementptr inbounds i32, i32* %3, i64 %144
%147 = load i32, i32* %146
%148 = getelementptr inbounds i32, i32* %39, i64 %144
store i32 %147, i32* %148
%149 = add nuw nsw i64 %144, 1
%150 = add i64 %145, 1
%151 = icmp eq i64 %150, %141
br i1 %151, label %152, label %143
152: ; preds = %143, %137
%153 = phi i64 [ %138, %137 ], [ %149, %143 ]
%154 = icmp ult i64 %140, 3
br i1 %154, label %155, label %264
155: ; preds = %152, %264, %135, %46
%156 = icmp sgt i32 %2, 0
br i1 %156, label %157, label %302
157: ; preds = %155
%158 = zext i32 %2 to i64
%159 = icmp ult i32 %2, 8
br i1 %159, label %246, label %160
160: ; preds = %157
%161 = getelementptr i32, i32* %26, i64 %158
%162 = getelementptr i32, i32* %4, i64 %158
%163 = bitcast i32* %162 to i8*
%164 = icmp ult i8* %27, %163
%165 = icmp ugt i32* %161, %4
%166 = and i1 %164, %165
br i1 %166, label %246, label %167
167: ; preds = %160
%168 = and i64 %158, 4294967288
%169 = add nsw i64 %168, -8
%170 = lshr exact i64 %169, 3
%171 = add nuw nsw i64 %170, 1
%172 = and i64 %171, 3
%173 = icmp ult i64 %169, 24
br i1 %173, label %225, label %174
174: ; preds = %167
%175 = and i64 %171, 4611686018427387900
br label %176
176: ; preds = %176, %174
%177 = phi i64 [ 0, %174 ], [ %222, %176 ]
%178 = phi i64 [ 0, %174 ], [ %223, %176 ]
%179 = getelementptr inbounds i32, i32* %4, i64 %177
%180 = bitcast i32* %179 to <4 x i32>*
%181 = load <4 x i32>, <4 x i32>* %180
%182 = getelementptr inbounds i32, i32* %179, i64 4
%183 = bitcast i32* %182 to <4 x i32>*
%184 = load <4 x i32>, <4 x i32>* %183
%185 = getelementptr inbounds i32, i32* %26, i64 %177
%186 = bitcast i32* %185 to <4 x i32>*
store <4 x i32> %181, <4 x i32>* %186
%187 = getelementptr inbounds i32, i32* %185, i64 4
%188 = bitcast i32* %187 to <4 x i32>*
store <4 x i32> %184, <4 x i32>* %188
%189 = or i64 %177, 8
%190 = getelementptr inbounds i32, i32* %4, i64 %189
%191 = bitcast i32* %190 to <4 x i32>*
%192 = load <4 x i32>, <4 x i32>* %191
%193 = getelementptr inbounds i32, i32* %190, i64 4
%194 = bitcast i32* %193 to <4 x i32>*
%195 = load <4 x i32>, <4 x i32>* %194
%196 = getelementptr inbounds i32, i32* %26, i64 %189
%197 = bitcast i32* %196 to <4 x i32>*
store <4 x i32> %192, <4 x i32>* %197
%198 = getelementptr inbounds i32, i32* %196, i64 4
%199 = bitcast i32* %198 to <4 x i32>*
store <4 x i32> %195, <4 x i32>* %199
%200 = or i64 %177, 16
%201 = getelementptr inbounds i32, i32* %4, i64 %200
%202 = bitcast i32* %201 to <4 x i32>*
%203 = load <4 x i32>, <4 x i32>* %202
%204 = getelementptr inbounds i32, i32* %201, i64 4
%205 = bitcast i32* %204 to <4 x i32>*
%206 = load <4 x i32>, <4 x i32>* %205
%207 = getelementptr inbounds i32, i32* %26, i64 %200
%208 = bitcast i32* %207 to <4 x i32>*
store <4 x i32> %203, <4 x i32>* %208
%209 = getelementptr inbounds i32, i32* %207, i64 4
%210 = bitcast i32* %209 to <4 x i32>*
store <4 x i32> %206, <4 x i32>* %210
%211 = or i64 %177, 24
%212 = getelementptr inbounds i32, i32* %4, i64 %211
%213 = bitcast i32* %212 to <4 x i32>*
%214 = load <4 x i32>, <4 x i32>* %213
%215 = getelementptr inbounds i32, i32* %212, i64 4
%216 = bitcast i32* %215 to <4 x i32>*
%217 = load <4 x i32>, <4 x i32>* %216
%218 = getelementptr inbounds i32, i32* %26, i64 %211
%219 = bitcast i32* %218 to <4 x i32>*
store <4 x i32> %214, <4 x i32>* %219
%220 = getelementptr inbounds i32, i32* %218, i64 4
%221 = bitcast i32* %220 to <4 x i32>*
store <4 x i32> %217, <4 x i32>* %221
%222 = add nuw i64 %177, 32
%223 = add i64 %178, 4
%224 = icmp eq i64 %223, %175
br i1 %224, label %225, label %176
225: ; preds = %176, %167
%226 = phi i64 [ 0, %167 ], [ %222, %176 ]
%227 = icmp eq i64 %172, 0
br i1 %227, label %244, label %228
228: ; preds = %225, %228
%229 = phi i64 [ %241, %228 ], [ %226, %225 ]
%230 = phi i64 [ %242, %228 ], [ 0, %225 ]
%231 = getelementptr inbounds i32, i32* %4, i64 %229
%232 = bitcast i32* %231 to <4 x i32>*
%233 = load <4 x i32>, <4 x i32>* %232
%234 = getelementptr inbounds i32, i32* %231, i64 4
%235 = bitcast i32* %234 to <4 x i32>*
%236 = load <4 x i32>, <4 x i32>* %235
%237 = getelementptr inbounds i32, i32* %26, i64 %229
%238 = bitcast i32* %237 to <4 x i32>*
store <4 x i32> %233, <4 x i32>* %238
%239 = getelementptr inbounds i32, i32* %237, i64 4
%240 = bitcast i32* %239 to <4 x i32>*
store <4 x i32> %236, <4 x i32>* %240
%241 = add nuw i64 %229, 8
%242 = add i64 %230, 1
%243 = icmp eq i64 %242, %172
br i1 %243, label %244, label %228
244: ; preds = %228, %225
%245 = icmp eq i64 %168, %158
br i1 %245, label %302, label %246
246: ; preds = %160, %157, %244
%247 = phi i64 [ 0, %160 ], [ 0, %157 ], [ %168, %244 ]
%248 = xor i64 %247, -1
%249 = add nsw i64 %248, %158
%250 = and i64 %158, 3
%251 = icmp eq i64 %250, 0
br i1 %251, label %261, label %252
252: ; preds = %246, %252
%253 = phi i64 [ %258, %252 ], [ %247, %246 ]
%254 = phi i64 [ %259, %252 ], [ 0, %246 ]
%255 = getelementptr inbounds i32, i32* %4, i64 %253
%256 = load i32, i32* %255
%257 = getelementptr inbounds i32, i32* %26, i64 %253
store i32 %256, i32* %257
%258 = add nuw nsw i64 %253, 1
%259 = add i64 %254, 1
%260 = icmp eq i64 %259, %250
br i1 %260, label %261, label %252
261: ; preds = %252, %246
%262 = phi i64 [ %247, %246 ], [ %258, %252 ]
%263 = icmp ult i64 %249, 3
br i1 %263, label %302, label %283
264: ; preds = %152, %264
%265 = phi i64 [ %281, %264 ], [ %153, %152 ]
%266 = getelementptr inbounds i32, i32* %3, i64 %265
%267 = load i32, i32* %266
%268 = getelementptr inbounds i32, i32* %39, i64 %265
store i32 %267, i32* %268
%269 = add nuw nsw i64 %265, 1
%270 = getelementptr inbounds i32, i32* %3, i64 %269
%271 = load i32, i32* %270
%272 = getelementptr inbounds i32, i32* %39, i64 %269
store i32 %271, i32* %272
%273 = add nuw nsw i64 %265, 2
%274 = getelementptr inbounds i32, i32* %3, i64 %273
%275 = load i32, i32* %274
%276 = getelementptr inbounds i32, i32* %39, i64 %273
store i32 %275, i32* %276
%277 = add nuw nsw i64 %265, 3
%278 = getelementptr inbounds i32, i32* %3, i64 %277
%279 = load i32, i32* %278
%280 = getelementptr inbounds i32, i32* %39, i64 %277
store i32 %279, i32* %280
%281 = add nuw nsw i64 %265, 4
%282 = icmp eq i64 %281, %49
br i1 %282, label %155, label %264
283: ; preds = %261, %283
%284 = phi i64 [ %300, %283 ], [ %262, %261 ]
%285 = getelementptr inbounds i32, i32* %4, i64 %284
%286 = load i32, i32* %285
%287 = getelementptr inbounds i32, i32* %26, i64 %284
store i32 %286, i32* %287
%288 = add nuw nsw i64 %284, 1
%289 = getelementptr inbounds i32, i32* %4, i64 %288
%290 = load i32, i32* %289
%291 = getelementptr inbounds i32, i32* %26, i64 %288
store i32 %290, i32* %291
%292 = add nuw nsw i64 %284, 2
%293 = getelementptr inbounds i32, i32* %4, i64 %292
%294 = load i32, i32* %293
%295 = getelementptr inbounds i32, i32* %26, i64 %292
store i32 %294, i32* %295
%296 = add nuw nsw i64 %284, 3
%297 = getelementptr inbounds i32, i32* %4, i64 %296
%298 = load i32, i32* %297
%299 = getelementptr inbounds i32, i32* %26, i64 %296
store i32 %298, i32* %299
%300 = add nuw nsw i64 %284, 4
%301 = icmp eq i64 %300, %158
br i1 %301, label %302, label %283
302: ; preds = %261, %283, %244, %155
%303 = call i32 (i32, i32, i32, i32*, i32*, double*, ...) bitcast (i32 (...)* @colamd to i32 (i32, i32, i32, i32*, i32*, double*, ...)*)(i32 %0, i32 %1, i32 %11, i32* %26, i32* %39, double* %14)
%304 = icmp eq i32 %303, 0
br i1 %304, label %305, label %309
305: ; preds = %302
%306 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%307 = call i32 (i8*, i8*, ...) @sprintf(i8* %306, i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0), i32 41, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.2, i64 0, i64 0))
%308 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %306)
br label %309
309: ; preds = %305, %302
%310 = icmp sgt i32 %1, 0
br i1 %310, label %311, label %361
311: ; preds = %309
%312 = zext i32 %1 to i64
%313 = add nsw i64 %312, -1
%314 = and i64 %312, 3
%315 = icmp ult i64 %313, 3
br i1 %315, label %347, label %316
316: ; preds = %311
%317 = and i64 %312, 4294967292
br label %318
318: ; preds = %318, %316
%319 = phi i64 [ 0, %316 ], [ %344, %318 ]
%320 = phi i64 [ 0, %316 ], [ %345, %318 ]
%321 = getelementptr inbounds i32, i32* %39, i64 %319
%322 = load i32, i32* %321
%323 = sext i32 %322 to i64
%324 = getelementptr inbounds i32, i32* %5, i64 %323
%325 = trunc i64 %319 to i32
store i32 %325, i32* %324
%326 = or i64 %319, 1
%327 = getelementptr inbounds i32, i32* %39, i64 %326
%328 = load i32, i32* %327
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds i32, i32* %5, i64 %329
%331 = trunc i64 %326 to i32
store i32 %331, i32* %330
%332 = or i64 %319, 2
%333 = getelementptr inbounds i32, i32* %39, i64 %332
%334 = load i32, i32* %333
%335 = sext i32 %334 to i64
%336 = getelementptr inbounds i32, i32* %5, i64 %335
%337 = trunc i64 %332 to i32
store i32 %337, i32* %336
%338 = or i64 %319, 3
%339 = getelementptr inbounds i32, i32* %39, i64 %338
%340 = load i32, i32* %339
%341 = sext i32 %340 to i64
%342 = getelementptr inbounds i32, i32* %5, i64 %341
%343 = trunc i64 %338 to i32
store i32 %343, i32* %342
%344 = add nuw nsw i64 %319, 4
%345 = add i64 %320, 4
%346 = icmp eq i64 %345, %317
br i1 %346, label %347, label %318
347: ; preds = %318, %311
%348 = phi i64 [ 0, %311 ], [ %344, %318 ]
%349 = icmp eq i64 %314, 0
br i1 %349, label %361, label %350
350: ; preds = %347, %350
%351 = phi i64 [ %358, %350 ], [ %348, %347 ]
%352 = phi i64 [ %359, %350 ], [ 0, %347 ]
%353 = getelementptr inbounds i32, i32* %39, i64 %351
%354 = load i32, i32* %353
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds i32, i32* %5, i64 %355
%357 = trunc i64 %351 to i32
store i32 %357, i32* %356
%358 = add nuw nsw i64 %351, 1
%359 = add i64 %352, 1
%360 = icmp eq i64 %359, %314
br i1 %360, label %361, label %350
361: ; preds = %347, %350, %309
%362 = call i32 (double*, ...) bitcast (i32 (...)* @superlu_free to i32 (double*, ...)*)(double* %14)
%363 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %26)
%364 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %39)
ret void
}