// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/htscodecs/htscodecs/rANS_static32x16pr.c
// Function: rans_uncompress_O0_32x16
unsigned char *rans_uncompress_O0_32x16(unsigned char *in,
                                        unsigned int in_size,
                                        unsigned char *out,
                                        unsigned int out_sz) {
    if (in_size < 16) // 4-states at least
        return NULL;

    if (out_sz >= INT_MAX)
        return NULL; // protect against some overflow cases

#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
    if (out_sz > 100000)
        return NULL;
#endif

    /* Load in the static tables */
    unsigned char *cp = in, *out_free = NULL;
    unsigned char *cp_end = in + in_size;
    int i;
    uint32_t s3[TOTFREQ]; // For TF_SHIFT <= 12

    if (!out)
        out_free = out = malloc(out_sz);
    if (!out)
        return NULL;

    // Precompute reverse lookup of frequency.
    uint32_t F[256] = {0}, fsum;
    int fsz = decode_freq(cp, cp_end, F, &fsum);
    if (!fsz)
        goto err;
    cp += fsz;

    normalise_freq_shift(F, fsum, TOTFREQ);

    // Build symbols; fixme, do as part of decode, see the _d variant
    if (rans_F_to_s3(F, TF_SHIFT, s3))
        goto err;

    if (cp_end - cp < NX * 4)
        goto err;

    int z;
    RansState R[NX];
    for (z = 0; z < NX; z++) {
        RansDecInit(&R[z], &cp);
        if (R[z] < RANS_BYTE_L)
            goto err;
    }

    int out_end = (out_sz&~(NX-1));
    const uint32_t mask = (1u << TF_SHIFT)-1;
    cp_end -= NX*2; // worst case for renorm bytes

    // assume NX is divisible by 4
    assert(NX%4==0);

    // Unsafe loop with no ptr overflow checking within loop itself
    for (i=0; likely(i < out_end && cp < cp_end); i+=NX) {
        for (z = 0; z < NX; z+=4) {
            uint32_t S[4];
            S[0] = s3[R[z+0] & mask];
            S[1] = s3[R[z+1] & mask];
            S[2] = s3[R[z+2] & mask];
            S[3] = s3[R[z+3] & mask];

            R[z+0] = (S[0]>>(TF_SHIFT+8)) * (R[z+0] >> TF_SHIFT)
                + ((S[0]>>8) & mask);
            R[z+1] = (S[1]>>(TF_SHIFT+8)) * (R[z+1] >> TF_SHIFT)
                + ((S[1]>>8) & mask);
            R[z+2] = (S[2]>>(TF_SHIFT+8)) * (R[z+2] >> TF_SHIFT)
                + ((S[2]>>8) & mask);
            R[z+3] = (S[3]>>(TF_SHIFT+8)) * (R[z+3] >> TF_SHIFT)
                + ((S[3]>>8) & mask);

            out[i+z+0] = S[0];
            out[i+z+1] = S[1];
            out[i+z+2] = S[2];
            out[i+z+3] = S[3];

            RansDecRenorm(&R[z+0], &cp);
            RansDecRenorm(&R[z+1], &cp);
            RansDecRenorm(&R[z+2], &cp);
            RansDecRenorm(&R[z+3], &cp);

            if (NX%8==0) {
                z += 4;
                S[0] = s3[R[z+0] & mask];
                S[1] = s3[R[z+1] & mask];
                S[2] = s3[R[z+2] & mask];
                S[3] = s3[R[z+3] & mask];

                R[z+0] = (S[0]>>(TF_SHIFT+8)) * (R[z+0] >> TF_SHIFT)
                    + ((S[0]>>8) & mask);
                R[z+1] = (S[1]>>(TF_SHIFT+8)) * (R[z+1] >> TF_SHIFT)
                    + ((S[1]>>8) & mask);
                R[z+2] = (S[2]>>(TF_SHIFT+8)) * (R[z+2] >> TF_SHIFT)
                    + ((S[2]>>8) & mask);
                R[z+3] = (S[3]>>(TF_SHIFT+8)) * (R[z+3] >> TF_SHIFT)
                    + ((S[3]>>8) & mask);

                out[i+z+0] = S[0];
                out[i+z+1] = S[1];
                out[i+z+2] = S[2];
                out[i+z+3] = S[3];

                RansDecRenorm(&R[z+0], &cp);
                RansDecRenorm(&R[z+1], &cp);
                RansDecRenorm(&R[z+2], &cp);
                RansDecRenorm(&R[z+3], &cp);
            }
        }
    }

    // Safe loop
    for (; i < out_end; i+=NX) {
        for (z = 0; z < NX; z+=4) {
            uint32_t S[4];
            S[0] = s3[R[z+0] & mask];
            S[1] = s3[R[z+1] & mask];
            S[2] = s3[R[z+2] & mask];
            S[3] = s3[R[z+3] & mask];

            R[z+0] = (S[0]>>(TF_SHIFT+8)) * (R[z+0] >> TF_SHIFT)
                + ((S[0]>>8) & mask);
            R[z+1] = (S[1]>>(TF_SHIFT+8)) * (R[z+1] >> TF_SHIFT)
                + ((S[1]>>8) & mask);
            R[z+2] = (S[2]>>(TF_SHIFT+8)) * (R[z+2] >> TF_SHIFT)
                + ((S[2]>>8) & mask);
            R[z+3] = (S[3]>>(TF_SHIFT+8)) * (R[z+3] >> TF_SHIFT)
                + ((S[3]>>8) & mask);

            out[i+z+0] = S[0];
            out[i+z+1] = S[1];
            out[i+z+2] = S[2];
            out[i+z+3] = S[3];

            RansDecRenormSafe(&R[z+0], &cp, cp_end+NX*2);
            RansDecRenormSafe(&R[z+1], &cp, cp_end+NX*2);
            RansDecRenormSafe(&R[z+2], &cp, cp_end+NX*2);
            RansDecRenormSafe(&R[z+3], &cp, cp_end+NX*2);
        }
    }

    for (z = out_sz & (NX-1); z-- > 0; )
        out[out_end + z] = s3[R[z] & mask];

    //fprintf(stderr, "    0 Decoded %d bytes\n", (int)(cp-in)); //c-size

    return out;

 err:
    free(out_free);
    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4520, %rsp           # imm = 0x4520
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
cmpl $0x10, -0x14(%rbp)
jae 0xbfc5c
movq $0x0, -0x8(%rbp)
jmp 0xc073a
cmpl $0x7fffffff, -0x24(%rbp) # imm = 0x7FFFFFFF
jb 0xbfc72
movq $0x0, -0x8(%rbp)
jmp 0xc073a
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0xbfca9
movl -0x24(%rbp), %eax
movl %eax, %edi
callq 0x4650
movq %rax, -0x20(%rbp)
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0xbfcbd
movq $0x0, -0x8(%rbp)
jmp 0xc073a
leaq -0x4450(%rbp), %rdi
xorl %esi, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x4250
movq -0x30(%rbp), %rdi
movq -0x40(%rbp), %rsi
leaq -0x4450(%rbp), %rdx
leaq -0x4454(%rbp), %rcx
callq 0xc0750
movl %eax, -0x4458(%rbp)
cmpl $0x0, -0x4458(%rbp)
jne 0xbfcff
jmp 0xc0729
movl -0x4458(%rbp), %ecx
movq -0x30(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
leaq -0x4450(%rbp), %rdi
movl -0x4454(%rbp), %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0xc0840
leaq -0x4450(%rbp), %rdi
leaq -0x4050(%rbp), %rdx
movl $0xc, %esi
callq 0xc08c0
cmpl $0x0, %eax
je 0xbfd4c
jmp 0xc0729
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
subq %rcx, %rax
cmpq $0x80, %rax
jge 0xbfd64
jmp 0xc0729
movl $0x0, -0x445c(%rbp)
cmpl $0x20, -0x445c(%rbp)
jge 0xbfdc1
movslq -0x445c(%rbp), %rax
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc09a0
movslq -0x445c(%rbp), %rax
cmpl $0x8000, -0x44e0(%rbp,%rax,4) # imm = 0x8000
jae 0xbfdae
jmp 0xc0729
jmp 0xbfdb0
movl -0x445c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x445c(%rbp)
jmp 0xbfd6e
movl -0x24(%rbp), %eax
andl $-0x20, %eax
movl %eax, -0x44e4(%rbp)
movl $0xfff, -0x44e8(%rbp)   # imm = 0xFFF
movq -0x40(%rbp), %rax
addq $-0x40, %rax
movq %rax, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %ecx
xorl %eax, %eax
cmpl -0x44e4(%rbp), %ecx
movb %al, -0x4511(%rbp)
jge 0xbfe0e
movq -0x30(%rbp), %rax
cmpq -0x40(%rbp), %rax
setb %al
movb %al, -0x4511(%rbp)
movb -0x4511(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xc03b7
movl $0x0, -0x445c(%rbp)
cmpl $0x20, -0x445c(%rbp)
jge 0xc03a7
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x4500(%rbp)
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x44fc(%rbp)
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x44f8(%rbp)
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x44f4(%rbp)
movl -0x4500(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x4500(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x44fc(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x44fc(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x44f8(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x44f8(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x44f4(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x44f4(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x4500(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x44fc(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x44f8(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x44f4(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x4, %eax
movl %eax, -0x445c(%rbp)
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x4500(%rbp)
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x44fc(%rbp)
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x44f8(%rbp)
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x44f4(%rbp)
movl -0x4500(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x4500(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x44fc(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x44fc(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x44f8(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x44f8(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x44f4(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x44f4(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x4500(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x44fc(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x44f8(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x44f4(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xc0a20
movl -0x445c(%rbp), %eax
addl $0x4, %eax
movl %eax, -0x445c(%rbp)
jmp 0xbfe2f
jmp 0xc03a9
movl -0x44(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x44(%rbp)
jmp 0xbfdea
jmp 0xc03b9
movl -0x44(%rbp), %eax
cmpl -0x44e4(%rbp), %eax
jge 0xc06c7
movl $0x0, -0x445c(%rbp)
cmpl $0x20, -0x445c(%rbp)
jge 0xc06b7
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x4510(%rbp)
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x450c(%rbp)
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x4508(%rbp)
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movl %eax, -0x4504(%rbp)
movl -0x4510(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x4510(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x450c(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x450c(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x4508(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x4508(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x4504(%rbp), %ecx
shrl $0x14, %ecx
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl -0x44e0(%rbp,%rax,4), %eax
shrl $0xc, %eax
imull %eax, %ecx
movl -0x4504(%rbp), %eax
shrl $0x8, %eax
andl $0xfff, %eax            # imm = 0xFFF
addl %eax, %ecx
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
movl %ecx, -0x44e0(%rbp,%rax,4)
movl -0x4510(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x450c(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x4508(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x4504(%rbp), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x445c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x445c(%rbp), %eax
addl $0x0, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
movq -0x40(%rbp), %rdx
addq $0x40, %rdx
leaq -0x30(%rbp), %rsi
callq 0xc0a90
movl -0x445c(%rbp), %eax
addl $0x1, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
movq -0x40(%rbp), %rdx
addq $0x40, %rdx
leaq -0x30(%rbp), %rsi
callq 0xc0a90
movl -0x445c(%rbp), %eax
addl $0x2, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
movq -0x40(%rbp), %rdx
addq $0x40, %rdx
leaq -0x30(%rbp), %rsi
callq 0xc0a90
movl -0x445c(%rbp), %eax
addl $0x3, %eax
cltq
leaq -0x44e0(%rbp), %rdi
shlq $0x2, %rax
addq %rax, %rdi
movq -0x40(%rbp), %rdx
addq $0x40, %rdx
leaq -0x30(%rbp), %rsi
callq 0xc0a90
movl -0x445c(%rbp), %eax
addl $0x4, %eax
movl %eax, -0x445c(%rbp)
jmp 0xc03d2
jmp 0xc06b9
movl -0x44(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x44(%rbp)
jmp 0xc03b9
movl -0x24(%rbp), %eax
andl $0x1f, %eax
movl %eax, -0x445c(%rbp)
movl -0x445c(%rbp), %eax
movl %eax, %ecx
addl $-0x1, %ecx
movl %ecx, -0x445c(%rbp)
cmpl $0x0, %eax
jle 0xc071f
movslq -0x445c(%rbp), %rax
movl -0x44e0(%rbp,%rax,4), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, %eax
movl -0x4050(%rbp,%rax,4), %eax
movb %al, %dl
movq -0x20(%rbp), %rax
movl -0x44e4(%rbp), %ecx
addl -0x445c(%rbp), %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
jmp 0xc06d3
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xc073a
movq -0x38(%rbp), %rdi
callq 0x45a0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x4520, %rsp           # imm = 0x4520
popq %rbp
retq
nopw (%rax,%rax)