// File: /workspace/github_c_makefile_star2_O0/msteveb[P]autosetup/./jimsh0.c
// Function: ExprTreeBuildTree
static int ExprTreeBuildTree(Jim_Interp *interp, struct ExprBuilder *builder, int precedence, int flags, int exp_numterms) {
    int rc;
    struct JimExprNode *node;

    int exp_stacklen = builder->stack.len + exp_numterms;

    if (builder->level++ > 200) {
        Jim_SetResultString(interp, "Expression too complex", -1);
        return JIM_ERR;
    }

    while (builder->token->type != JIM_TT_EOL) {
        ParseToken *t = builder->token++;
        int prevtt;

        if (t == builder->first_token) {
            prevtt = JIM_TT_NONE;
        }
        else {
            prevtt = t[-1].type;
        }

        if (t->type == JIM_TT_SUBEXPR_START) {
            if (builder->stack.len == exp_stacklen) {
                Jim_SetResultFormatted(interp, "unexpected open parenthesis in expression: \"%#s\"", builder->exprObjPtr);
                return JIM_ERR;
            }
            builder->parencount++;
            rc = ExprTreeBuildTree(interp, builder, 0, EXPR_UNTIL_CLOSE, 1);
            if (rc != JIM_OK) {
                return rc;
            }

        }
        else if (t->type == JIM_TT_SUBEXPR_END) {
            if (!(flags & EXPR_UNTIL_CLOSE)) {
                if (builder->stack.len == exp_stacklen && builder->level > 1) {
                    builder->token--;
                    builder->level--;
                    return JIM_OK;
                }
                Jim_SetResultFormatted(interp, "unexpected closing parenthesis in expression: \"%#s\"", builder->exprObjPtr);
                return JIM_ERR;
            }
            builder->parencount--;
            if (builder->stack.len == exp_stacklen) {

                break;
            }
        }
        else if (t->type == JIM_TT_SUBEXPR_COMMA) {
            if (!(flags & EXPR_FUNC_ARGS)) {
                if (builder->stack.len == exp_stacklen) {

                    builder->token--;
                    builder->level--;
                    return JIM_OK;
                }
                Jim_SetResultFormatted(interp, "unexpected comma in expression: \"%#s\"", builder->exprObjPtr);
                return JIM_ERR;
            }
            else {

                if (builder->stack.len > exp_stacklen) {
                    Jim_SetResultFormatted(interp, "too many arguments to math function");
                    return JIM_ERR;
                }
            }

        }
        else if (t->type == JIM_EXPROP_COLON) {
            if (!(flags & EXPR_TERNARY)) {
                if (builder->level != 1) {

                    builder->token--;
                    builder->level--;
                    return JIM_OK;
                }
                Jim_SetResultFormatted(interp, ": without ? in expression: \"%#s\"", builder->exprObjPtr);
                return JIM_ERR;
            }
            if (builder->stack.len == exp_stacklen) {

                builder->token--;
                builder->level--;
                return JIM_OK;
            }

        }
        else if (TOKEN_IS_EXPR_OP(t->type)) {
            const struct Jim_ExprOperator *op;


            if (TOKEN_IS_EXPR_OP(prevtt) || TOKEN_IS_EXPR_START(prevtt)) {
                if (t->type == JIM_EXPROP_SUB) {
                    t->type = JIM_EXPROP_UNARYMINUS;
                }
                else if (t->type == JIM_EXPROP_ADD) {
                    t->type = JIM_EXPROP_UNARYPLUS;
                }
            }

            op = JimExprOperatorInfoByOpcode(t->type);

            if (op->precedence < precedence || (!(op->attr & OP_RIGHT_ASSOC) && op->precedence == precedence)) {

                builder->token--;
                break;
            }

            if (op->attr & OP_FUNC) {
                if (builder->token->type != JIM_TT_SUBEXPR_START) {
                    Jim_SetResultString(interp, "missing arguments for math function", -1);
                    return JIM_ERR;
                }
                builder->token++;
                if (op->arity == 0) {
                    if (builder->token->type != JIM_TT_SUBEXPR_END) {
                        Jim_SetResultString(interp, "too many arguments for math function", -1);
                        return JIM_ERR;
                    }
                    builder->token++;
                    goto noargs;
                }
                builder->parencount++;


                rc = ExprTreeBuildTree(interp, builder, 0, EXPR_FUNC_ARGS | EXPR_UNTIL_CLOSE, op->arity);
            }
            else if (t->type == JIM_EXPROP_TERNARY) {

                rc = ExprTreeBuildTree(interp, builder, op->precedence, EXPR_TERNARY, 2);
            }
            else {
                rc = ExprTreeBuildTree(interp, builder, op->precedence, 0, 1);
            }

            if (rc != JIM_OK) {
                return rc;
            }

noargs:
            node = builder->next++;
            node->type = t->type;

            if (op->arity >= 3) {
                node->ternary = Jim_StackPop(&builder->stack);
                if (node->ternary == NULL) {
                    goto missingoperand;
                }
            }
            if (op->arity >= 2) {
                node->right = Jim_StackPop(&builder->stack);
                if (node->right == NULL) {
                    goto missingoperand;
                }
            }
            if (op->arity >= 1) {
                node->left = Jim_StackPop(&builder->stack);
                if (node->left == NULL) {
missingoperand:
                    Jim_SetResultFormatted(interp, "missing operand to %s in expression: \"%#s\"", op->name, builder->exprObjPtr);
                    builder->next--;
                    return JIM_ERR;

                }
            }


            Jim_StackPush(&builder->stack, node);
        }
        else {
            Jim_Obj *objPtr = NULL;




            if (!TOKEN_IS_EXPR_START(prevtt) && !TOKEN_IS_EXPR_OP(prevtt)) {
                Jim_SetResultFormatted(interp, "missing operator in expression: \"%#s\"", builder->exprObjPtr);
                return JIM_ERR;
            }


            if (t->type == JIM_TT_EXPR_INT || t->type == JIM_TT_EXPR_DOUBLE) {
                char *endptr;
                if (t->type == JIM_TT_EXPR_INT) {
                    objPtr = Jim_NewIntObj(interp, jim_strtoull(t->token, &endptr));
                }
                else {
                    objPtr = Jim_NewDoubleObj(interp, strtod(t->token, &endptr));
                }
                if (endptr != t->token + t->len) {

                    Jim_FreeNewObj(interp, objPtr);
                    objPtr = NULL;
                }
            }

            if (!objPtr) {

                objPtr = Jim_NewStringObj(interp, t->token, t->len);
                if (t->type == JIM_TT_CMD) {

                    Jim_SetSourceInfo(interp, objPtr, builder->fileNameObj, t->line);
                }
            }


            node = builder->next++;
            node->objPtr = objPtr;
            Jim_IncrRefCount(node->objPtr);
            node->type = t->type;
            Jim_StackPush(&builder->stack, node);
        }
    }

    if (builder->stack.len == exp_stacklen) {
        builder->level--;
        return JIM_OK;
    }

    if ((flags & EXPR_FUNC_ARGS)) {
        Jim_SetResultFormatted(interp, "too %s arguments for math function", (builder->stack.len < exp_stacklen) ? "few" : "many");
    }
    else {
        if (builder->stack.len < exp_stacklen) {
            if (builder->level == 0) {
                Jim_SetResultFormatted(interp, "empty expression");
            }
            else {
                Jim_SetResultFormatted(interp, "syntax error in expression \"%#s\": premature end of expression", builder->exprObjPtr);
            }
        }
        else {
            Jim_SetResultFormatted(interp, "extra terms after expression");
        }
    }

    return JIM_ERR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movl %ecx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
addl -0x24(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x18(%rbp), %rcx
movl 0x4(%rcx), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, 0x4(%rcx)
cmpl $0xc8, %eax
jle 0x24064
jmp 0x24002
movq -0x10(%rbp), %rdi
leaq 0x18377(%rip), %rsi     # 0x3c384
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7990
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movl 0x10(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x10(%rcx)
cmpl $0x0, %eax
jg 0x2404d
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
callq 0x7a10
movq -0x40(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0x248ea
jmp 0x24066
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x7, 0xc(%rax)
je 0x24827
movq -0x18(%rbp), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x18, %rdx
movq %rdx, 0x8(%rcx)
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jne 0x240a6
movl $0x0, -0x4c(%rbp)
jmp 0x240b0
movq -0x48(%rbp), %rax
movl -0xc(%rax), %eax
movl %eax, -0x4c(%rbp)
movq -0x48(%rbp), %rax
cmpl $0xb, 0xc(%rax)
jne 0x24128
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jne 0x240ec
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0x182c2(%rip), %rsi     # 0x3c39b
movb $0x0, %al
callq 0x6b40
movl $0x1, -0x4(%rbp)
jmp 0x248ea
movq -0x18(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
movl $0x1, %r8d
movl %r8d, %ecx
callq 0x23fc0
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
je 0x24123
movl -0x28(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x248ea
jmp 0x24822
movq -0x48(%rbp), %rax
cmpl $0xc, 0xc(%rax)
jne 0x241c7
movl -0x20(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x241a6
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jne 0x24180
movq -0x18(%rbp), %rax
cmpl $0x1, 0x4(%rax)
jle 0x24180
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $-0x18, %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x4(%rax)
movl $0x0, -0x4(%rbp)
jmp 0x248ea
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0x18239(%rip), %rsi     # 0x3c3cc
movb $0x0, %al
callq 0x6b40
movl $0x1, -0x4(%rbp)
jmp 0x248ea
movq -0x18(%rbp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jne 0x241c2
jmp 0x24827
jmp 0x24820
movq -0x48(%rbp), %rax
cmpl $0xd, 0xc(%rax)
jne 0x2426c
movl -0x20(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x2423b
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jne 0x24215
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $-0x18, %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x4(%rax)
movl $0x0, -0x4(%rbp)
jmp 0x248ea
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0x181d8(%rip), %rsi     # 0x3c400
movb $0x0, %al
callq 0x6b40
movl $0x1, -0x4(%rbp)
jmp 0x248ea
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jle 0x24265
movq -0x10(%rbp), %rdi
leaq 0x181d4(%rip), %rsi     # 0x3c426
movb $0x0, %al
callq 0x6b40
movl $0x1, -0x4(%rbp)
jmp 0x248ea
jmp 0x24267
jmp 0x2481e
movq -0x48(%rbp), %rax
cmpl $0x29, 0xc(%rax)
jne 0x24318
movl -0x20(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x242de
movq -0x18(%rbp), %rax
cmpl $0x1, 0x4(%rax)
je 0x242b8
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $-0x18, %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x4(%rax)
movl $0x0, -0x4(%rbp)
jmp 0x248ea
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0x1817f(%rip), %rsi     # 0x3c44a
movb $0x0, %al
callq 0x6b40
movl $0x1, -0x4(%rbp)
jmp 0x248ea
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jne 0x24313
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $-0x18, %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x4(%rax)
movl $0x0, -0x4(%rbp)
jmp 0x248ea
jmp 0x2481c
movq -0x48(%rbp), %rax
cmpl $0x14, 0xc(%rax)
jl 0x2468f
cmpl $0x14, -0x4c(%rbp)
jge 0x2433e
cmpl $0x0, -0x4c(%rbp)
je 0x2433e
cmpl $0xb, -0x4c(%rbp)
je 0x2433e
cmpl $0xd, -0x4c(%rbp)
jne 0x2436e
movq -0x48(%rbp), %rax
cmpl $0x17, 0xc(%rax)
jne 0x24355
movq -0x48(%rbp), %rax
movl $0x35, 0xc(%rax)
jmp 0x2436c
movq -0x48(%rbp), %rax
cmpl $0x18, 0xc(%rax)
jne 0x2436a
movq -0x48(%rbp), %rax
movl $0x36, 0xc(%rax)
jmp 0x2436c
jmp 0x2436e
movq -0x48(%rbp), %rax
movl 0xc(%rax), %edi
callq 0x249a0
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl -0x1c(%rbp), %eax
jl 0x243a8
movq -0x58(%rbp), %rax
movzbl 0x12(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x243bd
movq -0x58(%rbp), %rax
movzbl 0x10(%rax), %eax
cmpl -0x1c(%rbp), %eax
jne 0x243bd
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $-0x18, %rcx
movq %rcx, 0x8(%rax)
jmp 0x24827
movq -0x58(%rbp), %rax
movzbl 0x12(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x24518
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xb, 0xc(%rax)
je 0x24443
jmp 0x243e1
movq -0x10(%rbp), %rdi
leaq 0x1807f(%rip), %rsi     # 0x3c46b
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7990
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movl 0x10(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x10(%rcx)
cmpl $0x0, %eax
jg 0x2442c
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
callq 0x7a10
movq -0x60(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0x248ea
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $0x18, %rcx
movq %rcx, 0x8(%rax)
movq -0x58(%rbp), %rax
movzbl 0x11(%rax), %eax
cmpl $0x0, %eax
jne 0x244eb
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0xc, 0xc(%rax)
je 0x244d6
jmp 0x24474
movq -0x10(%rbp), %rdi
leaq 0x18010(%rip), %rsi     # 0x3c48f
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7990
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movl 0x10(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x10(%rcx)
cmpl $0x0, %eax
jg 0x244bf
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
callq 0x7a10
movq -0x68(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0x248ea
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
addq $0x18, %rcx
movq %rcx, 0x8(%rax)
jmp 0x2457c
movq -0x18(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x58(%rbp), %rax
movzbl 0x11(%rax), %r8d
xorl %edx, %edx
movl $0x3, %ecx
callq 0x23fc0
movl %eax, -0x28(%rbp)
jmp 0x24569
movq -0x48(%rbp), %rax
cmpl $0x28, 0xc(%rax)
jne 0x24547
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x58(%rbp), %rax
movzbl 0x10(%rax), %edx
movl $0x4, %ecx
movl $0x2, %r8d
callq 0x23fc0
movl %eax, -0x28(%rbp)
jmp 0x24567
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x58(%rbp), %rax
movzbl 0x10(%rax), %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x23fc0
movl %eax, -0x28(%rbp)
jmp 0x24569
cmpl $0x0, -0x28(%rbp)
je 0x2457a
movl -0x28(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x248ea
jmp 0x2457c
movq -0x18(%rbp), %rcx
movq 0x40(%rcx), %rax
movq %rax, %rdx
addq $0x28, %rdx
movq %rdx, 0x40(%rcx)
movq %rax, -0x30(%rbp)
movq -0x48(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x58(%rbp), %rax
movzbl 0x11(%rax), %eax
cmpl $0x3, %eax
jl 0x245d4
movq -0x18(%rbp), %rdi
addq $0x18, %rdi
callq 0xc560
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x245d2
jmp 0x2463a
jmp 0x245d4
movq -0x58(%rbp), %rax
movzbl 0x11(%rax), %eax
cmpl $0x2, %eax
jl 0x24608
movq -0x18(%rbp), %rdi
addq $0x18, %rdi
callq 0xc560
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x24606
jmp 0x2463a
jmp 0x24608
movq -0x58(%rbp), %rax
movzbl 0x11(%rax), %eax
cmpl $0x1, %eax
jl 0x24679
movq -0x18(%rbp), %rdi
addq $0x18, %rdi
callq 0xc560
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x24677
jmp 0x2463a
movq -0x10(%rbp), %rdi
movq -0x58(%rbp), %rax
movq (%rax), %rdx
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rcx
leaq 0x17e60(%rip), %rsi     # 0x3c4b4
movb $0x0, %al
callq 0x6b40
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rcx
addq $-0x28, %rcx
movq %rcx, 0x40(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x248ea
jmp 0x24679
movq -0x18(%rbp), %rdi
addq $0x18, %rdi
movq -0x30(%rbp), %rsi
callq 0xc4c0
jmp 0x2481a
movq $0x0, -0x70(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x246d5
cmpl $0xb, -0x4c(%rbp)
je 0x246d5
cmpl $0xd, -0x4c(%rbp)
je 0x246d5
cmpl $0x14, -0x4c(%rbp)
jge 0x246d5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0x17e1d(%rip), %rsi     # 0x3c4df
movb $0x0, %al
callq 0x6b40
movl $0x1, -0x4(%rbp)
jmp 0x248ea
movq -0x48(%rbp), %rax
cmpl $0xe, 0xc(%rax)
je 0x246ed
movq -0x48(%rbp), %rax
cmpl $0xf, 0xc(%rax)
jne 0x2477e
movq -0x48(%rbp), %rax
cmpl $0xe, 0xc(%rax)
jne 0x24721
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x48(%rbp), %rax
movq (%rax), %rdi
leaq -0x78(%rbp), %rsi
callq 0xb630
movq -0x80(%rbp), %rdi
movq %rax, %rsi
callq 0x8d60
movq %rax, -0x70(%rbp)
jmp 0x2474c
movq -0x10(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x48(%rbp), %rax
movq (%rax), %rdi
leaq -0x78(%rbp), %rsi
callq 0x6130
movq -0x88(%rbp), %rdi
callq 0xfbe0
movq %rax, -0x70(%rbp)
movq -0x78(%rbp), %rax
movq -0x48(%rbp), %rcx
movq (%rcx), %rcx
movq -0x48(%rbp), %rdx
movslq 0x8(%rdx), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
je 0x2477c
movq -0x10(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x7a10
movq $0x0, -0x70(%rbp)
jmp 0x2477e
cmpq $0x0, -0x70(%rbp)
jne 0x247c8
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rax
movq (%rax), %rsi
movq -0x48(%rbp), %rax
movl 0x8(%rax), %edx
callq 0x7990
movq %rax, -0x70(%rbp)
movq -0x48(%rbp), %rax
cmpl $0x5, 0xc(%rax)
jne 0x247c6
movq -0x10(%rbp), %rdi
movq -0x70(%rbp), %rsi
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rdx
movq -0x48(%rbp), %rax
movl 0x10(%rax), %ecx
callq 0xd4a0
jmp 0x247c8
movq -0x18(%rbp), %rcx
movq 0x40(%rcx), %rax
movq %rax, %rdx
addq $0x28, %rdx
movq %rdx, 0x40(%rcx)
movq %rax, -0x30(%rbp)
movq -0x70(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x48(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
addq $0x18, %rdi
movq -0x30(%rbp), %rsi
callq 0xc4c0
jmp 0x2481c
jmp 0x2481e
jmp 0x24820
jmp 0x24822
jmp 0x24066
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jne 0x2484c
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x4(%rax)
movl $0x0, -0x4(%rbp)
jmp 0x248ea
movl -0x20(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x24889
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x18(%rax), %ecx
movl -0x34(%rbp), %esi
leaq 0x17cc0(%rip), %rdx     # 0x3c52c
leaq 0x17cb5(%rip), %rax     # 0x3c528
cmpl %esi, %ecx
cmovlq %rax, %rdx
leaq 0x17c85(%rip), %rsi     # 0x3c505
movb $0x0, %al
callq 0x6b40
jmp 0x248e3
movq -0x18(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x34(%rbp), %eax
jge 0x248cf
movq -0x18(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x248b3
movq -0x10(%rbp), %rdi
leaq 0x17944(%rip), %rsi     # 0x3c1ee
movb $0x0, %al
callq 0x6b40
jmp 0x248cd
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0x17c6b(%rip), %rsi     # 0x3c531
movb $0x0, %al
callq 0x6b40
jmp 0x248e1
movq -0x10(%rbp), %rdi
leaq 0x17c95(%rip), %rsi     # 0x3c56f
movb $0x0, %al
callq 0x6b40
jmp 0x248e3
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)