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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ Die(char *, char *, int);
scalar_t__ malloc(int);
void zfill(int **mxy, int acol, int ***ret_zmat, double *ret_sum) {
  int **zmat;
  int i, j;
  int diff;
  int mid;
  if ((zmat = (int **)malloc(acol * sizeof(int *))) == NULL)
    Die("Memory allocation failure at %s line %d",
        "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
        "2022-01-22/02-19-57/repos/fredericokremer/genix/refs/heads/master/bin/"
        "tRNAscan-SE/fastmodelmaker.c",
        320);
  for (j = 0; j < acol; j++)
    if ((zmat[j] = (int *)malloc((j + 1) * sizeof(int))) == NULL)
      Die("Memory allocation failure at %s line %d",
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/fredericokremer/genix/refs/heads/master/"
          "bin/tRNAscan-SE/fastmodelmaker.c",
          323);
  for (j = 0; j < acol; j++)
    zmat[j][j] = 0;
  for (diff = 1; diff < acol; diff++)
    for (i = 0; (j = i + diff) < acol; i++) {
      if (j - 1 >= i + 1)
        zmat[j][i] = zmat[j - 1][i + 1] + mxy[j][i];
      else
        zmat[j][i] = mxy[j][i];
      if (zmat[j][i + 1] > zmat[j][i])
        zmat[j][i] = zmat[j][i + 1];
      if (zmat[j - 1][i] > zmat[j][i])
        zmat[j][i] = zmat[j - 1][i];
      for (mid = i + 1; mid < j - 1; mid++)
        if (zmat[mid][i] + zmat[j][mid + 1] > zmat[j][i])
          zmat[j][i] = zmat[mid][i] + zmat[j][mid + 1];
    }
  *ret_sum = (double)zmat[acol - 1][0] / 100.0;
  *ret_zmat = zmat;
}


