// File: /workspace/github_c_makefile_star2_O2/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 $0x58, %rsp
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
xorl %r12d, %r12d
cmpl $0x0, (%rdi)
jne 0x990e
movl %esi, %r14d
movl 0x168(%rbx), %r15d
movq 0x20(%rbx), %r12
movslq %esi, %rax
movq %rax, -0x50(%rbp)
cmpl 0x170(%rbx), %r15d
jge 0x9246
movslq %r15d, %rax
movslq 0x15c(%rbx), %rcx
addq %rax, %rcx
leaq (%r12,%rcx,8), %r13
jmp 0x9249
xorl %r13d, %r13d
movq -0x50(%rbp), %rax
movl (%r12,%rax,8), %esi
callq 0x8553
movq %rax, -0x48(%rbp)
testq %r13, %r13
movq %r14, -0x38(%rbp)
movl %r15d, -0x2c(%rbp)
movq %r13, -0x68(%rbp)
je 0x927e
movq 0x10(%rbx), %rdi
movl (%r13), %esi
callq 0x8553
movq %rax, -0x40(%rbp)
jmp 0x9286
movq $0x0, -0x40(%rbp)
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
movq -0x50(%rbp), %r13
movl 0x4(%r12,%r13,8), %eax
movl %eax, %ecx
andl $0x1f, %ecx
leaq 0xd8c(%rip), %rsi       # 0xa034
movslq (%rsi,%rcx,4), %r8
addq %rsi, %r8
movq -0x48(%rbp), %rcx
movl 0x8(%rcx), %r9d
movq (%rcx), %r10
subl %r10d, %r9d
movq %r12, -0x58(%rbp)
movq %rcx, %r12
addq $0x10, %r12
movl %eax, %r11d
shrl $0x7, %r11d
andl $0xfffff, %r11d         # imm = 0xFFFFF
testb $0x20, %al
leaq 0x2fb2(%rip), %rcx      # 0xc291
leaq 0x2fa7(%rip), %r14      # 0xc28d
cmoveq %rcx, %r14
testb $0x40, %al
leaq 0x2f9c(%rip), %rax      # 0xc28f
leaq 0x191d(%rip), %r15      # 0xac17
cmoveq %rax, %r15
movq (%rbx), %rdi
subq $0x8, %rsp
leaq 0x2f6a(%rip), %rsi      # 0xc276
leaq 0xde8(%rip), %rcx       # 0xa0fb
xorl %eax, %eax
pushq %r15
pushq %r14
pushq %r11
movq %r12, -0x70(%rbp)
pushq %r12
movq -0x58(%rbp), %r15
pushq %r10
callq 0x70e0
addq $0x30, %rsp
movl 0x4(%r15,%r13,8), %r14d
movl %r14d, %eax
andl $0x1f, %eax
cmpl $0x3, %eax
je 0x934d
cmpl $0x0, 0x160(%rbx)
je 0x9427
movq -0x40(%rbp), %rsi
movl %r14d, %r15d
andl $0x1f, %r15d
leal -0x1(%r15), %eax
cmpl $0xb, %eax
ja 0x981d
pushq $0x1
popq %r12
leaq 0xc94(%rip), %rcx       # 0xa004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movq %rsi, -0x40(%rbp)
jmpq *%rax
incl 0x180(%rbx)
andl $0x0, 0x168(%rbx)
pushq $0x1
popq %r12
xorl %r14d, %r14d
movq -0x38(%rbp), %r13
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
cmpl %eax, %r12d
jae 0x97b7
leal (%r12,%r13), %r15d
movq %rbx, %rdi
movl %r15d, %esi
callq 0x91f1
movl 0x170(%rbx), %ecx
testl %eax, %eax
je 0x93d7
cmpl 0x168(%rbx), %ecx
je 0x97ea
andl $0x0, 0x164(%rbx)
testl %ecx, %ecx
cmovlel %r14d, %ecx
imulq $0x18, %rcx, %rax
xorl %ecx, %ecx
cmpq %rcx, %rax
je 0x9402
movq 0x8(%rbx), %rdx
movq 0x38(%rdx), %rdx
andq $0x0, (%rdx,%rcx)
addq $0x18, %rcx
jmp 0x93ea
andl $0x0, 0x168(%rbx)
movq 0x20(%rbx), %rax
movslq %r15d, %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl %r12d, %eax
movl %eax, %r12d
jmp 0x9395
cmpl $0x0, 0x164(%rbx)
movq -0x40(%rbp), %rsi
jne 0x9351
movq 0x8(%rbx), %rax
testb $0x2, 0x18(%rax)
je 0x9351
movq %rbx, %rdi
movq %rsi, %r14
xorl %esi, %esi
callq 0x91f1
movq %r14, %rsi
movq -0x50(%rbp), %rax
movl 0x4(%r15,%rax,8), %r14d
jmp 0x9351
incl 0x180(%rbx)
pushq $0x1
popq %r15
movq -0x38(%rbp), %r13
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
movl 0x4(%rax,%rcx,8), %r12d
movl %r12d, %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
cmpl %eax, %r15d
jae 0x97c1
leal (%r15,%r13), %r14d
movq %rbx, %rdi
movl %r14d, %esi
callq 0x91f1
testl %eax, %eax
jne 0x97cb
movq 0x20(%rbx), %rax
movslq %r14d, %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl %r15d, %eax
movl %eax, %r15d
jmp 0x9472
movl 0x168(%rbx), %r13d
movl 0x170(%rbx), %eax
movl %eax, -0x5c(%rbp)
movq -0x48(%rbp), %rcx
jmp 0x9975
movslq 0x168(%rbx), %rax
cmpl 0x170(%rbx), %eax
jge 0x981d
movq -0x68(%rbp), %rcx
movl 0x4(%rcx), %ecx
andl $0x1f, %ecx
cmpl $0xa, %ecx
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
jne 0x9825
movq 0x8(%rbx), %rcx
movq 0x38(%rcx), %rcx
imulq $0x18, %rax, %rax
movq -0x48(%rbp), %rdx
movq %rdx, (%rcx,%rax)
movq -0x40(%rbp), %rdx
movups (%rdx), %xmm0
movups %xmm0, 0x8(%rcx,%rax)
incl 0x168(%rbx)
jmp 0x9641
movl 0x168(%rbx), %eax
cmpl 0x170(%rbx), %eax
jge 0x981d
incl 0x180(%rbx)
movl $0x1, 0x160(%rbx)
pushq $0x1
popq %r15
movq -0x38(%rbp), %r13
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
cmpl %eax, %r15d
jae 0x97fa
leal (%r15,%r13), %r14d
movq %rbx, %rdi
movl %r14d, %esi
callq 0x91f1
testl %eax, %eax
jne 0x97ff
movq 0x20(%rbx), %rax
movslq %r14d, %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl %r15d, %eax
movl %eax, %r15d
jmp 0x9561
movl 0x168(%rbx), %eax
cmpl 0x170(%rbx), %eax
jge 0x981d
incl 0x180(%rbx)
pushq $0x1
popq %r15
xorl %r12d, %r12d
movl %r15d, %r13d
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
cmpl %eax, %r13d
jae 0x97c5
movq -0x38(%rbp), %rax
leal (%rax,%r13), %r14d
movq %rbx, %rdi
movl %r14d, %esi
callq 0x91f1
testl %eax, %eax
cmovnel %r15d, %r12d
movq 0x20(%rbx), %rax
movslq %r14d, %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl %r13d, %eax
movl %eax, %r13d
jmp 0x95d2
incl 0x180(%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x91f1
decl 0x180(%rbx)
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
movb $0x1, %r15b
jmp 0x9862
incl 0x180(%rbx)
movl 0x170(%rbx), %ecx
xorl %eax, %eax
testl %ecx, %ecx
cmovlel %eax, %ecx
imulq $0x18, %rcx, %rcx
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
movb $0x1, %r15b
cmpq %rax, %rcx
je 0x9683
movq 0x8(%rbx), %rdx
movq 0x38(%rdx), %rdx
andq $0x0, (%rdx,%rax)
addq $0x18, %rax
jmp 0x966b
andq $0x0, 0x160(%rbx)
leal 0x1(%r13), %esi
movq %rbx, %rdi
callq 0x91f1
movl %eax, %r12d
movl $0x1, 0x160(%rbx)
jmp 0x9810
movl 0x168(%rbx), %r13d
movl 0x170(%rbx), %eax
movl %eax, -0x5c(%rbp)
jmp 0x9920
incl 0x180(%rbx)
movl %r12d, %r15d
movq -0x38(%rbp), %r13
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
movl 0x4(%rax,%rcx,8), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
cmpl %eax, %r15d
jae 0x9809
leal (%r15,%r13), %r14d
movq %rbx, %rdi
movl %r14d, %esi
callq 0x91f1
movq 0x20(%rbx), %rcx
movslq %r14d, %rdx
movl 0x4(%rcx,%rdx,8), %ecx
movl %ecx, %edx
andl $0x20, %edx
orl %eax, %edx
je 0x97e5
shrl $0x7, %ecx
andl $0xfffff, %ecx          # imm = 0xFFFFF
addl %r15d, %ecx
movl %ecx, %r15d
jmp 0x96cb
movslq 0x168(%rbx), %r15
cmpl 0x170(%rbx), %r15d
jge 0x981d
movq -0x68(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0xa, %eax
movq -0x38(%rbp), %r13
jne 0x9821
movq -0x48(%rbp), %rax
movq (%rax), %rdi
movq -0x40(%rbp), %rcx
movq (%rcx), %r14
movl 0x8(%rax), %edx
subl %edi, %edx
movq %r14, %rsi
callq 0x7040
testl %eax, %eax
jne 0x9821
cmpb $0x2d, (%r14)
jne 0x978c
cmpb $0x2d, 0x1(%r14)
jne 0x978c
cmpb $0x0, 0x2(%r14)
jne 0x978c
movl $0x1, 0x164(%rbx)
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rax
imulq $0x18, %r15, %rcx
movq -0x48(%rbp), %rdx
movq %rdx, (%rax,%rcx)
movq -0x40(%rbp), %rdx
movups (%rdx), %xmm0
movups %xmm0, 0x8(%rax,%rcx)
incl 0x168(%rbx)
jmp 0x963d
movl 0x170(%rbx), %eax
xorl %ecx, %ecx
jmp 0x97ec
xorl %eax, %eax
jmp 0x97d8
movq -0x38(%rbp), %r13
jmp 0x9809
movq -0x58(%rbp), %rcx
movq -0x50(%rbp), %rdx
movl 0x4(%rcx,%rdx,8), %r12d
shrl $0x5, %r12d
andl $0x1, %r12d
orl %eax, %r12d
jmp 0x9809
xorl %r12d, %r12d
jmp 0x9809
movl %ecx, %eax
xorl %r12d, %r12d
cmpl %ecx, %eax
sete %r12b
xorl %r14d, %r14d
jmp 0x980d
xorl %r12d, %r12d
jmp 0x9802
movl %eax, %r12d
andl $0x0, 0x160(%rbx)
movl -0x2c(%rbp), %r14d
movb $0x1, %r15b
decl 0x180(%rbx)
testl %r12d, %r12d
jne 0x9862
jmp 0x9825
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
andl $0x0, 0x164(%rbx)
movslq 0x170(%rbx), %rax
movslq %r14d, %rcx
imulq $0x18, %rcx, %rdx
cmpq %rax, %rcx
jge 0x9855
movq 0x8(%rbx), %rsi
movq 0x38(%rsi), %rsi
andq $0x0, (%rsi,%rdx)
incq %rcx
addq $0x18, %rdx
jmp 0x983a
movl %r14d, 0x168(%rbx)
xorl %r15d, %r15d
xorl %r12d, %r12d
movq 0x8(%rbx), %rax
cmpl 0x30(%rax), %r14d
jge 0x98d4
movl 0x168(%rbx), %r10d
cmpl %r10d, %r14d
jge 0x98d4
movq -0x58(%rbp), %rax
movq -0x50(%rbp), %rcx
testb $0x40, 0x4(%rax,%rcx,8)
sete %al
movl %r15d, %ecx
xorb $0x1, %cl
orb %al, %cl
jne 0x98d4
movq (%rbx), %rdi
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
subq $0x8, %rsp
leaq 0x2a10(%rip), %rsi      # 0xc2bd
leaq 0x847(%rip), %rcx       # 0xa0fb
leaq 0x2a12(%rip), %r8       # 0xc2cd
movl %r14d, %r9d
xorl %eax, %eax
pushq %r10
callq 0x70e0
popq %rcx
popq %rdx
movq %rbx, %rdi
movl %r13d, %esi
callq 0x91f1
movq (%rbx), %rdi
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
leaq 0x29f3(%rip), %rax      # 0xc2de
leaq 0x29f3(%rip), %r8       # 0xc2e5
testb %r15b, %r15b
cmovneq %rax, %r8
leaq 0x29d7(%rip), %rsi      # 0xc2d7
leaq 0x7f4(%rip), %rcx       # 0xa0fb
xorl %eax, %eax
callq 0x70e0
movl %r12d, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl -0x5c(%rbp), %r13d
jge 0x981d
movq -0x68(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x6, %eax
jne 0x981d
addq $0x10, %rsi
pushq $0x2
popq %rdx
movq -0x70(%rbp), %rdi
movq %rsi, -0x78(%rbp)
callq 0x7040
testl %eax, %eax
je 0x9a03
cmpl $0x6, %r15d
jne 0x981d
movq -0x48(%rbp), %rcx
cmpq $0x0, (%rcx)
movq -0x40(%rbp), %rsi
je 0x981d
cmpl -0x5c(%rbp), %r13d
jge 0x981d
movq -0x68(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x5, %eax
jne 0x981d
movq (%rcx), %rdi
movq (%rsi), %rsi
movl 0x8(%rcx), %edx
subl %edi, %edx
callq 0x7040
testl %eax, %eax
je 0x99c6
cmpl $0x5, %r15d
jne 0x981d
movq -0x70(%rbp), %rax
cmpb $0x0, (%rax)
movq -0x40(%rbp), %rsi
jne 0x9920
jmp 0x981d
movq -0x48(%rbp), %rax
cmpq $0x0, 0x18(%rax)
movq %r13, %r8
je 0x9a7d
movq -0x40(%rbp), %rax
cmpq $0x0, 0x18(%rax)
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
movb $0x1, %r15b
je 0x9ab2
addq $0x18, %rax
movq 0x8(%rbx), %rcx
addq $0x38, %rcx
jmp 0x9b00
movq (%rbx), %rdi
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
shrl $0x6, %r14d
andl $0x1, %r14d
subq $0x8, %rsp
leaq 0x286d(%rip), %rsi      # 0xc293
leaq 0x6ce(%rip), %rcx       # 0xa0fb
movq -0x70(%rbp), %r8
movq -0x78(%rbp), %r9
xorl %eax, %eax
pushq %r14
callq 0x70e0
popq %rcx
popq %rdx
movq -0x48(%rbp), %rax
cmpq $0x0, 0x18(%rax)
movl 0x168(%rbx), %r8d
je 0x9a96
movq -0x40(%rbp), %rax
cmpq $0x0, 0x18(%rax)
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
movb $0x1, %r15b
je 0x9b1f
addq $0x18, %rax
movq 0x8(%rbx), %rcx
addq $0x38, %rcx
jmp 0x9b6d
movq 0x8(%rbx), %rcx
addq $0x38, %rcx
movq -0x40(%rbp), %rax
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
movb $0x1, %r15b
jmp 0x9b00
movq 0x8(%rbx), %rcx
addq $0x38, %rcx
movq -0x40(%rbp), %rax
movq -0x38(%rbp), %r13
movl -0x2c(%rbp), %r14d
movb $0x1, %r15b
jmp 0x9b6d
movq 0x20(%rbx), %rax
movl 0x15c(%rbx), %ecx
leal (%rcx,%r8), %edx
movslq %edx, %rdx
movl 0xc(%rax,%rdx,8), %edx
andl $0x1f, %edx
cmpl $0xa, %edx
jne 0x9825
leal 0x1(%r8), %edx
movl %edx, 0x168(%rbx)
movq 0x10(%rbx), %rdi
addl %r8d, %ecx
incl %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,8), %esi
callq 0x8553
movq 0x8(%rbx), %rcx
addq $0x38, %rcx
movl 0x168(%rbx), %r8d
movq (%rcx), %rsi
movslq %r8d, %rcx
imulq $0x18, %rcx, %rcx
movq -0x48(%rbp), %rdx
movq %rdx, (%rsi,%rcx)
movups (%rax), %xmm0
movups %xmm0, 0x8(%rsi,%rcx)
jmp 0x9bc3
movq 0x20(%rbx), %rcx
movl 0x15c(%rbx), %edx
leal (%r8,%rdx), %esi
movslq %esi, %rsi
movl 0xc(%rcx,%rsi,8), %esi
andl $0x1f, %esi
cmpl $0xa, %esi
jne 0x9825
leal 0x1(%r8), %esi
movl %esi, 0x168(%rbx)
movq 0x10(%rbx), %rdi
leal (%r8,%rdx), %eax
incl %eax
cltq
movl (%rcx,%rax,8), %esi
callq 0x8553
movq 0x8(%rbx), %rcx
addq $0x38, %rcx
movl 0x168(%rbx), %r8d
movq (%rcx), %rcx
movslq %r8d, %rdx
imulq $0x18, %rdx, %rsi
movq -0x48(%rbp), %rdx
movq %rdx, (%rcx,%rsi)
movups (%rax), %xmm0
movups %xmm0, 0x8(%rcx,%rsi)
movl 0x180(%rbx), %edx
imull 0x184(%rbx), %edx
movq (%rbx), %rdi
movq 0x8(%rbx), %rax
movq 0x38(%rax), %rax
movslq 0x168(%rbx), %rcx
imulq $0x18, %rcx, %rcx
movq (%rax,%rcx), %r8
leaq 0x26f6(%rip), %rsi      # 0xc2ab
leaq 0x53f(%rip), %rcx       # 0xa0fb
xorl %eax, %eax
callq 0x70e0
incl 0x168(%rbx)
jmp 0x9862