// File: pfnet-research[P]pml/src/simple_type.cpp
// Function: simty::simple_typing[abi:cxx11](ast::expr_t const&, environment_t<simty::type_t> const&)
result_t simple_typing(ast::expr_t const& expr, type_env_t const& env) {
    using namespace ast;
    switch (expr.kind()) {
    case expr_kind_t::LetFun: {
        auto const& letfun = cast<letfun_expr_t>(expr);
        auto const& simty = type_t::from(letfun.type);
        auto const& fun_simty = cast<fun_type_t>(*simty);
        auto init_env = env.append(letfun.name, simty);
        for (size_t i=0; i<fun_simty.args.size(); ++i)
            init_env = init_env.append(letfun.type.args[i].name, fun_simty.args[i]);
        auto init_typing_result = simple_typing(*letfun.init, init_env);
        if (init_typing_result.is_error())
            return init_typing_result;
        auto body_env = env.append(letfun.name, simty);
        return simple_typing(*letfun.body, body_env);
        }
    case expr_kind_t::App: {
        auto const& f_typing_result = simple_typing(*cast<app_expr_t>(expr).f, env);
        if (f_typing_result.is_error())
            return f_typing_result;
        auto const& fun_ty = cast<fun_type_t>(*f_typing_result.ok());
        auto const& args = cast<app_expr_t>(expr).args;
        if (fun_ty.args.size() != args.size()) {
            return result_t::error(format(
                        "not match numbers of parameters and arguments (param {} vs arg {}) in \"{}\"",
                        fun_ty.args.size(), args.size(), to_debug_string(expr)));
        }
        for (size_t i=0; i<args.size(); ++i) {
            auto arg_ty_result = simple_typing(*args[i], env);
            if (arg_ty_result.is_error())
                return arg_ty_result;
            if (*arg_ty_result.ok() != *fun_ty.args[i]) {
                return result_t::error(format(
                        "not match {}th parameter and arguments ({} vs {}) in \"{}\"",
                        to_debug_string(*arg_ty_result.ok()), to_debug_string(*fun_ty.args[i]),
                        to_debug_string(expr)));
            }
        }
        return fun_ty.ret;
        }
    case expr_kind_t::Fun:
        // do not appear in syntax
        throw std::logic_error{"fun expr can not appear"};
    case expr_kind_t::Let: {
            auto init_result = simple_typing(*cast<let_expr_t>(expr).init, env);
            if (init_result.is_error())
                return init_result;
            auto new_env = env.append(cast<let_expr_t>(expr).name, init_result.ok());
            return simple_typing(*cast<let_expr_t>(expr).body, new_env);
        }
    case expr_kind_t::If: {
        auto const& cond_result = simple_typing(*cast<if_expr_t>(expr).cond_expr, env);
        auto const& tr_result = simple_typing(*cast<if_expr_t>(expr).true_expr, env);
        auto const& fl_result = simple_typing(*cast<if_expr_t>(expr).false_expr, env);
        auto sub_result = cond_result && tr_result && fl_result;
        if (sub_result.is_error())
            return sub_result;
        if (*cond_result.ok() != simty::bool_type_t{})
            return result_t::error(format("condition of if expr must be boolean in \"{}\"", to_debug_string(expr)));
        if (*tr_result.ok() != *fl_result.ok())
            return result_t::error(format("not match types of branches of if expr in \"{}\"", to_debug_string(expr)));
        return tr_result;
        }
    case expr_kind_t::Rand:
        return result_t::ok(make<simty::int_type_t>());
    case expr_kind_t::Typed: {
        auto const& inner = *cast<typed_expr_t>(expr).expr;
        auto const& expr_ty_result = simple_typing(inner, env);
        if (expr_ty_result.is_error())
            return expr_ty_result;
        auto const& ty = type_t::from(cast<typed_expr_t>(expr).type);
        if (*expr_ty_result.ok() == *ty)
            return expr_ty_result;
        else
            return result_t::error(format("{} has simple type {}, but expected {}",
                        to_debug_string(inner),
                        to_debug_string(*expr_ty_result.ok()), to_debug_string(*ty)));
        }
    case expr_kind_t::Add:
    case expr_kind_t::Sub:
    case expr_kind_t::Mul:
    case expr_kind_t::Div: {
        auto const& lhs_result = simple_typing(*cast<binop_expr_t>(expr).lhs, env);
        auto const& rhs_result = simple_typing(*cast<binop_expr_t>(expr).rhs, env);
        auto const& sub_result = lhs_result && rhs_result;
        if (sub_result.is_error())
            return sub_result;
        if (*lhs_result.ok() != simty::int_type_t{} || *rhs_result.ok() != simty::int_type_t{}) {
            return result_t::error(format(
                    "can not apply arithmetic binary operation to non-integer expression in {}",
                    to_debug_string(expr)));
        }
        return result_t::ok(make<simty::int_type_t>());
        }
    case expr_kind_t::Neg: {
        auto const& inner_result = simple_typing(*cast<neg_expr_t>(expr).inner, env);
        if (inner_result.is_error())
            return inner_result;
        if (*inner_result.ok() != simty::bool_type_t{}) {
            return result_t::error(format(
                    "can not apply negation operator to non-boolean expression in {}",
                    to_debug_string(expr)));
        }
        return result_t::ok(make<simty::bool_type_t>());
        }
    case expr_kind_t::Eq:
    case expr_kind_t::Neq:
    case expr_kind_t::Leq:
    case expr_kind_t::Geq: {
        auto const& lhs_result = simple_typing(*cast<binop_expr_t>(expr).lhs, env);
        auto const& rhs_result = simple_typing(*cast<binop_expr_t>(expr).rhs, env);
        auto sub_result = lhs_result && rhs_result;
        if (sub_result.is_error())
            return sub_result;
        if (*lhs_result.ok() != simty::int_type_t{} || *rhs_result.ok() != simty::int_type_t{}) {
            return result_t::error(format(
                    "can not apply comparison operation to non-boolean expression in {}",
                    to_debug_string(expr)));
        }
        return result_t::ok(make<simty::bool_type_t>());
        }
    case expr_kind_t::And:
    case expr_kind_t::Or: {
        auto const& lhs_result = simple_typing(*cast<binop_expr_t>(expr).lhs, env);
        auto const& rhs_result = simple_typing(*cast<binop_expr_t>(expr).rhs, env);
        auto const& sub_result = lhs_result && rhs_result;
        if (sub_result.is_error())
            return sub_result;
        if (*lhs_result.ok() != simty::bool_type_t{} || *rhs_result.ok() != simty::bool_type_t{}) {
            return result_t::error(format(
                        "can not apply logical binary operation to non-boolean expression in {}",
                        to_debug_string(expr)));
        }
        return result_t::ok(make<simty::bool_type_t>());
        }
    case expr_kind_t::Int:
        return result_t::ok(make<simty::int_type_t>());
    case expr_kind_t::Bool:
        return result_t::ok(make<simty::bool_type_t>());
    case expr_kind_t::Var:
        return result_t::ok(env.lookup(cast<var_expr_t>(expr).name));
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd90, %rsp            # imm = 0xD90
movq %rdi, -0xa20(%rbp)
movq %rdi, %rax
movq %rax, -0xa18(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, %ecx
movq %rcx, -0xa10(%rbp)
subl $0x14, %eax
ja 0x5e2e2
movq -0xa10(%rbp), %rax
leaq 0x4174c(%rip), %rcx     # 0x9d460
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
callq 0x5e300
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rsi
addq $0x28, %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xa30(%rbp)
callq 0x5bb20
movq -0xa30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x5f9e0
movq %rax, %rdi
callq 0x5e340
movq %rax, -0xa28(%rbp)
jmp 0x5bd67
movq -0xa28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x8, %rdx
movq -0x28(%rbp), %rcx
leaq -0x68(%rbp), %rdi
callq 0x5fa10
jmp 0x5bd8d
movq $0x0, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0xa38(%rbp)
movq -0x40(%rbp), %rdi
addq $0x8, %rdi
callq 0x5fae0
movq %rax, %rcx
movq -0xa38(%rbp), %rax
cmpq %rcx, %rax
jae 0x5be54
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
movq -0x70(%rbp), %rsi
callq 0x1dff0
movq %rax, -0xa40(%rbp)
movq -0x40(%rbp), %rdi
addq $0x8, %rdi
movq -0x70(%rbp), %rsi
callq 0x5fb00
movq -0xa40(%rbp), %rdx
movq %rax, %rcx
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x5fa10
jmp 0x5be05
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x5fb20
leaq -0x88(%rbp), %rdi
callq 0x5fb50
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x5bd95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5bf7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5bf72
movq -0x20(%rbp), %rdi
addq $0x78, %rdi
callq 0x13020
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x5bcc0
jmp 0x5be76
leaq -0xb0(%rbp), %rdi
callq 0x30040
movb %al, -0xa41(%rbp)
jmp 0x5be8a
movb -0xa41(%rbp), %al
testb $0x1, %al
jne 0x5be96
jmp 0x5becb
movq -0xa20(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x5fb70
jmp 0x5beab
movl $0x1, -0xb4(%rbp)
jmp 0x5bf43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5bf66
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x8, %rdx
movq -0x28(%rbp), %rcx
leaq -0xd0(%rbp), %rdi
callq 0x5fa10
jmp 0x5bee9
movq -0x20(%rbp), %rdi
addq $0x88, %rdi
callq 0x13020
movq -0xa20(%rbp), %rdi
movq %rax, %rsi
leaq -0xd0(%rbp), %rdx
callq 0x5bcc0
jmp 0x5bf11
movl $0x1, -0xb4(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5fb50
jmp 0x5bf43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5fb50
jmp 0x5bf66
leaq -0xb0(%rbp), %rdi
callq 0x300e0
leaq -0x68(%rbp), %rdi
callq 0x5fb50
leaq -0x38(%rbp), %rdi
callq 0x30150
jmp 0x5e2e4
leaq -0xb0(%rbp), %rdi
callq 0x300e0
leaq -0x68(%rbp), %rdi
callq 0x5fb50
leaq -0x38(%rbp), %rdi
callq 0x30150
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5e380
movq %rax, %rdi
addq $0x8, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x100(%rbp), %rdi
movq %rdi, -0xa50(%rbp)
callq 0x5bcc0
movq -0xa50(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rdi
callq 0x30040
movb %al, -0xa42(%rbp)
jmp 0x5bfda
movb -0xa42(%rbp), %al
testb $0x1, %al
jne 0x5bfe6
jmp 0x5c01b
movq -0xa20(%rbp), %rdi
movq -0xd8(%rbp), %rsi
callq 0x5fbc0
jmp 0x5bffb
movl $0x1, -0xb4(%rbp)
jmp 0x5c577
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c588
movq -0xd8(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xa58(%rbp)
jmp 0x5c030
movq -0xa58(%rbp), %rdi
callq 0x5f9e0
movq %rax, %rdi
callq 0x5e340
movq %rax, -0xa60(%rbp)
jmp 0x5c04d
movq -0xa60(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5e380
movq %rax, -0xa68(%rbp)
jmp 0x5c06d
movq -0xa68(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x110(%rbp)
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x5fae0
movq %rax, -0xa70(%rbp)
movq -0x110(%rbp), %rdi
callq 0x13370
movq %rax, %rcx
movq -0xa70(%rbp), %rax
cmpq %rcx, %rax
je 0x5c209
leaq -0x151(%rbp), %rdi
movq %rdi, -0xa78(%rbp)
callq 0xa660
movq -0xa78(%rbp), %rdx
leaq 0x413df(%rip), %rsi     # 0x9d4b5
leaq -0x150(%rbp), %rdi
callq 0x1dd10
jmp 0x5c0e4
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
callq 0x5fae0
movq %rax, -0x160(%rbp)
movq -0x110(%rbp), %rdi
callq 0x13370
movq %rax, -0x168(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x188(%rbp), %rdi
callq 0x1c030
jmp 0x5c120
leaq -0x130(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x160(%rbp), %rdx
leaq -0x168(%rbp), %rcx
leaq -0x188(%rbp), %r8
callq 0x5e3c0
jmp 0x5c14a
movq -0xa20(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x5fc90
jmp 0x5c15f
leaq -0x130(%rbp), %rdi
callq 0xa240
leaq -0x188(%rbp), %rdi
callq 0xa240
leaq -0x150(%rbp), %rdi
callq 0xa240
leaq -0x151(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5c577
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c1f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c1ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c1e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0xa240
leaq -0x188(%rbp), %rdi
callq 0xa240
leaq -0x150(%rbp), %rdi
callq 0xa240
leaq -0x151(%rbp), %rdi
callq 0xa420
jmp 0x5c588
movq $0x0, -0x190(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0xa80(%rbp)
movq -0x110(%rbp), %rdi
callq 0x13370
movq %rax, %rcx
movq -0xa80(%rbp), %rax
cmpq %rcx, %rax
jae 0x5c554
movq -0x110(%rbp), %rdi
movq -0x190(%rbp), %rsi
callq 0x133e0
movq %rax, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x1b8(%rbp), %rdi
callq 0x5bcc0
jmp 0x5c271
leaq -0x1b8(%rbp), %rdi
callq 0x30040
movb %al, -0xa81(%rbp)
jmp 0x5c285
movb -0xa81(%rbp), %al
testb $0x1, %al
jne 0x5c291
jmp 0x5c2c6
movq -0xa20(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x5fb70
jmp 0x5c2a6
movl $0x1, -0xb4(%rbp)
jmp 0x5c515
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c546
leaq -0x1b8(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xa90(%rbp)
jmp 0x5c2db
movq -0xa90(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xaa0(%rbp)
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
movq -0x190(%rbp), %rsi
callq 0x5fb00
movq %rax, %rdi
callq 0x5f9e0
movq -0xaa0(%rbp), %rdi
movq %rax, %rsi
callq 0x5e640
movb %al, -0xa91(%rbp)
jmp 0x5c324
movb -0xa91(%rbp), %al
testb $0x1, %al
jne 0x5c333
jmp 0x5c50b
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0xaa8(%rbp)
callq 0xa660
movq -0xaa8(%rbp), %rdx
leaq 0x411ac(%rip), %rsi     # 0x9d500
leaq -0x1f8(%rbp), %rdi
callq 0x1dd10
jmp 0x5c362
leaq -0x1b8(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xab0(%rbp)
jmp 0x5c377
movq -0xab0(%rbp), %rdi
callq 0x5f9e0
movq %rax, %rsi
leaq -0x220(%rbp), %rdi
callq 0x5e8f0
jmp 0x5c394
movq -0x108(%rbp), %rdi
addq $0x8, %rdi
movq -0x190(%rbp), %rsi
callq 0x5fb00
movq %rax, %rdi
callq 0x5f9e0
movq %rax, %rsi
leaq -0x240(%rbp), %rdi
callq 0x5e8f0
jmp 0x5c3c4
movq -0x10(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0x1c030
jmp 0x5c3d6
leaq -0x1d8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x220(%rbp), %rdx
leaq -0x240(%rbp), %rcx
leaq -0x260(%rbp), %r8
callq 0x5e670
jmp 0x5c400
movq -0xa20(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x5fc90
jmp 0x5c415
leaq -0x1d8(%rbp), %rdi
callq 0xa240
leaq -0x260(%rbp), %rdi
callq 0xa240
leaq -0x240(%rbp), %rdi
callq 0xa240
leaq -0x220(%rbp), %rdi
callq 0xa240
leaq -0x1f8(%rbp), %rdi
callq 0xa240
leaq -0x1f9(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5c515
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c4fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c4f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c4e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c4d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c4cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xa240
leaq -0x260(%rbp), %rdi
callq 0xa240
leaq -0x240(%rbp), %rdi
callq 0xa240
leaq -0x220(%rbp), %rdi
callq 0xa240
leaq -0x1f8(%rbp), %rdi
callq 0xa240
leaq -0x1f9(%rbp), %rdi
callq 0xa420
jmp 0x5c546
movl $0x0, -0xb4(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x300e0
movl -0xb4(%rbp), %eax
testl %eax, %eax
jne 0x5c577
jmp 0x5c52d
jmp 0x5c52f
movq -0x190(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x190(%rbp)
jmp 0x5c214
leaq -0x1b8(%rbp), %rdi
callq 0x300e0
jmp 0x5c588
movq -0xa20(%rbp), %rdi
movq -0x108(%rbp), %rsi
addq $0x20, %rsi
callq 0x5fcf0
jmp 0x5c56d
movl $0x1, -0xb4(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x100(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
movl $0x10, %edi
callq 0xa1d0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xab8(%rbp)
leaq 0x40f83(%rip), %rsi     # 0x9d53a
callq 0xa540
jmp 0x5c5be
movq -0xab8(%rbp), %rdi
movq 0x8aa04(%rip), %rsi     # 0xe6fd0
movq 0x8a9bd(%rip), %rdx     # 0xe6f90
callq 0xa610
movq -0xab8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0xa2c0
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5ec20
movq %rax, %rdi
addq $0x28, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x288(%rbp), %rdi
movq %rdi, -0xac8(%rbp)
callq 0x5bcc0
movq -0xac8(%rbp), %rdi
callq 0x30040
movb %al, -0xab9(%rbp)
jmp 0x5c638
movb -0xab9(%rbp), %al
testb $0x1, %al
jne 0x5c644
jmp 0x5c679
movq -0xa20(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x5fb70
jmp 0x5c659
movl $0x1, -0xb4(%rbp)
jmp 0x5c74c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5c75d
movq -0x18(%rbp), %rax
movq %rax, -0xad8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5ec20
movq %rax, -0xad0(%rbp)
jmp 0x5c696
movq -0xad0(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xae8(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xae0(%rbp)
jmp 0x5c6bd
movq -0xae0(%rbp), %rcx
movq -0xae8(%rbp), %rdx
movq -0xad8(%rbp), %rsi
leaq -0x2a0(%rbp), %rdi
callq 0x5fa10
jmp 0x5c6e0
movq -0x10(%rbp), %rdi
callq 0x5ec20
movq %rax, -0xaf0(%rbp)
jmp 0x5c6f2
movq -0xaf0(%rbp), %rdi
addq $0x38, %rdi
callq 0x13020
movq -0xa20(%rbp), %rdi
movq %rax, %rsi
leaq -0x2a0(%rbp), %rdx
callq 0x5bcc0
jmp 0x5c71a
movl $0x1, -0xb4(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x5fb50
jmp 0x5c74c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x5fb50
jmp 0x5c75d
leaq -0x288(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x288(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5ec60
movq %rax, %rdi
addq $0x8, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x2d0(%rbp), %rdi
movq %rdi, -0xb00(%rbp)
callq 0x5bcc0
movq -0xb00(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5ec60
movq %rax, -0xaf8(%rbp)
jmp 0x5c7bd
movq -0xaf8(%rbp), %rdi
addq $0x18, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x300(%rbp), %rdi
callq 0x5bcc0
jmp 0x5c7e2
leaq -0x300(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5ec60
movq %rax, -0xb08(%rbp)
jmp 0x5c802
movq -0xb08(%rbp), %rdi
addq $0x28, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x330(%rbp), %rdi
callq 0x5bcc0
jmp 0x5c827
leaq -0x330(%rbp), %rax
movq %rax, -0x308(%rbp)
movq -0x2a8(%rbp), %rsi
movq -0x2d8(%rbp), %rdx
leaq -0x380(%rbp), %rdi
callq 0x5eca0
jmp 0x5c851
movq -0x308(%rbp), %rdx
leaq -0x358(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x5eca0
jmp 0x5c86d
leaq -0x380(%rbp), %rdi
callq 0x300e0
leaq -0x358(%rbp), %rdi
callq 0x30040
movb %al, -0xb09(%rbp)
jmp 0x5c88d
movb -0xb09(%rbp), %al
testb $0x1, %al
jne 0x5c89c
jmp 0x5c921
movq -0xa20(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x5fb70
jmp 0x5c8b1
movl $0x1, -0xb4(%rbp)
jmp 0x5cc7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5ccd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5ccca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5ccbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x300e0
jmp 0x5ccbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5ccb2
movq -0x2a8(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xb18(%rbp)
jmp 0x5c936
movq -0xb18(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xb30(%rbp)
movq $0x0, -0x388(%rbp)
leaq -0x388(%rbp), %rdi
movq %rdi, -0xb28(%rbp)
callq 0x5fd20
movq -0xb30(%rbp), %rdi
movq -0xb28(%rbp), %rsi
callq 0x5e640
movb %al, -0xb19(%rbp)
jmp 0x5c982
leaq -0x388(%rbp), %rdi
callq 0x5fd60
movb -0xb19(%rbp), %al
testb $0x1, %al
jne 0x5c99d
jmp 0x5cad6
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0xb38(%rbp)
callq 0xa660
movq -0xb38(%rbp), %rdx
leaq 0x40b94(%rip), %rsi     # 0x9d552
leaq -0x3c8(%rbp), %rdi
callq 0x1dd10
jmp 0x5c9cc
movq -0x10(%rbp), %rsi
leaq -0x3f0(%rbp), %rdi
callq 0x1c030
jmp 0x5c9de
leaq -0x3a8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
leaq -0x3f0(%rbp), %rdx
callq 0x5ed00
jmp 0x5c9fa
movq -0xa20(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x5fc90
jmp 0x5ca0f
leaq -0x3a8(%rbp), %rdi
callq 0xa240
leaq -0x3f0(%rbp), %rdi
callq 0xa240
leaq -0x3c8(%rbp), %rdi
callq 0xa240
leaq -0x3c9(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5cc7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x5fd60
jmp 0x5ccb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5cac5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5cab9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5caad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0xa240
leaq -0x3f0(%rbp), %rdi
callq 0xa240
leaq -0x3c8(%rbp), %rdi
callq 0xa240
leaq -0x3c9(%rbp), %rdi
callq 0xa420
jmp 0x5ccb2
movq -0x2d8(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xb40(%rbp)
jmp 0x5caeb
movq -0xb40(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xb50(%rbp)
movq -0x308(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xb48(%rbp)
jmp 0x5cb13
movq -0xb48(%rbp), %rdi
callq 0x5f9e0
movq -0xb50(%rbp), %rdi
movq %rax, %rsi
callq 0x5e640
movb %al, -0xb51(%rbp)
jmp 0x5cb36
movb -0xb51(%rbp), %al
testb $0x1, %al
jne 0x5cb45
jmp 0x5cc5e
leaq -0x431(%rbp), %rdi
movq %rdi, -0xb60(%rbp)
callq 0xa660
movq -0xb60(%rbp), %rdx
leaq 0x40a19(%rip), %rsi     # 0x9d57f
leaq -0x430(%rbp), %rdi
callq 0x1dd10
jmp 0x5cb74
movq -0x10(%rbp), %rsi
leaq -0x458(%rbp), %rdi
callq 0x1c030
jmp 0x5cb86
leaq -0x410(%rbp), %rdi
leaq -0x430(%rbp), %rsi
leaq -0x458(%rbp), %rdx
callq 0x5ed00
jmp 0x5cba2
movq -0xa20(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x5fc90
jmp 0x5cbb7
leaq -0x410(%rbp), %rdi
callq 0xa240
leaq -0x458(%rbp), %rdi
callq 0xa240
leaq -0x430(%rbp), %rdi
callq 0xa240
leaq -0x431(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5cc7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5cc50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5cc44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5cc38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x410(%rbp), %rdi
callq 0xa240
leaq -0x458(%rbp), %rdi
callq 0xa240
leaq -0x430(%rbp), %rdi
callq 0xa240
leaq -0x431(%rbp), %rdi
callq 0xa420
jmp 0x5ccb2
movq -0xa20(%rbp), %rdi
movq -0x2d8(%rbp), %rsi
callq 0x5fbc0
jmp 0x5cc73
movl $0x1, -0xb4(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x300e0
leaq -0x330(%rbp), %rdi
callq 0x300e0
leaq -0x300(%rbp), %rdi
callq 0x300e0
leaq -0x2d0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x358(%rbp), %rdi
callq 0x300e0
leaq -0x330(%rbp), %rdi
callq 0x300e0
leaq -0x300(%rbp), %rdi
callq 0x300e0
leaq -0x2d0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
leaq -0x478(%rbp), %rdi
movq %rdi, -0xb70(%rbp)
callq 0x5bac0
movq -0xb70(%rbp), %rsi
leaq -0x468(%rbp), %rdi
movq %rdi, -0xb68(%rbp)
callq 0x5f840
movq -0xa20(%rbp), %rdi
movq -0xb68(%rbp), %rsi
callq 0x5fd80
jmp 0x5cd29
leaq -0x468(%rbp), %rdi
callq 0x30150
leaq -0x478(%rbp), %rdi
callq 0x5f870
jmp 0x5e2e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x30150
leaq -0x478(%rbp), %rdi
callq 0x5f870
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5ef70
movq %rax, %rdi
addq $0x8, %rdi
callq 0x13020
movq %rax, -0x480(%rbp)
movq -0x480(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x4b0(%rbp), %rdi
movq %rdi, -0xb80(%rbp)
callq 0x5bcc0
movq -0xb80(%rbp), %rax
movq %rax, -0x488(%rbp)
movq -0x488(%rbp), %rdi
callq 0x30040
movb %al, -0xb71(%rbp)
jmp 0x5cdcb
movb -0xb71(%rbp), %al
testb $0x1, %al
jne 0x5cdd7
jmp 0x5ce0c
movq -0xa20(%rbp), %rdi
movq -0x488(%rbp), %rsi
callq 0x5fbc0
jmp 0x5cdec
movl $0x1, -0xb4(%rbp)
jmp 0x5d0b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d0c6
movq -0x10(%rbp), %rdi
callq 0x5ef70
movq %rax, -0xb88(%rbp)
jmp 0x5ce1e
movq -0xb88(%rbp), %rsi
addq $0x18, %rsi
leaq -0x4c8(%rbp), %rdi
callq 0x5ba30
jmp 0x5ce37
leaq -0x4c8(%rbp), %rax
movq %rax, -0x4b8(%rbp)
movq -0x488(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xb90(%rbp)
jmp 0x5ce5a
movq -0xb90(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xba0(%rbp)
movq -0x4b8(%rbp), %rdi
callq 0x5f9e0
movq -0xba0(%rbp), %rdi
movq %rax, %rsi
callq 0x5efb0
movb %al, -0xb91(%rbp)
jmp 0x5ce90
movb -0xb91(%rbp), %al
testb $0x1, %al
jne 0x5ce9c
jmp 0x5ced1
movq -0xa20(%rbp), %rdi
movq -0x488(%rbp), %rsi
callq 0x5fbc0
jmp 0x5ceb1
movl $0x1, -0xb4(%rbp)
jmp 0x5d099
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d0a7
leaq -0x509(%rbp), %rdi
movq %rdi, -0xba8(%rbp)
callq 0xa660
movq -0xba8(%rbp), %rdx
leaq 0x406bc(%rip), %rsi     # 0x9d5ae
leaq -0x508(%rbp), %rdi
callq 0x1dd10
jmp 0x5cf00
movq -0x480(%rbp), %rsi
leaq -0x530(%rbp), %rdi
callq 0x1c030
jmp 0x5cf15
movq -0x488(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xbb0(%rbp)
jmp 0x5cf2a
movq -0xbb0(%rbp), %rdi
callq 0x5f9e0
movq %rax, %rsi
leaq -0x550(%rbp), %rdi
callq 0x5e8f0
jmp 0x5cf47
movq -0x4b8(%rbp), %rdi
callq 0x5f9e0
movq %rax, %rsi
leaq -0x570(%rbp), %rdi
callq 0x5e8f0
jmp 0x5cf64
leaq -0x4e8(%rbp), %rdi
leaq -0x508(%rbp), %rsi
leaq -0x530(%rbp), %rdx
leaq -0x550(%rbp), %rcx
leaq -0x570(%rbp), %r8
callq 0x5e670
jmp 0x5cf8e
movq -0xa20(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x5fc90
jmp 0x5cfa3
leaq -0x4e8(%rbp), %rdi
callq 0xa240
leaq -0x570(%rbp), %rdi
callq 0xa240
leaq -0x550(%rbp), %rdi
callq 0xa240
leaq -0x530(%rbp), %rdi
callq 0xa240
leaq -0x508(%rbp), %rdi
callq 0xa240
leaq -0x509(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5d099
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d08b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d07f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d073
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d067
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d05b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0xa240
leaq -0x570(%rbp), %rdi
callq 0xa240
leaq -0x550(%rbp), %rdi
callq 0xa240
leaq -0x530(%rbp), %rdi
callq 0xa240
leaq -0x508(%rbp), %rdi
callq 0xa240
leaq -0x509(%rbp), %rdi
callq 0xa420
jmp 0x5d0a7
leaq -0x4c8(%rbp), %rdi
callq 0x30150
jmp 0x5d0b5
leaq -0x4c8(%rbp), %rdi
callq 0x30150
jmp 0x5d0c6
leaq -0x4b0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x4b0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5f110
movq %rax, %rdi
addq $0x8, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x5a0(%rbp), %rdi
movq %rdi, -0xbc0(%rbp)
callq 0x5bcc0
movq -0xbc0(%rbp), %rax
movq %rax, -0x578(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5f110
movq %rax, -0xbb8(%rbp)
jmp 0x5d126
movq -0xbb8(%rbp), %rdi
addq $0x18, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x5d0(%rbp), %rdi
callq 0x5bcc0
jmp 0x5d14b
leaq -0x5d0(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movq -0x578(%rbp), %rsi
movq -0x5a8(%rbp), %rdx
leaq -0x600(%rbp), %rdi
callq 0x5eca0
jmp 0x5d175
leaq -0x600(%rbp), %rax
movq %rax, -0x5d8(%rbp)
movq -0x5d8(%rbp), %rdi
callq 0x30040
movb %al, -0xbc1(%rbp)
jmp 0x5d197
movb -0xbc1(%rbp), %al
testb $0x1, %al
jne 0x5d1a3
jmp 0x5d1fa
movq -0xa20(%rbp), %rdi
movq -0x5d8(%rbp), %rsi
callq 0x5fbc0
jmp 0x5d1b8
movl $0x1, -0xb4(%rbp)
jmp 0x5d512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d553
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d547
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d53b
movq -0x578(%rbp), %rdi
movb $0x0, -0x611(%rbp)
callq 0x5fc10
movq %rax, -0xbd0(%rbp)
jmp 0x5d216
movq -0xbd0(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xbe8(%rbp)
movq $0x0, -0x608(%rbp)
leaq -0x608(%rbp), %rdi
movq %rdi, -0xbe0(%rbp)
callq 0x5fde0
movq -0xbe8(%rbp), %rdi
movq -0xbe0(%rbp), %rsi
callq 0x5e640
movb %al, -0xbd1(%rbp)
jmp 0x5d262
movb -0xbd1(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xbe9(%rbp)
jne 0x5d2ed
jmp 0x5d277
movq -0x5a8(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xbf8(%rbp)
jmp 0x5d28c
movq -0xbf8(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xc10(%rbp)
movq $0x0, -0x610(%rbp)
leaq -0x610(%rbp), %rdi
movq %rdi, -0xc08(%rbp)
callq 0x5fde0
movq -0xc10(%rbp), %rdi
movq -0xc08(%rbp), %rsi
movb $0x1, -0x611(%rbp)
callq 0x5e640
movb %al, -0xbf9(%rbp)
jmp 0x5d2df
movb -0xbf9(%rbp), %al
movb %al, -0xbe9(%rbp)
jmp 0x5d2ed
movb -0xbe9(%rbp), %al
movb %al, -0xc11(%rbp)
testb $0x1, -0x611(%rbp)
jne 0x5d304
jmp 0x5d310
leaq -0x610(%rbp), %rdi
callq 0x5fe20
leaq -0x608(%rbp), %rdi
callq 0x5fe20
movb -0xc11(%rbp), %al
testb $0x1, %al
jne 0x5d32b
jmp 0x5d48b
leaq -0x659(%rbp), %rdi
movq %rdi, -0xc20(%rbp)
callq 0xa660
movq -0xc20(%rbp), %rdx
leaq 0x40289(%rip), %rsi     # 0x9d5d5
leaq -0x658(%rbp), %rdi
callq 0x1dd10
jmp 0x5d35a
movq -0x10(%rbp), %rsi
leaq -0x680(%rbp), %rdi
callq 0x1c030
jmp 0x5d36c
leaq -0x638(%rbp), %rdi
leaq -0x658(%rbp), %rsi
leaq -0x680(%rbp), %rdx
callq 0x5ed00
jmp 0x5d388
movq -0xa20(%rbp), %rdi
leaq -0x638(%rbp), %rsi
callq 0x5fc90
jmp 0x5d39d
leaq -0x638(%rbp), %rdi
callq 0xa240
leaq -0x680(%rbp), %rdi
callq 0xa240
leaq -0x658(%rbp), %rdi
callq 0xa240
leaq -0x659(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5d512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d40f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
testb $0x1, -0x611(%rbp)
jne 0x5d401
jmp 0x5d40d
leaq -0x610(%rbp), %rdi
callq 0x5fe20
jmp 0x5d40f
leaq -0x608(%rbp), %rdi
callq 0x5fe20
jmp 0x5d53b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d47a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d46e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d462
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x638(%rbp), %rdi
callq 0xa240
leaq -0x680(%rbp), %rdi
callq 0xa240
leaq -0x658(%rbp), %rdi
callq 0xa240
leaq -0x659(%rbp), %rdi
callq 0xa420
jmp 0x5d53b
leaq -0x6a0(%rbp), %rdi
callq 0x5bac0
jmp 0x5d499
leaq -0x690(%rbp), %rdi
movq %rdi, -0xc28(%rbp)
leaq -0x6a0(%rbp), %rsi
callq 0x5f840
movq -0xa20(%rbp), %rdi
movq -0xc28(%rbp), %rsi
callq 0x5fd80
jmp 0x5d4c8
leaq -0x690(%rbp), %rdi
callq 0x30150
leaq -0x6a0(%rbp), %rdi
callq 0x5f870
movl $0x1, -0xb4(%rbp)
jmp 0x5d512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x30150
leaq -0x6a0(%rbp), %rdi
callq 0x5f870
jmp 0x5d53b
leaq -0x600(%rbp), %rdi
callq 0x300e0
leaq -0x5d0(%rbp), %rdi
callq 0x300e0
leaq -0x5a0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x600(%rbp), %rdi
callq 0x300e0
leaq -0x5d0(%rbp), %rdi
callq 0x300e0
leaq -0x5a0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5f150
movq %rax, %rdi
addq $0x8, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x6d0(%rbp), %rdi
movq %rdi, -0xc38(%rbp)
callq 0x5bcc0
movq -0xc38(%rbp), %rax
movq %rax, -0x6a8(%rbp)
movq -0x6a8(%rbp), %rdi
callq 0x30040
movb %al, -0xc29(%rbp)
jmp 0x5d5b5
movb -0xc29(%rbp), %al
testb $0x1, %al
jne 0x5d5c1
jmp 0x5d5f6
movq -0xa20(%rbp), %rdi
movq -0x6a8(%rbp), %rsi
callq 0x5fbc0
jmp 0x5d5d6
movl $0x1, -0xb4(%rbp)
jmp 0x5d832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d843
movq -0x6a8(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xc40(%rbp)
jmp 0x5d60b
movq -0xc40(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xc58(%rbp)
movq $0x0, -0x6d8(%rbp)
leaq -0x6d8(%rbp), %rdi
movq %rdi, -0xc50(%rbp)
callq 0x5fd20
movq -0xc58(%rbp), %rdi
movq -0xc50(%rbp), %rsi
callq 0x5e640
movb %al, -0xc41(%rbp)
jmp 0x5d657
leaq -0x6d8(%rbp), %rdi
callq 0x5fd60
movb -0xc41(%rbp), %al
testb $0x1, %al
jne 0x5d672
jmp 0x5d7ab
leaq -0x719(%rbp), %rdi
movq %rdi, -0xc60(%rbp)
callq 0xa660
movq -0xc60(%rbp), %rdx
leaq 0x3ff8c(%rip), %rsi     # 0x9d61f
leaq -0x718(%rbp), %rdi
callq 0x1dd10
jmp 0x5d6a1
movq -0x10(%rbp), %rsi
leaq -0x740(%rbp), %rdi
callq 0x1c030
jmp 0x5d6b3
leaq -0x6f8(%rbp), %rdi
leaq -0x718(%rbp), %rsi
leaq -0x740(%rbp), %rdx
callq 0x5ed00
jmp 0x5d6cf
movq -0xa20(%rbp), %rdi
leaq -0x6f8(%rbp), %rsi
callq 0x5fc90
jmp 0x5d6e4
leaq -0x6f8(%rbp), %rdi
callq 0xa240
leaq -0x740(%rbp), %rdi
callq 0xa240
leaq -0x718(%rbp), %rdi
callq 0xa240
leaq -0x719(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5d832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x6d8(%rbp), %rdi
callq 0x5fd60
jmp 0x5d843
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d79a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d78e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5d782
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0xa240
leaq -0x740(%rbp), %rdi
callq 0xa240
leaq -0x718(%rbp), %rdi
callq 0xa240
leaq -0x719(%rbp), %rdi
callq 0xa420
jmp 0x5d843
leaq -0x760(%rbp), %rdi
callq 0x5baf0
jmp 0x5d7b9
leaq -0x750(%rbp), %rdi
movq %rdi, -0xc68(%rbp)
leaq -0x760(%rbp), %rsi
callq 0x5f890
movq -0xa20(%rbp), %rdi
movq -0xc68(%rbp), %rsi
callq 0x5fd80
jmp 0x5d7e8
leaq -0x750(%rbp), %rdi
callq 0x30150
leaq -0x760(%rbp), %rdi
callq 0x5f8c0
movl $0x1, -0xb4(%rbp)
jmp 0x5d832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x750(%rbp), %rdi
callq 0x30150
leaq -0x760(%rbp), %rdi
callq 0x5f8c0
jmp 0x5d843
leaq -0x6d0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x6d0(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5f110
movq %rax, %rdi
addq $0x8, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x790(%rbp), %rdi
movq %rdi, -0xc78(%rbp)
callq 0x5bcc0
movq -0xc78(%rbp), %rax
movq %rax, -0x768(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5f110
movq %rax, -0xc70(%rbp)
jmp 0x5d8a3
movq -0xc70(%rbp), %rdi
addq $0x18, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x7c0(%rbp), %rdi
callq 0x5bcc0
jmp 0x5d8c8
leaq -0x7c0(%rbp), %rax
movq %rax, -0x798(%rbp)
movq -0x768(%rbp), %rsi
movq -0x798(%rbp), %rdx
leaq -0x7e8(%rbp), %rdi
callq 0x5eca0
jmp 0x5d8f2
leaq -0x7e8(%rbp), %rdi
callq 0x30040
movb %al, -0xc79(%rbp)
jmp 0x5d906
movb -0xc79(%rbp), %al
testb $0x1, %al
jne 0x5d912
jmp 0x5d969
movq -0xa20(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0x5fb70
jmp 0x5d927
movl $0x1, -0xb4(%rbp)
jmp 0x5dc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5dcc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5dcb6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5dcaa
movq -0x768(%rbp), %rdi
movb $0x0, -0x7f9(%rbp)
callq 0x5fc10
movq %rax, -0xc88(%rbp)
jmp 0x5d985
movq -0xc88(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xca0(%rbp)
movq $0x0, -0x7f0(%rbp)
leaq -0x7f0(%rbp), %rdi
movq %rdi, -0xc98(%rbp)
callq 0x5fde0
movq -0xca0(%rbp), %rdi
movq -0xc98(%rbp), %rsi
callq 0x5e640
movb %al, -0xc89(%rbp)
jmp 0x5d9d1
movb -0xc89(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xca1(%rbp)
jne 0x5da5c
jmp 0x5d9e6
movq -0x798(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xcb0(%rbp)
jmp 0x5d9fb
movq -0xcb0(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xcc8(%rbp)
movq $0x0, -0x7f8(%rbp)
leaq -0x7f8(%rbp), %rdi
movq %rdi, -0xcc0(%rbp)
callq 0x5fde0
movq -0xcc8(%rbp), %rdi
movq -0xcc0(%rbp), %rsi
movb $0x1, -0x7f9(%rbp)
callq 0x5e640
movb %al, -0xcb1(%rbp)
jmp 0x5da4e
movb -0xcb1(%rbp), %al
movb %al, -0xca1(%rbp)
jmp 0x5da5c
movb -0xca1(%rbp), %al
movb %al, -0xcc9(%rbp)
testb $0x1, -0x7f9(%rbp)
jne 0x5da73
jmp 0x5da7f
leaq -0x7f8(%rbp), %rdi
callq 0x5fe20
leaq -0x7f0(%rbp), %rdi
callq 0x5fe20
movb -0xcc9(%rbp), %al
testb $0x1, %al
jne 0x5da9a
jmp 0x5dbfa
leaq -0x841(%rbp), %rdi
movq %rdi, -0xcd8(%rbp)
callq 0xa660
movq -0xcd8(%rbp), %rdx
leaq 0x3fba4(%rip), %rsi     # 0x9d65f
leaq -0x840(%rbp), %rdi
callq 0x1dd10
jmp 0x5dac9
movq -0x10(%rbp), %rsi
leaq -0x868(%rbp), %rdi
callq 0x1c030
jmp 0x5dadb
leaq -0x820(%rbp), %rdi
leaq -0x840(%rbp), %rsi
leaq -0x868(%rbp), %rdx
callq 0x5ed00
jmp 0x5daf7
movq -0xa20(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x5fc90
jmp 0x5db0c
leaq -0x820(%rbp), %rdi
callq 0xa240
leaq -0x868(%rbp), %rdi
callq 0xa240
leaq -0x840(%rbp), %rdi
callq 0xa240
leaq -0x841(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5dc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5db7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
testb $0x1, -0x7f9(%rbp)
jne 0x5db70
jmp 0x5db7c
leaq -0x7f8(%rbp), %rdi
callq 0x5fe20
jmp 0x5db7e
leaq -0x7f0(%rbp), %rdi
callq 0x5fe20
jmp 0x5dcaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5dbe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5dbdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5dbd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x820(%rbp), %rdi
callq 0xa240
leaq -0x868(%rbp), %rdi
callq 0xa240
leaq -0x840(%rbp), %rdi
callq 0xa240
leaq -0x841(%rbp), %rdi
callq 0xa420
jmp 0x5dcaa
leaq -0x888(%rbp), %rdi
callq 0x5baf0
jmp 0x5dc08
leaq -0x878(%rbp), %rdi
movq %rdi, -0xce0(%rbp)
leaq -0x888(%rbp), %rsi
callq 0x5f890
movq -0xa20(%rbp), %rdi
movq -0xce0(%rbp), %rsi
callq 0x5fd80
jmp 0x5dc37
leaq -0x878(%rbp), %rdi
callq 0x30150
leaq -0x888(%rbp), %rdi
callq 0x5f8c0
movl $0x1, -0xb4(%rbp)
jmp 0x5dc81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x30150
leaq -0x888(%rbp), %rdi
callq 0x5f8c0
jmp 0x5dcaa
leaq -0x7e8(%rbp), %rdi
callq 0x300e0
leaq -0x7c0(%rbp), %rdi
callq 0x300e0
leaq -0x790(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x7e8(%rbp), %rdi
callq 0x300e0
leaq -0x7c0(%rbp), %rdi
callq 0x300e0
leaq -0x790(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
movq -0x10(%rbp), %rdi
callq 0x5f110
movq %rax, %rdi
addq $0x8, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x8b8(%rbp), %rdi
movq %rdi, -0xcf0(%rbp)
callq 0x5bcc0
movq -0xcf0(%rbp), %rax
movq %rax, -0x890(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5f110
movq %rax, -0xce8(%rbp)
jmp 0x5dd22
movq -0xce8(%rbp), %rdi
addq $0x18, %rdi
callq 0x13020
movq %rax, %rsi
movq -0x18(%rbp), %rdx
leaq -0x8e8(%rbp), %rdi
callq 0x5bcc0
jmp 0x5dd47
leaq -0x8e8(%rbp), %rax
movq %rax, -0x8c0(%rbp)
movq -0x890(%rbp), %rsi
movq -0x8c0(%rbp), %rdx
leaq -0x918(%rbp), %rdi
callq 0x5eca0
jmp 0x5dd71
leaq -0x918(%rbp), %rax
movq %rax, -0x8f0(%rbp)
movq -0x8f0(%rbp), %rdi
callq 0x30040
movb %al, -0xcf1(%rbp)
jmp 0x5dd93
movb -0xcf1(%rbp), %al
testb $0x1, %al
jne 0x5dd9f
jmp 0x5ddf6
movq -0xa20(%rbp), %rdi
movq -0x8f0(%rbp), %rsi
callq 0x5fbc0
jmp 0x5ddb4
movl $0x1, -0xb4(%rbp)
jmp 0x5e10e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5e14f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5e143
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5e137
movq -0x890(%rbp), %rdi
movb $0x0, -0x929(%rbp)
callq 0x5fc10
movq %rax, -0xd00(%rbp)
jmp 0x5de12
movq -0xd00(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xd18(%rbp)
movq $0x0, -0x920(%rbp)
leaq -0x920(%rbp), %rdi
movq %rdi, -0xd10(%rbp)
callq 0x5fd20
movq -0xd18(%rbp), %rdi
movq -0xd10(%rbp), %rsi
callq 0x5e640
movb %al, -0xd01(%rbp)
jmp 0x5de5e
movb -0xd01(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xd19(%rbp)
jne 0x5dee9
jmp 0x5de73
movq -0x8c0(%rbp), %rdi
callq 0x5fc10
movq %rax, -0xd28(%rbp)
jmp 0x5de88
movq -0xd28(%rbp), %rdi
callq 0x5f9e0
movq %rax, -0xd40(%rbp)
movq $0x0, -0x928(%rbp)
leaq -0x928(%rbp), %rdi
movq %rdi, -0xd38(%rbp)
callq 0x5fd20
movq -0xd40(%rbp), %rdi
movq -0xd38(%rbp), %rsi
movb $0x1, -0x929(%rbp)
callq 0x5e640
movb %al, -0xd29(%rbp)
jmp 0x5dedb
movb -0xd29(%rbp), %al
movb %al, -0xd19(%rbp)
jmp 0x5dee9
movb -0xd19(%rbp), %al
movb %al, -0xd41(%rbp)
testb $0x1, -0x929(%rbp)
jne 0x5df00
jmp 0x5df0c
leaq -0x928(%rbp), %rdi
callq 0x5fd60
leaq -0x920(%rbp), %rdi
callq 0x5fd60
movb -0xd41(%rbp), %al
testb $0x1, %al
jne 0x5df27
jmp 0x5e087
leaq -0x971(%rbp), %rdi
movq %rdi, -0xd50(%rbp)
callq 0xa660
movq -0xd50(%rbp), %rdx
leaq 0x3f75a(%rip), %rsi     # 0x9d6a2
leaq -0x970(%rbp), %rdi
callq 0x1dd10
jmp 0x5df56
movq -0x10(%rbp), %rsi
leaq -0x998(%rbp), %rdi
callq 0x1c030
jmp 0x5df68
leaq -0x950(%rbp), %rdi
leaq -0x970(%rbp), %rsi
leaq -0x998(%rbp), %rdx
callq 0x5ed00
jmp 0x5df84
movq -0xa20(%rbp), %rdi
leaq -0x950(%rbp), %rsi
callq 0x5fc90
jmp 0x5df99
leaq -0x950(%rbp), %rdi
callq 0xa240
leaq -0x998(%rbp), %rdi
callq 0xa240
leaq -0x970(%rbp), %rdi
callq 0xa240
leaq -0x971(%rbp), %rdi
callq 0xa420
movl $0x1, -0xb4(%rbp)
jmp 0x5e10e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5e00b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
testb $0x1, -0x929(%rbp)
jne 0x5dffd
jmp 0x5e009
leaq -0x928(%rbp), %rdi
callq 0x5fd60
jmp 0x5e00b
leaq -0x920(%rbp), %rdi
callq 0x5fd60
jmp 0x5e137
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5e076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5e06a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5e05e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x950(%rbp), %rdi
callq 0xa240
leaq -0x998(%rbp), %rdi
callq 0xa240
leaq -0x970(%rbp), %rdi
callq 0xa240
leaq -0x971(%rbp), %rdi
callq 0xa420
jmp 0x5e137
leaq -0x9b8(%rbp), %rdi
callq 0x5baf0
jmp 0x5e095
leaq -0x9a8(%rbp), %rdi
movq %rdi, -0xd58(%rbp)
leaq -0x9b8(%rbp), %rsi
callq 0x5f890
movq -0xa20(%rbp), %rdi
movq -0xd58(%rbp), %rsi
callq 0x5fd80
jmp 0x5e0c4
leaq -0x9a8(%rbp), %rdi
callq 0x30150
leaq -0x9b8(%rbp), %rdi
callq 0x5f8c0
movl $0x1, -0xb4(%rbp)
jmp 0x5e10e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x9a8(%rbp), %rdi
callq 0x30150
leaq -0x9b8(%rbp), %rdi
callq 0x5f8c0
jmp 0x5e137
leaq -0x918(%rbp), %rdi
callq 0x300e0
leaq -0x8e8(%rbp), %rdi
callq 0x300e0
leaq -0x8b8(%rbp), %rdi
callq 0x300e0
jmp 0x5e2e4
leaq -0x918(%rbp), %rdi
callq 0x300e0
leaq -0x8e8(%rbp), %rdi
callq 0x300e0
leaq -0x8b8(%rbp), %rdi
callq 0x300e0
jmp 0x5e2f4
leaq -0x9d8(%rbp), %rdi
movq %rdi, -0xd68(%rbp)
callq 0x5bac0
movq -0xd68(%rbp), %rsi
leaq -0x9c8(%rbp), %rdi
movq %rdi, -0xd60(%rbp)
callq 0x5f840
movq -0xa20(%rbp), %rdi
movq -0xd60(%rbp), %rsi
callq 0x5fd80
jmp 0x5e1a2
leaq -0x9c8(%rbp), %rdi
callq 0x30150
leaq -0x9d8(%rbp), %rdi
callq 0x5f870
jmp 0x5e2e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x9c8(%rbp), %rdi
callq 0x30150
leaq -0x9d8(%rbp), %rdi
callq 0x5f870
jmp 0x5e2f4
leaq -0x9f8(%rbp), %rdi
movq %rdi, -0xd78(%rbp)
callq 0x5baf0
movq -0xd78(%rbp), %rsi
leaq -0x9e8(%rbp), %rdi
movq %rdi, -0xd70(%rbp)
callq 0x5f890
movq -0xa20(%rbp), %rdi
movq -0xd70(%rbp), %rsi
callq 0x5fd80
jmp 0x5e22a
leaq -0x9e8(%rbp), %rdi
callq 0x30150
leaq -0x9f8(%rbp), %rdi
callq 0x5f8c0
jmp 0x5e2e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x9e8(%rbp), %rdi
callq 0x30150
leaq -0x9f8(%rbp), %rdi
callq 0x5f8c0
jmp 0x5e2f4
movq -0x18(%rbp), %rax
movq %rax, -0xd88(%rbp)
movq -0x10(%rbp), %rdi
callq 0x5f190
movq -0xd88(%rbp), %rsi
movq %rax, %rdx
addq $0x8, %rdx
leaq -0xa08(%rbp), %rdi
movq %rdi, -0xd80(%rbp)
callq 0x5fe40
movq -0xa20(%rbp), %rdi
movq -0xd80(%rbp), %rsi
callq 0x5fd80
jmp 0x5e2ba
leaq -0xa08(%rbp), %rdi
callq 0x30150
jmp 0x5e2e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa08(%rbp), %rdi
callq 0x30150
jmp 0x5e2f4
ud2
movq -0xa18(%rbp), %rax
addq $0xd90, %rsp            # imm = 0xD90
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0xa650
nopl (%rax)