// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/htscodecs/htscodecs/tokenise_name3.c
// Function: tok3_decode_names
uint8_t *tok3_decode_names(uint8_t *in, uint32_t sz, uint32_t *out_len) {
    if (sz < 9)
        return NULL;

    int i, o = 9;
    //int ulen   = *(uint32_t *)in;
    int ulen   = (in[0]<<0) | (in[1]<<8) | (in[2]<<16) |
        (((uint32_t)in[3])<<24);

    if (ulen < 0 || ulen >= INT_MAX-1024)
        return NULL;

#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
    // Speed up fuzzing by blocking excessive sizes
    if (ulen > 100000)
        return NULL;
#endif

    //int nreads = *(uint32_t *)(in+4);
    int nreads = (in[4]<<0) | (in[5]<<8) | (in[6]<<16) | (((uint32_t)in[7])<<24);
    int use_arith = in[8];
    name_context *ctx = create_context(nreads);
    if (!ctx)
        return NULL;

    // Unpack descriptors
    int tnum = -1;
    while (o < sz) {
        uint8_t ttype = in[o++];
        if (ttype & 64) {
            if (o+2 > sz) goto err;
            int j = in[o++]<<4;
            j += in[o++];
            if (ttype & 128) {
                tnum++;
                if (tnum >= MAX_TOKENS)
                    goto err;
                ctx->max_tok = tnum+1;
                memset(&ctx->desc[tnum<<4], 0, 16*sizeof(ctx->desc[tnum]));
            }

            if ((ttype & 15) != 0 && (ttype & 128)) {
                if (tnum < 0) goto err;
                ctx->desc[tnum<<4].buf = malloc(nreads);
                if (!ctx->desc[tnum<<4].buf)
                    goto err;

                ctx->desc[tnum<<4].buf_l = 0;
                ctx->desc[tnum<<4].buf_a = nreads;
                ctx->desc[tnum<<4].buf[0] = ttype&15;
                memset(&ctx->desc[tnum<<4].buf[1], N_MATCH, nreads-1);
            }

            if (tnum < 0) goto err;
            i = (tnum<<4) | (ttype&15);
            if (j >= i)
                goto err;
            if (!ctx->desc[j].buf)
                goto err; // Attempt to copy a non-existent stream

            ctx->desc[i].buf_l = 0;
            ctx->desc[i].buf_a = ctx->desc[j].buf_a;
            if (ctx->desc[i].buf) free(ctx->desc[i].buf);
            ctx->desc[i].buf = malloc(ctx->desc[i].buf_a);
            if (!ctx->desc[i].buf)
                goto err;

            memcpy(ctx->desc[i].buf, ctx->desc[j].buf, ctx->desc[i].buf_a);
            //fprintf(stderr, "Copy ttype %d, i=%d,j=%d, size %d\n", ttype, i, j, (int)ctx->desc[i].buf_a);
            continue;
        }

        //if (ttype == 0)
        if (ttype & 128) {
            tnum++;
            if (tnum >= MAX_TOKENS)
                goto err;
            ctx->max_tok = tnum+1;
            memset(&ctx->desc[tnum<<4], 0, 16*sizeof(ctx->desc[tnum]));
        }

        if ((ttype & 15) != 0 && (ttype & 128)) {
            if (tnum < 0) goto err;
            if (ctx->desc[tnum<<4].buf) free(ctx->desc[tnum<<4].buf);
            ctx->desc[tnum<<4].buf = malloc(nreads);
            if (!ctx->desc[tnum<<4].buf)
                goto err;
            ctx->desc[tnum<<4].buf_l = 0;
            ctx->desc[tnum<<4].buf_a = nreads;
            ctx->desc[tnum<<4].buf[0] = ttype&15;
            memset(&ctx->desc[tnum<<4].buf[1], N_MATCH, nreads-1);
        }

        //fprintf(stderr, "Read %02x\n", c);

        // Load compressed block
        int64_t clen, ulen = uncompressed_size(&in[o], sz-o);
        if (ulen < 0 || ulen >= INT_MAX)
            goto err;
        if (tnum < 0) goto err;
        i = (tnum<<4) | (ttype&15);

        if (i >= MAX_TBLOCKS || i < 0)
            goto err;

        ctx->desc[i].buf_l = 0;
        if (ctx->desc[i].buf) free(ctx->desc[i].buf);
        ctx->desc[i].buf = malloc(ulen);
        if (!ctx->desc[i].buf)
            goto err;

        ctx->desc[i].buf_a = ulen;
        uint64_t usz = ctx->desc[i].buf_a; // convert from size_t for 32-bit sys
        clen = uncompress(use_arith, &in[o], sz-o, ctx->desc[i].buf, &usz);
        ctx->desc[i].buf_a = usz;
        if (clen < 0 || ctx->desc[i].buf_a != ulen)
            goto err;

        // fprintf(stderr, "%d: Decode tnum %d type %d clen %d ulen %d via %d\n",
        //      o, tnum, ttype, (int)clen, (int)ctx->desc[i].buf_a, ctx->desc[i].buf[0]);

        o += clen;

        // Encode tnum 0 type 0 ulen 100000 clen 12530 via 2
        // Encode tnum 0 type 6 ulen 196800 clen 43928 via 3
        // Encode tnum 0 type 7 ulen 203200 clen 17531 via 3
        // Encode tnum 1 type 0 ulen 50800 clen 10 via 1
        // Encode tnum 1 type 1 ulen 3 clen 5 via 0
        // Encode tnum 2 type 0 ulen 50800 clen 10 via 1
        //      
    }

    int ret;
    ulen += 1024; // for easy coding in decode_name.
    uint8_t *out = malloc(ulen);
    if (!out)
        goto err;

    size_t out_sz = 0;
    while ((ret = decode_name(ctx, (char *)out+out_sz, ulen)) > 0) {
        out_sz += ret;
        ulen -= ret;
    }

    if (ret < 0)
        free(out);

    free_context(ctx);

    *out_len = out_sz;
    return ret == 0 ? out : NULL;

 err:
    free_context(ctx);
    return NULL;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
cmpl $0x9, %esi
jae 0x7cbb6
xorl %r13d, %r13d
movq %r13, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdi, %r12
movzbl 0x3(%rdi), %eax
xorl %r13d, %r13d
shll $0x18, %eax
js 0x7cba4
movzwl (%r12), %ecx
movzbl 0x2(%r12), %r15d
shll $0x10, %r15d
orl %ecx, %r15d
orl %eax, %r15d
cmpl $0x7ffffbfe, %r15d      # imm = 0x7FFFFBFE
jg 0x7cba4
movq %rdx, %r14
movl %esi, %ebp
movl 0x4(%r12), %ebx
movb 0x8(%r12), %al
movb %al, 0x58(%rsp)
movl %ebx, %edi
callq 0x7ca03
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x7cba1
movq %r15, 0x20(%rsp)
movq %r14, 0x10(%rsp)
cmpl $0x9, %ebp
jne 0x7d3e2
movq 0x20(%rsp), %rdi
addl $0x400, %edi            # imm = 0x400
movq %rdi, 0x20(%rsp)
callq 0x4680
testq %rax, %rax
je 0x7d9b4
movq %rax, %r13
movq 0x8(%rsp), %rbx
movq 0x30(%rbx), %rax
xorl %r8d, %r8d
cmpq 0x28(%rbx), %rax
jae 0x7d9c3
leaq 0x20(%rbx), %r14
movq %rbx, %rcx
addq $0x418, %rcx            # imm = 0x418
movq %rcx, 0x48(%rsp)
xorl %r12d, %r12d
movq 0x10(%rsp), %r15
movq %r14, 0x50(%rsp)
movq 0x20(%rbx), %rcx
leaq 0x1(%rax), %rdx
movq %rdx, 0x30(%rbx)
movzbl (%rcx,%rax), %eax
movslq 0x8(%rbx), %rbp
leal 0x1(%rbp), %ecx
movl %ecx, 0x8(%rbx)
cmpl 0x14424(%rbx), %ebp
jge 0x7d9f5
movl 0x14420(%rbx), %ecx
shll $0x4, %ecx
cmpl %eax, %ecx
jle 0x7d9dc
leaq (%rax,%rax,4), %rsi
movq 0x10(%r14,%rsi,8), %rcx
leaq 0x4(%rcx), %rdx
cmpq 0x8(%r14,%rsi,8), %rdx
ja 0x7d9f5
leaq (%r14,%rsi,8), %rsi
movq (%rsi), %rdi
movl (%rdi,%rcx), %ecx
movq %rdx, 0x10(%rsi)
cmpl %ecx, %ebp
jb 0x7d9f5
leaq (%r12,%r13), %rdx
movl %ebp, %ebx
subl %ecx, %ebx
testl %ebx, %ebx
cmovlel %r8d, %ebx
cmpl $0x5, %eax
movq %rdx, 0x18(%rsp)
movq %r12, (%rsp)
movq %rbp, 0x58(%rsp)
jne 0x7cde7
cmpl %ebp, %ebx
je 0x7d3d8
movq 0x8(%rsp), %r12
movq (%r12), %rax
movl %ebx, %ecx
leaq (%rcx,%rcx,2), %r14
movq (%rax,%r14,8), %rbx
movq %rbx, %rdi
callq 0x41d0
incq %rax
movslq 0x20(%rsp), %rcx
cmpq %rcx, %rax
jae 0x7da22
movq 0x18(%rsp), %rbp
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x4460
movq (%r12), %r15
movq 0x58(%rsp), %rax
leaq (%rax,%rax,2), %r12
movq %rbp, (%r15,%r12,8)
movslq 0x8(%r15,%r14,8), %rax
leaq (,%rax,4), %rcx
testq %rax, %rax
movl %eax, 0x8(%r15,%r12,8)
leaq (%rcx,%rcx,2), %rbx
movq %rbx, %rdi
movl $0x600, %eax            # imm = 0x600
cmoveq %rax, %rdi
callq 0x4680
movq %rax, 0x10(%r15,%r12,8)
testq %rax, %rax
je 0x7da0d
movq 0x10(%r15,%r14,8), %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0x43c0
movq %rbp, %rdi
callq 0x41d0
movq %rax, %rbx
incl %ebx
movq 0x10(%rsp), %r15
xorl %r8d, %r8d
movq 0x50(%rsp), %r14
movq (%rsp), %r12
testl %ebx, %ebx
jle 0x7da19
movl %ebx, %eax
addq %rax, %r12
movq 0x20(%rsp), %rax
subl %ebx, %eax
movq %rax, 0x20(%rsp)
movq 0x8(%rsp), %rbx
movq 0x30(%rbx), %rax
cmpq 0x28(%rbx), %rax
jb 0x7cc71
jmp 0x7d9cb
movb $0x0, (%rdx)
movl $0x600, %edi            # imm = 0x600
callq 0x4680
movq 0x8(%rsp), %rcx
movq (%rcx), %rcx
leaq (,%rbp,2), %r9
addq %rbp, %r9
movq %rax, 0x10(%rcx,%r9,8)
testq %rax, %rax
je 0x7d3d8
movl %ebx, %eax
movq %rax, 0x30(%rsp)
xorl %r14d, %r14d
movl $0x1, %r12d
movl $0x18, %ebp
movq 0x48(%rsp), %r15
movq 0x8(%rsp), %rbx
movq 0x18(%rsp), %r8
movq %r9, 0x28(%rsp)
movslq 0x14420(%rbx), %rax
cmpq %rax, %r12
jge 0x7d9ec
movq -0x168(%r15), %rax
cmpq -0x170(%r15), %rax
jae 0x7d340
movq -0x178(%r15), %rdx
leaq 0x1(%rax), %rsi
movq %rsi, -0x168(%r15)
movzbl (%rdx,%rax), %eax
movl $0x0, 0x8(%rcx,%r9,8)
decl %eax
cmpl $0xa, %eax
ja 0x7d349
leaq 0x23a0d(%rip), %rdx     # 0xa08a0
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
movslq %r14d, %rdx
addq %r8, %rdx
movq 0x20(%rsp), %rax
movl %eax, %ecx
subl %r14d, %ecx
movq %rbx, %rdi
movl %r12d, %esi
callq 0x7dd53
testl %eax, %eax
js 0x7d9ec
movq (%rbx), %rcx
movq 0x28(%rsp), %r9
movq 0x10(%rcx,%r9,8), %rdx
movl $0x1, -0xc(%rdx,%rbp)
movl %r14d, -0x4(%rdx,%rbp)
movl %eax, -0x8(%rdx,%rbp)
addl %r14d, %eax
movq 0x18(%rsp), %r8
jmp 0x7d31d
movq 0x30(%rsp), %rax
leaq (%rax,%rax,2), %r9
movslq 0x8(%rcx,%r9,8), %rax
cmpq %rax, %r12
jge 0x7d9ec
movq (%r15), %rax
cmpq -0x8(%r15), %rax
jae 0x7d9ec
movq -0x10(%r15), %rdx
leaq 0x1(%rax), %rsi
movq %rsi, (%r15)
movq 0x10(%rcx,%r9,8), %rsi
movl -0x4(%rsi,%rbp), %ecx
leal (%r14,%rcx), %edi
incl %edi
cmpl 0x20(%rsp), %edi
jge 0x7d9ec
movzbl (%rdx,%rax), %ebx
addl -0x8(%rsi,%rbp), %ebx
movslq %r14d, %rdi
addq %r8, %rdi
movzbl %cl, %edx
movl %ebx, %esi
movq %r9, 0x40(%rsp)
callq 0x7ddac
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %r8
addl %r14d, %eax
movq 0x8(%rsp), %rcx
movq (%rcx), %rcx
movq 0x10(%rcx,%r9,8), %rdx
movl $0x3, -0xc(%rdx,%rbp)
movl %ebx, -0x8(%rdx,%rbp)
movq 0x8(%rsp), %rbx
movq 0x40(%rsp), %rsi
movq 0x10(%rcx,%rsi,8), %rsi
movl -0x4(%rsi,%rbp), %esi
movl %esi, -0x4(%rdx,%rbp)
jmp 0x7d31d
movq -0xc8(%r15), %rax
cmpq -0xd0(%r15), %rax
jae 0x7d9ec
movq -0xf0(%r15), %rcx
movq -0xd8(%r15), %rsi
leaq 0x1(%rax), %rdx
movq %rdx, -0xc8(%r15)
leaq 0x4(%rcx), %rdx
cmpq -0xf8(%r15), %rdx
ja 0x7d9ec
movzbl (%rsi,%rax), %ebx
movq -0x100(%r15), %rax
movl (%rax,%rcx), %ecx
movq %rdx, -0xf0(%r15)
leal (%r14,%rbx), %eax
addl $0x14, %eax
cmpl 0x20(%rsp), %eax
jae 0x7da0d
movslq %r14d, %rdi
addq %r8, %rdi
movl %ecx, %esi
movl %ecx, 0x40(%rsp)
movl %ebx, %edx
callq 0x7ddac
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %r8
addl %r14d, %eax
movq 0x8(%rsp), %rsi
movq (%rsi), %rcx
movq 0x10(%rcx,%r9,8), %rdx
movl $0x3, -0xc(%rdx,%rbp)
movl 0x40(%rsp), %edi
movl %edi, -0x8(%rdx,%rbp)
movl %ebx, -0x4(%rdx,%rbp)
jmp 0x7d0f5
leal 0x1(%r14), %eax
cmpl 0x20(%rsp), %eax
jge 0x7d9ec
movq -0x118(%r15), %rcx
cmpq -0x120(%r15), %rcx
jae 0x7d9ec
movslq %r14d, %rdx
movq -0x128(%r15), %rsi
leaq 0x1(%rcx), %rdi
movq %rdi, -0x118(%r15)
movb (%rsi,%rcx), %cl
movb %cl, (%r8,%rdx)
movq (%rbx), %rcx
movq 0x10(%rcx,%r9,8), %rsi
movl $0x2, -0xc(%rsi,%rbp)
movsbl (%r8,%rdx), %edx
movl %edx, -0x8(%rsi,%rbp)
jmp 0x7d31d
movq -0x50(%r15), %rax
leaq 0x4(%rax), %rcx
cmpq -0x58(%r15), %rcx
ja 0x7d9ec
movq -0x60(%r15), %rdx
movl (%rdx,%rax), %ebx
movq %rcx, -0x50(%r15)
leal 0x14(%r14), %eax
cmpl 0x20(%rsp), %eax
jge 0x7da0d
movslq %r14d, %rdi
addq %r8, %rdi
movl %ebx, %esi
callq 0x7debf
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %r8
addl %r14d, %eax
movq 0x8(%rsp), %rsi
movq (%rsi), %rcx
movq 0x10(%rcx,%r9,8), %rdx
movl $0x7, -0xc(%rdx,%rbp)
movl %ebx, -0x8(%rdx,%rbp)
movq %rsi, %rbx
jmp 0x7d31d
movq 0x30(%rsp), %rax
leaq (%rax,%rax,2), %rbx
movslq 0x8(%rcx,%rbx,8), %rax
cmpq %rax, %r12
jge 0x7da0d
leaq (%rcx,%rbx,8), %rax
movq 0x10(%rax), %rcx
movl -0xc(%rcx,%rbp), %edx
decl %edx
cmpl $0x6, %edx
ja 0x7da0d
leaq 0x2379a(%rip), %rsi     # 0xa08cc
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movslq -0x8(%rcx,%rbp), %rdx
testq %rdx, %rdx
js 0x7da0d
leal (%rdx,%r14), %esi
cmpl 0x20(%rsp), %esi
jge 0x7da0d
movslq %r14d, %rdi
addq %r8, %rdi
movslq -0x4(%rcx,%rbp), %rsi
addq (%rax), %rsi
callq 0x43c0
movq 0x18(%rsp), %r8
movq 0x8(%rsp), %rsi
movq (%rsi), %rcx
movq 0x28(%rsp), %r9
movq 0x10(%rcx,%r9,8), %rdx
movl $0x1, -0xc(%rdx,%rbp)
movl %r14d, -0x4(%rdx,%rbp)
movq 0x10(%rcx,%rbx,8), %rax
movq %rsi, %rbx
movl -0x8(%rax,%rbp), %eax
movl %eax, -0x8(%rdx,%rbp)
addl %r14d, %eax
jmp 0x7d31d
movq 0x30(%rsp), %rax
leaq (%rax,%rax,2), %rax
movslq 0x8(%rcx,%rax,8), %rdx
cmpq %rdx, %r12
jge 0x7d9ec
movq -0x28(%r15), %rdx
cmpq -0x30(%r15), %rdx
jae 0x7d9ec
movq -0x38(%r15), %rsi
leaq 0x1(%rdx), %rdi
movq %rdi, -0x28(%r15)
leal 0x14(%r14), %edi
cmpl 0x20(%rsp), %edi
jge 0x7d9ec
movzbl (%rsi,%rdx), %ebx
movq 0x10(%rcx,%rax,8), %rax
addl -0x8(%rax,%rbp), %ebx
movslq %r14d, %rdi
addq %r8, %rdi
movl %ebx, %esi
callq 0x7debf
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %r8
addl %r14d, %eax
movq 0x8(%rsp), %rcx
movq (%rcx), %rcx
movq 0x10(%rcx,%r9,8), %rdx
movl $0x7, -0xc(%rdx,%rbp)
movl %ebx, -0x8(%rdx,%rbp)
movq 0x8(%rsp), %rbx
jmp 0x7d31d
movq 0x10(%rcx,%r9,8), %rax
movl $0xb, -0xc(%rax,%rbp)
movl %r14d, %eax
jmp 0x7d31d
leal 0x1(%r14), %eax
cmpl 0x20(%rsp), %eax
jge 0x7da0d
movb -0x8(%rcx,%rbp), %cl
movslq %r14d, %rdx
movb %cl, (%r8,%rdx)
movq 0x8(%rsp), %rdi
movq (%rdi), %rcx
movq 0x10(%rcx,%r9,8), %rdx
movl $0x2, -0xc(%rdx,%rbp)
jmp 0x7d2b3
leal 0x14(%r14), %eax
cmpl 0x20(%rsp), %eax
jge 0x7da0d
movslq %r14d, %rdi
addq %r8, %rdi
movl -0x8(%rcx,%rbp), %esi
callq 0x7debf
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %r8
addl %r14d, %eax
movq 0x8(%rsp), %rdi
movq (%rdi), %rcx
movq 0x10(%rcx,%r9,8), %rdx
movl $0x7, -0xc(%rdx,%rbp)
movq 0x10(%rcx,%rbx,8), %rsi
movq %rdi, %rbx
movl -0x8(%rsi,%rbp), %esi
movl %esi, -0x8(%rdx,%rbp)
jmp 0x7d31d
movl -0x4(%rcx,%rbp), %eax
leal (%rax,%r14), %edx
cmpl 0x20(%rsp), %edx
jge 0x7da0d
movslq %r14d, %rdi
addq %r8, %rdi
movl -0x8(%rcx,%rbp), %esi
movzbl %al, %edx
callq 0x7ddac
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %r8
addl %r14d, %eax
movq 0x8(%rsp), %rdi
movq (%rdi), %rcx
movq 0x10(%rcx,%r9,8), %rdx
movl $0x3, -0xc(%rdx,%rbp)
movq 0x10(%rcx,%rbx,8), %rsi
movq %rdi, %rbx
movq -0x8(%rsi,%rbp), %rsi
movq %rsi, -0x8(%rdx,%rbp)
incq %r12
addq $0xc, %rbp
addq $0x280, %r15            # imm = 0x280
movl %eax, %r14d
cmpq $0x60c, %rbp            # imm = 0x60C
jne 0x7ce3e
jmp 0x7d9ec
movl $0x0, 0x8(%rcx,%r9,8)
leal 0x1(%r14), %ebx
cmpl 0x20(%rsp), %ebx
movq 0x10(%rsp), %r15
jge 0x7da12
movslq %r14d, %rax
movb $0x0, (%r8,%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rcx
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %r14
movq 0x10(%rax,%r14), %rdi
movl $0xc, -0xc(%rdi,%rbp)
movq %r8, (%rax,%r14)
movl %r12d, 0x8(%rax,%r14)
movq %rbp, %rsi
callq 0x4840
movq 0x8(%rsp), %rcx
movq (%rcx), %rcx
addq %r14, %rcx
addq $0x10, %rcx
testq %rax, %rax
je 0x7d3bf
movq %rax, (%rcx)
movq (%rsp), %r12
xorl %r8d, %r8d
movq 0x50(%rsp), %r14
jmp 0x7cdb6
cmpq $0x0, (%rcx)
movq (%rsp), %r12
movl $0x0, %r8d
movq 0x50(%rsp), %r14
jne 0x7cdb6
movq 0x8(%rsp), %rbx
jmp 0x7d9f5
movq 0x8(%rsp), %rax
addq $0x20, %rax
movq %rax, 0x18(%rsp)
movslq %ebx, %rax
movq %rax, 0x48(%rsp)
decl %ebx
movslq %ebx, %rax
movq %rax, 0x40(%rsp)
leaq 0x2(%r12), %rax
movq %rax, 0x60(%rsp)
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movl $0x9, %r15d
movl %ebp, 0x30(%rsp)
movq %r12, 0x28(%rsp)
leal 0x1(%r15), %ecx
movslq %r15d, %rax
movzbl (%r12,%rax), %r14d
testb $0x40, %r14b
jne 0x7d444
testb %r14b, %r14b
movl %ecx, (%rsp)
js 0x7d486
andl $0xf, %r14d
jmp 0x7d68d
addl $0x3, %r15d
cmpl %ebp, %r15d
ja 0x7d9b4
movslq %ecx, %rcx
movq 0x28(%rsp), %rdx
movzbl (%rdx,%rcx), %ebx
movzbl 0x2(%rdx,%rax), %eax
testb %r14b, %r14b
js 0x7d548
andl $0xf, %r14d
testl %r13d, %r13d
js 0x7d9b4
movl %r13d, %ebp
shll $0x4, %ebp
movl %r13d, %r12d
jmp 0x7d5f5
cmpl $0x7e, %r13d
jg 0x7d9b4
leal 0x1(%r13), %ebx
leal 0x2(%r13), %eax
movq 0x8(%rsp), %rcx
movl %eax, 0x14420(%rcx)
movl %ebx, %ebp
shll $0x4, %ebp
movslq %ebp, %rax
leaq (%rax,%rax,4), %rax
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax,8), %rdi
movl $0x280, %edx            # imm = 0x280
xorl %esi, %esi
callq 0x4260
andl $0xf, %r14d
je 0x7d67b
cmpl $-0x1, %r13d
jl 0x7d9b4
movl %ebp, %eax
leaq (%rax,%rax,4), %r15
movq 0x18(%rsp), %rax
movq (%rax,%r15,8), %rdi
testq %rdi, %rdi
je 0x7d4f1
callq 0x45c0
movq 0x18(%rsp), %rax
leaq (%rax,%r15,8), %r15
movq 0x48(%rsp), %rdi
callq 0x4680
movq %rax, (%r15)
testq %rax, %rax
je 0x7d9b4
movq $0x0, 0x10(%r15)
movq 0x48(%rsp), %rcx
movq %rcx, 0x8(%r15)
movb %r14b, (%rax)
movq (%r15), %rdi
incq %rdi
movl $0xa, %esi
movq 0x40(%rsp), %rdx
callq 0x4260
movl (%rsp), %ecx
movl %ebx, %r13d
movl 0x30(%rsp), %ebp
jmp 0x7d688
cmpl $0x7e, %r13d
jg 0x7d9b4
movl %eax, (%rsp)
leal 0x1(%r13), %r12d
leal 0x2(%r13), %eax
movq 0x8(%rsp), %rcx
movl %eax, 0x14420(%rcx)
movl %r12d, %ebp
shll $0x4, %ebp
movslq %ebp, %rax
leaq (%rax,%rax,4), %rax
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax,8), %rdi
movl $0x280, %edx            # imm = 0x280
xorl %esi, %esi
callq 0x4260
andl $0xf, %r14d
je 0x7d930
cmpl $-0x1, %r13d
jl 0x7d9b4
movq 0x48(%rsp), %rdi
callq 0x4680
movl %ebp, %ecx
leaq (%rcx,%rcx,4), %rcx
movq 0x18(%rsp), %rdx
movq %rax, (%rdx,%rcx,8)
testq %rax, %rax
je 0x7d9b4
movq 0x18(%rsp), %rdx
leaq (%rdx,%rcx,8), %rcx
movq $0x0, 0x10(%rcx)
movq 0x48(%rsp), %rdx
movq %rdx, 0x8(%rcx)
movb %r14b, (%rax)
movq (%rcx), %rdi
incq %rdi
movl $0xa, %esi
movq 0x40(%rsp), %rdx
callq 0x4260
movl (%rsp), %eax
addl %r14d, %ebp
shll $0x4, %ebx
addl %eax, %ebx
cmpl %ebp, %ebx
jge 0x7d9b4
movl %ebx, %eax
leaq (%rax,%rax,4), %rax
movq 0x18(%rsp), %rcx
cmpq $0x0, (%rcx,%rax,8)
je 0x7d9b4
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax,8), %r14
movl %ebp, %eax
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rbp
movq $0x0, 0x10(%rbp)
movq 0x8(%r14), %rbx
movq %rbx, 0x8(%rbp)
movq (%rbp), %rdi
testq %rdi, %rdi
je 0x7d650
callq 0x45c0
movq 0x8(%rbp), %rbx
movq %rbx, %rdi
callq 0x4680
movq %rax, (%rbp)
testq %rax, %rax
je 0x7d9b4
movq (%r14), %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0x43c0
movl %r12d, %r13d
jmp 0x7d919
xorl %r14d, %r14d
movl %ebx, %r13d
movl 0x30(%rsp), %ebp
movl (%rsp), %ecx
movq 0x28(%rsp), %r12
movslq %ecx, %rax
leaq (%r12,%rax), %rbx
movl %ebp, %edi
subl %ecx, %edi
leaq (%rdi,%rbx), %r15
cmpl $0x6, %edi
jb 0x7d6bf
xorl %edx, %edx
leaq 0x1(%rdx), %rcx
cmpb $0x0, (%rbx,%rdx)
jns 0x7d6b5
cmpl $0x5, %edx
movq %rcx, %rdx
jne 0x7d6a3
addq %rbx, %rcx
subl %ebx, %ecx
movslq %ecx, %rcx
jmp 0x7d6d5
cmpl %ecx, %ebp
jne 0x7d6c7
xorl %ecx, %ecx
jmp 0x7d6d5
movl $0x1, %ecx
cmpb $0x0, (%rbx)
js 0x7d93e
leaq (%rbx,%rcx), %rdx
incq %rdx
movq %r15, %rsi
subq %rdx, %rsi
cmpq $0x6, %rsi
jl 0x7d714
addq %rbx, %rcx
xorl %ebp, %ebp
movl $0x1, %eax
movzbl (%rcx,%rax), %edx
movl %ebp, %esi
shll $0x7, %esi
movl %edx, %ebp
andl $0x7f, %ebp
orl %esi, %ebp
testb %dl, %dl
jns 0x7d74c
leaq 0x1(%rax), %rdx
cmpl $0x6, %eax
movq %rdx, %rax
jne 0x7d6f2
jmp 0x7d74c
xorl %ebp, %ebp
cmpq %r15, %rdx
jae 0x7d74c
movsbl (%rdx), %ebp
testl %ebp, %ebp
jns 0x7d74c
addq %rax, %rcx
addq 0x60(%rsp), %rcx
xorl %ebp, %ebp
movzbl -0x1(%rcx), %eax
movl %ebp, %edx
shll $0x7, %edx
movl %eax, %ebp
andl $0x7f, %ebp
orl %edx, %ebp
testb %al, %al
jns 0x7d74c
leaq 0x1(%rcx), %rax
cmpq %r15, %rcx
movq %rax, %rcx
jb 0x7d72c
cmpl $0x7ffffffe, %ebp       # imm = 0x7FFFFFFE
ja 0x7d9b4
testl %r13d, %r13d
js 0x7d9b4
movl %r13d, %eax
shll $0x4, %eax
js 0x7d9b4
orl %r14d, %eax
cmpl $0x7ff, %eax            # imm = 0x7FF
jg 0x7d9b4
movq %rdi, %r14
movq %r13, 0x50(%rsp)
movl %eax, %eax
leaq (%rax,%rax,4), %r13
movq 0x18(%rsp), %rax
movq $0x0, 0x10(%rax,%r13,8)
movq (%rax,%r13,8), %rdi
testq %rdi, %rdi
je 0x7d7a5
callq 0x45c0
movl %ebp, %r12d
movq 0x18(%rsp), %rax
leaq (%rax,%r13,8), %r13
movq %r12, %rdi
callq 0x4680
movq %rax, (%r13)
testq %rax, %rax
movl (%rsp), %edx
je 0x7d9b4
movq %r14, %rsi
movq %r12, 0x8(%r13)
movq %r13, %r14
cmpl $0x5, %esi
jbe 0x7d818
cmpb $0x0, 0x58(%rsp)
je 0x7d868
movl %ebp, 0x38(%rsp)
xorl %edx, %edx
xorl %r13d, %r13d
movzbl (%rbx,%rdx), %edi
movl %r13d, %ecx
shll $0x7, %ecx
movl %edi, %r13d
andl $0x7f, %r13d
orl %ecx, %r13d
leaq 0x1(%rdx), %rcx
testb %dil, %dil
jns 0x7d811
cmpl $0x5, %edx
movq %rcx, %rdx
jne 0x7d7ec
addq %rbx, %rcx
subl %ebx, %ecx
jmp 0x7d843
cmpb $0x0, 0x58(%rsp)
je 0x7d89d
xorl %r13d, %r13d
movl %ebp, 0x38(%rsp)
movl $0x0, %ecx
cmpl %edx, 0x30(%rsp)
je 0x7d843
movsbl (%rbx), %r13d
testl %r13d, %r13d
js 0x7d958
movl $0x1, %ecx
movslq %ecx, %r15
addq %r15, %rbx
subl %r15d, %esi
movq %rbx, %rdi
movq %rax, %rdx
leaq 0x38(%rsp), %rcx
callq 0x5a814
addl %r15d, %r13d
testq %rax, %rax
movl 0x38(%rsp), %ecx
jmp 0x7d8e4
movl %ebp, 0x3c(%rsp)
xorl %edx, %edx
xorl %r13d, %r13d
movzbl (%rbx,%rdx), %edi
movl %r13d, %ecx
shll $0x7, %ecx
movl %edi, %r13d
andl $0x7f, %r13d
orl %ecx, %r13d
leaq 0x1(%rdx), %rcx
testb %dil, %dil
jns 0x7d896
cmpl $0x5, %edx
movq %rcx, %rdx
jne 0x7d871
addq %rbx, %rcx
subl %ebx, %ecx
jmp 0x7d8c1
xorl %r13d, %r13d
movl %ebp, 0x3c(%rsp)
movl $0x0, %ecx
cmpl %edx, 0x30(%rsp)
je 0x7d8c1
movsbl (%rbx), %r13d
testl %r13d, %r13d
js 0x7d986
movl $0x1, %ecx
movslq %ecx, %r15
addq %r15, %rbx
subl %r15d, %esi
movq %rbx, %rdi
movq %rax, %rdx
leaq 0x3c(%rsp), %rcx
callq 0x6457f
addl %r15d, %r13d
testq %rax, %rax
movl 0x3c(%rsp), %ecx
cmoveq %r12, %rcx
cmpq $0x1, %rax
movl $0x0, %r15d
sbbl %r15d, %r15d
orl %r13d, %r15d
movq %rcx, 0x8(%r14)
testl %r15d, %r15d
movq 0x50(%rsp), %r13
movl (%rsp), %eax
js 0x7d9b4
cmpl %r12d, %ecx
jne 0x7d9b4
addl %eax, %r15d
movl 0x30(%rsp), %ebp
cmpl %ebp, %r15d
movq 0x28(%rsp), %r12
jb 0x7d421
jmp 0x7cc1a
xorl %r14d, %r14d
movl %r12d, %r13d
movl (%rsp), %eax
jmp 0x7d46f
movq %rbx, %rcx
cmpb $0x0, (%rcx)
leaq 0x1(%rcx), %rcx
jns 0x7d6b8
cmpq %r15, %rcx
jb 0x7d941
jmp 0x7d6b8
xorl %r13d, %r13d
movq %rbx, %rcx
movzbl (%rcx), %edx
incq %rcx
movl %r13d, %edi
shll $0x7, %edi
movl %edx, %r13d
andl $0x7f, %r13d
orl %edi, %r13d
testb %dl, %dl
jns 0x7d814
cmpq %r15, %rcx
jb 0x7d95e
jmp 0x7d814
xorl %r13d, %r13d
movq %rbx, %rcx
movzbl (%rcx), %edx
incq %rcx
movl %r13d, %edi
shll $0x7, %edi
movl %edx, %r13d
andl $0x7f, %r13d
orl %edi, %r13d
testb %dl, %dl
jns 0x7d899
cmpq %r15, %rcx
jb 0x7d98c
jmp 0x7d899
movq 0x8(%rsp), %rdi
callq 0x7cabc
jmp 0x7cba1
xorl %r12d, %r12d
movq 0x10(%rsp), %r15
movl 0x8(%rbx), %eax
leal 0x1(%rax), %ecx
movl %ecx, 0x8(%rbx)
cmpl 0x14424(%rbx), %eax
jge 0x7d9f5
movq %rbx, %rdi
callq 0x7cabc
movl %r12d, (%r15)
jmp 0x7cba4
movq 0x10(%rsp), %r15
movq (%rsp), %r12
movq %r13, %rdi
callq 0x45c0
movq %rbx, %rdi
callq 0x7cabc
movl %r12d, (%r15)
jmp 0x7cba1
movq 0x10(%rsp), %r15
movq 0x8(%rsp), %rbx
jmp 0x7d9f1
movq 0x8(%rsp), %rbx
jne 0x7d9f5
jmp 0x7d9dc
movq %r12, %rbx
jmp 0x7d9f1