// File: davmac314[P]dinit/src/includes/load-service.h
// Function: void dinit_load::process_service_file<enable_disable_service(int, cpbuffer<1024u>&, service_dir_opt&, char const*, char const*, bool, bool, unsigned short)::$_0, enable_disable_service(int, cpbuffer<1024u>&, service_dir_opt&, char const*, char const*, bool, bool, unsigned short)::$_1>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, file_input_stack&, enable_disable_service(int, cpbuffer<1024u>&, service_dir_opt&, char const*, char const*, bool, bool, unsigned short)::$_0, char const*, enable_disable_service(int, cpbuffer<1024u>&, service_dir_opt&, char const*, char const*, bool, bool, unsigned short)::$_1 const&)
void process_service_file(string name, file_input_stack &service_input, T process_line_func,
        const char *argval, const resolve_var_t &resolve_var)
{
    string line;

    while (service_input.getline(line)) {

        unsigned line_num = service_input.current_line();

        if (line.empty()) continue;
        while (line.back() == '\\') {
            // Check for double-backslash, i.e. backslash escaped with backslash. We actually need
            // to check for any even number.
            bool is_odd_number = true;
            auto r = std::next(line.rbegin());
            auto re = line.rend();
            while (r != re) {
                if (*r != '\\') break;
                is_odd_number = !is_odd_number;
                ++r;
            }

            if (!is_odd_number) break;

            string nextline;
            string::iterator j;
            string::iterator endnext;

            line.back() = '\n';
            if (!service_input.getline_same_file(nextline)) {
                throw service_description_exc(service_input,
                        "end-of-file follows backslash escape character (`\\')");
            }

            j = nextline.begin();
            endnext = nextline.end();
            j = skipws(j, endnext);
            if (j == nextline.begin()) {
                throw service_description_exc(service_input,
                        "line following line-continuation backslash (`\\') "
                        "does not begin with whitespace character");
            }
            line.append(nextline);
        }

        string::iterator i = line.begin();
        string::iterator end = line.end();

        i = skipwsln(i, end, line_num);
        if (i != end) {
            if (*i == '#') continue; // comment without setting

            if (*i == '@') {
                // meta command
                ++i;
                string meta_cmd = read_config_name(i, end);
                bool is_include_opt = (meta_cmd == "include-opt");
                if (is_include_opt || meta_cmd == "include") {
                    // @include-opt or @include
                    file_pos_ref input_pos { service_input.current_file_name(), line_num };
                    std::string include_name = read_include_path(name, meta_cmd, input_pos, i,
                            end, argval, resolve_var);

                    const char *include_name_base = base_name(include_name.c_str());
                    const char *include_name_dir;
                    size_t nul_pos = std::string::npos;
                    if (include_name_base == include_name.c_str()) {
                        include_name_dir = "";
                    }
                    else if (include_name_base == (include_name.c_str() + 1)) {
                        // Parent path must be '/' but we may not have space to insert a nul
                        include_name_dir = "/";
                    }
                    else {
                        include_name_dir = include_name.c_str();
                        // We insert a nul between the include file path name and base name,
                        // temporarily, so we can pass both separately to open_with_dir (below);
                        // we need to restore it to a separator ('/') just after.
                        nul_pos = include_name_base - include_name_dir - 1;
                        include_name[nul_pos] = '\0';
                    }

                    auto inc_sdf_fds = open_with_dir(include_name_dir, include_name_base,
                            service_input.current_resolve_dir());

                    if (nul_pos != std::string::npos) {
                        // Need to restore the separator between path and base name
                        include_name[nul_pos] = '/';
                    }

                    if (inc_sdf_fds.first == -1) {
                        if (!is_include_opt || inc_sdf_fds.second != ENOENT) {
                            throw service_load_exc(name, include_name + ": cannot open: " + strerror(inc_sdf_fds.second));
                        }
                    }
                    else {
                        dio::istream file(inc_sdf_fds.second);
                        service_input.push(include_name, std::move(file), inc_sdf_fds.first);
                    }
                }
                else {
                    file_pos_ref input_pos { service_input.current_file_name(), line_num };
                    throw service_description_exc(name, "bad meta command", input_pos);
                }

                continue;
            }

            string setting = read_config_name(i, end);
            i = skipwsln(i, end, line_num);

            setting_op_t setting_op;

            bool bad_line = false;
            if (setting.empty()) {
                bad_line = true;
            }
            else if (*i == '=') {
                setting_op = setting_op_t::ASSIGN;
            }
            else if (*i == ':') {
                setting_op = setting_op_t::COLON;
            }
            else if (*i == '+') {
                ++i;
                if (i != end && *i == '=') {
                    // "+=" is allowed
                    setting_op = setting_op_t::PLUSASSIGN;
                }
                else {
                    bad_line = true;
                }
            }
            else {
                bad_line = true;
            }

            if (bad_line) {
                throw service_description_exc(name, "badly formed line.", service_input);
            }

            i = skipwsln(++i, end, line_num);

            file_pos_ref fpr { service_input.current_file_name(), line_num };
            process_line_func(line, fpr, setting, setting_op, i, end);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4a0, %rsp            # imm = 0x4A0
movq %rdi, -0x3a0(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x398(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x55c0
movq -0x10(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x192b0
movb %al, -0x3a1(%rbp)
jmp 0xd9fb
movb -0x3a1(%rbp), %al
testb $0x1, %al
jne 0xda0a
jmp 0xe824
movq -0x10(%rbp), %rdi
callq 0x19340
movl %eax, -0x3a8(%rbp)
jmp 0xda1b
movl -0x3a8(%rbp), %eax
movl %eax, -0x50(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x56a0
testb $0x1, %al
jne 0xda33
jmp 0xda46
jmp 0xd9e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe836
jmp 0xda48
leaq -0x40(%rbp), %rdi
callq 0x52e0
movsbl (%rax), %eax
cmpl $0x5c, %eax
jne 0xde33
movb $0x1, -0x51(%rbp)
leaq -0x68(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
leaq -0x40(%rbp), %rsi
callq 0x56e0
movq -0x3b0(%rbp), %rsi
leaq -0x60(%rbp), %rdi
movl $0x1, %edx
callq 0x19360
jmp 0xda8c
leaq -0x70(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x54d0
leaq -0x60(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x193b0
movb %al, -0x3b1(%rbp)
jmp 0xdaae
movb -0x3b1(%rbp), %al
testb $0x1, %al
jne 0xdaba
jmp 0xdae4
leaq -0x60(%rbp), %rdi
callq 0x13c60
movsbl (%rax), %eax
cmpl $0x5c, %eax
je 0xdacd
jmp 0xdae4
movb -0x51(%rbp), %al
notb %al
andb $0x1, %al
movb %al, -0x51(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x193e0
jmp 0xdae2
jmp 0xda99
testb $0x1, -0x51(%rbp)
jne 0xdaef
jmp 0xde33
leaq -0x90(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x55c0
leaq -0x98(%rbp), %rdi
callq 0x19410
leaq -0xa0(%rbp), %rdi
callq 0x19410
leaq -0x40(%rbp), %rdi
callq 0x52e0
movq -0x3c0(%rbp), %rsi
movb $0xa, (%rax)
movq -0x10(%rbp), %rdi
callq 0x19430
movb %al, -0x3b2(%rbp)
jmp 0xdb3e
movb -0x3b2(%rbp), %al
testb $0x1, %al
jne 0xdc56
jmp 0xdb4e
movb $0x1, -0xd2(%rbp)
movl $0x70, %edi
callq 0x51c0
movq %rax, -0x3c8(%rbp)
movq -0x10(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x194b0
jmp 0xdb78
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x5700
movq -0x3d0(%rbp), %rdx
leaq 0x1724b(%rip), %rsi     # 0x24de4
leaq -0xd0(%rbp), %rdi
callq 0x10f00
jmp 0xdba7
movq -0x3c8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0xd0(%rbp), %rdx
callq 0x19500
jmp 0xdbc3
movq -0x3c8(%rbp), %rdi
movb $0x0, -0xd2(%rbp)
leaq 0x24118(%rip), %rsi     # 0x31cf0
leaq 0xb991(%rip), %rdx      # 0x19570
callq 0x56b0
jmp 0xe848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xde22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xdc3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xdc2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5280
leaq -0xd1(%rbp), %rdi
callq 0x5440
testb $0x1, -0xd2(%rbp)
jne 0xdc45
jmp 0xdc51
movq -0x3c8(%rbp), %rdi
callq 0x52f0
jmp 0xde22
leaq -0x90(%rbp), %rdi
callq 0x5380
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x5240
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0xf8(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0x195a0
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x5380
movq %rax, -0x108(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x19620
testb $0x1, %al
jne 0xdd0b
jmp 0xddff
movb $0x1, -0x13a(%rbp)
movl $0x70, %edi
callq 0x51c0
movq %rax, -0x3d8(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x118(%rbp), %rdi
callq 0x194b0
jmp 0xdd35
leaq -0x139(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x5700
movq -0x3e0(%rbp), %rdx
leaq 0x170c3(%rip), %rsi     # 0x24e19
leaq -0x138(%rbp), %rdi
callq 0x10f00
jmp 0xdd64
movq -0x3d8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x138(%rbp), %rdx
callq 0x19500
jmp 0xdd80
movq -0x3d8(%rbp), %rdi
movb $0x0, -0x13a(%rbp)
leaq 0x23f5b(%rip), %rsi     # 0x31cf0
leaq 0xb7d4(%rip), %rdx      # 0x19570
callq 0x56b0
jmp 0xe848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xdde6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xddda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x5280
leaq -0x139(%rbp), %rdi
callq 0x5440
testb $0x1, -0x13a(%rbp)
jne 0xddf1
jmp 0xddfd
movq -0x3d8(%rbp), %rdi
callq 0x52f0
jmp 0xde22
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x5760
jmp 0xde11
leaq -0x90(%rbp), %rdi
callq 0x5280
jmp 0xda48
leaq -0x90(%rbp), %rdi
callq 0x5280
jmp 0xe836
leaq -0x40(%rbp), %rdi
callq 0x5380
movq %rax, -0x148(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x5240
movq %rax, -0x150(%rbp)
movq -0x148(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x160(%rbp), %rdi
movq -0x168(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x19660
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rax
movq %rax, -0x148(%rbp)
leaq -0x148(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x19700
testb $0x1, %al
jne 0xdeb7
jmp 0xe81f
leaq -0x148(%rbp), %rdi
callq 0x172b0
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0xded0
jmp 0xd9e6
leaq -0x148(%rbp), %rdi
callq 0x172b0
movsbl (%rax), %eax
cmpl $0x40, %eax
jne 0xe4c3
leaq -0x148(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x19740
movq -0x3f8(%rbp), %rsi
movq -0x150(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rdx
xorl %ecx, %ecx
movl %ecx, %r8d
leaq -0x188(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
callq 0x19760
movq -0x3f0(%rbp), %rdi
leaq 0x16f36(%rip), %rsi     # 0x24e73
callq 0x19a70
movb %al, -0x3e1(%rbp)
jmp 0xdf4a
movb -0x3e1(%rbp), %al
andb $0x1, %al
movb %al, -0x191(%rbp)
testb $0x1, -0x191(%rbp)
jne 0xdf8b
leaq 0x16f17(%rip), %rsi     # 0x24e7f
leaq -0x188(%rbp), %rdi
callq 0x19a70
movb %al, -0x3f9(%rbp)
jmp 0xdf7c
movb -0x3f9(%rbp), %al
testb $0x1, %al
jne 0xdf8b
jmp 0xe39c
movq -0x10(%rbp), %rdi
callq 0x13f00
movq %rax, -0x408(%rbp)
jmp 0xdf9d
movq -0x408(%rbp), %rsi
movl -0x50(%rbp), %edx
leaq -0x1a8(%rbp), %rdi
callq 0x19aa0
jmp 0xdfb5
movq -0x3a0(%rbp), %rsi
movups -0x1a8(%rbp), %xmm0
movaps %xmm0, -0x1e0(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %r9
movl -0x1e0(%rbp), %ecx
movq -0x1d8(%rbp), %r8
movq -0x1e8(%rbp), %rdx
movq %rsp, %rax
movq %r9, 0x10(%rax)
movq %rdi, 0x8(%rax)
movq %rdx, (%rax)
leaq -0x1c8(%rbp), %rdi
leaq -0x188(%rbp), %rdx
leaq -0x148(%rbp), %r9
callq 0xe850
jmp 0xe01e
leaq -0x1c8(%rbp), %rdi
callq 0x5160
movq %rax, %rdi
callq 0x15bc0
movq %rax, -0x1f0(%rbp)
movq $-0x1, -0x200(%rbp)
movq -0x1f0(%rbp), %rax
movq %rax, -0x410(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x5160
movq %rax, %rcx
movq -0x410(%rbp), %rax
cmpq %rcx, %rax
jne 0xe091
leaq 0x16a42(%rip), %rax     # 0x24ab6
movq %rax, -0x1f8(%rbp)
jmp 0xe13e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe4b2
movq -0x1f0(%rbp), %rax
movq %rax, -0x418(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x5160
movq %rax, %rcx
movq -0x418(%rbp), %rax
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0xe0ce
leaq 0x16b6b(%rip), %rax     # 0x24c30
movq %rax, -0x1f8(%rbp)
jmp 0xe13c
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x5160
movq -0x428(%rbp), %rdi
movq %rax, -0x1f8(%rbp)
movq -0x1f0(%rbp), %rcx
movq -0x1f8(%rbp), %rax
notq %rax
addq %rcx, %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rsi
callq 0x57a0
movq %rax, -0x420(%rbp)
jmp 0xe11f
movq -0x420(%rbp), %rax
movb $0x0, (%rax)
jmp 0xe13c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe38b
jmp 0xe13e
movq -0x1f8(%rbp), %rax
movq %rax, -0x440(%rbp)
movq -0x1f0(%rbp), %rax
movq %rax, -0x438(%rbp)
movq -0x10(%rbp), %rdi
callq 0x19ad0
movl %eax, -0x42c(%rbp)
jmp 0xe16b
movl -0x42c(%rbp), %edx
movq -0x438(%rbp), %rsi
movq -0x440(%rbp), %rdi
callq 0x13870
movq %rax, -0x208(%rbp)
cmpq $-0x1, -0x200(%rbp)
je 0xe1bb
movq -0x200(%rbp), %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x57a0
movq %rax, -0x448(%rbp)
jmp 0xe1b1
movq -0x448(%rbp), %rax
movb $0x2f, (%rax)
cmpl $-0x1, -0x208(%rbp)
jne 0xe2d8
testb $0x1, -0x191(%rbp)
je 0xe1de
cmpl $0x2, -0x204(%rbp)
je 0xe2d3
movb $0x1, -0x249(%rbp)
movl $0x40, %edi
callq 0x51c0
movq %rax, -0x450(%rbp)
leaq 0x16c8a(%rip), %rdx     # 0x24e87
leaq -0x248(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x19b40
jmp 0xe212
movl -0x204(%rbp), %edi
callq 0x5100
movq %rax, %rdx
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x19af0
jmp 0xe235
movq -0x3a0(%rbp), %rsi
movq -0x450(%rbp), %rdi
leaq -0x228(%rbp), %rdx
callq 0x19bc0
jmp 0xe251
movq -0x450(%rbp), %rdi
movb $0x0, -0x249(%rbp)
leaq 0x23a7a(%rip), %rsi     # 0x31ce0
leaq 0xb993(%rip), %rdx      # 0x19c00
callq 0x56b0
jmp 0xe848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe2b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe2ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x5280
leaq -0x248(%rbp), %rdi
callq 0x5280
testb $0x1, -0x249(%rbp)
jne 0xe2c2
jmp 0xe2ce
movq -0x450(%rbp), %rdi
callq 0x52f0
jmp 0xe38b
jmp 0xe37a
movl -0x204(%rbp), %esi
leaq -0x268(%rbp), %rdi
callq 0x19c30
movq -0x10(%rbp), %rax
movq %rax, -0x458(%rbp)
leaq -0x288(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x5180
jmp 0xe30a
movq -0x458(%rbp), %rdi
movl -0x208(%rbp), %ecx
leaq -0x288(%rbp), %rsi
leaq -0x268(%rbp), %rdx
callq 0x13e50
jmp 0xe32c
leaq -0x288(%rbp), %rdi
callq 0x5280
leaq -0x268(%rbp), %rdi
callq 0x21c60
jmp 0xe37a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe36c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x5280
leaq -0x268(%rbp), %rdi
callq 0x21c60
jmp 0xe38b
leaq -0x1c8(%rbp), %rdi
callq 0x5280
jmp 0xe4a1
leaq -0x1c8(%rbp), %rdi
callq 0x5280
jmp 0xe4b2
movq -0x10(%rbp), %rdi
callq 0x13f00
movq %rax, -0x460(%rbp)
jmp 0xe3ae
movq -0x460(%rbp), %rsi
movl -0x50(%rbp), %edx
leaq -0x298(%rbp), %rdi
callq 0x19aa0
jmp 0xe3c6
movb $0x1, -0x2ba(%rbp)
movl $0x70, %edi
callq 0x51c0
movq %rax, -0x470(%rbp)
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x5700
movq -0x468(%rbp), %rdx
leaq 0x16a98(%rip), %rsi     # 0x24e97
leaq -0x2b8(%rbp), %rdi
callq 0x10f00
jmp 0xe40d
movq -0x3a0(%rbp), %rsi
movq -0x470(%rbp), %rdi
leaq -0x2b8(%rbp), %rdx
leaq -0x298(%rbp), %rcx
callq 0x19cd0
jmp 0xe430
movq -0x470(%rbp), %rdi
movb $0x0, -0x2ba(%rbp)
leaq 0x238ab(%rip), %rsi     # 0x31cf0
leaq 0xb124(%rip), %rdx      # 0x19570
callq 0x56b0
jmp 0xe848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe47c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x5280
leaq -0x2b9(%rbp), %rdi
callq 0x5440
testb $0x1, -0x2ba(%rbp)
jne 0xe493
jmp 0xe49f
movq -0x470(%rbp), %rdi
callq 0x52f0
jmp 0xe4b2
leaq -0x188(%rbp), %rdi
callq 0x5280
jmp 0xd9e6
leaq -0x188(%rbp), %rdi
callq 0x5280
jmp 0xe836
movq -0x150(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq -0x2e8(%rbp), %rdx
leaq -0x2e0(%rbp), %rdi
leaq -0x148(%rbp), %rsi
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %r8d
callq 0x19760
movq -0x148(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x300(%rbp)
movq -0x2f8(%rbp), %rdi
movq -0x300(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x19660
movq %rax, -0x2f0(%rbp)
movq -0x2f0(%rbp), %rax
movq %rax, -0x148(%rbp)
movb $0x0, -0x305(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x56a0
testb $0x1, %al
jne 0xe553
jmp 0xe55f
movb $0x1, -0x305(%rbp)
jmp 0xe611
leaq -0x148(%rbp), %rdi
callq 0x172b0
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0xe582
movl $0x0, -0x304(%rbp)
jmp 0xe60f
leaq -0x148(%rbp), %rdi
callq 0x172b0
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0xe5a2
movl $0x1, -0x304(%rbp)
jmp 0xe60d
leaq -0x148(%rbp), %rdi
callq 0x172b0
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0xe604
leaq -0x148(%rbp), %rdi
callq 0x19740
leaq -0x148(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x19700
testb $0x1, %al
jne 0xe5db
jmp 0xe5fb
leaq -0x148(%rbp), %rdi
callq 0x172b0
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0xe5fb
movl $0x2, -0x304(%rbp)
jmp 0xe602
movb $0x1, -0x305(%rbp)
jmp 0xe60b
movb $0x1, -0x305(%rbp)
jmp 0xe60d
jmp 0xe60f
jmp 0xe611
testb $0x1, -0x305(%rbp)
je 0xe70e
movb $0x1, -0x341(%rbp)
movl $0x70, %edi
callq 0x51c0
movq %rax, -0x480(%rbp)
leaq -0x329(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x5700
movq -0x478(%rbp), %rdx
leaq 0x16851(%rip), %rsi     # 0x24ea8
leaq -0x328(%rbp), %rdi
callq 0x10f00
jmp 0xe665
movq -0x10(%rbp), %rsi
leaq -0x340(%rbp), %rdi
callq 0x194b0
jmp 0xe677
movq -0x3a0(%rbp), %rsi
movq -0x480(%rbp), %rdi
leaq -0x328(%rbp), %rdx
leaq -0x340(%rbp), %rcx
callq 0x19cd0
jmp 0xe69a
movq -0x480(%rbp), %rdi
movb $0x0, -0x341(%rbp)
leaq 0x23641(%rip), %rsi     # 0x31cf0
leaq 0xaeba(%rip), %rdx      # 0x19570
callq 0x56b0
jmp 0xe848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe6e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x5280
leaq -0x329(%rbp), %rdi
callq 0x5440
testb $0x1, -0x341(%rbp)
jne 0xe6fd
jmp 0xe709
movq -0x480(%rbp), %rdi
callq 0x52f0
jmp 0xe811
leaq -0x148(%rbp), %rdi
callq 0x19740
movq (%rax), %rax
movq %rax, -0x358(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x360(%rbp)
movq -0x358(%rbp), %rdi
movq -0x360(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x19660
movq %rax, -0x350(%rbp)
movq -0x350(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x10(%rbp), %rdi
callq 0x13f00
movq %rax, -0x488(%rbp)
jmp 0xe770
movq -0x488(%rbp), %rsi
movl -0x50(%rbp), %edx
leaq -0x370(%rbp), %rdi
callq 0x19aa0
jmp 0xe788
movq -0x398(%rbp), %rdi
movups -0x370(%rbp), %xmm0
movaps %xmm0, -0x380(%rbp)
movl -0x304(%rbp), %r9d
movq -0x148(%rbp), %rax
movq %rax, -0x388(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x390(%rbp)
movl -0x380(%rbp), %edx
movq -0x378(%rbp), %rcx
movq -0x388(%rbp), %rsi
movq -0x390(%rbp), %r8
movq %rsp, %rax
movq %r8, 0x8(%rax)
movq %rsi, (%rax)
leaq -0x40(%rbp), %rsi
leaq -0x2e0(%rbp), %r8
callq 0xeb10
jmp 0xe7f7
leaq -0x2e0(%rbp), %rdi
callq 0x5280
jmp 0xe81f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x5280
jmp 0xe836
jmp 0xd9e6
leaq -0x40(%rbp), %rdi
callq 0x5280
addq $0x4a0, %rsp            # imm = 0x4A0
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x5280
movq -0x48(%rbp), %rdi
callq 0x56f0
nopl (%rax,%rax)