// File: /workspace/github_c_makefile_star2_O0/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 %r14
pushq %rbx
subq $0xf0, %rsp
movq %rdi, -0x20(%rbp)
movl %esi, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, (%rax)
je 0xa82e
movl $0x0, -0x14(%rbp)
jmp 0xb5f2
movl $0x0, -0x28(%rbp)
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movl %eax, -0x2c(%rbp)
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
callq 0x99f0
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jge 0xa88b
movq -0x20(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x15c(%rax), %esi
movq -0x20(%rbp), %rax
addl 0x168(%rax), %esi
callq 0x99f0
movq %rax, -0x78(%rbp)
jmp 0xa893
xorl %eax, %eax
movq %rax, -0x78(%rbp)
jmp 0xa893
movq -0x78(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x38(%rbp), %rax
movl (%rax), %esi
callq 0x9240
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0xa8d2
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x40(%rbp), %rax
movl (%rax), %esi
callq 0x9240
movq %rax, -0x80(%rbp)
jmp 0xa8da
xorl %eax, %eax
movq %rax, -0x80(%rbp)
jmp 0xa8da
movq -0x80(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x20(%rbp), %rax
movl 0x184(%rax), %eax
movq -0x20(%rbp), %rcx
imull 0x180(%rcx), %eax
movl %eax, -0x8c(%rbp)
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x28a20(%rip), %rax     # 0x33340
movq (%rax,%rcx,8), %rax
movq %rax, -0x88(%rbp)
movq -0x48(%rbp), %rdi
callq 0x7420
movq -0x98(%rbp), %rdi
movl -0x8c(%rbp), %edx
movq -0x88(%rbp), %r8
movl %eax, %r9d
movq -0x48(%rbp), %rax
movq (%rax), %r14
movq -0x48(%rbp), %rbx
addq $0x10, %rbx
movq -0x38(%rbp), %rax
movl 0x4(%rax), %r11d
shrl $0x7, %r11d
andl $0xfffff, %r11d         # imm = 0xFFFFF
movq -0x38(%rbp), %rax
movl 0x4(%rax), %ecx
shrl $0x5, %ecx
andl $0x1, %ecx
leaq 0x38f0(%rip), %r10      # 0xe271
leaq 0x38e5(%rip), %rax      # 0xe26d
cmpl $0x0, %ecx
cmovneq %rax, %r10
movq -0x38(%rbp), %rax
movl 0x4(%rax), %esi
shrl $0x6, %esi
andl $0x1, %esi
leaq 0x38cc(%rip), %rax      # 0xe26f
leaq 0x223b(%rip), %rcx      # 0xcbe5
cmpl $0x0, %esi
cmovneq %rcx, %rax
leaq 0x389e(%rip), %rsi      # 0xe256
leaq 0x1707(%rip), %rcx      # 0xc0c6
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movl %r11d, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movb $0x0, %al
callq 0x70e0
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x3, %eax
je 0xaa25
movq -0x20(%rbp), %rax
cmpl $0x0, 0x160(%rax)
jne 0xaa25
movq -0x20(%rbp), %rax
cmpl $0x0, 0x164(%rax)
jne 0xaa25
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x18(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xaa25
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0xa800
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0xa0(%rbp)
subl $0xb, %eax
ja 0xb4b8
movq -0xa0(%rbp), %rax
leaq 0x15b3(%rip), %rcx      # 0xc004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x168(%rax)
movl $0x0, -0x2c(%rbp)
movl $0x1, -0x54(%rbp)
movl -0x54(%rbp), %eax
movq -0x38(%rbp), %rcx
movl 0x4(%rcx), %ecx
shrl $0x7, %ecx
andl $0xfffff, %ecx          # imm = 0xFFFFF
cmpl %ecx, %eax
jge 0xab53
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x54(%rbp), %esi
callq 0xa800
cmpl $0x0, %eax
je 0xaad3
movq -0x20(%rbp), %rax
movl 0x170(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x168(%rcx), %eax
jne 0xaad3
jmp 0xab53
movq -0x20(%rbp), %rax
movl $0x0, 0x164(%rax)
movl -0x2c(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jge 0xab1f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movslq -0x58(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq $0x0, (%rax)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0xaae7
movl -0x2c(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x168(%rax)
jmp 0xab2e
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x54(%rbp), %esi
callq 0x99f0
movl 0x4(%rax), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl -0x54(%rbp), %eax
movl %eax, -0x54(%rbp)
jmp 0xaa89
movq -0x20(%rbp), %rax
movl 0x170(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x168(%rcx), %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jge 0xabdc
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movslq -0x5c(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq $0x0, (%rax)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xaba4
movq -0x20(%rbp), %rax
movl $0x0, 0x164(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x160(%rax)
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl $0x1, %esi
callq 0xa800
movl %eax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movl $0x1, 0x160(%rax)
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movl $0x1, -0x60(%rbp)
movl -0x60(%rbp), %eax
movq -0x38(%rbp), %rcx
movl 0x4(%rcx), %ecx
shrl $0x7, %ecx
andl $0xfffff, %ecx          # imm = 0xFFFFF
cmpl %ecx, %eax
jge 0xac9e
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x60(%rbp), %esi
callq 0xa800
movl %eax, -0x28(%rbp)
cmpl $0x0, %eax
je 0xac7a
jmp 0xac9e
jmp 0xac7c
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x60(%rbp), %esi
callq 0x99f0
movl 0x4(%rax), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
jmp 0xac4a
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
shrl $0x5, %eax
andl $0x1, %eax
orl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movl $0x1, -0x28(%rbp)
movl $0x1, -0x64(%rbp)
movl -0x64(%rbp), %eax
movq -0x38(%rbp), %rcx
movl 0x4(%rcx), %ecx
shrl $0x7, %ecx
andl $0xfffff, %ecx          # imm = 0xFFFFF
cmpl %ecx, %eax
jge 0xad5f
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x64(%rbp), %esi
callq 0xa800
cmpl $0x0, %eax
jne 0xad3b
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x64(%rbp), %esi
callq 0x99f0
movl 0x4(%rax), %eax
shrl $0x5, %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xad3b
movl $0x0, -0x28(%rbp)
jmp 0xad5f
jmp 0xad3d
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x64(%rbp), %esi
callq 0x99f0
movl 0x4(%rax), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
jmp 0xacea
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0xb4b8
movl $0x1, -0x28(%rbp)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0xa800
movl $0x1, -0x28(%rbp)
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jl 0xaddb
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movq -0x20(%rbp), %rax
movl $0x1, 0x160(%rax)
movl $0x1, -0x68(%rbp)
movl -0x68(%rbp), %eax
movq -0x38(%rbp), %rcx
movl 0x4(%rcx), %ecx
shrl $0x7, %ecx
andl $0xfffff, %ecx          # imm = 0xFFFFF
cmpl %ecx, %eax
jge 0xae57
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x68(%rbp), %esi
callq 0xa800
movl %eax, -0x28(%rbp)
cmpl $0x0, %eax
je 0xae33
jmp 0xae57
jmp 0xae35
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x68(%rbp), %esi
callq 0x99f0
movl 0x4(%rax), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
jmp 0xae03
movq -0x20(%rbp), %rax
movl $0x0, 0x160(%rax)
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jl 0xae98
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movl $0x1, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movq -0x38(%rbp), %rcx
movl 0x4(%rcx), %ecx
shrl $0x7, %ecx
andl $0xfffff, %ecx          # imm = 0xFFFFF
cmpl %ecx, %eax
jge 0xaf08
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x6c(%rbp), %esi
callq 0xa800
cmpl $0x0, %eax
je 0xaee4
movl $0x1, -0x28(%rbp)
jmp 0xaee6
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
addl -0x6c(%rbp), %esi
callq 0x99f0
movl 0x4(%rax), %eax
shrl $0x7, %eax
andl $0xfffff, %eax          # imm = 0xFFFFF
addl -0x6c(%rbp), %eax
movl %eax, -0x6c(%rbp)
jmp 0xaeb2
movq -0x20(%rbp), %rax
movl 0x180(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0xb4b8
jmp 0xaf22
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jl 0xaf3d
jmp 0xb4b8
movq -0x40(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x6, %eax
je 0xaf51
jmp 0xb4b8
movq -0x48(%rbp), %rdi
addq $0x10, %rdi
movq -0x50(%rbp), %rsi
addq $0x10, %rsi
movl $0x2, %edx
callq 0x7040
cmpl $0x0, %eax
je 0xaf93
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x6, %eax
jne 0xaf8e
movq -0x48(%rbp), %rax
cmpq $0x0, (%rax)
je 0xaf8e
jmp 0xb180
jmp 0xb4b8
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movl 0x184(%rax), %edx
movq -0x20(%rbp), %rax
imull 0x180(%rax), %edx
movq -0x48(%rbp), %r8
addq $0x10, %r8
movq -0x50(%rbp), %r9
addq $0x10, %r9
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
shrl $0x6, %eax
andl $0x1, %eax
leaq 0x32a0(%rip), %rsi      # 0xe273
leaq 0x10ec(%rip), %rcx      # 0xc0c6
movl %eax, (%rsp)
movb $0x0, %al
callq 0x70e0
movq -0x48(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xb0e4
movq -0x50(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0xb0b3
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x20(%rbp), %rcx
movl 0x15c(%rcx), %ecx
movq -0x20(%rbp), %rdx
addl 0x168(%rdx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl 0x4(%rax,%rcx,8), %eax
andl $0x1f, %eax
cmpl $0xa, %eax
je 0xb035
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x168(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x168(%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0x20(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x15c(%rax), %esi
movq -0x20(%rbp), %rax
addl 0x168(%rax), %esi
callq 0x99f0
movq -0xa8(%rbp), %rdi
movl (%rax), %esi
callq 0x9240
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
callq 0xb610
jmp 0xb0e2
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
addq $0x18, %rdx
callq 0xb610
jmp 0xb10f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
callq 0xb610
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movl 0x184(%rax), %edx
movq -0x20(%rbp), %rax
imull 0x180(%rax), %edx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movq -0x20(%rbp), %rcx
movslq 0x168(%rcx), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %r8
leaq 0x3138(%rip), %rsi      # 0xe28b
leaq 0xf6c(%rip), %rcx       # 0xc0c6
movb $0x0, %al
callq 0x70e0
movq -0x20(%rbp), %rax
movl 0x168(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x168(%rax)
movl $0x1, -0x28(%rbp)
jmp 0xb4b8
jmp 0xb182
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jl 0xb19d
jmp 0xb4b8
movq -0x40(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x5, %eax
je 0xb1b1
jmp 0xb4b8
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0x50(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x48(%rbp), %rdi
callq 0x7420
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movl %eax, %eax
movl %eax, %edx
callq 0x7040
cmpl $0x0, %eax
je 0xb218
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0x5, %eax
jne 0xb213
movq -0x48(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x0, %eax
je 0xb213
jmp 0xaf20
jmp 0xb4b8
movq -0x48(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xb318
movq -0x50(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0xb2e7
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x20(%rbp), %rcx
movl 0x15c(%rcx), %ecx
movq -0x20(%rbp), %rdx
addl 0x168(%rdx), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl 0x4(%rax,%rcx,8), %eax
andl $0x1f, %eax
cmpl $0xa, %eax
je 0xb269
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x168(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x168(%rax)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xc0(%rbp)
movq -0x20(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x15c(%rax), %esi
movq -0x20(%rbp), %rax
addl 0x168(%rax), %esi
callq 0x99f0
movq -0xc0(%rbp), %rdi
movl (%rax), %esi
callq 0x9240
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
callq 0xb610
jmp 0xb316
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
addq $0x18, %rdx
callq 0xb610
jmp 0xb343
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
callq 0xb610
movq -0x20(%rbp), %rax
movl 0x168(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x168(%rax)
movl $0x1, -0x28(%rbp)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jl 0xb37d
jmp 0xb4b8
movq -0x40(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0xa, %eax
je 0xb391
jmp 0xb4b8
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
callq 0xb610
movq -0x20(%rbp), %rax
movl 0x168(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x168(%rax)
movl $0x1, -0x28(%rbp)
jmp 0xb4b8
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jl 0xb3f6
jmp 0xb4b8
movq -0x40(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x1f, %eax
cmpl $0xa, %eax
je 0xb40a
jmp 0xb4b8
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0x50(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
movq -0x48(%rbp), %rdi
callq 0x7420
movq -0xd0(%rbp), %rdi
movq -0xc8(%rbp), %rsi
movl %eax, %eax
movl %eax, %edx
callq 0x7040
cmpl $0x0, %eax
je 0xb44d
jmp 0xb4b8
movq -0x50(%rbp), %rax
movq (%rax), %rdi
leaq 0x2952(%rip), %rsi      # 0xddad
callq 0x70d0
cmpl $0x0, %eax
jne 0xb473
movq -0x20(%rbp), %rax
movl $0x1, 0x164(%rax)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movslq 0x168(%rax), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdi
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdx
callq 0xb610
movq -0x20(%rbp), %rax
movl 0x168(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x168(%rax)
movl $0x1, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
jne 0xb517
movq -0x20(%rbp), %rax
movl $0x0, 0x164(%rax)
movl -0x2c(%rbp), %eax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x170(%rcx), %eax
jge 0xb50a
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x38(%rax), %rax
movslq -0x70(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq $0x0, (%rax)
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0xb4d2
movl -0x2c(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x168(%rax)
movl -0x2c(%rbp), %eax
movq -0x20(%rbp), %rcx
movq 0x8(%rcx), %rcx
cmpl 0x30(%rcx), %eax
jge 0xb5a3
movl -0x2c(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x168(%rcx), %eax
jge 0xb5a3
movq -0x38(%rbp), %rax
movl 0x4(%rax), %eax
shrl $0x6, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xb5a3
cmpl $0x0, -0x28(%rbp)
je 0xb5a3
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movl 0x184(%rax), %edx
movq -0x20(%rbp), %rax
imull 0x180(%rax), %edx
movl -0x2c(%rbp), %r9d
movq -0x20(%rbp), %rax
movl 0x168(%rax), %eax
leaq 0x2d1e(%rip), %rsi      # 0xe29d
leaq 0xb40(%rip), %rcx       # 0xc0c6
leaq 0x2d20(%rip), %r8       # 0xe2ad
movl %eax, (%rsp)
movb $0x0, %al
callq 0x70e0
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
callq 0xa800
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rax
movl 0x184(%rax), %edx
movq -0x20(%rbp), %rax
imull 0x180(%rax), %edx
movl -0x28(%rbp), %ecx
leaq 0x2cfc(%rip), %r8       # 0xe2c5
leaq 0x2cee(%rip), %rax      # 0xe2be
cmpl $0x0, %ecx
cmovneq %rax, %r8
leaq 0x2cd9(%rip), %rsi      # 0xe2b7
leaq 0xae1(%rip), %rcx       # 0xc0c6
movb $0x0, %al
callq 0x70e0
movl -0x28(%rbp), %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
addq $0xf0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
nopw %cs:(%rax,%rax)