void FormFullA(int n, int *nonz, double **nzval, int **rowind, int **colptr) {
  register int i, j, k, col, new_nnz;
  int *t_rowind, *t_colptr, *al_rowind, *al_colptr, *a_rowind, *a_colptr;
  int *marker;
  double *t_val, *al_val, *a_val;
  al_rowind = *rowind;
  al_colptr = *colptr;
  al_val = *nzval;
  if (!(marker = (int *)superlu_malloc((n + 1) * sizeof(int)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n",
            "SUPERLU_MALLOC fails for marker[]", 189,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/"
            "Toolbox/superlu-src/dreadrb.c");
    superlu_abort_and_exit(msg);
  };
  if (!(t_colptr = (int *)superlu_malloc((n + 1) * sizeof(int)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n", "SUPERLU_MALLOC t_colptr[]", 191,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/"
            "Toolbox/superlu-src/dreadrb.c");
    superlu_abort_and_exit(msg);
  };
  if (!(t_rowind = (int *)superlu_malloc(*nonz * sizeof(int)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n",
            "SUPERLU_MALLOC fails for t_rowind[]", 193,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/"
            "Toolbox/superlu-src/dreadrb.c");
    superlu_abort_and_exit(msg);
  };
  if (!(t_val = (double *)superlu_malloc(*nonz * sizeof(double)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n",
            "SUPERLU_MALLOC fails for t_val[]", 195,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/"
            "Toolbox/superlu-src/dreadrb.c");
    superlu_abort_and_exit(msg);
  };
  for (i = 0; i < n; ++i)
    marker[i] = 0;
  for (j = 0; j < n; ++j) {
    for (i = al_colptr[j]; i < al_colptr[j + 1]; ++i)
      ++marker[al_rowind[i]];
  }
  t_colptr[0] = 0;
  for (i = 0; i < n; ++i) {
    t_colptr[i + 1] = t_colptr[i] + marker[i];
    marker[i] = t_colptr[i];
  }
  for (j = 0; j < n; ++j)
    for (i = al_colptr[j]; i < al_colptr[j + 1]; ++i) {
      col = al_rowind[i];
      t_rowind[marker[col]] = j;
      t_val[marker[col]] = al_val[i];
      ++marker[col];
    }
  new_nnz = *nonz * 2 - n;
  if (!(a_colptr = (int *)superlu_malloc((n + 1) * sizeof(int)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n", "SUPERLU_MALLOC a_colptr[]", 217,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/"
            "Toolbox/superlu-src/dreadrb.c");
    superlu_abort_and_exit(msg);
  };
  if (!(a_rowind = (int *)superlu_malloc(new_nnz * sizeof(int)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n",
            "SUPERLU_MALLOC fails for a_rowind[]", 219,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/"
            "Toolbox/superlu-src/dreadrb.c");
    superlu_abort_and_exit(msg);
  };
  if (!(a_val = (double *)superlu_malloc(new_nnz * sizeof(double)))) {
    char msg[256];
    sprintf(msg, "%s at line %d in file %s\n",
            "SUPERLU_MALLOC fails for a_val[]", 221,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/"
            "Toolbox/superlu-src/dreadrb.c");
    superlu_abort_and_exit(msg);
  };
  a_colptr[0] = 0;
  k = 0;
  for (j = 0; j < n; ++j) {
    for (i = t_colptr[j]; i < t_colptr[j + 1]; ++i) {
      if (t_rowind[i] != j) {
        a_rowind[k] = t_rowind[i];
        a_val[k] = t_val[i];
        ++k;
      }
    }
    for (i = al_colptr[j]; i < al_colptr[j + 1]; ++i) {
      a_rowind[k] = al_rowind[i];
      a_val[k] = al_val[i];
      ++k;
    }
    a_colptr[j + 1] = k;
  }
  printf("FormFullA: new_nnz = %d, k = %d\n", new_nnz, k);
  superlu_free(al_val);
  superlu_free(al_rowind);
  superlu_free(al_colptr);
  superlu_free(marker);
  superlu_free(t_val);
  superlu_free(t_rowind);
  superlu_free(t_colptr);
  *nzval = a_val;
  *rowind = a_rowind;
  *colptr = a_colptr;
  *nonz = new_nnz;
}


x86 assembly (clang, -O0):
<FormFullA>:
push   %rbp
mov    %rsp,%rbp
sub    $0x790,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x58(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x60(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x88(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rdi
shl    $0x2,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x78(%rbp)
cmp    $0x0,%rax
jne    11ec <FormFullA+0x9c>
lea    -0x190(%rbp),%rdi
lea    0xe3c(%rip),%rsi
lea    0xe4f(%rip),%rdx
mov    $0xbd,%ecx
lea    0xe65(%rip),%r8
mov    $0x0,%al
call   1070 <sprintf@plt>
lea    -0x190(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rdi
shl    $0x2,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x50(%rbp)
cmp    $0x0,%rax
jne    1246 <FormFullA+0xf6>
lea    -0x290(%rbp),%rdi
lea    0xde2(%rip),%rsi
lea    0xeb0(%rip),%rdx
mov    $0xbf,%ecx
lea    0xe0b(%rip),%r8
mov    $0x0,%al
call   1070 <sprintf@plt>
lea    -0x290(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
mov    -0x10(%rbp),%rax
movslq (%rax),%rdi
shl    $0x2,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x48(%rbp)
cmp    $0x0,%rax
jne    129e <FormFullA+0x14e>
lea    -0x390(%rbp),%rdi
lea    0xd8a(%rip),%rsi
lea    0xe72(%rip),%rdx
mov    $0xc1,%ecx
lea    0xdb3(%rip),%r8
mov    $0x0,%al
call   1070 <sprintf@plt>
lea    -0x390(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
mov    -0x10(%rbp),%rax
movslq (%rax),%rdi
shl    $0x3,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x80(%rbp)
cmp    $0x0,%rax
jne    12f6 <FormFullA+0x1a6>
lea    -0x490(%rbp),%rdi
lea    0xd32(%rip),%rsi
lea    0xe3e(%rip),%rdx
mov    $0xc3,%ecx
lea    0xd5b(%rip),%r8
mov    $0x0,%al
call   1070 <sprintf@plt>
lea    -0x490(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1326 <FormFullA+0x1d6>
mov    -0x78(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12fd <FormFullA+0x1ad>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    139a <FormFullA+0x24a>
mov    -0x60(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x60(%rbp),%rcx
mov    -0x30(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    1387 <FormFullA+0x237>
mov    -0x78(%rbp),%rax
mov    -0x58(%rbp),%rcx
movslq -0x2c(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1347 <FormFullA+0x1f7>
jmp    138c <FormFullA+0x23c>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    132d <FormFullA+0x1dd>
mov    -0x50(%rbp),%rax
movl   $0x0,(%rax)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1401 <FormFullA+0x2b1>
mov    -0x50(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x78(%rbp),%rax
movslq -0x2c(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    -0x50(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x50(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x78(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    13ab <FormFullA+0x25b>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    14b6 <FormFullA+0x366>
mov    -0x60(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x60(%rbp),%rcx
mov    -0x30(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    14a3 <FormFullA+0x353>
mov    -0x58(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x38(%rbp)
mov    -0x30(%rbp),%edx
mov    -0x48(%rbp),%rax
mov    -0x78(%rbp),%rcx
movslq -0x38(%rbp),%rsi
movslq (%rcx,%rsi,4),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x88(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x80(%rbp),%rax
mov    -0x78(%rbp),%rcx
movslq -0x38(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x78(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1422 <FormFullA+0x2d2>
jmp    14a8 <FormFullA+0x358>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1408 <FormFullA+0x2b8>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x1,%eax
sub    -0x4(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rdi
shl    $0x2,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x70(%rbp)
cmp    $0x0,%rax
jne    151f <FormFullA+0x3cf>
lea    -0x590(%rbp),%rdi
lea    0xb09(%rip),%rsi
lea    0xc36(%rip),%rdx
mov    $0xd9,%ecx
lea    0xb32(%rip),%r8
mov    $0x0,%al
call   1070 <sprintf@plt>
lea    -0x590(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
movslq -0x3c(%rbp),%rdi
shl    $0x2,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x68(%rbp)
cmp    $0x0,%rax
jne    1574 <FormFullA+0x424>
lea    -0x690(%rbp),%rdi
lea    0xab4(%rip),%rsi
lea    0xbfb(%rip),%rdx
mov    $0xdb,%ecx
lea    0xadd(%rip),%r8
mov    $0x0,%al
call   1070 <sprintf@plt>
lea    -0x690(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
movslq -0x3c(%rbp),%rdi
shl    $0x3,%rdi
mov    $0x0,%al
call   1050 <superlu_malloc@plt>
cltq
mov    %rax,-0x90(%rbp)
cmp    $0x0,%rax
jne    15cc <FormFullA+0x47c>
lea    -0x790(%rbp),%rdi
lea    0xa5c(%rip),%rsi
lea    0xbc7(%rip),%rdx
mov    $0xdd,%ecx
lea    0xa85(%rip),%r8
mov    $0x0,%al
call   1070 <sprintf@plt>
lea    -0x790(%rbp),%rdi
mov    $0x0,%al
call   1030 <superlu_abort_and_exit@plt>
mov    -0x70(%rbp),%rax
movl   $0x0,(%rax)
movl   $0x0,-0x34(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    170f <FormFullA+0x5bf>
mov    -0x50(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x50(%rbp),%rcx
mov    -0x30(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    167a <FormFullA+0x52a>
mov    -0x48(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x30(%rbp),%eax
je     1667 <FormFullA+0x517>
mov    -0x48(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x80(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x90(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    166c <FormFullA+0x51c>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    15fe <FormFullA+0x4ae>
mov    -0x60(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x60(%rbp),%rcx
mov    -0x30(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jge    16ee <FormFullA+0x59e>
mov    -0x58(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x88(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x90(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1688 <FormFullA+0x538>
mov    -0x34(%rbp),%edx
mov    -0x70(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    15e4 <FormFullA+0x494>
mov    -0x3c(%rbp),%esi
mov    -0x34(%rbp),%edx
lea    0xa77(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x88(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x58(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x60(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x78(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x80(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x48(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x50(%rbp),%rdi
mov    $0x0,%al
call   1060 <superlu_free@plt>
mov    -0x90(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x68(%rbp),%rcx
mov    -0x20(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x70(%rbp),%rcx
mov    -0x28(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x3c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
add    $0x790,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<FormFullA>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x178,%rsp
mov    %rsi,%rbp
mov    %rcx,0x60(%rsp)
mov    (%rcx),%rax
mov    %rax,0x48(%rsp)
mov    %r8,0x68(%rsp)
mov    (%r8),%r12
mov    %rdx,0x58(%rsp)
mov    (%rdx),%rax
mov    %rax,0x40(%rsp)
mov    %edi,0x1c(%rsp)
movslq %edi,%rax
mov    %rax,0x20(%rsp)
lea    0x4(,%rax,4),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <superlu_malloc@plt>
mov    %eax,%r14d
test   %eax,%eax
mov    %rbp,0x10(%rsp)
jne    11f8 <FormFullA+0x98>
lea    0xe39(%rip),%rsi
lea    0xe4c(%rip),%rdx
lea    0xe67(%rip),%r8
lea    0x70(%rsp),%r15
mov    %r15,%rdi
mov    $0xbd,%ecx
xor    %eax,%eax
call   1080 <sprintf@plt>
mov    %r15,%rdi
mov    0x10(%rsp),%rbp
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
mov    %rbx,0x28(%rsp)
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <superlu_malloc@plt>
mov    %eax,%ebx
test   %eax,%eax
jne    1245 <FormFullA+0xe5>
lea    0xdec(%rip),%rsi
lea    0xeba(%rip),%rdx
lea    0xe1a(%rip),%r8
lea    0x70(%rsp),%r15
mov    %r15,%rdi
mov    $0xbf,%ecx
xor    %eax,%eax
call   1080 <sprintf@plt>
mov    %r15,%rdi
mov    0x10(%rsp),%rbp
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
movslq 0x0(%rbp),%rdi
shl    $0x2,%rdi
xor    %eax,%eax
call   1060 <superlu_malloc@plt>
mov    %eax,%r13d
test   %eax,%eax
jne    1293 <FormFullA+0x133>
lea    0xd9e(%rip),%rsi
lea    0xe86(%rip),%rdx
lea    0xdcc(%rip),%r8
lea    0x70(%rsp),%r15
mov    %r15,%rdi
mov    $0xc1,%ecx
xor    %eax,%eax
call   1080 <sprintf@plt>
mov    %r15,%rdi
mov    0x10(%rsp),%rbp
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
movslq 0x0(%rbp),%rdi
shl    $0x3,%rdi
xor    %eax,%eax
call   1060 <superlu_malloc@plt>
mov    %eax,%r15d
test   %eax,%eax
jne    12dc <FormFullA+0x17c>
lea    0xd50(%rip),%rsi
lea    0xe5c(%rip),%rdx
lea    0xd7e(%rip),%r8
lea    0x70(%rsp),%rbp
mov    %rbp,%rdi
mov    $0xc3,%ecx
xor    %eax,%eax
call   1080 <sprintf@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
movslq %r14d,%r14
movslq %ebx,%rbx
movslq %r13d,%rax
mov    %rax,0x38(%rsp)
movslq %r15d,%rax
mov    %rax,0x30(%rsp)
mov    0x1c(%rsp),%r15d
mov    %r15d,%eax
test   %r15d,%r15d
mov    %rbx,0x8(%rsp)
mov    %rax,0x50(%rsp)
jle    1457 <FormFullA+0x2f7>
lea    0x0(,%rax,4),%rdx
xor    %ebp,%ebp
mov    %r14,%rdi
xor    %esi,%esi
call   1050 <memset@plt>
mov    0x50(%rsp),%r11
mov    (%r12),%eax
mov    0x10(%rsp),%r8
mov    0x48(%rsp),%r9
jmp    1347 <FormFullA+0x1e7>
cs nopw 0x0(%rax,%rax,1)
mov    %ecx,%eax
cmp    %r11,%rbp
je     1378 <FormFullA+0x218>
mov    0x4(%r12,%rbp,4),%ecx
add    $0x1,%rbp
cmp    %ecx,%eax
jge    1340 <FormFullA+0x1e0>
cltq
cs nopw 0x0(%rax,%rax,1)
movslq (%r9,%rax,4),%rcx
addl   $0x1,(%r14,%rcx,4)
add    $0x1,%rax
movslq (%r12,%rbp,4),%rcx
cmp    %rcx,%rax
jl     1360 <FormFullA+0x200>
jmp    1340 <FormFullA+0x1e0>
mov    0x8(%rsp),%rax
movl   $0x0,(%rax)
test   %r15d,%r15d
mov    0x40(%rsp),%r13
jle    1552 <FormFullA+0x3f2>
mov    (%r14),%eax
mov    0x8(%rsp),%rcx
mov    %eax,0x4(%rcx)
movl   $0x0,(%r14)
cmp    $0x1,%r15d
je     14dd <FormFullA+0x37d>
mov    0x8(%rsp),%rsi
lea    0x4(%rsi),%rcx
lea    0x4(%r14),%rax
lea    (%r14,%r11,4),%rdx
cmp    %rdx,%rcx
jae    1467 <FormFullA+0x307>
lea    (%rsi,%r11,4),%rdx
add    $0x4,%rdx
cmp    %rdx,%rax
jae    1467 <FormFullA+0x307>
lea    -0x1(%r11),%r10
mov    $0x1,%esi
cmp    $0x2,%r15d
je     1433 <FormFullA+0x2d3>
mov    %r10,%rdi
and    $0xfffffffffffffffe,%rdi
neg    %rdi
mov    $0x1,%esi
cs nopw 0x0(%rax,%rax,1)
mov    (%rcx),%edx
mov    -0x4(%rax,%rsi,4),%ebx
add    %edx,%ebx
mov    %ebx,0x4(%rcx)
mov    %edx,-0x4(%rax,%rsi,4)
mov    0x4(%rcx),%edx
mov    (%rax,%rsi,4),%ebx
add    %edx,%ebx
mov    %ebx,0x8(%rcx)
mov    %edx,(%rax,%rsi,4)
lea    (%rdi,%rsi,1),%rdx
add    $0x2,%rdx
add    $0x2,%rsi
add    $0x8,%rcx
cmp    $0x1,%rdx
jne    1400 <FormFullA+0x2a0>
test   $0x1,%r10b
je     14dd <FormFullA+0x37d>
mov    (%rcx),%eax
mov    (%r14,%rsi,4),%ecx
add    %eax,%ecx
mov    0x8(%rsp),%rdx
mov    %ecx,0x4(%rdx,%rsi,4)
mov    %eax,(%r14,%rsi,4)
jmp    14dd <FormFullA+0x37d>
movl   $0x0,(%rbx)
mov    0x10(%rsp),%r8
jmp    1552 <FormFullA+0x3f2>
mov    (%rcx),%ecx
lea    -0x1(%r11),%r10
mov    $0x1,%edx
cmp    $0x2,%r15d
je     14bf <FormFullA+0x35f>
mov    %r10,%r11
and    $0xfffffffffffffffe,%r11
neg    %r11
mov    $0x1,%edi
mov    0x8(%rsp),%rsi
nopl   0x0(%rax)
mov    -0x4(%rax,%rdi,4),%ebx
add    %ecx,%ebx
mov    %ebx,0x4(%rsi,%rdi,4)
mov    %ecx,-0x4(%rax,%rdi,4)
mov    (%rax,%rdi,4),%ecx
add    %ebx,%ecx
lea    0x2(%rdi),%rdx
mov    %ecx,0x8(%rsi,%rdi,4)
mov    %ebx,(%rax,%rdi,4)
lea    (%r11,%rdi,1),%rbx
add    $0x2,%rbx
mov    %rdx,%rdi
cmp    $0x1,%rbx
jne    1490 <FormFullA+0x330>
test   $0x1,%r10b
mov    0x50(%rsp),%r11
je     14dd <FormFullA+0x37d>
mov    (%r14,%rdx,4),%eax
add    %ecx,%eax
mov    0x8(%rsp),%rsi
mov    %eax,0x4(%rsi,%rdx,4)
mov    %ecx,(%r14,%rdx,4)
test   %r15d,%r15d
jle    1552 <FormFullA+0x3f2>
mov    (%r12),%edx
xor    %eax,%eax
mov    0x38(%rsp),%rbx
mov    0x30(%rsp),%rbp
jmp    1507 <FormFullA+0x3a7>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %esi,%edx
cmp    %r11,%rax
je     1552 <FormFullA+0x3f2>
mov    %rax,%rcx
add    $0x1,%rax
mov    0x4(%r12,%rcx,4),%esi
cmp    %esi,%edx
jge    1500 <FormFullA+0x3a0>
movslq %edx,%rdx
nopw   0x0(%rax,%rax,1)
movslq (%r9,%rdx,4),%rsi
movslq (%r14,%rsi,4),%rdi
mov    %ecx,(%rbx,%rdi,4)
movsd  0x0(%r13,%rdx,8),%xmm0
movslq (%r14,%rsi,4),%rdi
movsd  %xmm0,0x0(%rbp,%rdi,8)
add    $0x1,%edi
mov    %edi,(%r14,%rsi,4)
add    $0x1,%rdx
movslq (%r12,%rax,4),%rsi
cmp    %rsi,%rdx
jl     1520 <FormFullA+0x3c0>
jmp    1500 <FormFullA+0x3a0>
movslq (%r8),%rbx
add    %rbx,%rbx
sub    0x20(%rsp),%rbx
mov    0x28(%rsp),%rdi
xor    %eax,%eax
call   1060 <superlu_malloc@plt>
mov    %eax,%r15d
test   %eax,%eax
jne    15a3 <FormFullA+0x443>
lea    0xa89(%rip),%rsi
lea    0xbb6(%rip),%rdx
lea    0xab7(%rip),%r8
lea    0x70(%rsp),%rbp
mov    %rbp,%rdi
mov    $0xd9,%ecx
xor    %eax,%eax
call   1080 <sprintf@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
lea    0x0(,%rbx,4),%rdi
xor    %eax,%eax
call   1060 <superlu_malloc@plt>
mov    %eax,%r13d
test   %eax,%eax
jne    15ec <FormFullA+0x48c>
lea    0xa40(%rip),%rsi
lea    0xb87(%rip),%rdx
lea    0xa6e(%rip),%r8
lea    0x70(%rsp),%rbp
mov    %rbp,%rdi
mov    $0xdb,%ecx
xor    %eax,%eax
call   1080 <sprintf@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
movslq %r15d,%rax
mov    %rax,0x28(%rsp)
mov    %rbx,0x20(%rsp)
lea    0x0(,%rbx,8),%rdi
xor    %r15d,%r15d
xor    %eax,%eax
call   1060 <superlu_malloc@plt>
mov    %eax,%ebp
test   %eax,%eax
jne    1644 <FormFullA+0x4e4>
lea    0x9e8(%rip),%rsi
lea    0xb53(%rip),%rdx
lea    0xa16(%rip),%r8
lea    0x70(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xdd,%ecx
xor    %eax,%eax
call   1080 <sprintf@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <superlu_abort_and_exit@plt>
movslq %r13d,%rbx
movslq %ebp,%r13
mov    0x28(%rsp),%r9
movl   $0x0,(%r9)
cmpl   $0x0,0x1c(%rsp)
mov    0x38(%rsp),%rax
mov    0x30(%rsp),%r11
mov    0x8(%rsp),%rbp
jle    1767 <FormFullA+0x607>
xor    %ecx,%ecx
xor    %r15d,%r15d
jmp    1692 <FormFullA+0x532>
nopw   0x0(%rax,%rax,1)
mov    %r15d,(%r9,%r8,4)
mov    %r8,%rcx
cmp    0x50(%rsp),%r8
je     1767 <FormFullA+0x607>
movslq 0x0(%rbp,%rcx,4),%rdx
lea    0x1(%rcx),%r8
mov    0x4(%rbp,%rcx,4),%esi
cmp    %esi,%edx
jl     1740 <FormFullA+0x5e0>
movslq (%r12,%rcx,4),%rcx
cmp    (%r12,%r8,4),%ecx
jge    1680 <FormFullA+0x520>
movslq %r15d,%rsi
mov    %rbx,%r10
lea    (%rbx,%rsi,4),%r9
lea    0x0(,%rsi,8),%rsi
add    %r13,%rsi
mov    0x48(%rsp),%rax
lea    (%rax,%rcx,4),%rbp
mov    0x40(%rsp),%rax
lea    (%rax,%rcx,8),%rbx
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
mov    0x0(%rbp,%rdi,4),%eax
mov    %eax,(%r9,%rdi,4)
movsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%rsi,%rdi,8)
movslq (%r12,%r8,4),%rax
lea    (%rcx,%rdi,1),%rdx
add    $0x1,%rdx
add    $0x1,%rdi
cmp    %rax,%rdx
jl     16e0 <FormFullA+0x580>
add    %edi,%r15d
mov    0x8(%rsp),%rbp
mov    0x38(%rsp),%rax
mov    0x30(%rsp),%r11
mov    0x28(%rsp),%r9
mov    %r10,%rbx
jmp    1680 <FormFullA+0x520>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rdx
movslq %esi,%rdi
cmp    %rdi,%rdx
jge    16a7 <FormFullA+0x547>
mov    (%rax,%rdx,4),%edi
cmp    %rdi,%rcx
je     1730 <FormFullA+0x5d0>
movslq %r15d,%r15
mov    %edi,(%rbx,%r15,4)
movsd  (%r11,%rdx,8),%xmm0
movsd  %xmm0,0x0(%r13,%r15,8)
add    $0x1,%r15d
mov    0x0(%rbp,%r8,4),%esi
jmp    1730 <FormFullA+0x5d0>
lea    0xa25(%rip),%rdi
mov    0x20(%rsp),%rsi
mov    %r15d,%edx
xor    %eax,%eax
mov    %rbp,%r15
mov    %r9,%rbp
call   1040 <printf@plt>
mov    0x40(%rsp),%rdi
xor    %eax,%eax
call   1070 <superlu_free@plt>
mov    0x48(%rsp),%rdi
xor    %eax,%eax
call   1070 <superlu_free@plt>
mov    %r12,%rdi
xor    %eax,%eax
call   1070 <superlu_free@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <superlu_free@plt>
mov    0x30(%rsp),%rdi
xor    %eax,%eax
call   1070 <superlu_free@plt>
mov    0x38(%rsp),%rdi
xor    %eax,%eax
call   1070 <superlu_free@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1070 <superlu_free@plt>
mov    0x58(%rsp),%rax
mov    %r13,(%rax)
mov    0x60(%rsp),%rax
mov    %rbx,(%rax)
mov    0x68(%rsp),%rax
mov    %rbp,(%rax)
mov    0x10(%rsp),%rax
mov    0x20(%rsp),%rcx
mov    %ecx,(%rax)
add    $0x178,%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 = [34 x i8] c"SUPERLU_MALLOC fails for marker[]\00"
@.str.2 = [153 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/TLCFEM/suanPan/refs/heads/master/Toolbox/superlu-src/dreadrb.c\00"
@.str.3 = [26 x i8] c"SUPERLU_MALLOC t_colptr[]\00"
@.str.4 = [36 x i8] c"SUPERLU_MALLOC fails for t_rowind[]\00"
@.str.5 = [33 x i8] c"SUPERLU_MALLOC fails for t_val[]\00"
@.str.6 = [26 x i8] c"SUPERLU_MALLOC a_colptr[]\00"
@.str.7 = [36 x i8] c"SUPERLU_MALLOC fails for a_rowind[]\00"
@.str.8 = [33 x i8] c"SUPERLU_MALLOC fails for a_val[]\00"
@.str.9 = [33 x i8] c"FormFullA: new_nnz = %d, k = %d\0A\00"
define void @FormFullA(i32 %0, i32* %1, double** %2, i32** %3, i32** %4) {
%6 = alloca i32
%7 = alloca i32*
%8 = alloca double**
%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 i32*
%19 = alloca i32*
%20 = alloca i32*
%21 = alloca i32*
%22 = alloca i32*
%23 = alloca double*
%24 = alloca double*
%25 = alloca double*
%26 = alloca [256 x i8]
%27 = alloca [256 x i8]
%28 = alloca [256 x i8]
%29 = alloca [256 x i8]
%30 = alloca [256 x i8]
%31 = alloca [256 x i8]
%32 = alloca [256 x i8]
store i32 %0, i32* %6
store i32* %1, i32** %7
store double** %2, double*** %8
store i32** %3, i32*** %9
store i32** %4, i32*** %10
%33 = load i32**, i32*** %9
%34 = load i32*, i32** %33
store i32* %34, i32** %18
%35 = load i32**, i32*** %10
%36 = load i32*, i32** %35
store i32* %36, i32** %19
%37 = load double**, double*** %8
%38 = load double*, double** %37
store double* %38, double** %24
%39 = load i32, i32* %6
%40 = add nsw i32 %39, 1
%41 = sext i32 %40 to i64
%42 = mul i64 %41, 4
%43 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %42)
%44 = sext i32 %43 to i64
%45 = inttoptr i64 %44 to i32*
store i32* %45, i32** %22
%46 = icmp ne i32* %45, null
br i1 %46, label %52, label %47
47: ; preds = %5
%48 = getelementptr inbounds [256 x i8], [256 x i8]* %26, i64 0, i64 0
%49 = call i32 (i8*, i8*, ...) @sprintf(i8* %48, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.1, i64 0, i64 0), i32 189, i8* getelementptr inbounds ([153 x i8], [153 x i8]* @.str.2, i64 0, i64 0))
%50 = getelementptr inbounds [256 x i8], [256 x i8]* %26, i64 0, i64 0
%51 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %50)
br label %52
52: ; preds = %47, %5
%53 = load i32, i32* %6
%54 = add nsw i32 %53, 1
%55 = sext i32 %54 to i64
%56 = mul i64 %55, 4
%57 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %56)
%58 = sext i32 %57 to i64
%59 = inttoptr i64 %58 to i32*
store i32* %59, i32** %17
%60 = icmp ne i32* %59, null
br i1 %60, label %66, label %61
61: ; preds = %52
%62 = getelementptr inbounds [256 x i8], [256 x i8]* %27, i64 0, i64 0
%63 = call i32 (i8*, i8*, ...) @sprintf(i8* %62, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.3, i64 0, i64 0), i32 191, i8* getelementptr inbounds ([153 x i8], [153 x i8]* @.str.2, i64 0, i64 0))
%64 = getelementptr inbounds [256 x i8], [256 x i8]* %27, i64 0, i64 0
%65 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %64)
br label %66
66: ; preds = %61, %52
%67 = load i32*, i32** %7
%68 = load i32, i32* %67
%69 = sext i32 %68 to i64
%70 = mul i64 %69, 4
%71 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %70)
%72 = sext i32 %71 to i64
%73 = inttoptr i64 %72 to i32*
store i32* %73, i32** %16
%74 = icmp ne i32* %73, null
br i1 %74, label %80, label %75
75: ; preds = %66
%76 = getelementptr inbounds [256 x i8], [256 x i8]* %28, i64 0, i64 0
%77 = call i32 (i8*, i8*, ...) @sprintf(i8* %76, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.4, i64 0, i64 0), i32 193, i8* getelementptr inbounds ([153 x i8], [153 x i8]* @.str.2, i64 0, i64 0))
%78 = getelementptr inbounds [256 x i8], [256 x i8]* %28, i64 0, i64 0
%79 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %78)
br label %80
80: ; preds = %75, %66
%81 = load i32*, i32** %7
%82 = load i32, i32* %81
%83 = sext i32 %82 to i64
%84 = mul i64 %83, 8
%85 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %84)
%86 = sext i32 %85 to i64
%87 = inttoptr i64 %86 to double*
store double* %87, double** %23
%88 = icmp ne double* %87, null
br i1 %88, label %94, label %89
89: ; preds = %80
%90 = getelementptr inbounds [256 x i8], [256 x i8]* %29, i64 0, i64 0
%91 = call i32 (i8*, i8*, ...) @sprintf(i8* %90, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.5, i64 0, i64 0), i32 195, i8* getelementptr inbounds ([153 x i8], [153 x i8]* @.str.2, i64 0, i64 0))
%92 = getelementptr inbounds [256 x i8], [256 x i8]* %29, i64 0, i64 0
%93 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %92)
br label %94
94: ; preds = %89, %80
store i32 0, i32* %11
br label %95
95: ; preds = %104, %94
%96 = load i32, i32* %11
%97 = load i32, i32* %6
%98 = icmp slt i32 %96, %97
br i1 %98, label %99, label %107
99: ; preds = %95
%100 = load i32*, i32** %22
%101 = load i32, i32* %11
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i32, i32* %100, i64 %102
store i32 0, i32* %103
br label %104
104: ; preds = %99
%105 = load i32, i32* %11
%106 = add nsw i32 %105, 1
store i32 %106, i32* %11
br label %95
107: ; preds = %95
store i32 0, i32* %12
br label %108
108: ; preds = %142, %107
%109 = load i32, i32* %12
%110 = load i32, i32* %6
%111 = icmp slt i32 %109, %110
br i1 %111, label %112, label %145
112: ; preds = %108
%113 = load i32*, i32** %19
%114 = load i32, i32* %12
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds i32, i32* %113, i64 %115
%117 = load i32, i32* %116
store i32 %117, i32* %11
br label %118
118: ; preds = %138, %112
%119 = load i32, i32* %11
%120 = load i32*, i32** %19
%121 = load i32, i32* %12
%122 = add nsw i32 %121, 1
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds i32, i32* %120, i64 %123
%125 = load i32, i32* %124
%126 = icmp slt i32 %119, %125
br i1 %126, label %127, label %141
127: ; preds = %118
%128 = load i32*, i32** %22
%129 = load i32*, i32** %18
%130 = load i32, i32* %11
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds i32, i32* %129, i64 %131
%133 = load i32, i32* %132
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds i32, i32* %128, i64 %134
%136 = load i32, i32* %135
%137 = add nsw i32 %136, 1
store i32 %137, i32* %135
br label %138
138: ; preds = %127
%139 = load i32, i32* %11
%140 = add nsw i32 %139, 1
store i32 %140, i32* %11
br label %118
141: ; preds = %118
br label %142
142: ; preds = %141
%143 = load i32, i32* %12
%144 = add nsw i32 %143, 1
store i32 %144, i32* %12
br label %108
145: ; preds = %108
%146 = load i32*, i32** %17
%147 = getelementptr inbounds i32, i32* %146, i64 0
store i32 0, i32* %147
store i32 0, i32* %11
br label %148
148: ; preds = %178, %145
%149 = load i32, i32* %11
%150 = load i32, i32* %6
%151 = icmp slt i32 %149, %150
br i1 %151, label %152, label %181
152: ; preds = %148
%153 = load i32*, i32** %17
%154 = load i32, i32* %11
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds i32, i32* %153, i64 %155
%157 = load i32, i32* %156
%158 = load i32*, i32** %22
%159 = load i32, i32* %11
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds i32, i32* %158, i64 %160
%162 = load i32, i32* %161
%163 = add nsw i32 %157, %162
%164 = load i32*, i32** %17
%165 = load i32, i32* %11
%166 = add nsw i32 %165, 1
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds i32, i32* %164, i64 %167
store i32 %163, i32* %168
%169 = load i32*, i32** %17
%170 = load i32, i32* %11
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds i32, i32* %169, i64 %171
%173 = load i32, i32* %172
%174 = load i32*, i32** %22
%175 = load i32, i32* %11
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds i32, i32* %174, i64 %176
store i32 %173, i32* %177
br label %178
178: ; preds = %152
%179 = load i32, i32* %11
%180 = add nsw i32 %179, 1
store i32 %180, i32* %11
br label %148
181: ; preds = %148
store i32 0, i32* %12
br label %182
182: ; preds = %239, %181
%183 = load i32, i32* %12
%184 = load i32, i32* %6
%185 = icmp slt i32 %183, %184
br i1 %185, label %186, label %242
186: ; preds = %182
%187 = load i32*, i32** %19
%188 = load i32, i32* %12
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i32, i32* %187, i64 %189
%191 = load i32, i32* %190
store i32 %191, i32* %11
br label %192
192: ; preds = %235, %186
%193 = load i32, i32* %11
%194 = load i32*, i32** %19
%195 = load i32, i32* %12
%196 = add nsw i32 %195, 1
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds i32, i32* %194, i64 %197
%199 = load i32, i32* %198
%200 = icmp slt i32 %193, %199
br i1 %200, label %201, label %238
201: ; preds = %192
%202 = load i32*, i32** %18
%203 = load i32, i32* %11
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds i32, i32* %202, i64 %204
%206 = load i32, i32* %205
store i32 %206, i32* %14
%207 = load i32, i32* %12
%208 = load i32*, i32** %16
%209 = load i32*, i32** %22
%210 = load i32, i32* %14
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds i32, i32* %209, i64 %211
%213 = load i32, i32* %212
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds i32, i32* %208, i64 %214
store i32 %207, i32* %215
%216 = load double*, double** %24
%217 = load i32, i32* %11
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds double, double* %216, i64 %218
%220 = load double, double* %219
%221 = load double*, double** %23
%222 = load i32*, i32** %22
%223 = load i32, i32* %14
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds i32, i32* %222, i64 %224
%226 = load i32, i32* %225
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds double, double* %221, i64 %227
store double %220, double* %228
%229 = load i32*, i32** %22
%230 = load i32, i32* %14
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds i32, i32* %229, i64 %231
%233 = load i32, i32* %232
%234 = add nsw i32 %233, 1
store i32 %234, i32* %232
br label %235
235: ; preds = %201
%236 = load i32, i32* %11
%237 = add nsw i32 %236, 1
store i32 %237, i32* %11
br label %192
238: ; preds = %192
br label %239
239: ; preds = %238
%240 = load i32, i32* %12
%241 = add nsw i32 %240, 1
store i32 %241, i32* %12
br label %182
242: ; preds = %182
%243 = load i32*, i32** %7
%244 = load i32, i32* %243
%245 = mul nsw i32 %244, 2
%246 = load i32, i32* %6
%247 = sub nsw i32 %245, %246
store i32 %247, i32* %15
%248 = load i32, i32* %6
%249 = add nsw i32 %248, 1
%250 = sext i32 %249 to i64
%251 = mul i64 %250, 4
%252 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %251)
%253 = sext i32 %252 to i64
%254 = inttoptr i64 %253 to i32*
store i32* %254, i32** %21
%255 = icmp ne i32* %254, null
br i1 %255, label %261, label %256
256: ; preds = %242
%257 = getelementptr inbounds [256 x i8], [256 x i8]* %30, i64 0, i64 0
%258 = call i32 (i8*, i8*, ...) @sprintf(i8* %257, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0), i32 217, i8* getelementptr inbounds ([153 x i8], [153 x i8]* @.str.2, i64 0, i64 0))
%259 = getelementptr inbounds [256 x i8], [256 x i8]* %30, i64 0, i64 0
%260 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %259)
br label %261
261: ; preds = %256, %242
%262 = load i32, i32* %15
%263 = sext i32 %262 to i64
%264 = mul i64 %263, 4
%265 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %264)
%266 = sext i32 %265 to i64
%267 = inttoptr i64 %266 to i32*
store i32* %267, i32** %20
%268 = icmp ne i32* %267, null
br i1 %268, label %274, label %269
269: ; preds = %261
%270 = getelementptr inbounds [256 x i8], [256 x i8]* %31, i64 0, i64 0
%271 = call i32 (i8*, i8*, ...) @sprintf(i8* %270, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.7, i64 0, i64 0), i32 219, i8* getelementptr inbounds ([153 x i8], [153 x i8]* @.str.2, i64 0, i64 0))
%272 = getelementptr inbounds [256 x i8], [256 x i8]* %31, i64 0, i64 0
%273 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %272)
br label %274
274: ; preds = %269, %261
%275 = load i32, i32* %15
%276 = sext i32 %275 to i64
%277 = mul i64 %276, 8
%278 = call i32 (i64, ...) bitcast (i32 (...)* @superlu_malloc to i32 (i64, ...)*)(i64 %277)
%279 = sext i32 %278 to i64
%280 = inttoptr i64 %279 to double*
store double* %280, double** %25
%281 = icmp ne double* %280, null
br i1 %281, label %287, label %282
282: ; preds = %274
%283 = getelementptr inbounds [256 x i8], [256 x i8]* %32, i64 0, i64 0
%284 = call i32 (i8*, i8*, ...) @sprintf(i8* %283, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.8, i64 0, i64 0), i32 221, i8* getelementptr inbounds ([153 x i8], [153 x i8]* @.str.2, i64 0, i64 0))
%285 = getelementptr inbounds [256 x i8], [256 x i8]* %32, i64 0, i64 0
%286 = call i32 (i8*, ...) bitcast (i32 (...)* @superlu_abort_and_exit to i32 (i8*, ...)*)(i8* %285)
br label %287
287: ; preds = %282, %274
%288 = load i32*, i32** %21
%289 = getelementptr inbounds i32, i32* %288, i64 0
store i32 0, i32* %289
store i32 0, i32* %13
store i32 0, i32* %12
br label %290
290: ; preds = %388, %287
%291 = load i32, i32* %12
%292 = load i32, i32* %6
%293 = icmp slt i32 %291, %292
br i1 %293, label %294, label %391
294: ; preds = %290
%295 = load i32*, i32** %17
%296 = load i32, i32* %12
%297 = sext i32 %296 to i64
%298 = getelementptr inbounds i32, i32* %295, i64 %297
%299 = load i32, i32* %298
store i32 %299, i32* %11
br label %300
300: ; preds = %339, %294
%301 = load i32, i32* %11
%302 = load i32*, i32** %17
%303 = load i32, i32* %12
%304 = add nsw i32 %303, 1
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds i32, i32* %302, i64 %305
%307 = load i32, i32* %306
%308 = icmp slt i32 %301, %307
br i1 %308, label %309, label %342
309: ; preds = %300
%310 = load i32*, i32** %16
%311 = load i32, i32* %11
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds i32, i32* %310, i64 %312
%314 = load i32, i32* %313
%315 = load i32, i32* %12
%316 = icmp ne i32 %314, %315
br i1 %316, label %317, label %338
317: ; preds = %309
%318 = load i32*, i32** %16
%319 = load i32, i32* %11
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds i32, i32* %318, i64 %320
%322 = load i32, i32* %321
%323 = load i32*, i32** %20
%324 = load i32, i32* %13
%325 = sext i32 %324 to i64
%326 = getelementptr inbounds i32, i32* %323, i64 %325
store i32 %322, i32* %326
%327 = load double*, double** %23
%328 = load i32, i32* %11
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds double, double* %327, i64 %329
%331 = load double, double* %330
%332 = load double*, double** %25
%333 = load i32, i32* %13
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds double, double* %332, i64 %334
store double %331, double* %335
%336 = load i32, i32* %13
%337 = add nsw i32 %336, 1
store i32 %337, i32* %13
br label %338
338: ; preds = %317, %309
br label %339
339: ; preds = %338
%340 = load i32, i32* %11
%341 = add nsw i32 %340, 1
store i32 %341, i32* %11
br label %300
342: ; preds = %300
%343 = load i32*, i32** %19
%344 = load i32, i32* %12
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds i32, i32* %343, i64 %345
%347 = load i32, i32* %346
store i32 %347, i32* %11
br label %348
348: ; preds = %378, %342
%349 = load i32, i32* %11
%350 = load i32*, i32** %19
%351 = load i32, i32* %12
%352 = add nsw i32 %351, 1
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds i32, i32* %350, i64 %353
%355 = load i32, i32* %354
%356 = icmp slt i32 %349, %355
br i1 %356, label %357, label %381
357: ; preds = %348
%358 = load i32*, i32** %18
%359 = load i32, i32* %11
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds i32, i32* %358, i64 %360
%362 = load i32, i32* %361
%363 = load i32*, i32** %20
%364 = load i32, i32* %13
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds i32, i32* %363, i64 %365
store i32 %362, i32* %366
%367 = load double*, double** %24
%368 = load i32, i32* %11
%369 = sext i32 %368 to i64
%370 = getelementptr inbounds double, double* %367, i64 %369
%371 = load double, double* %370
%372 = load double*, double** %25
%373 = load i32, i32* %13
%374 = sext i32 %373 to i64
%375 = getelementptr inbounds double, double* %372, i64 %374
store double %371, double* %375
%376 = load i32, i32* %13
%377 = add nsw i32 %376, 1
store i32 %377, i32* %13
br label %378
378: ; preds = %357
%379 = load i32, i32* %11
%380 = add nsw i32 %379, 1
store i32 %380, i32* %11
br label %348
381: ; preds = %348
%382 = load i32, i32* %13
%383 = load i32*, i32** %21
%384 = load i32, i32* %12
%385 = add nsw i32 %384, 1
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds i32, i32* %383, i64 %386
store i32 %382, i32* %387
br label %388
388: ; preds = %381
%389 = load i32, i32* %12
%390 = add nsw i32 %389, 1
store i32 %390, i32* %12
br label %290
391: ; preds = %290
%392 = load i32, i32* %15
%393 = load i32, i32* %13
%394 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.9, i64 0, i64 0), i32 %392, i32 %393)
%395 = load double*, double** %24
%396 = call i32 (double*, ...) bitcast (i32 (...)* @superlu_free to i32 (double*, ...)*)(double* %395)
%397 = load i32*, i32** %18
%398 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %397)
%399 = load i32*, i32** %19
%400 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %399)
%401 = load i32*, i32** %22
%402 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %401)
%403 = load double*, double** %23
%404 = call i32 (double*, ...) bitcast (i32 (...)* @superlu_free to i32 (double*, ...)*)(double* %403)
%405 = load i32*, i32** %16
%406 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %405)
%407 = load i32*, i32** %17
%408 = call i32 (i32*, ...) bitcast (i32 (...)* @superlu_free to i32 (i32*, ...)*)(i32* %407)
%409 = load double*, double** %25
%410 = load double**, double*** %8
store double* %409, double** %410
%411 = load i32*, i32** %20
%412 = load i32**, i32*** %9
store i32* %411, i32** %412
%413 = load i32*, i32** %21
%414 = load i32**, i32*** %10
store i32* %413, i32** %414
%415 = load i32, i32* %15
%416 = load i32*, i32** %7
store i32 %415, i32* %416
ret void
}

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