// File: /workspace/github_c_makefile_star2_O1/jaroslov[P]docoptc/./docopt.h
// Function: docopt_unify_args
static int docopt_unify_args(struct docopt_parse_state* dS, int hterm)
{
    if (dS->entries->error) return 0;
    int result                  = 0;
    int curarg                  = dS->curarg;
    struct docopt_term* term    = DO_TM(hterm);
    struct docopt_term* argterm = (dS->curarg < dS->nargterms)
                                ? DO_TM(dS->args_term + dS->curarg)
                                : 0;
    struct docopt_entry* terme  = docopt_fetch_entry(dS->entries, term->entry);
    struct docopt_entry* terma  = argterm
                                ? docopt_fetch_entry(dS->args, argterm->entry)
                                : 0;

    fprintf(dS->log, "%*s%s(%.*s%s)[%d]%s%s\n",
        dS->scale*dS->indent, "",
        DOCOPT_TYPE_NAMES[term->type],
        DOCOPT_PR(&terme->name),
        terme->short_name,
        term->length,
        term->optional ? "?" : " ",
        term->repeat ? "..." : "   ");

    if ((term->type != DOCOPT_TYPE_OPTION_SECTION) &&
        !dS->optional && !dS->positional
        && (dS->entries->flags & DOCOPT_NO_OPTIONS_FIRST))
        docopt_unify_args(dS, 0);

    switch (term->type)
    {
    case DOCOPT_TYPE_USAGE_SECTION      :
        ++dS->indent;
        dS->curarg  = 0;
        curarg      = 0;
        for (int i = 1; i < term->length; i += DO_TM(hterm+i)->length)
            if (docopt_unify_args(dS, hterm+i) && (dS->nargterms == dS->curarg))
                break;
            else
            {
                dS->positional  = 0;
                for (int i = curarg; i < dS->nargterms; ++i)
                    dS->entries->args[i].owner  = 0;
                dS->curarg      = curarg;
            }
        result  = dS->nargterms == dS->curarg;
        --dS->indent;
        break;
    case DOCOPT_TYPE_USAGE_STATEMENT    :
        ++dS->indent;
        for (int i = 0; i < dS->nargterms; ++i)
            dS->entries->args[i].owner  = 0;
        dS->positional  = 0;
        dS->optional    = 0;
        result          = docopt_unify_args(dS, hterm+1);
        dS->optional    = 1;
        --dS->indent;
        break;
    case DOCOPT_TYPE_EXPR               :
        ++dS->indent;
        for (int i = 1; i < term->length; i += DO_TM(hterm+i)->length)
            if ((result = docopt_unify_args(dS, hterm+i)))
                break;
        result |= term->optional;
        --dS->indent;
        break;
    case DOCOPT_TYPE_SEQ                :
        ++dS->indent;
        result = 1;
        for (int i = 1; i < term->length; i += DO_TM(hterm+i)->length)
            if (!docopt_unify_args(dS, hterm+i) && !DO_TM(hterm+i)->optional)
            {
                result = 0;
                break;
            }
        --dS->indent;
        break;
    case DOCOPT_TYPE_PNAME              :
        result = 1;
        break;
    case DOCOPT_TYPE_OPTREF             :
        ++dS->indent;
        docopt_unify_args(dS, 0);
        result = 1;
        --dS->indent;
        break;
    case DOCOPT_TYPE_OPTION_SECTION     :
        if (dS->curarg >= dS->nargterms) break;
        ++dS->indent;
        dS->optional    = 1;
        for (int i = 1; i < term->length; i += DO_TM(hterm+i)->length)
            if ((result = docopt_unify_args(dS, hterm+i)))
                break;
        dS->optional    = 0;
        --dS->indent;
        break;
    case DOCOPT_TYPE_OPTION_STATEMENT   :
        if (dS->curarg >= dS->nargterms) break;
        ++dS->indent;
        for (int i = 1; i < term->length; i += DO_TM(hterm+i)->length)
            if (docopt_unify_args(dS, hterm+i))
                result  = 1;
        --dS->indent;
        break;
docoptUnifyShort:
    case DOCOPT_TYPE_SHORT              :
        if (dS->curarg >= dS->nargterms) break;
        if (argterm->type != DOCOPT_TYPE_SHORT) break;
        if (strncmp(terme->short_name, terma->short_name, 2))
        {
            if ((term->type == DOCOPT_TYPE_SHORT) && terme->name.fst)
                goto docoptUnifyLong;
            break;
        }
        fprintf(dS->log, "%*s  ...%s %s (rpt:%d)\n", dS->scale*dS->indent, "", terme->short_name, terma->short_name, term->repeat);
        if (terme->command.fst)
        {
            if (!terma->command.fst)
            {
                if (dS->terms[dS->args_term+dS->curarg+1].type != DOCOPT_TYPE_ARGUMENT)
                    break;
                ++dS->curarg;
                terma   = docopt_fetch_entry(dS->args, DO_TM(dS->args_term + dS->curarg)->entry);
                docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->name);
            }
            else docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->command);
        }
        else docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->name);
        fprintf(dS->log, "%*s   [0x%010" PRIX64 "]\n", dS->scale*dS->indent, "", (uint64_t)dS->entries->args[dS->curarg].owner);
        ++dS->curarg;
        result = 1;
        break;
