// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/htscodecs/htscodecs/rANS_static32x16pr_sse4.c
// Function: transpose_and_copy
static inline void transpose_and_copy(uint8_t *out, int iN[32],
                                      uint8_t t[32][32]) {
    int z;

    // Simplified version from below.
    // This is pretty good with zig cc, but slow on clang and very slow on
    // gcc, even with -O3
    /*
    for (z = 0; z < NX; z++) {
        int k;
        for (k = 0; k < 32; k++)
            out[iN[z]+k] = t[k][z];
        iN[z] += 32;
    }
    */


    // A better approach for clang and gcc can be had with some manual
    // restructuring to attempt to do the two loops in explcit blocks.
    // With gcc -O3 or -O2 -ftree-vectorize this is quite fast, as is clang
    // and zig but neither beat the version below (or, for zig, the basic
    // code above).
    //
    // It's left here incase we ever want to move to tidier code and
    // to understand what auto-vectorises and what doesn't.
    /*
#define NZ 2
#define NK 8
    for (z = 0; z < 32; z+=NZ) {
        for (int k = 0; k < 32; k+=NK) {
            for (int z0 = z; z0 < z+NZ; z0++) {
                uint8_t tmp[NK];// __attribute__((aligned(32)));
                //uint8_t (*RESTRICT t0)[32] = &t[k];
                for (int k0 = 0; k0 < NK; k0++)
                    //tmp[k0] = t0[k0][z0];
                    tmp[k0] = t[k+k0][z0];
                memcpy(&out[iN[z0]+k], tmp, NK);
            }
        }
        for (int z0 = z; z0 < z+NZ; z0++)
            iN[z0] += 32;
    }
    */

    // Manually unrolled code.
    // This is fastest on gcc and clang and not far behind with zig cc.
    // It also doesn't need aggressive gcc optimisation levels to be
    // efficient.
    //
    // It works by constructing 64-bit ints and copying them with a single
    // memory write.  The fixed size memcpys just boil down to a memory write,
    // but unlike the earlier versions that did this direct, this isn't
    // exploiting undefined behaviour.
    for (z = 0; z < 32; z+=4) {
        uint64_t i64;
        i64 =
            ((uint64_t)(t[0][z])<< 0) +
            ((uint64_t)(t[1][z])<< 8) +
            ((uint64_t)(t[2][z])<<16) +
            ((uint64_t)(t[3][z])<<24) +
            ((uint64_t)(t[4][z])<<32) +
            ((uint64_t)(t[5][z])<<40) +
            ((uint64_t)(t[6][z])<<48) +
            ((uint64_t)(t[7][z])<<56);
        memcpy(&out[iN[z]], &i64, 8);
        i64 =
            ((uint64_t)(t[0][z+1])<< 0) +
            ((uint64_t)(t[1][z+1])<< 8) +
            ((uint64_t)(t[2][z+1])<<16) +
            ((uint64_t)(t[3][z+1])<<24) +
            ((uint64_t)(t[4][z+1])<<32) +
            ((uint64_t)(t[5][z+1])<<40) +
            ((uint64_t)(t[6][z+1])<<48) +
            ((uint64_t)(t[7][z+1])<<56);
        memcpy(&out[iN[z+1]], &i64, 8);
        i64 =
            ((uint64_t)(t[0][z+2])<< 0) +
            ((uint64_t)(t[1][z+2])<< 8) +
            ((uint64_t)(t[2][z+2])<<16) +
            ((uint64_t)(t[3][z+2])<<24) +
            ((uint64_t)(t[4][z+2])<<32) +
            ((uint64_t)(t[5][z+2])<<40) +
            ((uint64_t)(t[6][z+2])<<48) +
            ((uint64_t)(t[7][z+2])<<56);
        memcpy(&out[iN[z+2]], &i64, 8);
        i64 =
            ((uint64_t)(t[0][z+3])<< 0) +
            ((uint64_t)(t[1][z+3])<< 8) +
            ((uint64_t)(t[2][z+3])<<16) +
            ((uint64_t)(t[3][z+3])<<24) +
            ((uint64_t)(t[4][z+3])<<32) +
            ((uint64_t)(t[5][z+3])<<40) +
            ((uint64_t)(t[6][z+3])<<48) +
            ((uint64_t)(t[7][z+3])<<56);
        memcpy(&out[iN[z+3]], &i64, 8);

        i64 =
            ((uint64_t)(t[8+0][z])<< 0) +
            ((uint64_t)(t[8+1][z])<< 8) +
            ((uint64_t)(t[8+2][z])<<16) +
            ((uint64_t)(t[8+3][z])<<24) +
            ((uint64_t)(t[8+4][z])<<32) +
            ((uint64_t)(t[8+5][z])<<40) +
            ((uint64_t)(t[8+6][z])<<48) +
            ((uint64_t)(t[8+7][z])<<56);
        memcpy(&out[iN[z]+8], &i64, 8);
        i64 =
            ((uint64_t)(t[8+0][z+1])<< 0) +
            ((uint64_t)(t[8+1][z+1])<< 8) +
            ((uint64_t)(t[8+2][z+1])<<16) +
            ((uint64_t)(t[8+3][z+1])<<24) +
            ((uint64_t)(t[8+4][z+1])<<32) +
            ((uint64_t)(t[8+5][z+1])<<40) +
            ((uint64_t)(t[8+6][z+1])<<48) +
            ((uint64_t)(t[8+7][z+1])<<56);
        memcpy(&out[iN[z+1]+8], &i64, 8);
        i64 =
            ((uint64_t)(t[8+0][z+2])<< 0) +
            ((uint64_t)(t[8+1][z+2])<< 8) +
            ((uint64_t)(t[8+2][z+2])<<16) +
            ((uint64_t)(t[8+3][z+2])<<24) +
            ((uint64_t)(t[8+4][z+2])<<32) +
            ((uint64_t)(t[8+5][z+2])<<40) +
            ((uint64_t)(t[8+6][z+2])<<48) +
            ((uint64_t)(t[8+7][z+2])<<56);
        memcpy(&out[iN[z+2]+8], &i64, 8);
        i64 =
            ((uint64_t)(t[8+0][z+3])<< 0) +
            ((uint64_t)(t[8+1][z+3])<< 8) +
            ((uint64_t)(t[8+2][z+3])<<16) +
            ((uint64_t)(t[8+3][z+3])<<24) +
            ((uint64_t)(t[8+4][z+3])<<32) +
            ((uint64_t)(t[8+5][z+3])<<40) +
            ((uint64_t)(t[8+6][z+3])<<48) +
            ((uint64_t)(t[8+7][z+3])<<56);
        memcpy(&out[iN[z+3]+8], &i64, 8);

        i64 =
            ((uint64_t)(t[16+0][z])<< 0) +
            ((uint64_t)(t[16+1][z])<< 8) +
            ((uint64_t)(t[16+2][z])<<16) +
            ((uint64_t)(t[16+3][z])<<24) +
            ((uint64_t)(t[16+4][z])<<32) +
            ((uint64_t)(t[16+5][z])<<40) +
            ((uint64_t)(t[16+6][z])<<48) +
            ((uint64_t)(t[16+7][z])<<56);
        memcpy(&out[iN[z]+16], &i64, 8);
        i64 =
            ((uint64_t)(t[16+0][z+1])<< 0) +
            ((uint64_t)(t[16+1][z+1])<< 8) +
            ((uint64_t)(t[16+2][z+1])<<16) +
            ((uint64_t)(t[16+3][z+1])<<24) +
            ((uint64_t)(t[16+4][z+1])<<32) +
            ((uint64_t)(t[16+5][z+1])<<40) +
            ((uint64_t)(t[16+6][z+1])<<48) +
            ((uint64_t)(t[16+7][z+1])<<56);
        memcpy(&out[iN[z+1]+16], &i64, 8);
        i64 =
            ((uint64_t)(t[16+0][z+2])<< 0) +
            ((uint64_t)(t[16+1][z+2])<< 8) +
            ((uint64_t)(t[16+2][z+2])<<16) +
            ((uint64_t)(t[16+3][z+2])<<24) +
            ((uint64_t)(t[16+4][z+2])<<32) +
            ((uint64_t)(t[16+5][z+2])<<40) +
            ((uint64_t)(t[16+6][z+2])<<48) +
            ((uint64_t)(t[16+7][z+2])<<56);
        memcpy(&out[iN[z+2]+16], &i64, 8);
        i64 =
            ((uint64_t)(t[16+0][z+3])<< 0) +
            ((uint64_t)(t[16+1][z+3])<< 8) +
            ((uint64_t)(t[16+2][z+3])<<16) +
            ((uint64_t)(t[16+3][z+3])<<24) +
            ((uint64_t)(t[16+4][z+3])<<32) +
            ((uint64_t)(t[16+5][z+3])<<40) +
            ((uint64_t)(t[16+6][z+3])<<48) +
            ((uint64_t)(t[16+7][z+3])<<56);
        memcpy(&out[iN[z+3]+16], &i64, 8);

        i64 =
            ((uint64_t)(t[24+0][z])<< 0) +
            ((uint64_t)(t[24+1][z])<< 8) +
            ((uint64_t)(t[24+2][z])<<16) +
            ((uint64_t)(t[24+3][z])<<24) +
            ((uint64_t)(t[24+4][z])<<32) +
            ((uint64_t)(t[24+5][z])<<40) +
            ((uint64_t)(t[24+6][z])<<48) +
            ((uint64_t)(t[24+7][z])<<56);
        memcpy(&out[iN[z]+24], &i64, 8);
        i64 =
            ((uint64_t)(t[24+0][z+1])<< 0) +
            ((uint64_t)(t[24+1][z+1])<< 8) +
            ((uint64_t)(t[24+2][z+1])<<16) +
            ((uint64_t)(t[24+3][z+1])<<24) +
            ((uint64_t)(t[24+4][z+1])<<32) +
            ((uint64_t)(t[24+5][z+1])<<40) +
            ((uint64_t)(t[24+6][z+1])<<48) +
            ((uint64_t)(t[24+7][z+1])<<56);
        memcpy(&out[iN[z+1]+24], &i64, 8);
        i64 =
            ((uint64_t)(t[24+0][z+2])<< 0) +
            ((uint64_t)(t[24+1][z+2])<< 8) +
            ((uint64_t)(t[24+2][z+2])<<16) +
            ((uint64_t)(t[24+3][z+2])<<24) +
            ((uint64_t)(t[24+4][z+2])<<32) +
            ((uint64_t)(t[24+5][z+2])<<40) +
            ((uint64_t)(t[24+6][z+2])<<48) +
            ((uint64_t)(t[24+7][z+2])<<56);
        memcpy(&out[iN[z+2]+24], &i64, 8);
        i64 =
            ((uint64_t)(t[24+0][z+3])<< 0) +
            ((uint64_t)(t[24+1][z+3])<< 8) +
            ((uint64_t)(t[24+2][z+3])<<16) +
            ((uint64_t)(t[24+3][z+3])<<24) +
            ((uint64_t)(t[24+4][z+3])<<32) +
            ((uint64_t)(t[24+5][z+3])<<40) +
            ((uint64_t)(t[24+6][z+3])<<48) +
            ((uint64_t)(t[24+7][z+3])<<56);
        memcpy(&out[iN[z+3]+24], &i64, 8);

        iN[z+0] += 32;
        iN[z+1] += 32;
        iN[z+2] += 32;
        iN[z+3] += 32;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
cmpl $0x20, -0x1c(%rbp)
jge 0xbe10b
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x20(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x40(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x60(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x80(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0xa0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0xc0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0xe0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x20(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x40(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x60(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x80(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0xa0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0xc0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0xe0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movslq (%rcx,%rdx,4), %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x20(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x40(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x60(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x80(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0xa0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0xc0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0xe0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movslq (%rcx,%rdx,4), %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x20(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x40(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x60(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x80(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0xa0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0xc0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0xe0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movslq (%rcx,%rdx,4), %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movzbl 0x100(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x120(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x140(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x160(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x180(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x1a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x1c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x1e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x8, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzbl 0x100(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x120(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x140(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x160(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x180(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x1a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x1c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x1e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x8, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movzbl 0x100(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x120(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x140(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x160(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x180(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x1a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x1c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x1e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x8, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movzbl 0x100(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x120(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x140(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x160(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x180(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x1a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x1c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x1e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x8, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movzbl 0x200(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x220(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x240(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x260(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x280(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x2a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x2c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x2e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x10, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzbl 0x200(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x220(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x240(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x260(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x280(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x2a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x2c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x2e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x10, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movzbl 0x200(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x220(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x240(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x260(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x280(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x2a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x2c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x2e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x10, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movzbl 0x200(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x220(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x240(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x260(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x280(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x2a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x2c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x2e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x10, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movzbl 0x300(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x320(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x340(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x360(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x380(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x3a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x3c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movzbl 0x3e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq -0x1c(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x18, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzbl 0x300(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x320(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x340(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x360(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x380(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x3a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x3c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movzbl 0x3e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x18, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movzbl 0x300(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x320(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x340(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x360(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x380(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x3a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x3c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movzbl 0x3e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x2, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x18, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movzbl 0x300(%rax,%rcx), %eax
shlq $0x0, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x320(%rcx,%rdx), %ecx
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x340(%rcx,%rdx), %ecx
shlq $0x10, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x360(%rcx,%rdx), %ecx
shlq $0x18, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x380(%rcx,%rdx), %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x3a0(%rcx,%rdx), %ecx
shlq $0x28, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x3c0(%rcx,%rdx), %ecx
shlq $0x30, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movzbl 0x3e0(%rcx,%rdx), %ecx
shlq $0x38, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl -0x1c(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x18, %ecx
movslq %ecx, %rcx
movq -0x28(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x10(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
addl $0x20, %edx
movl %edx, (%rax,%rcx,4)
movq -0x10(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
addl $0x20, %edx
movl %edx, (%rax,%rcx,4)
movq -0x10(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
addl $0x20, %edx
movl %edx, (%rax,%rcx,4)
movq -0x10(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
addl $0x20, %edx
movl %edx, (%rax,%rcx,4)
movl -0x1c(%rbp), %eax
addl $0x4, %eax
movl %eax, -0x1c(%rbp)
jmp 0xbd167
popq %rbp
retq
nopl (%rax)