x86 assembly (clang, -O0):
<zfill>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movslq -0xc(%rbp),%rax
shl    $0x3,%rax
mov    %eax,%edi
call   1030 <malloc@plt>
mov    %rax,-0x28(%rbp)
cmp    $0x0,%rax
jne    116c <zfill+0x4c>
lea    0xead(%rip),%rdi
lea    0xece(%rip),%rsi
mov    $0x140,%edx
call   1040 <Die@plt>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11d3 <zfill+0xb3>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
cltq
shl    $0x2,%rax
mov    %eax,%edi
call   1030 <malloc@plt>
mov    -0x28(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    %rax,(%rcx,%rdx,8)
cmp    $0x0,%rax
jne    11c0 <zfill+0xa0>
lea    0xe59(%rip),%rdi
lea    0xe7a(%rip),%rsi
mov    $0x143,%edx
call   1040 <Die@plt>
jmp    11c5 <zfill+0xa5>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1173 <zfill+0x53>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    120b <zfill+0xeb>
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x30(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11da <zfill+0xba>
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1446 <zfill+0x326>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
cmp    -0xc(%rbp),%eax
jge    1433 <zfill+0x313>
mov    -0x30(%rbp),%eax
sub    $0x1,%eax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jl     1293 <zfill+0x173>
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    12b9 <zfill+0x199>
mov    -0x8(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x28(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
movslq -0x2c(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jle    1315 <zfill+0x1f5>
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x28(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
movslq -0x2c(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jle    1371 <zfill+0x251>
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1420 <zfill+0x300>
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x28(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x38(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    -0x28(%rbp),%rcx
movslq -0x30(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
movslq -0x2c(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jle    140d <zfill+0x2ed>
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1412 <zfill+0x2f2>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    137a <zfill+0x25a>
jmp    1425 <zfill+0x305>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1225 <zfill+0x105>
jmp    1438 <zfill+0x318>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1212 <zfill+0xf2>
mov    -0x28(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
cvtsi2sdl (%rax),%xmm0
movsd  0xb9d(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,(%rax)
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<zfill>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rcx,%r14
mov    %rdx,%rbx
mov    %esi,%ebp
mov    %rdi,0x8(%rsp)
lea    0x0(,%rbp,8),%edi
call   1030 <malloc@plt>
mov    %rax,%r12
test   %rax,%rax
je     1158 <zfill+0x38>
test   %ebp,%ebp
jg     1178 <zfill+0x58>
jmp    13b8 <zfill+0x298>
lea    0xea9(%rip),%rdi
lea    0xeca(%rip),%rsi
mov    $0x140,%edx
call   1040 <Die@plt>
test   %ebp,%ebp
jle    13b8 <zfill+0x298>
mov    %rbx,0x18(%rsp)
mov    %r14,0x10(%rsp)
mov    %rbp,%r13
mov    %ebp,%r15d
lea    0x0(,%r15,4),%rbx
xor    %ebp,%ebp
lea    0xe97(%rip),%r14
jmp    11a9 <zfill+0x89>
nopl   0x0(%rax,%rax,1)
add    $0x4,%rbp
cmp    %rbp,%rbx
je     11d0 <zfill+0xb0>
lea    0x4(%rbp),%edi
call   1030 <malloc@plt>
mov    %rax,(%r12,%rbp,2)
test   %rax,%rax
jne    11a0 <zfill+0x80>
lea    0xe47(%rip),%rdi
mov    %r14,%rsi
mov    $0x143,%edx
call   1040 <Die@plt>
jmp    11a0 <zfill+0x80>
mov    %r13,%rbp
test   %ebp,%ebp
mov    0x10(%rsp),%r14
mov    0x18(%rsp),%rbx
jle    13b8 <zfill+0x298>
lea    -0x1(%r15),%rcx
mov    %r15d,%eax
and    $0x3,%eax
cmp    $0x3,%rcx
jae    11f9 <zfill+0xd9>
xor    %ecx,%ecx
jmp    123b <zfill+0x11b>
and    $0xfffffffc,%r15d
xor    %ecx,%ecx
nop
mov    (%r12,%rcx,8),%rdx
movl   $0x0,(%rdx,%rcx,4)
mov    0x8(%r12,%rcx,8),%rdx
movl   $0x0,0x4(%rdx,%rcx,4)
mov    0x10(%r12,%rcx,8),%rdx
movl   $0x0,0x8(%rdx,%rcx,4)
mov    0x18(%r12,%rcx,8),%rdx
movl   $0x0,0xc(%rdx,%rcx,4)
add    $0x4,%rcx
cmp    %rcx,%r15
jne    1200 <zfill+0xe0>
test   %rax,%rax
je     1255 <zfill+0x135>
mov    (%r12,%rcx,8),%rdx
movl   $0x0,(%rdx,%rcx,4)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rax
jne    1240 <zfill+0x120>
cmp    $0x1,%ebp
jle    13b8 <zfill+0x298>
add    $0xffffffff,%ebp
mov    $0x1,%r13d
xor    %r9d,%r9d
mov    %ebp,%r10d
mov    0x8(%rsp),%r15
mov    %rbp,0x20(%rsp)
jmp    129a <zfill+0x17a>
nopl   0x0(%rax)
add    $0x1,%r13
add    $0x1,%r9
add    $0xffffffff,%r10d
mov    0x20(%rsp),%rbp
cmp    %rbp,%r9
je     13bd <zfill+0x29d>
mov    %r10d,%r10d
xor    %r11d,%r11d
mov    %r13,%r8
mov    %r9,%rcx
mov    $0x1,%r14d
jmp    12c1 <zfill+0x1a1>
xchg   %ax,%ax
add    $0x1,%r8
add    $0x1,%r14
add    $0x1,%rcx
cmp    %r10,%r11
je     1280 <zfill+0x160>
mov    %r11,%rdi
add    $0x1,%r11
test   $0xfffffffe,%r13d
je     12f0 <zfill+0x1d0>
mov    -0x8(%r12,%r8,8),%rax
mov    (%r15,%r8,8),%rdx
mov    (%rdx,%rdi,4),%ebx
add    (%rax,%r11,4),%ebx
jmp    12f7 <zfill+0x1d7>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    (%r15,%r8,8),%rax
mov    (%rax,%rdi,4),%ebx
mov    (%r12,%r8,8),%rdx
mov    %ebx,(%rdx,%rdi,4)
mov    (%rdx,%r11,4),%eax
cmp    %ebx,%eax
jle    130b <zfill+0x1eb>
mov    %eax,(%rdx,%rdi,4)
mov    %eax,%ebx
lea    -0x1(%r8),%rax
mov    -0x8(%r12,%r8,8),%rbp
mov    0x0(%rbp,%rdi,4),%ebp
cmp    %ebx,%ebp
jle    1321 <zfill+0x201>
mov    %ebp,(%rdx,%rdi,4)
mov    %ebp,%ebx
cmp    %rax,%r11
jae    12b0 <zfill+0x190>
test   $0x1,%r9b
jne    1350 <zfill+0x230>
mov    (%r12,%r14,8),%r15
lea    0x1(%r14),%rax
mov    0x4(%rdx,%r14,4),%ebp
add    (%r15,%rdi,4),%ebp
cmp    %ebx,%ebp
jle    1360 <zfill+0x240>
mov    %ebp,(%rdx,%rdi,4)
jmp    1362 <zfill+0x242>
cs nopw 0x0(%rax,%rax,1)
mov    %ebx,%ebp
mov    %r14,%rax
cmp    $0x2,%r9
jne    1389 <zfill+0x269>
jmp    12b0 <zfill+0x190>
mov    %ebx,%ebp
mov    0x8(%rsp),%r15
cmp    $0x2,%r9
jne    1389 <zfill+0x269>
jmp    12b0 <zfill+0x190>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    %rax,%rcx
je     12b0 <zfill+0x190>
mov    (%r12,%rax,8),%rsi
mov    0x4(%rdx,%rax,4),%ebx
add    (%rsi,%rdi,4),%ebx
cmp    %ebp,%ebx
jle    139d <zfill+0x27d>
mov    %ebx,(%rdx,%rdi,4)
mov    %ebx,%ebp
mov    0x8(%r12,%rax,8),%rsi
mov    0x8(%rdx,%rax,4),%ebx
add    $0x2,%rax
add    (%rsi,%rdi,4),%ebx
cmp    %ebp,%ebx
jle    1380 <zfill+0x260>
mov    %ebx,(%rdx,%rdi,4)
mov    %ebx,%ebp
jmp    1380 <zfill+0x260>
add    $0xffffffff,%ebp
jmp    13c7 <zfill+0x2a7>
mov    0x18(%rsp),%rbx
mov    0x10(%rsp),%r14
movslq %ebp,%rax
mov    (%r12,%rax,8),%rax
cvtsi2sdl (%rax),%xmm0
divsd  0xc26(%rip),%xmm0
movsd  %xmm0,(%r14)
mov    %r12,(%rbx)
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [40 x i8] c"Memory allocation failure at %s line %d\00"
@.str.1 = [163 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/fredericokremer/genix/refs/heads/master/bin/tRNAscan-SE/fastmodelmaker.c\00"
define void @zfill(i32** nocapture %0, i32 %1, i32*** nocapture writeonly %2, double* nocapture writeonly %3) {
%5 = shl i32 %1, 3
%6 = tail call i64 @malloc(i32 %5)
%7 = inttoptr i64 %6 to i32**
%8 = icmp eq i64 %6, 0
br i1 %8, label %9, label %11
9: ; preds = %4
%10 = tail call i32 @Die(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([163 x i8], [163 x i8]* @.str.1, i64 0, i64 0), i32 320)
br label %11
11: ; preds = %9, %4
%12 = icmp sgt i32 %1, 0
br i1 %12, label %13, label %49
13: ; preds = %11
%14 = zext i32 %1 to i64
br label %22
15: ; preds = %33
br i1 %12, label %16, label %49
16: ; preds = %15
%17 = add nsw i64 %14, -1
%18 = and i64 %14, 3
%19 = icmp ult i64 %17, 3
br i1 %19, label %35, label %20
20: ; preds = %16
%21 = and i64 %14, 4294967292
br label %54
22: ; preds = %13, %33
%23 = phi i64 [ 0, %13 ], [ %24, %33 ]
%24 = add nuw nsw i64 %23, 1
%25 = trunc i64 %24 to i32
%26 = shl i32 %25, 2
%27 = tail call i64 @malloc(i32 %26)
%28 = inttoptr i64 %27 to i32*
%29 = getelementptr inbounds i32*, i32** %7, i64 %23
store i32* %28, i32** %29
%30 = icmp eq i64 %27, 0
br i1 %30, label %31, label %33
31: ; preds = %22
%32 = tail call i32 @Die(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([163 x i8], [163 x i8]* @.str.1, i64 0, i64 0), i32 323)
br label %33
33: ; preds = %22, %31
%34 = icmp eq i64 %24, %14
br i1 %34, label %15, label %22
35: ; preds = %54, %16
%36 = phi i64 [ 0, %16 ], [ %72, %54 ]
%37 = icmp eq i64 %18, 0
br i1 %37, label %47, label %38
38: ; preds = %35, %38
%39 = phi i64 [ %44, %38 ], [ %36, %35 ]
%40 = phi i64 [ %45, %38 ], [ 0, %35 ]
%41 = getelementptr inbounds i32*, i32** %7, i64 %39
%42 = load i32*, i32** %41
%43 = getelementptr inbounds i32, i32* %42, i64 %39
store i32 0, i32* %43
%44 = add nuw nsw i64 %39, 1
%45 = add i64 %40, 1
%46 = icmp eq i64 %45, %18
br i1 %46, label %47, label %38
47: ; preds = %38, %35
%48 = icmp sgt i32 %1, 1
br i1 %48, label %51, label %49
49: ; preds = %11, %15, %47
%50 = add nsw i32 %1, -1
br label %181
51: ; preds = %47
%52 = add nsw i32 %1, -1
%53 = zext i32 %52 to i64
br label %75
54: ; preds = %54, %20
%55 = phi i64 [ 0, %20 ], [ %72, %54 ]
%56 = phi i64 [ 0, %20 ], [ %73, %54 ]
%57 = getelementptr inbounds i32*, i32** %7, i64 %55
%58 = load i32*, i32** %57
%59 = getelementptr inbounds i32, i32* %58, i64 %55
store i32 0, i32* %59
%60 = or i64 %55, 1
%61 = getelementptr inbounds i32*, i32** %7, i64 %60
%62 = load i32*, i32** %61
%63 = getelementptr inbounds i32, i32* %62, i64 %60
store i32 0, i32* %63
%64 = or i64 %55, 2
%65 = getelementptr inbounds i32*, i32** %7, i64 %64
%66 = load i32*, i32** %65
%67 = getelementptr inbounds i32, i32* %66, i64 %64
store i32 0, i32* %67
%68 = or i64 %55, 3
%69 = getelementptr inbounds i32*, i32** %7, i64 %68
%70 = load i32*, i32** %69
%71 = getelementptr inbounds i32, i32* %70, i64 %68
store i32 0, i32* %71
%72 = add nuw nsw i64 %55, 4
%73 = add i64 %56, 4
%74 = icmp eq i64 %73, %21
br i1 %74, label %35, label %54
75: ; preds = %176, %51
%76 = phi i32 [ %52, %51 ], [ %179, %176 ]
%77 = phi i64 [ 1, %51 ], [ %177, %176 ]
%78 = phi i64 [ 0, %51 ], [ %178, %176 ]
%79 = and i64 %77, 4294967294
%80 = icmp eq i64 %79, 0
%81 = zext i32 %76 to i64
%82 = and i64 %78, 1
%83 = icmp eq i64 %82, 0
%84 = icmp eq i64 %78, 2
br label %90
85: ; preds = %145, %173, %130
%86 = add nuw nsw i64 %92, 1
%87 = add nuw nsw i64 %94, 1
%88 = add nuw nsw i64 %93, 1
%89 = icmp eq i64 %96, %81
br i1 %89, label %176, label %90
90: ; preds = %75, %85
%91 = phi i64 [ 0, %75 ], [ %96, %85 ]
%92 = phi i64 [ %77, %75 ], [ %86, %85 ]
%93 = phi i64 [ %78, %75 ], [ %88, %85 ]
%94 = phi i64 [ 1, %75 ], [ %87, %85 ]
%95 = add nsw i64 %92, -1
%96 = add nuw nsw i64 %91, 1
br i1 %80, label %107, label %97
97: ; preds = %90
%98 = getelementptr inbounds i32*, i32** %7, i64 %95
%99 = load i32*, i32** %98
%100 = getelementptr inbounds i32, i32* %99, i64 %96
%101 = load i32, i32* %100
%102 = getelementptr inbounds i32*, i32** %0, i64 %92
%103 = load i32*, i32** %102
%104 = getelementptr inbounds i32, i32* %103, i64 %91
%105 = load i32, i32* %104
%106 = add nsw i32 %105, %101
br label %112
107: ; preds = %90
%108 = getelementptr inbounds i32*, i32** %0, i64 %92
%109 = load i32*, i32** %108
%110 = getelementptr inbounds i32, i32* %109, i64 %91
%111 = load i32, i32* %110
br label %112
112: ; preds = %107, %97
%113 = phi i32 [ %111, %107 ], [ %106, %97 ]
%114 = getelementptr inbounds i32*, i32** %7, i64 %92
%115 = load i32*, i32** %114
%116 = getelementptr inbounds i32, i32* %115, i64 %91
store i32 %113, i32* %116
%117 = getelementptr inbounds i32, i32* %115, i64 %96
%118 = load i32, i32* %117
%119 = getelementptr inbounds i32, i32* %115, i64 %91
%120 = icmp sgt i32 %118, %113
br i1 %120, label %121, label %122
121: ; preds = %112
store i32 %118, i32* %119
br label %122
122: ; preds = %121, %112
%123 = phi i32 [ %118, %121 ], [ %113, %112 ]
%124 = getelementptr inbounds i32*, i32** %7, i64 %95
%125 = load i32*, i32** %124
%126 = getelementptr inbounds i32, i32* %125, i64 %91
%127 = load i32, i32* %126
%128 = icmp sgt i32 %127, %123
br i1 %128, label %129, label %130
129: ; preds = %122
store i32 %127, i32* %119
br label %130
130: ; preds = %129, %122
%131 = phi i32 [ %127, %129 ], [ %123, %122 ]
%132 = icmp ult i64 %96, %95
br i1 %132, label %133, label %85
133: ; preds = %130
br i1 %83, label %134, label %145
134: ; preds = %133
%135 = getelementptr inbounds i32*, i32** %7, i64 %94
%136 = load i32*, i32** %135
%137 = getelementptr inbounds i32, i32* %136, i64 %91
%138 = load i32, i32* %137
%139 = add nuw nsw i64 %94, 1
%140 = getelementptr inbounds i32, i32* %115, i64 %139
%141 = load i32, i32* %140
%142 = add nsw i32 %141, %138
%143 = icmp sgt i32 %142, %131
br i1 %143, label %144, label %145
144: ; preds = %134
store i32 %142, i32* %119
br label %145
145: ; preds = %134, %144, %133
%146 = phi i32 [ %131, %133 ], [ %131, %134 ], [ %142, %144 ]
%147 = phi i64 [ %94, %133 ], [ %139, %144 ], [ %139, %134 ]
br i1 %84, label %85, label %148
148: ; preds = %145, %173
%149 = phi i32 [ %174, %173 ], [ %146, %145 ]
%150 = phi i64 [ %167, %173 ], [ %147, %145 ]
%151 = getelementptr inbounds i32*, i32** %7, i64 %150
%152 = load i32*, i32** %151
%153 = getelementptr inbounds i32, i32* %152, i64 %91
%154 = load i32, i32* %153
%155 = add nuw nsw i64 %150, 1
%156 = getelementptr inbounds i32, i32* %115, i64 %155
%157 = load i32, i32* %156
%158 = add nsw i32 %157, %154
%159 = icmp sgt i32 %158, %149
br i1 %159, label %160, label %161
160: ; preds = %148
store i32 %158, i32* %119
br label %161
161: ; preds = %148, %160
%162 = phi i32 [ %149, %148 ], [ %158, %160 ]
%163 = getelementptr inbounds i32*, i32** %7, i64 %155
%164 = load i32*, i32** %163
%165 = getelementptr inbounds i32, i32* %164, i64 %91
%166 = load i32, i32* %165
%167 = add nuw nsw i64 %150, 2
%168 = getelementptr inbounds i32, i32* %115, i64 %167
%169 = load i32, i32* %168
%170 = add nsw i32 %169, %166
%171 = icmp sgt i32 %170, %162
br i1 %171, label %172, label %173
172: ; preds = %161
store i32 %170, i32* %119
br label %173
173: ; preds = %172, %161
%174 = phi i32 [ %162, %161 ], [ %170, %172 ]
%175 = icmp eq i64 %167, %93
br i1 %175, label %85, label %148
176: ; preds = %85
%177 = add nuw nsw i64 %77, 1
%178 = add nuw nsw i64 %78, 1
%179 = add i32 %76, -1
%180 = icmp eq i64 %178, %53
br i1 %180, label %181, label %75
181: ; preds = %176, %49
%182 = phi i32 [ %50, %49 ], [ %52, %176 ]
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds i32*, i32** %7, i64 %183
%185 = load i32*, i32** %184
%186 = load i32, i32* %185
%187 = sitofp i32 %186 to double
%188 = fdiv double %187, 1.000000e+02
store double %188, double* %3
store i32** %7, i32*** %2
ret void
}