docoptUnifyLong:
    case DOCOPT_TYPE_LONG               :
        if (dS->curarg >= dS->nargterms) break;
        if (argterm->type != DOCOPT_TYPE_LONG) break;
        if (strncmp(terme->name.fst, terma->name.fst, docopt_str_len(&terme->name)))
        {
            if ((term->type == DOCOPT_TYPE_LONG) && terme->short_name[0])
                goto docoptUnifyShort;
            break;
        }
        if (terme->command.fst)
        {
            if (!terma->command.fst)
            {
                if (dS->terms[dS->args_term+dS->curarg+1].type != DOCOPT_TYPE_ARGUMENT)
                    break;
                ++dS->curarg;
                terma   = docopt_fetch_entry(dS->args, DO_TM(dS->args_term + dS->curarg)->entry);
                docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->name);
            }
            else docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->command);
        }
        else docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->name);
        ++dS->curarg;
        result = 1;
        break;
    case DOCOPT_TYPE_ARGUMENT           :
        if (dS->curarg >= dS->nargterms) break;
        if (argterm->type != DOCOPT_TYPE_ARGUMENT) break;
        docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->name);
        ++dS->curarg;
        result = 1;
        break;
    case DOCOPT_TYPE_COMMAND            :
        if (dS->curarg >= dS->nargterms) break;
        if (argterm->type != DOCOPT_TYPE_ARGUMENT) break;
        if (strncmp(terme->name.fst, terma->name.fst, docopt_str_len(&terme->name))) break;
        if (!strcmp(terma->name.fst, "--")) dS->positional = 1;
        docopt_set_arg(dS->entries->args+dS->curarg, terme, &terma->name);
        ++dS->curarg;
        result = 1;
        break;
    }

    if (!result)
    {
        dS->positional  = 0;
        for (int i = curarg; i < dS->nargterms; ++i)
            dS->entries->args[i].owner  = 0;
        dS->curarg      = curarg;
    }

    if ((curarg < dS->entries->nargs) && (curarg < dS->curarg) && term->repeat && result)
    {
        fprintf(dS->log, "%*s%s(%d < %d)\n", dS->scale*dS->indent, "", "Repeating", curarg, dS->curarg);
        docopt_unify_args(dS, hterm);
    }

    fprintf(dS->log, "%*s%s\n",
        dS->scale*dS->indent, "", result ? "PASSED" : "FAILED");

    return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq 0x8(%rdi), %rax
