// File: /workspace/github_cpp_makefile_star2_O2/davmac314[P]dinit/src/dinitcheck.cc
// Function: load_service(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, service_record*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, service_record*>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::vector<dir_entry, std::allocator<dir_entry>> const&)
service_record *load_service(service_set_t &services, const std::string &name,
        const service_dir_pathlist &service_dirs)
{
    using namespace std;
    using namespace dinit_load;
    using ::string_view;

    auto found = services.find(name);
    if (found != services.end()) {
        return found->second;
    }

    string_view base_name = name;

    string service_arg;
    auto at_pos = name.find('@');
    if (at_pos != string::npos) {
    	service_arg = name.substr(at_pos + 1);
    	base_name = string_view(name.data(), at_pos);
    }

    string service_wdir;
    string service_filename;
    dio::istream service_file;
    fd_holder sdf_parent_dir_fd;

    int fail_load_errno = 0;
    std::string fail_load_path;

    // Couldn't find one. Have to load it.
    for (auto &service_dir : service_dirs) {
        service_filename = service_dir.get_dir();
        service_wdir = service_filename;
        if (*(service_filename.rbegin()) != '/') {
            service_filename += '/';
        }
        service_filename += base_name;

        auto sdf_fds = open_with_dir(service_dir.get_dir(), ((std::string)base_name).c_str());
        if (sdf_fds.first != -1) {
            // Found
            sdf_parent_dir_fd = sdf_fds.first;
            service_file.set_fd(sdf_fds.second);
            break;
        }

        if (sdf_fds.second != ENOENT && fail_load_errno == 0) {
            fail_load_errno = sdf_fds.second;
            fail_load_path = std::move(service_filename);
        }
    }

    if (!service_file) {
        if (fail_load_errno == 0) {
            throw service_not_found(name);
        }
        else {
            throw service_load_error(name, std::move(fail_load_path), fail_load_errno);
        }
    }

    bool issued_var_subst_warning = false;

    environment::env_map renvmap = menv.build();

    auto resolve_var = [&](const string &name) {
        if (offline_operation && !issued_var_subst_warning) {
            report_general_warning("Variable substitution performed by dinitcheck "
                    "for file paths may not match dinit daemon (environment may differ); "
                    "use --online to avoid this warning");
            issued_var_subst_warning = true;
        }
        return resolve_env_var(name, renvmap);
    };

    service_settings_wrapper<prelim_dep> settings;

    file_input_stack input_stack;
    input_stack.push(std::move(service_filename), std::move(service_file), sdf_parent_dir_fd.release());

    try {
        process_service_file(name, input_stack,
                [&](string &line, file_pos_ref input_pos, string &setting, setting_op_t op,
                        string_iterator &i, string_iterator &end) -> void {

                    auto process_dep_dir_n = [&](std::list<prelim_dep> &deplist,
                    		const std::string &waitsford,
                            dependency_type dep_type) -> void {
                        const string &service_filename = input_stack.current_file_name();
                        process_dep_dir(name.c_str(), service_filename, deplist, waitsford, dep_type);
                    };

                    auto load_service_n = [&](const string &dep_name) -> const string & {
                        return dep_name;
                    };

                    try {
                        process_service_line(settings, name.c_str(), service_arg.c_str(), line,
                        		input_pos, setting, op, i, end, load_service_n, process_dep_dir_n,
								resolve_var);
                    }
                    catch (service_description_exc &exc) {
                        if (exc.service_name.empty()) {
                            exc.service_name = name;
                        }
                        report_service_description_exc(exc);
                    }
                },
                service_arg.c_str(), resolve_var);
    }
    catch (std::system_error &sys_err)
    {
        report_error(sys_err, name);
        throw service_load_exc(name, input_stack.current_file_name() + ": error while reading service description");
    }

    auto report_err = [&](const char *msg) {
        report_service_description_err(name, msg);
    };

    environment srv_env{};

    // Fill user vars before reading env file
    if (settings.export_passwd_vars) {
        try {
            fill_environment_userinfo(settings.run_as_uid, name, srv_env);
        }
        catch (service_load_exc &load_exc) {
            report_service_description_err(name, load_exc.exc_description);
        }
    }

    // Set service name in environment if desired
    if (settings.export_service_name) {
        std::string envname = "DINIT_SERVICE=";
        envname += name;
        srv_env.set_var(std::move(envname));
    }

    if (!settings.env_file.empty()) {
        try {
            std::string fullpath = combine_paths(service_wdir, settings.env_file.c_str());

            auto log_inv_env_setting = [&](int line_num) {
                report_service_description_err(name,
                        std::string("Invalid environment variable setting in environment file " + fullpath
                                + " (line ") + std::to_string(line_num) + ")");
            };
            auto log_bad_env_command = [&](int line_num) {
                report_service_description_err(name,
                        std::string("Bad command in environment file ") + fullpath + " (line " + std::to_string(line_num) + ")");
            };

            read_env_file_inline(fullpath.c_str(), false, srv_env, true, log_inv_env_setting, log_bad_env_command);
        } catch (const std::system_error &se) {
            report_service_description_err(name, std::string("could not load environment file: ") + se.what());
        }
    }

    renvmap = srv_env.build(menv);

    settings.finalise(report_err, nullptr, report_err, resolve_var);

    if (!settings.working_dir.empty()) {
        service_wdir = settings.working_dir;
    }
    int oflags = O_DIRECTORY;
#ifdef O_PATH
    oflags |= O_PATH;
#else
    oflags |= O_RDONLY;
#endif
    int dirfd = open(service_wdir.c_str(), oflags);
    if (dirfd < 0) {
        report_service_description_err(name,
                std::string("could not open service working directory: ") + strerror(errno));
        dirfd = AT_FDCWD;
    }

    auto check_command = [&](const char *setting_name, const char *command) {
        struct stat command_stat;
        if (command[0] != '/') {
            report_service_description_err(name,
                    std::string("executable '") + command + "' is not an absolute path");
        }
        else if (fstatat(dirfd, command, &command_stat, 0) == -1) {
            report_service_description_err(name,
                    std::string("could not stat ") + setting_name + " executable '" + command
                    + "': " + strerror(errno));
        }
        else {
            if ((command_stat.st_mode & S_IFMT) != S_IFREG) {
                report_service_description_err(name, std::string(setting_name) + " executable '"
                        + command + "' is not a regular file.");
            }
            else if ((command_stat.st_mode & S_IXUSR) == 0) {
                report_service_description_err(name, std::string(setting_name) + " executable '" + command
                        + "' is not executable by owner.");
            }
        }
    };

    if (!settings.command.empty()) {
        int offset_start = settings.command_offsets.front().first;
        int offset_end = settings.command_offsets.front().second;
        check_command("command", settings.command.substr(offset_start, offset_end - offset_start).c_str());
    }
    if (!settings.stop_command.empty()) {
        int offset_start = settings.stop_command_offsets.front().first;
        int offset_end = settings.stop_command_offsets.front().second;
        check_command("stop command",
                settings.stop_command.substr(offset_start, offset_end - offset_start).c_str());
    }

    if (settings.log_type == log_type_id::LOGFILE && !settings.logfile.empty()) {
        string logfile_dir = parent_path(settings.logfile);
        if (!logfile_dir.empty()) {
            struct stat logfile_dir_stat;
            if (fstatat(dirfd, logfile_dir.c_str(), &logfile_dir_stat, 0) == -1) {
                report_service_description_err(name,
                        std::string("could not access logfile directory '") + logfile_dir + "': " + strerror(errno));
            }
            else {
                if ((logfile_dir_stat.st_mode & S_IFDIR) == 0) {
                    report_service_description_err(name, std::string("logfile directory '")
                            + logfile_dir + "' exists but is not a directory.");
                }
            }
        }
    }

    if (dirfd != AT_FDCWD) {
        close(dirfd);
    }

    return new service_record(name, settings.service_type, settings.chain_to_name, settings.depends,
            settings.before_svcs, settings.after_svcs, settings.consumer_of_name, settings.log_type);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x8f8, %rsp            # imm = 0x8F8
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
callq 0x119e8
addq $0x8, %rbx
cmpq %rbx, %rax
je 0x63a0
movq 0x40(%rax), %rbx
jmp 0x7d19
movq (%r15), %rax
movq %rax, 0x208(%rsp)
movq 0x8(%r15), %rax
movq %rax, 0x210(%rsp)
leaq 0x2b8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
pushq $0x40
popq %rsi
movq %r15, %rdi
xorl %edx, %edx
callq 0x44c0
cmpq $-0x1, %rax
je 0x642b
movq %rax, %rbx
leaq 0x1(%rax), %rdx
leaq 0x3d0(%rsp), %rdi
pushq $-0x1
popq %rcx
movq %r15, %rsi
callq 0x43c0
leaq 0x2a8(%rsp), %rdi
leaq 0x3d0(%rsp), %r12
movq %r12, %rsi
callq 0x4480
movq %r12, %rdi
callq 0x41a0
movq (%r15), %rax
movq %rax, 0x208(%rsp)
movq %rbx, 0x210(%rsp)
movq %r15, 0x10(%rsp)
leaq 0x258(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
leaq 0x140(%rsp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
orl $-0x1, 0x150(%rsp)
andq $0x0, 0x158(%rsp)
andq $0x0, 0x15e(%rsp)
orl $-0x1, 0x5c(%rsp)
leaq 0x3c0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
xorl %esi, %esi
movb %sil, (%rax)
movb %sil, (%rdx)
movq $0x0, 0x30(%rsp)
movb %sil, (%rcx)
movq (%r14), %r15
movq 0x8(%r14), %rax
movq %rax, 0x28(%rsp)
leaq 0x130(%rsp), %r14
leaq 0x3d0(%rsp), %r12
leaq 0x208(%rsp), %rbp
cmpq 0x28(%rsp), %r15
je 0x65ac
movq (%r15), %rsi
movq %r14, %rdi
callq 0x4690
leaq 0x248(%rsp), %rdi
movq %r14, %rsi
callq 0x4240
movq 0x130(%rsp), %rax
movq 0x138(%rsp), %rcx
cmpb $0x2f, -0x1(%rax,%rcx)
je 0x6502
movq %r14, %rdi
pushq $0x2f
popq %rsi
callq 0x4330
movq %r12, %rdi
movq %rbp, %rsi
callq 0xc1fa
movq %r14, %rdi
movq %r12, %rsi
callq 0x46a0
movq %r12, %rdi
callq 0x41a0
movq (%r15), %rbx
movq %r12, %rdi
movq %rbp, %r13
movq %rbp, %rsi
callq 0xc1fa
movq 0x3d0(%rsp), %rsi
movq %rbx, %rdi
pushq $-0x64
popq %rdx
callq 0xc21c
movq %rax, %rbp
movq %rax, %rbx
shrq $0x20, %rbx
movq %r12, %rdi
callq 0x41a0
cmpl $-0x1, %ebp
jne 0x6591
cmpl $0x2, %ebx
setne %al
cmpl $0x0, 0x30(%rsp)
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x6585
leaq 0x3b0(%rsp), %rdi
movq %r14, %rsi
callq 0x4480
movq %rbx, 0x30(%rsp)
addq $0x10, %r15
movq %r13, %rbp
jmp 0x64ba
leaq 0x5c(%rsp), %rdi
movl %ebp, %esi
callq 0xc408
leaq 0x150(%rsp), %rdi
movl %ebx, %esi
callq 0x15232
leaq 0x150(%rsp), %rdi
callq 0x1617c
testb %al, %al
je 0x8090
movb $0x0, 0x23(%rsp)
leaq 0x1e14b(%rip), %rsi     # 0x24718
leaq 0x8a8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc51e
movq 0x10(%rsp), %r15
leaq 0x140(%rsp), %r14
xorps %xmm0, %xmm0
leaq 0x3e0(%rsp), %rax
movaps %xmm0, -0x10(%rax)
movq %rax, 0x8(%rax)
movq %rax, (%rax)
leaq 0x408(%rsp), %rax
andq $0x0, -0x8(%rax)
movaps %xmm0, -0x18(%rax)
movq %rax, 0x8(%rax)
movq %rax, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x430(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
xorl %eax, %eax
movb %al, (%rcx)
leaq 0x450(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x470(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
andw $0x0, 0x10(%rcx)
movl $0x4, 0x14(%rcx)
leaq 0x488(%rsp), %rcx
movq %rcx, 0x8(%rcx)
movq %rcx, (%rcx)
andq $0x0, 0x10(%rcx)
leaq 0x4a0(%rsp), %rcx
movq %rcx, 0x8(%rcx)
movq %rcx, (%rcx)
andq $0x0, 0x10(%rcx)
leaq 0x4b8(%rsp), %rcx
movq %rcx, 0x8(%rcx)
movq %rcx, (%rcx)
andq $0x0, 0x10(%rcx)
andl $0x0, 0x18(%rcx)
leaq 0x4e8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
movaps 0x10962(%rip), %xmm1    # 0x17020
movups %xmm1, 0x10(%rcx)
movl $0x1000, 0x20(%rcx)     # imm = 0x1000
andw $0xe000, 0x24(%rcx)     # imm = 0xE000
movabsq $0x10000000f, %rdx      # imm = 0x10000000F
movq %rdx, 0x28(%rcx)
movb %al, 0x30(%rcx)
leaq 0x530(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
movaps 0x10936(%rip), %xmm1    # 0x17030
movaps %xmm1, 0x10(%rcx)
pushq $0xa
popq %rdx
movq %rdx, 0x20(%rcx)
andq $0x0, 0x28(%rcx)
movl $0x3, 0x30(%rcx)
andq $0x0, 0x38(%rcx)
movq $0xbebc200, 0x40(%rcx)  # imm = 0xBEBC200
movq %rdx, 0x48(%rcx)
andq $0x0, 0x50(%rcx)
movq $0x3c, 0x58(%rcx)
movaps %xmm0, 0x70(%rcx)
movaps %xmm0, 0x60(%rcx)
orl $-0x1, 0x80(%rcx)
leaq 0x5c8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
orq $-0x1, 0x10(%rcx)
orl $-0x1, 0x18(%rcx)
movb %al, 0x1c(%rcx)
leaq 0x600(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x620(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq 0x23(%rsp), %rdx
movq %rdx, 0x1f8(%rsp)
movb %al, (%rcx)
leaq 0x640(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movq %rbx, 0x200(%rsp)
movb %al, (%rcx)
movb %al, 0x10(%rcx)
movups %xmm0, 0x22(%rcx)
movups %xmm0, 0x12(%rcx)
andq $0x0, 0x30(%rcx)
leaq 0xe0(%rsp), %rdi
callq 0xed14
leaq 0x298(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x130(%rsp), %rcx
cmpq %r14, %rcx
je 0x67fb
movq %rcx, 0x288(%rsp)
movq 0x140(%rsp), %rax
movq %rax, 0x298(%rsp)
jmp 0x6802
movups (%r14), %xmm0
movups %xmm0, (%rax)
movq 0x138(%rsp), %rax
leaq 0x288(%rsp), %rsi
movq %rax, 0x8(%rsi)
movq %r14, 0x130(%rsp)
andq $0x0, 0x138(%rsp)
movb $0x0, 0x140(%rsp)
movl 0x5c(%rsp), %ecx
orl $-0x1, 0x5c(%rsp)
leaq 0xe0(%rsp), %r14
leaq 0x150(%rsp), %rdx
movq %r14, %rdi
callq 0xc56a
leaq 0x288(%rsp), %rdi
callq 0x41a0
leaq 0x268(%rsp), %rdi
movq %r15, %rsi
callq 0x4510
leaq 0x178(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq 0x2a8(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movb $0x0, (%rax)
leaq 0x6a0(%rsp), %r12
leaq 0xc0(%rsp), %rbp
movq %r14, %rdi
leaq 0x168(%rsp), %rsi
callq 0x11cce
testb %al, %al
je 0x6ef7
movq 0x110(%rsp), %rax
cmpq 0x118(%rsp), %rax
jne 0x68dc
movq 0x128(%rsp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
movl -0x8(%rax), %eax
movl %eax, 0x1c(%rsp)
movq 0x170(%rsp), %rax
testq %rax, %rax
je 0x689e
movq 0x168(%rsp), %rdi
leaq (%rdi,%rax), %rbx
cmpb $0x5c, -0x1(%rdi,%rax)
jne 0x69ae
movb $0x1, %cl
movq %rax, %rdx
cmpq $0x1, %rdx
je 0x6923
cmpb $0x5c, -0x2(%rdi,%rdx)
jne 0x6921
xorb $0x1, %cl
decq %rdx
jmp 0x690c
movl %ecx, %eax
testb $0x1, %al
je 0x69ae
leaq 0x6b0(%rsp), %rax
movq %rax, 0x6a0(%rsp)
andq $0x0, 0x6a8(%rsp)
movb $0x0, 0x6b0(%rsp)
movb $0xa, -0x1(%rbx)
movq %r14, %rdi
movq %r12, %rsi
callq 0x11d4c
testb %al, %al
je 0x7d66
movq 0x6a0(%rsp), %rdi
movq 0x6a8(%rsp), %rsi
addq %rdi, %rsi
callq 0x11df2
cmpq 0x6a0(%rsp), %rax
je 0x7d2e
leaq 0x168(%rsp), %rdi
movq %r12, %rsi
callq 0x46a0
movq %r12, %rdi
callq 0x41a0
movq 0x170(%rsp), %rax
jmp 0x68f0
movq %rdi, 0x88(%rsp)
movq %rbx, 0x8(%rsp)
movq %rbx, %rsi
leaq 0x1c(%rsp), %rdx
callq 0x11e2e
movq %rax, 0x88(%rsp)
cmpq %rbx, %rax
je 0x689e
movzbl (%rax), %ecx
cmpl $0x23, %ecx
je 0x689e
cmpl $0x40, %ecx
jne 0x6c39
incq %rax
movq %rax, 0x88(%rsp)
leaq 0x38(%rsp), %r14
movq %r14, %rdi
leaq 0x88(%rsp), %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x11e81
movq %r14, %rdi
leaq 0x11313(%rip), %rsi     # 0x17d33
callq 0x11ffa
movl %eax, %r13d
testb %al, %al
jne 0x6a45
leaq 0x38(%rsp), %rdi
leaq 0x11307(%rip), %rsi     # 0x17d3f
callq 0x11ffa
testb %al, %al
je 0x7f33
movq 0x110(%rsp), %rcx
cmpq 0x118(%rsp), %rcx
jne 0x6a6b
movq 0x128(%rsp), %rax
movq -0x8(%rax), %rcx
movl $0x200, %eax            # imm = 0x200
addq %rax, %rcx
addq $-0x28, %rcx
movl 0x1c(%rsp), %edx
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
andq $0x0, 0x68(%rsp)
movl %edx, 0x228(%rsp)
movq %rcx, 0x230(%rsp)
movb $0x0, 0x70(%rsp)
leaq 0xa0(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq %rax, 0xa0(%rsp)
andq $0x0, 0xb0(%rsp)
leaq 0x60(%rsp), %rdi
xorl %esi, %esi
leaq 0x88(%rsp), %r8
movq %rbx, %r9
pushq $0x20
pushq %rax
callq 0x12123
popq %rax
popq %rcx
leaq 0xe0(%rsp), %r14
cmpq $0x1, 0xb0(%rsp)
jne 0x7eb8
movq %r12, 0x6a8(%rsp)
movq %r12, 0x6a0(%rsp)
andq $0x0, 0x6b0(%rsp)
andl $0x0, 0x24(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x2e0(%rsp)
movq %r12, %rdi
leaq 0x24(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
callq 0x1243a
movq 0x38(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movq %r12, %rdx
leaq 0x1f8(%rsp), %rcx
movq 0x28(%rsp), %r8
callq 0x8cce
movq %r12, %rdi
callq 0xecea
leaq 0xa0(%rsp), %rdi
callq 0xecea
movq 0x60(%rsp), %rdi
callq 0xde4e
movq 0x60(%rsp), %rcx
pushq $-0x1
popq %rbx
leaq 0x109f2(%rip), %rdi     # 0x1756a
cmpq %rcx, %rax
je 0x6b9d
leaq 0x1(%rcx), %rdx
leaq 0x10ee8(%rip), %rdi     # 0x17a70
cmpq %rdx, %rax
je 0x6b9d
movq %rcx, %rbx
notq %rbx
addq %rax, %rbx
movb $0x0, (%rcx,%rbx)
movq %rcx, %rdi
movl %r13d, %r15d
movq 0x110(%rsp), %rcx
cmpq 0x118(%rsp), %rcx
jne 0x6bc6
movq 0x128(%rsp), %rcx
movq -0x8(%rcx), %rcx
movl $0x200, %edx            # imm = 0x200
addq %rdx, %rcx
movl -0x4(%rcx), %edx
movq %rax, %rsi
callq 0xc21c
movq %rax, %r13
cmpq $-0x1, %rbx
je 0x6be3
movq 0x60(%rsp), %rax
movb $0x2f, (%rax,%rbx)
movq %r13, %rbx
shrq $0x20, %rbx
cmpl $-0x1, %r13d
je 0x6cb4
movq %r12, %rdi
movl %ebx, %esi
callq 0x12008
movq %rbp, %rbx
movq %rbp, %rdi
leaq 0x60(%rsp), %rsi
callq 0x4510
movq %r14, %rdi
movq %rbx, %rsi
movq %r12, %rdx
movl %r13d, %ecx
callq 0xc56a
movq 0x10(%rsp), %r15
movq %rbx, %rdi
callq 0x41a0
movq %r12, %rdi
callq 0x16182
jmp 0x6cc9
movq %r12, %rdi
leaq 0x88(%rsp), %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x11e81
movq 0x88(%rsp), %rdi
movq %rbx, %rsi
leaq 0x1c(%rsp), %rdx
callq 0x11e2e
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x6a8(%rsp)
je 0x7e60
movzbl (%rax), %ecx
cmpl $0x3d, %ecx
je 0x6ce7
cmpl $0x3a, %ecx
je 0x6ce2
cmpl $0x2b, %ecx
jne 0x7e60
incq %rax
movq %rax, 0x88(%rsp)
cmpq %rbx, %rax
je 0x7e60
cmpb $0x3d, (%rax)
pushq $0x2
popq %rcx
je 0x6ce9
jmp 0x7e60
cmpq $0x2, %rbx
sete %al
testb %al, %r15b
movq 0x10(%rsp), %r15
je 0x801b
leaq 0x60(%rsp), %rdi
callq 0x41a0
leaq 0x38(%rsp), %rdi
callq 0x41a0
jmp 0x689e
pushq $0x1
popq %rcx
jmp 0x6ce9
xorl %ecx, %ecx
movl %ecx, 0x30(%rsp)
incq %rax
movq %rax, 0x88(%rsp)
movq %rax, %rdi
movq %rbx, %rsi
leaq 0x1c(%rsp), %rdx
callq 0x11e2e
movq %rax, 0x88(%rsp)
movq 0x110(%rsp), %r13
cmpq 0x118(%rsp), %r13
jne 0x6d36
movq 0x128(%rsp), %rax
movq -0x8(%rax), %r13
movl $0x200, %eax            # imm = 0x200
addq %rax, %r13
addq $-0x28, %r13
movl 0x1c(%rsp), %r14d
movq 0x10(%rsp), %r15
movq (%r15), %rbx
movq %rbx, %rdi
callq 0x4180
movq 0x2a8(%rsp), %rcx
movl %r14d, 0x2e0(%rsp)
movq %r13, 0x2e8(%rsp)
leaq 0xe0(%rsp), %r14
movq %r14, 0x38(%rsp)
movq %r15, 0x40(%rsp)
subq $0x40, %rsp
movups 0x78(%rsp), %xmm0
movups %xmm0, 0x20(%rsp)
movups 0x320(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x238(%rsp), %rdx
movq %rdx, 0x30(%rsp)
leaq 0x48(%rsp), %rdx
movq %rdx, 0x18(%rsp)
leaq 0xc8(%rsp), %rdx
movq %rdx, 0x10(%rsp)
leaq 0x410(%rsp), %rdi
movq %rbx, %rsi
movq %rax, %rdx
movq %r12, %r8
movl 0x70(%rsp), %r9d
callq 0x94a4
addq $0x40, %rsp
movq %r12, %rdi
callq 0x41a0
jmp 0x689e
movq %rax, %r13
cmpl $0x3, %edx
jne 0x8127
movq %r13, %rdi
callq 0x4160
movq %rax, %rbx
cmpq $0x0, 0x8(%rax)
jne 0x6e0e
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
callq 0x4240
cmpl $-0x1, 0x40(%rbx)
je 0x6e70
movq 0x1d1cd(%rip), %rdi     # 0x23fe8
leaq 0x109d3(%rip), %rsi     # 0x177f5
callq 0x4380
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4350
movq %rax, %rdi
leaq 0x11848(%rip), %rsi     # 0x18684
callq 0x4380
leaq 0x48(%rbx), %rsi
movq %rax, %rdi
callq 0x4350
movq %rax, %rdi
leaq 0x1151f(%rip), %rsi     # 0x18376
callq 0x4380
movl 0x40(%rbx), %esi
movq %rax, %rdi
callq 0x42a0
leaq 0x1181a(%rip), %rsi     # 0x18688
jmp 0x6eb3
movq 0x68(%rbx), %r13
movq 0x1d16d(%rip), %rdi     # 0x23fe8
leaq 0x10973(%rip), %rsi     # 0x177f5
callq 0x4380
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4350
movq %rax, %rdi
leaq 0x117f0(%rip), %rsi     # 0x1868c
callq 0x4380
movq %rax, %rdi
movq %r13, %rsi
callq 0x4380
leaq 0x1089c(%rip), %rsi     # 0x1774f
movq %rax, %rdi
callq 0x4380
addq $0x20, %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4350
movq %rax, %rdi
leaq 0x10695(%rip), %rsi     # 0x17569
callq 0x4380
movb $0x1, 0x1d909(%rip)     # 0x247e9
movq 0x10(%rsp), %r15
callq 0x4600
leaq 0xe0(%rsp), %r14
jmp 0x6dd6
leaq 0x168(%rsp), %rdi
callq 0x41a0
leaq 0x268(%rsp), %rdi
callq 0x41a0
movq %r15, 0x8(%rsp)
leaq 0x2e0(%rsp), %rbx
movl $0xc0, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x4250
movb $0x1, (%rbx)
xorps %xmm0, %xmm0
andq $0x0, 0x30(%rbx)
movups %xmm0, 0x10(%rbx)
movups %xmm0, 0x20(%rbx)
movups %xmm0, 0x40(%rbx)
movups %xmm0, 0x50(%rbx)
andq $0x0, 0x60(%rbx)
movups %xmm0, 0x70(%rbx)
movups %xmm0, 0x80(%rbx)
andq $0x0, 0x90(%rbx)
leaq 0x3a8(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
cmpb $0x0, 0x480(%rsp)
je 0x6fa4
movl 0x5d8(%rsp), %edi
leaq 0x2e0(%rsp), %rdx
movq %r15, %rsi
callq 0xc636
cmpb $0x1, 0x481(%rsp)
jne 0x6ffe
leaq 0x10947(%rip), %rsi     # 0x178fc
leaq 0x6a0(%rsp), %rdi
leaq 0x168(%rsp), %rdx
callq 0xb9ce
leaq 0x6a0(%rsp), %rdi
movq %r15, %rsi
callq 0x46a0
leaq 0x2e0(%rsp), %rdi
leaq 0x6a0(%rsp), %rsi
xorl %edx, %edx
callq 0xc958
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
cmpq $0x0, 0x468(%rsp)
je 0x74c7
movq 0x248(%rsp), %rsi
movq 0x250(%rsp), %rdx
movq 0x460(%rsp), %rcx
leaq 0xc0(%rsp), %rdi
callq 0xca31
movq 0xc0(%rsp), %rsi
leaq 0x6a0(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x4650
movq 0x6a0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x6c0(%rsp,%rax)
jne 0x80b8
leaq (%rsp,%rax), %rdi
addq $0x6a0, %rdi            # imm = 0x6A0
pushq $0x1
popq %rsi
callq 0x4120
callq 0x44f0
movq %rax, 0x30(%rsp)
leaq 0x168(%rsp), %rcx
leaq 0x178(%rsp), %rax
movq %rax, (%rcx)
andq $0x0, 0x8(%rcx)
movb $0x0, 0x10(%rcx)
leaq 0x6a0(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x40b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x749b
movq 0x168(%rsp), %r15
movq 0x170(%rsp), %rcx
leaq (%r15,%rcx), %rax
movq %rax, 0x28(%rsp)
leaq -0x2(%rcx), %rbx
movq %r15, %r13
notq %r13
movq %rcx, 0x220(%rsp)
addq %rcx, %r13
xorl %r14d, %r14d
movq %r15, 0x218(%rsp)
cmpq 0x28(%rsp), %r15
je 0x709d
movsbl (%r15), %edi
movq 0x30(%rsp), %rsi
callq 0x1096c
testb %al, %al
je 0x7125
incq %r15
decq %rbx
decq %r14
addq $-0x2, %r13
jmp 0x70fd
movzbl (%r15), %eax
cmpl $0x21, %eax
je 0x7196
cmpl $0x23, %eax
je 0x709d
movq %r15, 0x98(%rsp)
cmpl $0x3d, %eax
je 0x709d
movq 0x98(%rsp), %rbp
movq %r14, %r12
movq %r13, %rbx
leaq 0x1(%rbp), %rcx
cmpq 0x28(%rsp), %rcx
je 0x72f2
movb (%rcx), %al
cmpb $0x3d, %al
movq %rcx, 0x98(%rsp)
je 0x72ff
movsbl %al, %edi
movq 0x30(%rsp), %rsi
callq 0x1096c
leaq -0x1(%r12), %r14
leaq -0x1(%rbx), %r13
testb %al, %al
je 0x7148
jmp 0x72ff
incq %r15
movq %r15, %r14
leaq 0x38(%rsp), %r13
testq %rbx, %rbx
je 0x71c0
incq %r14
movsbl (%r14), %edi
movq 0x30(%rsp), %rsi
callq 0x1096c
decq %rbx
testb %al, %al
je 0x71a1
jmp 0x71c5
movq 0x28(%rsp), %r14
movq %r14, %rax
subq %r15, %rax
movq %r15, 0xa0(%rsp)
movq %rax, 0xa8(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
andq $0x0, 0x70(%rsp)
leaq 0x2e0(%rsp), %rbp
cmpq 0x28(%rsp), %r14
je 0x7263
movq %r14, %rbx
negq %rbx
movsbl (%r14), %edi
movq 0x30(%rsp), %rsi
callq 0x1096c
testb %al, %al
je 0x721f
incq %r14
decq %rbx
cmpq 0x28(%rsp), %r14
jne 0x71fe
jmp 0x7263
negq %rbx
xorl %r13d, %r13d
leaq (%r14,%r13), %r15
cmpq 0x28(%rsp), %r15
je 0x7242
movsbl (%r15), %edi
callq 0x4070
testl %eax, %eax
jne 0x7242
incq %r13
jmp 0x7225
movq %rbx, 0x38(%rsp)
movq %r13, 0x40(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x38(%rsp), %r13
movq %r13, %rsi
callq 0x10baa
movq %r15, %r14
jmp 0x71f1
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1098f(%rip), %rsi     # 0x17c04
callq 0x1098a
testb %al, %al
je 0x7295
movq %rbp, %rdi
callq 0xc000
leaq 0x60(%rsp), %rdi
callq 0x110de
jmp 0x709d
movq %rbx, %rdi
leaq 0x1096b(%rip), %rsi     # 0x17c0a
callq 0x1098a
testb %al, %al
leaq 0x48(%rsp), %r15
je 0x7392
movq 0x60(%rsp), %rbx
movq 0x68(%rsp), %r14
cmpq %r14, %rbx
je 0x7286
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r15, 0x38(%rsp)
movq %r13, %rdi
callq 0xd86e
movq %rbp, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x109ac
movq %r13, %rdi
callq 0x41a0
addq $0x10, %rbx
jmp 0x72bb
movq 0x28(%rsp), %rax
movq %rax, 0x98(%rsp)
addq 0x98(%rsp), %rbx
pushq $0x1
popq %r14
movq %r14, %r13
subq 0x220(%rsp), %r13
movq %r12, %rax
cmpq %rax, %r13
je 0x709d
movq %rax, %r12
movsbl (%rbp,%r14), %edi
movq 0x30(%rsp), %rsi
callq 0x1096c
testb %al, %al
je 0x7347
incq %r14
movq %r12, %rax
decq %rax
decq %rbx
jmp 0x7319
cmpb $0x3d, (%rbp,%r14)
jne 0x709d
cmpq $0x1, %r14
jne 0x73ec
cmpq 0x168(%rsp), %r15
jne 0x73ec
leaq 0x168(%rsp), %rbx
movq %rbx, %rdi
callq 0x46c0
leaq 0x2e0(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0xc958
jmp 0x709d
movq %rbx, %rdi
leaq 0x10874(%rip), %rsi     # 0x17c10
callq 0x1098a
testb %al, %al
je 0x7286
movq 0x60(%rsp), %rbx
movq 0x68(%rsp), %r14
cmpq %r14, %rbx
je 0x7286
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r15, 0x38(%rsp)
movq %r13, %rdi
callq 0xd86e
movq %rbp, %rdi
movq %r13, %rsi
callq 0x10a4e
movq %r13, %rdi
callq 0x41a0
addq $0x10, %rbx
jmp 0x73b3
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
andq $0x0, 0x40(%rsp)
movb $0x0, 0x48(%rsp)
leaq 0x38(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x45b0
leaq 0x2e0(%rsp), %rbx
movq 0x98(%rsp), %rcx
subq %r15, %rcx
subq 0x168(%rsp), %r15
leaq 0x60(%rsp), %r14
movq %r14, %rdi
leaq 0x168(%rsp), %rsi
movq %r15, %rdx
callq 0x43c0
movq %r13, %rdi
movq %r14, %rsi
callq 0x4480
movq %r14, %rdi
callq 0x41a0
movq %r13, %rdi
pushq $0x1
popq %rsi
pushq $0x3d
popq %rdx
callq 0x43f0
movq 0x218(%rsp), %rsi
subq %r12, %rsi
addq $0x2, %rsi
movq %r13, %rdi
movq 0x28(%rsp), %rdx
callq 0x10aa2
movq %rbx, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0xc958
movq %r13, %rdi
callq 0x41a0
jmp 0x709d
leaq 0x168(%rsp), %rdi
callq 0x41a0
leaq 0x6a0(%rsp), %rdi
callq 0x40e0
leaq 0xc0(%rsp), %rdi
callq 0x41a0
movq 0x10(%rsp), %r15
leaq 0x1d24a(%rip), %rdx     # 0x24718
leaq 0x168(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0xcb42
leaq 0x8a8(%rsp), %rdi
leaq 0x168(%rsp), %rbx
movq %rbx, %rsi
callq 0xcd48
movq %rbx, %rdi
callq 0xcd72
andq $0x0, 0x38(%rsp)
movl 0x484(%rsp), %eax
leal -0x1(%rax), %ecx
cmpl $0x2, %ecx
ja 0x753b
cmpq $0x0, 0x3d8(%rsp)
jne 0x753b
leaq 0x1116e(%rip), %rsi     # 0x18698
leaq 0x8(%rsp), %rdi
callq 0xb758
movl 0x484(%rsp), %eax
andl $-0x2, %eax
cmpl $0x4, %eax
jne 0x76bb
cmpq $0x0, 0x3d8(%rsp)
je 0x7563
leaq 0x11160(%rip), %rsi     # 0x186b9
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpq $0x0, 0x400(%rsp)
je 0x757f
leaq 0x11192(%rip), %rsi     # 0x18707
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpq $0x0, 0x428(%rsp)
je 0x759b
leaq 0x111c9(%rip), %rsi     # 0x1875a
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpq $0x0, 0x638(%rsp)
je 0x75b7
leaq 0x111ff(%rip), %rsi     # 0x187ac
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpl $-0x1, 0x5d8(%rsp)
je 0x75d2
leaq 0x11238(%rip), %rsi     # 0x18800
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpq $0x0, 0x528(%rsp)
je 0x75ee
leaq 0x11269(%rip), %rsi     # 0x1884d
leaq 0x8(%rsp), %rdi
callq 0xb758
movb 0x658(%rsp), %al
orb 0x654(%rsp), %al
je 0x760f
leaq 0x1129d(%rip), %rsi     # 0x188a2
leaq 0x8(%rsp), %rdi
callq 0xb758
movzwl 0x50c(%rsp), %eax
testw $0x280, %ax             # imm = 0x280
je 0x7636
leaq 0x112e1(%rip), %rsi     # 0x18905
leaq 0x8(%rsp), %rdi
callq 0xb758
movzwl 0x50c(%rsp), %eax
testb $0x40, %al
je 0x7653
leaq 0x1131c(%rip), %rsi     # 0x1895d
leaq 0x8(%rsp), %rdi
callq 0xb758
movzwl 0x50c(%rsp), %eax
btl $0x8, %eax
jae 0x766a
leaq 0x11359(%rip), %rsi     # 0x189b9
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpl $0x0, 0x4d0(%rsp)
je 0x7685
leaq 0x11399(%rip), %rsi     # 0x18a14
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpb $0x1, 0x5e4(%rsp)
jne 0x76a0
leaq 0x113d8(%rip), %rsi     # 0x18a6e
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpb $0x1, 0x650(%rsp)
jne 0x76bb
leaq 0x11413(%rip), %rsi     # 0x18ac4
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpl $0x1, 0x4d0(%rsp)
movq 0x4e0(%rsp), %rax
jne 0x76d4
testq %rax, %rax
jne 0x7710
jmp 0x76ff
testq %rax, %rax
je 0x7710
leaq 0x11443(%rip), %rsi     # 0x18b23
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpl $0x1, 0x4d0(%rsp)
jne 0x7710
cmpq $0x0, 0x4e0(%rsp)
jne 0x7710
leaq 0x11461(%rip), %rsi     # 0x18b67
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpl $0x2, 0x484(%rsp)
jne 0x775c
cmpq $0x0, 0x448(%rsp)
jne 0x7736
leaq 0x11475(%rip), %rsi     # 0x18ba1
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpl $-0x1, 0x5b0(%rsp)
jne 0x774b
cmpq $0x0, 0x5c0(%rsp)
je 0x775c
leaq 0x11491(%rip), %rsi     # 0x18be3
leaq 0x8(%rsp), %rdi
callq 0xb758
testb $0x8, 0x50d(%rsp)
je 0x7786
movl 0x484(%rsp), %eax
addl $-0x3, %eax
cmpl $0x2, %eax
jb 0x7786
leaq 0x114be(%rip), %rsi     # 0x18c3a
leaq 0x8(%rsp), %rdi
callq 0xb758
leaq 0x168(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
movq %rax, (%rdi)
leaq 0x38(%rsp), %rax
movq %rax, 0x8(%rdi)
leaq 0x8(%rsp), %rax
movq %rax, 0x10(%rdi)
leaq 0x114cb(%rip), %rsi     # 0x18c7d
leaq 0x520(%rsp), %rdx
callq 0xb7a6
leaq 0x114c5(%rip), %rsi     # 0x18c8b
leaq 0x168(%rsp), %rdi
leaq 0x4d8(%rsp), %rdx
callq 0xb7a6
leaq 0x114b1(%rip), %rsi     # 0x18c93
leaq 0x168(%rsp), %rdi
leaq 0x420(%rsp), %rdx
callq 0xb7a6
leaq 0x114a1(%rip), %rsi     # 0x18c9f
leaq 0x168(%rsp), %rdi
leaq 0x440(%rsp), %rdx
callq 0xb7a6
cmpl $-0x1, 0x54c(%rsp)
jne 0x782b
movl 0x548(%rsp), %eax
movl %eax, 0x54c(%rsp)
cmpl $-0x1, 0x4fc(%rsp)
jne 0x7841
callq 0x41e0
movl %eax, 0x4fc(%rsp)
cmpl $-0x1, 0x504(%rsp)
jne 0x786a
movl 0x500(%rsp), %eax
movl %eax, 0x504(%rsp)
cmpl $-0x1, %eax
jne 0x786a
callq 0x43e0
movl %eax, 0x504(%rsp)
cmpl $-0x1, 0x5dc(%rsp)
jne 0x788a
cmpl $-0x1, 0x5e0(%rsp)
jne 0x788a
callq 0x43e0
movl %eax, 0x5e0(%rsp)
cmpl $0x1, 0x4d0(%rsp)
je 0x78a8
andq $0x0, 0x4e0(%rsp)
movq 0x4d8(%rsp), %rax
movb $0x0, (%rax)
movl 0x484(%rsp), %eax
decl %eax
cmpl $0x2, %eax
jb 0x78d2
cmpq $0x0, 0x618(%rsp)
je 0x78d2
leaq 0x113e0(%rip), %rsi     # 0x18ca8
leaq 0x8(%rsp), %rdi
callq 0xb758
cmpq $0x0, 0x428(%rsp)
je 0x78f2
leaq 0x248(%rsp), %rdi
leaq 0x420(%rsp), %rsi
callq 0x4240
movq 0x248(%rsp), %rdi
movl $0x210000, %esi         # imm = 0x210000
xorl %eax, %eax
callq 0x42e0
movl %eax, 0x24(%rsp)
testl %eax, %eax
jns 0x7974
leaq 0x10018(%rip), %rsi     # 0x1792d
leaq 0x38(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb9ce
callq 0x4050
movl (%rax), %edi
callq 0x4130
leaq 0x168(%rsp), %rdi
leaq 0x38(%rsp), %rsi
movq %rax, %rdx
callq 0xcb22
leaq 0x168(%rsp), %rsi
movq %r15, %rdi
callq 0x8851
leaq 0x168(%rsp), %rdi
callq 0x41a0
leaq 0x38(%rsp), %rdi
callq 0x41a0
movl $0xffffff9c, 0x24(%rsp) # imm = 0xFFFFFF9C
movq %r15, 0x88(%rsp)
leaq 0x24(%rsp), %rax
movq %rax, 0x90(%rsp)
cmpq $0x0, 0x3d8(%rsp)
je 0x79e1
leaq 0x3d0(%rsp), %rsi
movq 0x10(%rsi), %rax
movslq 0x10(%rax), %rdx
movslq 0x14(%rax), %rcx
subq %rdx, %rcx
leaq 0x168(%rsp), %rdi
callq 0xcd88
movq 0x168(%rsp), %rdx
leaq 0x10399(%rip), %rsi     # 0x17d60
leaq 0x88(%rsp), %rdi
callq 0x88b2
leaq 0x168(%rsp), %rdi
callq 0x41a0
cmpq $0x0, 0x400(%rsp)
je 0x7a39
leaq 0x3f8(%rsp), %rsi
movq 0x10(%rsi), %rax
movslq 0x10(%rax), %rdx
movslq 0x14(%rax), %rcx
subq %rdx, %rcx
leaq 0x168(%rsp), %rdi
callq 0xcd88
movq 0x168(%rsp), %rdx
leaq 0xff39(%rip), %rsi      # 0x17958
leaq 0x88(%rsp), %rdi
callq 0x88b2
leaq 0x168(%rsp), %rdi
callq 0x41a0
cmpl $0x1, 0x4d0(%rsp)
jne 0x7bf1
movq 0x4e0(%rsp), %rsi
testq %rsi, %rsi
je 0x7bf1
movq 0x4d8(%rsp), %rdi
callq 0xce05
leaq 0x168(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
leaq 0x38(%rsp), %rdi
callq 0xc1fa
cmpq $0x0, 0x40(%rsp)
je 0x7be7
movl 0x24(%rsp), %edi
movq 0x38(%rsp), %rsi
leaq 0x168(%rsp), %rdx
xorl %ecx, %ecx
callq 0x4110
cmpl $-0x1, %eax
je 0x7b39
testb $0x40, 0x181(%rsp)
jne 0x7be7
leaq 0xfeb6(%rip), %rsi      # 0x17976
leaq 0xa0(%rsp), %rdi
leaq 0x228(%rsp), %rdx
callq 0xb9ce
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0xce5d
leaq 0xfe94(%rip), %rdx      # 0x1798a
leaq 0x60(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xcb22
leaq 0x60(%rsp), %rsi
movq %r15, %rdi
callq 0x8851
leaq 0x60(%rsp), %rdi
callq 0x41a0
leaq 0xc0(%rsp), %rdi
callq 0x41a0
leaq 0xa0(%rsp), %rdi
jmp 0x7be2
leaq 0xfe25(%rip), %rsi      # 0x17965
leaq 0x228(%rsp), %rdi
leaq 0x1c(%rsp), %rdx
callq 0xb9ce
leaq 0xa0(%rsp), %rdi
leaq 0x228(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0xce5d
leaq 0xfbdc(%rip), %rdx      # 0x1774f
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0xcb22
callq 0x4050
movl (%rax), %edi
callq 0x4130
leaq 0x60(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
movq %rax, %rdx
callq 0xcb22
leaq 0x60(%rsp), %rsi
movq %r15, %rdi
callq 0x8851
leaq 0x60(%rsp), %rdi
callq 0x41a0
leaq 0xc0(%rsp), %rdi
callq 0x41a0
leaq 0xa0(%rsp), %rdi
callq 0x41a0
leaq 0x228(%rsp), %rdi
callq 0x41a0
leaq 0x38(%rsp), %rdi
callq 0x41a0
movl 0x24(%rsp), %edi
cmpl $-0x64, %edi
je 0x7bff
callq 0x46b0
movl $0xb8, %edi
callq 0x4390
movq %rax, %rbx
movl 0x484(%rsp), %ebp
leaq 0x2c8(%rsp), %rdi
leaq 0x488(%rsp), %rsi
callq 0xce7c
leaq 0x680(%rsp), %r14
movq %r14, %rdi
leaq 0x610(%rsp), %rsi
callq 0x4510
movl 0x4d0(%rsp), %eax
subq $0x8, %rsp
leaq 0x2d0(%rsp), %r8
movq %rbx, %rdi
movq %r15, %rsi
movl %ebp, %edx
leaq 0x5f8(%rsp), %rcx
leaq 0x4a8(%rsp), %r9
pushq %rax
pushq %r14
leaq 0x4d0(%rsp), %rax
pushq %rax
callq 0xceb6
addq $0x20, %rsp
leaq 0x680(%rsp), %rdi
callq 0x41a0
leaq 0x2c8(%rsp), %rdi
callq 0x10328
leaq 0x2e0(%rsp), %rdi
callq 0xb98c
leaq 0xe0(%rsp), %rdi
callq 0x10368
leaq 0x3d0(%rsp), %rdi
callq 0xcf8a
leaq 0x8a8(%rsp), %rdi
callq 0xcd72
leaq 0x3b0(%rsp), %rdi
callq 0x41a0
leaq 0x5c(%rsp), %rdi
callq 0xd048
leaq 0x150(%rsp), %rdi
callq 0x16182
leaq 0x130(%rsp), %rdi
callq 0x41a0
leaq 0x248(%rsp), %rdi
callq 0x41a0
leaq 0x2a8(%rsp), %rdi
callq 0x41a0
movq %rbx, %rax
addq $0x8f8, %rsp            # imm = 0x8F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x70
popq %rdi
callq 0x41d0
movq %rax, %rbx
movq 0x110(%rsp), %rax
cmpq 0x118(%rsp), %rax
jne 0x7d9e
movq 0x128(%rsp), %rax
movq -0x8(%rax), %rax
leaq 0x1f8(%rax), %rcx
addq $0x200, %rax            # imm = 0x200
jmp 0x7da2
pushq $0x70
popq %rdi
callq 0x41d0
movq %rax, %rbx
movq 0x110(%rsp), %rax
cmpq 0x118(%rsp), %rax
jne 0x7dff
movq 0x128(%rsp), %rax
movq -0x8(%rax), %rax
leaq 0x1f8(%rax), %rcx
addq $0x200, %rax            # imm = 0x200
jmp 0x7e03
leaq -0x8(%rax), %rcx
movl (%rcx), %ecx
movl %ecx, 0x38(%rsp)
addq $-0x28, %rax
movq %rax, 0x40(%rsp)
leaq 0xff21(%rip), %rsi      # 0x17cd9
leaq 0x2e0(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb9ce
movb $0x1, %bpl
leaq 0x38(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
movq %rbx, %rdi
callq 0x11d9e
xorl %ebp, %ebp
leaq 0x1be15(%rip), %rsi     # 0x23c00
leaq 0x9fea(%rip), %rdx      # 0x11ddc
movq %rbx, %rdi
callq 0x4610
jmp 0x8090
leaq -0x8(%rax), %rcx
movl (%rcx), %ecx
movl %ecx, 0x38(%rsp)
addq $-0x28, %rax
movq %rax, 0x40(%rsp)
leaq 0xfe8b(%rip), %rsi      # 0x17ca4
leaq 0x2e0(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb9ce
movb $0x1, %bpl
leaq 0x38(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
movq %rbx, %rdi
callq 0x11d9e
xorl %ebp, %ebp
leaq 0x1bdb4(%rip), %rsi     # 0x23c00
leaq 0x9f89(%rip), %rdx      # 0x11ddc
movq %rbx, %rdi
callq 0x4610
jmp 0x8090
pushq $0x70
popq %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0xfef6(%rip), %rsi      # 0x17d68
leaq 0x2e0(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb9ce
movq 0x110(%rsp), %rax
cmpq 0x118(%rsp), %rax
jne 0x7fd1
movq 0x128(%rsp), %rax
movq -0x8(%rax), %rax
leaq 0x1f8(%rax), %rcx
addq $0x200, %rax            # imm = 0x200
jmp 0x7fd5
pushq $0x70
popq %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0xfeb1(%rip), %rsi      # 0x17d7b
leaq 0x2e0(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x123c3
leaq 0xfe9b(%rip), %rdx      # 0x17d7e
leaq 0x6a0(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0xcb22
movb $0x1, %bpl
leaq 0x268(%rsp), %rsi
leaq 0x6a0(%rsp), %rdx
leaq 0x228(%rsp), %rcx
movq %rbx, %rdi
callq 0x1205c
xorl %ebp, %ebp
leaq 0x1bcdc(%rip), %rsi     # 0x23c00
leaq 0x9eb1(%rip), %rdx      # 0x11ddc
movq %rbx, %rdi
callq 0x4610
movq 0x110(%rsp), %rax
cmpq 0x118(%rsp), %rax
jne 0x7f56
movq 0x128(%rsp), %rcx
movl $0x200, %eax            # imm = 0x200
addq -0x8(%rcx), %rax
addq $-0x28, %rax
movl 0x1c(%rsp), %ecx
movl %ecx, 0x2e0(%rsp)
movq %rax, 0x2e8(%rsp)
pushq $0x70
popq %rdi
callq 0x41d0
movq %rax, %rbx
leaq 0xfdd8(%rip), %rsi      # 0x17d57
leaq 0x6a0(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb9ce
movb $0x1, %bpl
leaq 0x268(%rsp), %rsi
leaq 0x6a0(%rsp), %rdx
leaq 0x2e0(%rsp), %rcx
movq %rbx, %rdi
callq 0x1205c
xorl %ebp, %ebp
leaq 0x1bc43(%rip), %rsi     # 0x23c00
leaq 0x9e18(%rip), %rdx      # 0x11ddc
movq %rbx, %rdi
callq 0x4610
jmp 0x8090
leaq -0x8(%rax), %rcx
movl (%rcx), %edx
leaq 0x38(%rsp), %rcx
movl %edx, (%rcx)
addq $-0x28, %rax
movq %rax, 0x8(%rcx)
movb $0x1, %bpl
leaq 0x268(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
movq %rbx, %rdi
callq 0x1205c
xorl %ebp, %ebp
leaq 0x1bbf6(%rip), %rsi     # 0x23c00
leaq 0x9dcb(%rip), %rdx      # 0x11ddc
movq %rbx, %rdi
callq 0x4610
jmp 0x8090
pushq $0x40
popq %rdi
callq 0x41d0
movq %rax, %r15
leaq 0xfd1a(%rip), %rdx      # 0x17d47
leaq 0x2e0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xc5c1
movl %ebx, %edi
callq 0x4130
leaq 0x6a0(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
movq %rax, %rdx
callq 0xcb22
movb $0x1, %bl
leaq 0x268(%rsp), %rsi
leaq 0x6a0(%rsp), %rdx
movq %r15, %rdi
callq 0xc5fa
xorl %ebx, %ebx
leaq 0x1bb0f(%rip), %rsi     # 0x23b90
leaq 0x4598(%rip), %rdx      # 0xc620
movq %r15, %rdi
callq 0x4610
pushq $0x40
popq %rdi
callq 0x41d0
movq %rax, %r14
cmpl $0x0, 0x30(%rsp)
jne 0x80f7
movq %r14, %rdi
movq 0x10(%rsp), %rsi
callq 0xc428
leaq 0x1baea(%rip), %rsi     # 0x23ba0
jmp 0x8118
pushq $0x20
popq %rdi
callq 0x41d0
movq %rax, %r14
callq 0x4050
movl (%rax), %ebx
callq 0x41f0
movq %r14, %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x108fc
movq 0x1be4d(%rip), %rsi     # 0x23f30
movq 0x1be76(%rip), %rdx     # 0x23f60
movq %r14, %rdi
movq 0x10(%rsp), %r15
callq 0x4610
leaq 0x3b0(%rsp), %rdx
movq %r14, %rdi
movq 0x10(%rsp), %rsi
movq 0x30(%rsp), %rcx
callq 0xc488
leaq 0x1baa0(%rip), %rsi     # 0x23bb8
leaq 0x4501(%rip), %rdx      # 0xc620
movq %r14, %rdi
callq 0x4610
movq %rdx, %r14
jmp 0x84b3
movq %rdx, %r14
movq %rax, %r13
jmp 0x84b3
movq %rdx, %r14
movq %rax, %r13
callq 0x4600
jmp 0x84b3
jmp 0x8849
movq %rax, %r13
leaq 0x60(%rsp), %rdi
callq 0x41a0
jmp 0x8161
movq %rax, %r13
leaq 0xc0(%rsp), %rdi
callq 0x41a0
jmp 0x8173
movq %rax, %r13
leaq 0xa0(%rsp), %rdi
jmp 0x81bd
jmp 0x81c4
movq %rax, %r13
leaq 0x60(%rsp), %rdi
callq 0x41a0
jmp 0x8191
movq %rax, %r13
leaq 0xc0(%rsp), %rdi
callq 0x41a0
jmp 0x81a3
movq %rax, %r13
leaq 0xa0(%rsp), %rdi
callq 0x41a0
jmp 0x81b5
movq %rax, %r13
leaq 0x228(%rsp), %rdi
callq 0x41a0
jmp 0x8212
movq %rax, %r13
jmp 0x8212
jmp 0x81cb
movq %rax, %r13
movq %r14, %rdi
callq 0x42d0
jmp 0x87f6
jmp 0x83f7
jmp 0x85b3
jmp 0x84ce
movq %rdx, %rbx
movq %rax, %r13
movq %r14, %rdi
callq 0x42d0
jmp 0x85c6
movq %rax, %r13
leaq 0x168(%rsp), %rdi
callq 0x41a0
jmp 0x8212
movq %rax, %r13
leaq 0x38(%rsp), %rdi
jmp 0x835b
jmp 0x84ce
movq %rdx, %r14
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
jmp 0x823e
movq %rdx, %r14
movq %rax, %r13
movb $0x1, %bl
leaq 0x2e0(%rsp), %rdi
callq 0x41a0
testb %bl, %bl
jne 0x82f5
jmp 0x847a
jmp 0x852f
jmp 0x84ce
movq %rax, %r13
cmpl $0x2, %edx
jne 0x84d1
movq %r13, %rdi
callq 0x4160
leaq 0x20(%rax), %rsi
movq 0x10(%rsp), %rdi
callq 0x8851
callq 0x4600
movq 0x10(%rsp), %r15
jmp 0x6fa4
jmp 0x84ce
movq %rax, %r13
callq 0x4600
jmp 0x84d1
jmp 0x852f
jmp 0x82b1
jmp 0x84ce
movq %rax, %r13
leaq 0x168(%rsp), %rdi
jmp 0x835b
jmp 0x84ce
movq %rdx, %rbx
movq %rax, %r13
jmp 0x85c6
movq %rdx, %rbx
movq %rax, %r13
jmp 0x85d8
movq %rdx, %rbx
movq %rax, %r13
jmp 0x85e5
movq %rax, %r13
jmp 0x8834
movq %rdx, %r14
movq %rax, %r13
movq %r15, %rdi
callq 0x42d0
jmp 0x847a
movq %rdx, %rbx
movq %rax, %r13
jmp 0x85cb
movq %rax, %r13
leaq 0x680(%rsp), %rdi
callq 0x41a0
jmp 0x8322
movq %rax, %r13
leaq 0x2c8(%rsp), %rdi
callq 0x10328
jmp 0x8334
movq %rax, %r13
movl $0xb8, %esi
movq %rbx, %rdi
callq 0x43a0
jmp 0x84d1
jmp 0x84ce
jmp 0x84ce
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
jmp 0x84d1
movq %rdx, %r14
movq %rax, %r13
jmp 0x86be
movq %rax, %r13
leaq 0x288(%rsp), %rdi
callq 0x41a0
jmp 0x87cf
movq %rax, %r13
jmp 0x87dc
jmp 0x852f
movq %rdx, %r14
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
jmp 0x83b0
movq %rdx, %r14
movq %rax, %r13
movb $0x1, %bpl
leaq 0x2e0(%rsp), %rdi
callq 0x41a0
testb %bpl, %bpl
jne 0x8417
jmp 0x846d
movq %rdx, %r14
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
testb %bpl, %bpl
jne 0x83ea
jmp 0x8484
movq %rdx, %r14
movq %rax, %r13
movq %rbx, %rdi
callq 0x42d0
jmp 0x8484
movq %rdx, %rbx
movq %rax, %r13
leaq 0x38(%rsp), %rdi
callq 0x41a0
jmp 0x85b9
jmp 0x84ce
movq %rdx, %r14
movq %rax, %r13
movq %rbx, %rdi
callq 0x42d0
jmp 0x846d
jmp 0x8537
movq %rdx, %r14
movq %rax, %r13
leaq 0xc0(%rsp), %rdi
callq 0x41a0
jmp 0x8441
movq %rdx, %r14
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0x16182
jmp 0x847a
jmp 0x845a
movq %rdx, %r14
movq %rax, %r13
jmp 0x846d
movq %rdx, %r14
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0xecea
leaq 0xa0(%rsp), %rdi
callq 0xecea
leaq 0x60(%rsp), %rdi
callq 0x41a0
leaq 0x38(%rsp), %rdi
jmp 0x84bb
movq %rdx, %r14
movq %rax, %r13
leaq 0x2e0(%rsp), %rdi
callq 0x41a0
testb %bpl, %bpl
jne 0x84ab
jmp 0x84b3
movq %rdx, %r14
movq %rax, %r13
movq %rbx, %rdi
callq 0x42d0
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
movq 0x10(%rsp), %r15
jmp 0x86a4
jmp 0x84fc
jmp 0x8537
movq %rax, %r13
leaq 0x2e0(%rsp), %rdi
callq 0xb98c
jmp 0x87cf
jmp 0x852f
movq %rax, %r13
leaq 0x3d0(%rsp), %rdi
callq 0x41a0
jmp 0x87f6
jmp 0x852f
movq %rdx, %rbx
movq %rax, %r13
leaq 0x38(%rsp), %rdi
callq 0x41a0
jmp 0x853d
jmp 0x8537
jmp 0x85b3
jmp 0x85b3
movq %rdx, %r14
movq %rax, %r13
jmp 0x86a4
jmp 0x85b3
jmp 0x85b3
movq %rax, %r13
jmp 0x87f6
movq %rdx, %rbx
movq %rax, %r13
leaq 0x60(%rsp), %rdi
callq 0x110de
jmp 0x85b9
movq %rdx, %r14
movq %rax, %r13
leaq 0x2e0(%rsp), %rdi
callq 0x41a0
testb %bpl, %bpl
movq 0x10(%rsp), %r15
jne 0x8576
jmp 0x8697
movq %rdx, %r14
movq %rax, %r13
movq 0x10(%rsp), %r15
jmp 0x85a6
movq %rdx, %r14
movq %rax, %r13
leaq 0x2e0(%rsp), %rdi
callq 0x41a0
testb %bpl, %bpl
movq 0x10(%rsp), %r15
je 0x8697
jmp 0x85a6
movq %rdx, %r14
movq %rax, %r13
movq 0x10(%rsp), %r15
movq %rbx, %rdi
callq 0x42d0
jmp 0x8697
movq %rdx, %rbx
movq %rax, %r13
leaq 0x168(%rsp), %rdi
callq 0x41a0
movq 0x10(%rsp), %r15
leaq 0x6a0(%rsp), %rdi
callq 0x40e0
leaq 0xc0(%rsp), %rdi
callq 0x41a0
cmpl $0x1, %ebx
jne 0x84d1
movq %r13, %rdi
callq 0x4160
movq %rax, %rbx
leaq 0xf30b(%rip), %rsi      # 0x1790b
leaq 0x38(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xb9ce
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
leaq 0x168(%rsp), %rdi
leaq 0x38(%rsp), %rsi
movq %rax, %rdx
callq 0xcb22
leaq 0x168(%rsp), %rsi
movq %r15, %rdi
callq 0x8851
leaq 0x168(%rsp), %rdi
callq 0x41a0
leaq 0x38(%rsp), %rdi
callq 0x41a0
callq 0x4600
jmp 0x74c7
jmp 0x84ce
movq %rax, %r13
leaq 0x168(%rsp), %rdi
callq 0x41a0
jmp 0x8678
movq %rax, %r13
leaq 0x38(%rsp), %rdi
callq 0x41a0
jmp 0x8687
movq %rax, %r13
callq 0x4600
jmp 0x84d1
movq %rdx, %r14
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
leaq 0x168(%rsp), %rdi
callq 0x41a0
leaq 0x268(%rsp), %rdi
callq 0x41a0
cmpl $0x1, %r14d
jne 0x87cf
movq %r13, %rdi
callq 0x4160
movq %rax, %rbx
movq 0x1b90e(%rip), %rdi     # 0x23fe8
leaq 0xf114(%rip), %rsi      # 0x177f5
callq 0x4380
movq %rax, %rdi
movq %r15, %rsi
callq 0x4350
leaq 0xf3e3(%rip), %rsi      # 0x17adb
movq %rax, %rdi
callq 0x4380
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq %r14, %rdi
movq %rax, %rsi
callq 0x4380
leaq 0xee4b(%rip), %rsi      # 0x17569
movq %rax, %rdi
callq 0x4380
movb $0x1, 0x1c0bc(%rip)     # 0x247e9
pushq $0x40
popq %rdi
callq 0x41d0
movq %rax, %rbx
movq 0x110(%rsp), %rsi
cmpq 0x118(%rsp), %rsi
jne 0x875b
movq 0x128(%rsp), %rax
movl $0x200, %esi            # imm = 0x200
addq -0x8(%rax), %rsi
addq $-0x28, %rsi
leaq 0xf16c(%rip), %rdx      # 0x178d2
leaq 0x6a0(%rsp), %rdi
callq 0xc5c1
movb $0x1, %bpl
leaq 0x6a0(%rsp), %rdx
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
callq 0xc5fa
xorl %ebp, %ebp
leaq 0x1b3fc(%rip), %rsi     # 0x23b90
leaq 0x3e85(%rip), %rdx      # 0xc620
movq %rbx, %rdi
callq 0x4610
movq %rax, %r13
leaq 0x6a0(%rsp), %rdi
callq 0x41a0
testb %bpl, %bpl
jne 0x87bd
jmp 0x87ca
movq %rax, %r13
movq %rbx, %rdi
callq 0x42d0
jmp 0x87ca
movq %rax, %r13
callq 0x4600
leaq 0xe0(%rsp), %rdi
callq 0x10368
leaq 0x3d0(%rsp), %rdi
callq 0xcf8a
leaq 0x8a8(%rsp), %rdi
callq 0xcd72
leaq 0x3b0(%rsp), %rdi
callq 0x41a0
leaq 0x5c(%rsp), %rdi
callq 0xd048
leaq 0x150(%rsp), %rdi
callq 0x16182
leaq 0x130(%rsp), %rdi
callq 0x41a0
leaq 0x248(%rsp), %rdi
callq 0x41a0
leaq 0x2a8(%rsp), %rdi
callq 0x41a0
movq %r13, %rdi
callq 0x4620
movq %rax, %rdi
callq 0xba09