xorl %r12d, %r12d
cmpl $0x0, (%rax)
jne 0x9cbd
movq %rdi, %rbx
movl 0x168(%rdi), %edi
movq 0x20(%rbx), %r12
movslq %esi, %r15
cmpl 0x170(%rbx), %edi
jge 0x9572
movslq %edi, %rcx
movslq 0x15c(%rbx), %rdx
addq %rcx, %rdx
leaq (%r12,%rdx,8), %rdx
jmp 0x9574
xorl %edx, %edx
movl %edi, -0x2c(%rbp)
movslq (%r12,%r15,8), %rcx
testq %rcx, %rcx
js 0x9f6f
imulq $0x38, %rcx, %r14
addq 0x28(%rax), %r14
testq %rdx, %rdx
movq %rsi, -0x40(%rbp)
movq %rdx, -0x58(%rbp)
je 0x95b7
movslq (%rdx), %rax
testq %rax, %rax
js 0x9f6f
movq 0x10(%rbx), %rcx
imulq $0x38, %rax, %rax
addq 0x28(%rcx), %rax
movq %rax, -0x50(%rbp)
jmp 0x95bf
movq $0x0, -0x50(%rbp)
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
movq (%rbx), %rdi
movl 0x4(%r12,%r15,8), %eax
movl %eax, %ecx
andl $0x1f, %ecx
leaq 0xa54(%rip), %rsi       # 0xa034
movslq (%rsi,%rcx,4), %r8
addq %rsi, %r8
movl 0x8(%r14), %r9d
movq (%r14), %r10
subl %r10d, %r9d
movl %eax, %r11d
shrl $0x7, %r11d
andl $0xfffff, %r11d         # imm = 0xFFFFF
testb $0x20, %al
leaq 0x2c8f(%rip), %rcx      # 0xc297
movq %r15, -0x38(%rbp)
leaq 0x2c80(%rip), %r15      # 0xc293
cmoveq %rcx, %r15
testb $0x40, %al
leaq 0x2c75(%rip), %rax      # 0xc295
movq %r12, -0x48(%rbp)
leaq 0x15ef(%rip), %r13      # 0xac1a
cmoveq %rax, %r13
movq %r14, -0x70(%rbp)
addq $0x10, %r14
subq $0x8, %rsp
leaq 0x2c3a(%rip), %rsi      # 0xc27c
leaq 0xab2(%rip), %rcx       # 0xa0fb
xorl %r12d, %r12d
xorl %eax, %eax
pushq %r13
movq -0x48(%rbp), %r13
pushq %r15
movq -0x38(%rbp), %r15
pushq %r11
movq %r14, -0x60(%rbp)
pushq %r14
pushq %r10
callq 0x70f0
addq $0x30, %rsp
movl 0x4(%r13,%r15,8), %eax
andl $0x1f, %eax
cmpl $0x3, %eax
je 0x96a0
cmpl $0x0, 0x160(%rbx)
jne 0x96a0
cmpl $0x0, 0x164(%rbx)
jne 0x96a0
movq 0x8(%rbx), %rax
testb $0x2, 0x18(%rax)
je 0x96a0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x9526
movl 0x4(%r13,%r15,8), %ecx
movl %ecx, %r15d
andl $0x1f, %r15d
leal -0x1(%r15), %eax
cmpl $0xb, %eax
movq -0x40(%rbp), %r13
ja 0x9b67
movq %rcx, -0x68(%rbp)
leaq 0x93c(%rip), %rcx       # 0xa004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movq -0x70(%rbp), %r8
jmpq *%rax
incl 0x180(%rbx)
movl $0x0, 0x168(%rbx)
movq -0x48(%rbp), %rax
movq -0x38(%rbp), %rcx
testl $0x7ffff00, 0x4(%rax,%rcx,8) # imm = 0x7FFFF00
movq -0x40(%rbp), %r13
je 0x97a0
movl $0x1, %r12d
movl $0xfffff, %r14d         # imm = 0xFFFFF
leal (%r12,%r13), %r15d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x9526
testl %eax, %eax
je 0x972c
movl 0x170(%rbx), %eax
cmpl 0x168(%rbx), %eax
je 0x97a0
movl $0x0, 0x164(%rbx)
movslq 0x170(%rbx), %rcx
testq %rcx, %rcx
jle 0x9765
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
xorl %edx, %edx
movq $0x0, (%rax,%rdx)
addq $0x18, %rdx
cmpq %rdx, %rcx
jne 0x9754
movl $0x0, 0x168(%rbx)
movq 0x20(%rbx), %rax
movslq %r15d, %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl %r14d, %eax
addl %r12d, %eax
movq -0x48(%rbp), %rcx
movq -0x38(%rbp), %rdx
movl 0x4(%rcx,%rdx,8), %ecx
shrl $0x7, %ecx
andl %r14d, %ecx
movl %eax, %r12d
cmpl %ecx, %eax
jb 0x970b
movl 0x170(%rbx), %eax
xorl %r12d, %r12d
cmpl 0x168(%rbx), %eax
sete %r12b
decl 0x180(%rbx)
xorl %r9d, %r9d
movq -0x38(%rbp), %r15
jmp 0x9bd1
incl 0x180(%rbx)
xorl %r14d, %r14d
movq -0x48(%rbp), %rax
movq -0x38(%rbp), %r15
testl $0x7ffff00, 0x4(%rax,%r15,8) # imm = 0x7FFFF00
je 0x9836
movl $0x1, %r13d
movl $0xfffff, %r12d         # imm = 0xFFFFF
movq -0x40(%rbp), %rax
leal (%rax,%r13), %r15d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x9526
testl %eax, %eax
jne 0x9b79
movq 0x20(%rbx), %rax
movslq %r15d, %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl %r12d, %eax
addl %r13d, %eax
movq -0x48(%rbp), %rcx
movq -0x38(%rbp), %r15
movl 0x4(%rcx,%r15,8), %ecx
shrl $0x7, %ecx
andl %r12d, %ecx
movl %eax, %r13d
cmpl %ecx, %eax
jb 0x97ed
movq -0x40(%rbp), %r13
jmp 0x9b84
movslq 0x168(%rbx), %rax
cmpl 0x170(%rbx), %eax
jge 0x9950
movq -0x58(%rbp), %rcx
movl 0x4(%rcx), %ecx
andl $0x1f, %ecx
cmpl $0xa, %ecx
movq -0x40(%rbp), %r13
jne 0x9b67
movq 0x8(%rbx), %rcx
movq 0x38(%rcx), %rcx
leaq (%rax,%rax,2), %rax
movq %r8, (%rcx,%rax,8)
movq -0x50(%rbp), %rdx
movups (%rdx), %xmm0
movups %xmm0, 0x8(%rcx,%rax,8)
incl 0x168(%rbx)
movl $0x1, %r12d
jmp 0x9b67
movl 0x168(%rbx), %eax
cmpl 0x170(%rbx), %eax
jge 0x9950
incl 0x180(%rbx)
movl $0x1, 0x160(%rbx)
xorl %r12d, %r12d
movq -0x48(%rbp), %rax
movq -0x38(%rbp), %r15
testl $0x7ffff00, 0x4(%rax,%r15,8) # imm = 0x7FFFF00
movq -0x40(%rbp), %r13
je 0x9bbd
movl $0x1, %r13d
movl $0xfffff, %r14d         # imm = 0xFFFFF
movq -0x40(%rbp), %rax
leal (%rax,%r13), %r15d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x9526
testl %eax, %eax
jne 0x9bb2
movq 0x20(%rbx), %rax
movslq %r15d, %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl %r14d, %eax
addl %r13d, %eax
movq -0x48(%rbp), %rcx
movq -0x38(%rbp), %r15
movl 0x4(%rcx,%r15,8), %ecx
shrl $0x7, %ecx
andl %r14d, %ecx
movl %eax, %r13d
cmpl %ecx, %eax
jb 0x98e2
movq -0x40(%rbp), %r13
jmp 0x9bbd
incl 0x180(%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x9526
decl 0x180(%rbx)
movl $0x1, %r12d
movq -0x38(%rbp), %r15
movl -0x2c(%rbp), %r9d
movq -0x40(%rbp), %r13
jmp 0x9bd1
movl 0x168(%rbx), %eax
cmpl 0x170(%rbx), %eax
jge 0x9950
incl 0x180(%rbx)
movq -0x48(%rbp), %rax
movq -0x38(%rbp), %r15
testl $0x7ffff00, 0x4(%rax,%r15,8) # imm = 0x7FFFF00
je 0x9b9a
xorl %r12d, %r12d
movl $0x1, %r14d
movq -0x48(%rbp), %r13
movq -0x40(%rbp), %rax
leal (%r14,%rax), %r15d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x9526
testl %eax, %eax
movl $0x1, %eax
cmovnel %eax, %r12d
movq 0x20(%rbx), %rax
movslq %r15d, %rcx
movq -0x38(%rbp), %r15
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
movl $0xfffff, %edx          # imm = 0xFFFFF
andl %edx, %eax
addl %r14d, %eax
movl 0x4(%r13,%r15,8), %ecx
shrl $0x7, %ecx
andl %edx, %ecx
movl %eax, %r14d
cmpl %ecx, %eax
jb 0x9999
jmp 0x9b9d
incl 0x180(%rbx)
movslq 0x170(%rbx), %rcx
testq %rcx, %rcx
jle 0x9a1e
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
xorl %edx, %edx
movq $0x0, (%rax,%rdx)
addq $0x18, %rdx
cmpq %rdx, %rcx
jne 0x9a0d
movq $0x0, 0x160(%rbx)
movq -0x40(%rbp), %r13
leal 0x1(%r13), %esi
movq %rbx, %rdi
callq 0x9526
movl %eax, %r12d
movl $0x1, 0x160(%rbx)
decl 0x180(%rbx)
jmp 0x9b67
incl 0x180(%rbx)
movq -0x48(%rbp), %rax
movq -0x38(%rbp), %r15
testl $0x7ffff00, 0x4(%rax,%r15,8) # imm = 0x7FFFF00
je 0x9b6d
movl $0x1, %r12d
movl $0xfffff, %r14d         # imm = 0xFFFFF
movq -0x40(%rbp), %r13
leal (%r12,%r13), %r15d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x9526
movslq %r15d, %rcx
testl %eax, %eax
jne 0x9aa3
movq 0x20(%rbx), %rax
testb $0x20, 0x4(%rax,%rcx,8)
je 0x9ba9
movq 0x20(%rbx), %rax
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl %r14d, %eax
addl %r12d, %eax
movq -0x48(%rbp), %rcx
movq -0x38(%rbp), %r15
movl 0x4(%rcx,%r15,8), %ecx
shrl $0x7, %ecx
andl %r14d, %ecx
movl %eax, %r12d
cmpl %ecx, %eax
jb 0x9a7e
movl $0x1, %r12d
jmp 0x9bc7
movslq 0x168(%rbx), %r13
cmpl 0x170(%rbx), %r13d
jge 0x9b63
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0xa, %eax
jne 0x9b63
movq (%r8), %rdi
movq -0x50(%rbp), %rax
movq (%rax), %r15
movl 0x8(%r8), %edx
subl %edi, %edx
movq %r15, %rsi
movq %r8, %r14
callq 0x7040
testl %eax, %eax
jne 0x9b63
leaq 0x22c4(%rip), %rsi      # 0xbde2
movq %r15, %rdi
callq 0x70e0
testl %eax, %eax
jne 0x9b34
movl $0x1, 0x164(%rbx)
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rax
leaq (,%r13,2), %rcx
addq %r13, %rcx
movq %r14, (%rax,%rcx,8)
movq -0x50(%rbp), %rdx
movups (%rdx), %xmm0
movups %xmm0, 0x8(%rax,%rcx,8)
incl 0x168(%rbx)
movl $0x1, %r12d
movq -0x40(%rbp), %r13
movq -0x38(%rbp), %r15
jmp 0x9bcd
movl $0x1, %r12d
movq -0x40(%rbp), %r13
jmp 0x9bc7
movl %eax, %r14d
movq -0x40(%rbp), %r13
movq -0x38(%rbp), %r15
movq -0x48(%rbp), %rax
movl 0x4(%rax,%r15,8), %r12d
shrl $0x5, %r12d
andl $0x1, %r12d
orl %r14d, %r12d
jmp 0x9bc7
xorl %r12d, %r12d
decl 0x180(%rbx)
movq -0x40(%rbp), %r13
jmp 0x9bcd
xorl %r12d, %r12d
movq -0x38(%rbp), %r15
jmp 0x9bc7
movl %eax, %r12d
movq -0x40(%rbp), %r13
movq -0x38(%rbp), %r15
movl $0x0, 0x160(%rbx)
decl 0x180(%rbx)
movl -0x2c(%rbp), %r9d
testl %r12d, %r12d
jne 0x9c19
movl $0x0, 0x164(%rbx)
movslq 0x170(%rbx), %rax
cmpl %eax, %r9d
jge 0x9c12
movq 0x8(%rbx), %rdx
movslq %r9d, %rsi
leaq (%rsi,%rsi,2), %rcx
shlq $0x3, %rcx
addq 0x38(%rdx), %rcx
subq %rsi, %rax
movq $0x0, (%rcx)
addq $0x18, %rcx
decq %rax
jne 0x9c02
movl %r9d, 0x168(%rbx)
movq 0x8(%rbx), %rax
cmpl 0x30(%rax), %r9d
jge 0x9c83
movl 0x168(%rbx), %r10d
cmpl %r10d, %r9d
jge 0x9c83
testl %r12d, %r12d
je 0x9c83
movq -0x48(%rbp), %rax
movl 0x4(%rax,%r15,8), %eax
andl $0x40, %eax
je 0x9c83
movq (%rbx), %rdi
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
subq $0x8, %rsp
leaq 0x2666(%rip), %rsi      # 0xc2c3
leaq 0x497(%rip), %rcx       # 0xa0fb
leaq 0x2668(%rip), %r8       # 0xc2d3
xorl %eax, %eax
pushq %r10
callq 0x70f0
addq $0x10, %rsp
movq %rbx, %rdi
movl %r13d, %esi
callq 0x9526
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
testl %r12d, %r12d
movq (%rbx), %rdi
leaq 0x2647(%rip), %rax      # 0xc2e4
leaq 0x2647(%rip), %r8       # 0xc2eb
cmovneq %rax, %r8
leaq 0x262e(%rip), %rsi      # 0xc2dd
leaq 0x445(%rip), %rcx       # 0xa0fb
xorl %eax, %eax
callq 0x70f0
movl %r12d, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x168(%rbx), %eax
cmpl 0x170(%rbx), %eax
jge 0x9950
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x6, %eax
jne 0x9950
movq %r8, %r14
movq -0x50(%rbp), %rax
leaq 0x10(%rax), %r13
movl $0x2, %edx
movq -0x60(%rbp), %rdi
movq %r13, %rsi
callq 0x7040
testl %eax, %eax
je 0x9dbf
cmpl $0x6, %r15d
jne 0x9950
movq %r14, %r8
cmpq $0x0, (%r14)
je 0x9950
movl 0x168(%rbx), %r14d
cmpl 0x170(%rbx), %r14d
jge 0x9950
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x5, %eax
jne 0x9950
movq (%r8), %rdi
movq -0x50(%rbp), %rax
movq (%rax), %rsi
movq %r8, %r13
movl 0x8(%r8), %edx
subl %edi, %edx
callq 0x7040
testl %eax, %eax
je 0x9d91
cmpl $0x5, %r15d
jne 0x9950
movq -0x60(%rbp), %rax
cmpb $0x0, (%rax)
movq %r13, %r8
jne 0x9ccf
jmp 0x9950
movq %r13, %r8
cmpq $0x0, 0x18(%r13)
je 0x9e31
movq -0x50(%rbp), %rsi
cmpq $0x0, 0x18(%rsi)
movq -0x38(%rbp), %r15
movq -0x40(%rbp), %r13
je 0x9e50
addq $0x18, %rsi
jmp 0x9e9f
movq (%rbx), %rdi
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
movq %r13, %r9
movq -0x68(%rbp), %r13
shrl $0x6, %r13d
andl $0x1, %r13d
subq $0x8, %rsp
leaq 0x24b0(%rip), %rsi      # 0xc299
leaq 0x30b(%rip), %rcx       # 0xa0fb
movq -0x60(%rbp), %r8
xorl %eax, %eax
pushq %r13
callq 0x70f0
addq $0x10, %rsp
movq %r14, %rdi
cmpq $0x0, 0x18(%r14)
movl 0x168(%rbx), %eax
je 0x9e3f
movq -0x50(%rbp), %rdx
cmpq $0x0, 0x18(%rdx)
movq -0x38(%rbp), %r15
movq -0x40(%rbp), %r13
je 0x9ebf
addq $0x18, %rdx
jmp 0x9f08
movq -0x38(%rbp), %r15
movq -0x50(%rbp), %rsi
movq -0x40(%rbp), %r13
jmp 0x9e9f
movq -0x38(%rbp), %r15
movq -0x50(%rbp), %rdx
movq -0x40(%rbp), %r13
jmp 0x9f08
movq 0x20(%rbx), %rax
movl 0x15c(%rbx), %ecx
leal (%rcx,%r14), %edx
movslq %edx, %rdx
movl 0xc(%rax,%rdx,8), %edx
andl $0x1f, %edx
cmpl $0xa, %edx
jne 0x9bcd
leal 0x1(%r14), %edx
movl %edx, 0x168(%rbx)
addl %r14d, %ecx
incl %ecx
movslq %ecx, %rcx
movslq (%rax,%rcx,8), %rax
testq %rax, %rax
js 0x9f6f
movq 0x10(%rbx), %rcx
imulq $0x38, %rax, %rsi
addq 0x28(%rcx), %rsi
movl %edx, %r14d
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rax
movslq %r14d, %rcx
leaq (%rcx,%rcx,2), %rcx
movq %r8, (%rax,%rcx,8)
movups (%rsi), %xmm0
movups %xmm0, 0x8(%rax,%rcx,8)
jmp 0x9f5e
movq 0x20(%rbx), %rcx
movl 0x15c(%rbx), %edx
leal (%rax,%rdx), %esi
movslq %esi, %rsi
movl 0xc(%rcx,%rsi,8), %esi
andl $0x1f, %esi
xorl %r12d, %r12d
cmpl $0xa, %esi
jne 0x9bcd
leal 0x1(%rax), %esi
movl %esi, 0x168(%rbx)
addl %edx, %eax
incl %eax
cltq
movslq (%rcx,%rax,8), %rax
testq %rax, %rax
js 0x9f6f
movq 0x10(%rbx), %rcx
imulq $0x38, %rax, %rdx
addq 0x28(%rcx), %rdx
movl %esi, %eax
movq 0x8(%rbx), %rcx
movq 0x38(%rcx), %rcx
cltq
leaq (%rax,%rax,2), %rax
movq %rdi, (%rcx,%rax,8)
movups (%rdx), %xmm0
movups %xmm0, 0x8(%rcx,%rax,8)
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
movq (%rbx), %rdi
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rax
movslq 0x168(%rbx), %rcx
leaq (%rcx,%rcx,2), %rcx
movq (%rax,%rcx,8), %r8
leaq 0x2361(%rip), %rsi      # 0xc2b1
leaq 0x1a4(%rip), %rcx       # 0xa0fb
xorl %eax, %eax
callq 0x70f0
incl 0x168(%rbx)
movl $0x1, %r12d
jmp 0x9bcd
leaq 0x23f4(%rip), %rdi      # 0xc36a
leaq 0x1ba(%rip), %rsi       # 0xa137
leaq 0x23f2(%rip), %rcx      # 0xc376
movl $0xe7, %edx
callq 0x7080