// File: davmac314[P]dinit/src/includes/dinit-env.h
// Function: void read_env_file_inline<main::$_0, main::$_1>(char const*, bool, environment&, bool, main::$_0&, main::$_1&)
inline void read_env_file_inline(const char *env_file_path, bool log_warnings, environment &env,
        bool throw_on_open_failure, LOG_INV_SETTING &log_inv_setting, LOG_BAD_COMMAND &log_bad_cmd)
{
    std::ifstream env_file(env_file_path);
    if (!env_file) {
        if (throw_on_open_failure) {
            throw std::system_error(errno, std::generic_category());
        }
        return;
    }

    env_file.exceptions(std::ios::badbit);

    auto &clocale = std::locale::classic();
    std::string line;
    int linenum = 0;

    while (std::getline(env_file, line)) {
        linenum++;
        auto lpos = line.begin();
        auto lend = line.end();
        while (lpos != lend && std::isspace(*lpos, clocale)) {
            ++lpos;
        }

        if (lpos == lend) continue; // empty line

        if (*lpos == '#') {
            continue;
        }
        if (*lpos == '=') {
            if (log_warnings) {
                log_inv_setting(linenum);
            }
            continue;
        }

        // "!COMMAND" form.
        if (*lpos == '!') {
            ++lpos; // lpos = first char of command
            auto epos = lpos;
            do {
                ++epos;
            } while(epos != lend && !std::isspace(*epos, clocale));

            const char *lpos_p = line.data() + (lpos - line.begin());
            string_view cmd {lpos_p, (size_t)(epos - lpos)};

            std::vector<string_view> cmd_args;
            while (epos != lend) {
                // skip whitespace
                while (std::isspace(*epos, clocale)) {
                    ++epos;
                    if (epos == lend) goto process_cmd; // no more args
                }
                // all non-ws is argument until next ws
                const char *arg_begin = line.c_str() + (epos - line.begin());
                auto arg_begin_i = epos;
                while (epos != lend && !std::isspace(*epos)) {
                    ++epos;
                }
                cmd_args.push_back(string_view {arg_begin, (size_t)(epos - arg_begin_i)});
            }

            process_cmd:

            if (cmd == "clear") {
                env.clear_no_inherit();
            }
            else if (cmd == "unset") {
                for (string_view arg : cmd_args) {
                    env.undefine_var(std::string(arg.data(), arg.length()));
                }
            }
            else if (cmd == "import") {
                for (string_view arg : cmd_args) {
                    env.import_parent_var(std::string(arg.data(), arg.length()));
                }
            }
            else if (log_warnings) {
                log_bad_cmd(linenum);
            }

            continue;
        }

        // ENV=VALUE form.
        auto name_begin = lpos++;
        // skip until '=' or whitespace:
        while (lpos != lend && *lpos != '=' && !std::isspace(*lpos, clocale)) ++lpos;
        auto name_end = lpos;
        //  skip whitespace:
        while (lpos != lend && std::isspace(*lpos, clocale)) ++lpos;
        if (lpos == lend || *lpos != '=') {
            if (log_warnings) {
                log_inv_setting(linenum);
            }
            continue;
        }

        ++lpos;
        auto val_begin = lpos;
        auto val_end = lend;

        if (val_begin != (name_end + 1) || name_begin != line.begin()) {
            // there are spaces that we need to eliminate
            std::string name_and_val;
            name_and_val.reserve((name_end - name_begin) + 1 + (val_end - val_begin));
            name_and_val = line.substr(name_begin - line.begin(), name_end - name_begin);
            name_and_val.append(1, '=');
            name_and_val.append(val_begin, val_end);
            env.set_var(std::move(name_and_val));
        }
        else {
            line.shrink_to_fit();
            env.set_var(std::move(line));
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x520, %rsp            # imm = 0x520
movb %cl, %al
movb %sil, %cl
movq %rdi, -0x8(%rbp)
andb $0x1, %cl
movb %cl, -0x9(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rsi
leaq -0x238(%rbp), %rdi
movl $0x8, %edx
callq 0x58b0
movq -0x238(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x238(%rbp,%rax), %rdi
callq 0x5200
movb %al, -0x421(%rbp)
jmp 0x7f30
movb -0x421(%rbp), %al
testb $0x1, %al
jne 0x7f3f
jmp 0x7ff2
testb $0x1, -0x19(%rbp)
je 0x7fe3
movl $0x20, %edi
callq 0x5220
movq %rax, -0x430(%rbp)
movq %rax, -0x438(%rbp)
callq 0x5070
movl (%rax), %eax
movl %eax, -0x428(%rbp)
callq 0x5240
movq -0x430(%rbp), %rdi
movl -0x428(%rbp), %esi
movq %rax, %rdx
callq 0x27e10
jmp 0x7f8a
movq -0x438(%rbp), %rdi
movq 0x48f88(%rip), %rsi     # 0x50f20
movq 0x48fb9(%rip), %rdx     # 0x50f58
callq 0x5840
jmp 0x8be8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x8bd0
movq -0x438(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
callq 0x53a0
jmp 0x8bd0
movl $0x1, -0x248(%rbp)
jmp 0x8baf
movq -0x238(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x238(%rbp,%rax), %rdi
movl $0x1, %esi
callq 0x5150
jmp 0x8011
callq 0x56c0
movq %rax, -0x440(%rbp)
jmp 0x801f
movq -0x440(%rbp), %rax
movq %rax, -0x250(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x5700
movl $0x0, -0x274(%rbp)
leaq -0x238(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x50e0
movq %rax, -0x448(%rbp)
jmp 0x805f
movq -0x448(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x5630
movb %al, -0x449(%rbp)
jmp 0x807d
movb -0x449(%rbp), %al
testb $0x1, %al
jne 0x808c
jmp 0x8b99
movl -0x274(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x274(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x5430
movq %rax, -0x280(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x52e0
movq %rax, -0x288(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27eb0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x44a(%rbp)
jne 0x80e5
jmp 0x8116
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %edi
movq -0x250(%rbp), %rsi
callq 0x27ef0
movb %al, -0x44b(%rbp)
jmp 0x8108
movb -0x44b(%rbp), %al
movb %al, -0x44a(%rbp)
jmp 0x8116
movb -0x44a(%rbp), %al
testb $0x1, %al
jne 0x8122
jmp 0x8147
leaq -0x280(%rbp), %rdi
callq 0x27f30
jmp 0x80c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x8bc4
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27f50
testb $0x1, %al
jne 0x8160
jmp 0x8165
jmp 0x8043
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x817e
jmp 0x8043
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x81b0
testb $0x1, -0x9(%rbp)
je 0x81ab
movq -0x28(%rbp), %rdi
movl -0x274(%rbp), %esi
callq 0xcda0
jmp 0x81a9
jmp 0x81ab
jmp 0x8043
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %eax
cmpl $0x21, %eax
jne 0x87dc
leaq -0x280(%rbp), %rdi
callq 0x27f30
movq -0x280(%rbp), %rax
movq %rax, -0x290(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x27f30
leaq -0x290(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27eb0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x44c(%rbp)
jne 0x8212
jmp 0x8243
leaq -0x290(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %edi
movq -0x250(%rbp), %rsi
callq 0x27ef0
movb %al, -0x44d(%rbp)
jmp 0x8235
movb -0x44d(%rbp), %al
xorb $-0x1, %al
movb %al, -0x44c(%rbp)
movb -0x44c(%rbp), %al
testb $0x1, %al
jne 0x81e2
leaq -0x270(%rbp), %rdi
callq 0x52d0
movq %rax, -0x460(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x5430
movq %rax, -0x2a0(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x27f90
movq %rax, %rcx
movq -0x460(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x298(%rbp)
movq -0x298(%rbp), %rax
movq %rax, -0x458(%rbp)
leaq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x27f90
movq -0x458(%rbp), %rsi
movq %rax, %rdx
leaq -0x2b0(%rbp), %rdi
callq 0x15030
leaq -0x2c8(%rbp), %rdi
callq 0x27fd0
leaq -0x290(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27eb0
testb $0x1, %al
jne 0x82f9
jmp 0x8480
jmp 0x82fb
leaq -0x290(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %edi
movq -0x250(%rbp), %rsi
callq 0x27ef0
movb %al, -0x461(%rbp)
jmp 0x831e
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0x832a
jmp 0x836d
leaq -0x290(%rbp), %rdi
callq 0x27f30
leaq -0x290(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27f50
testb $0x1, %al
jne 0x834f
jmp 0x836b
jmp 0x8482
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x87cb
jmp 0x82fb
leaq -0x270(%rbp), %rdi
callq 0x51b0
movq %rax, -0x470(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x5430
movq %rax, -0x2d8(%rbp)
leaq -0x290(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x27f90
movq %rax, %rcx
movq -0x470(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x2d0(%rbp)
movq -0x290(%rbp), %rax
movq %rax, -0x2e0(%rbp)
leaq -0x290(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27eb0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x471(%rbp)
jne 0x83ec
jmp 0x840e
leaq -0x290(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %edi
callq 0x5090
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x471(%rbp)
movb -0x471(%rbp), %al
testb $0x1, %al
jne 0x841a
jmp 0x8428
leaq -0x290(%rbp), %rdi
callq 0x27f30
jmp 0x83c8
movq -0x2d0(%rbp), %rax
movq %rax, -0x488(%rbp)
leaq -0x290(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x27f90
movq -0x488(%rbp), %rsi
movq %rax, %rdx
leaq -0x2f0(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x15030
movq -0x480(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x27ff0
jmp 0x847b
jmp 0x82dd
jmp 0x8482
leaq -0x2b0(%rbp), %rdi
leaq 0x31785(%rip), %rsi     # 0x39c15
callq 0x28020
testb $0x1, %al
jne 0x849b
jmp 0x84a9
movq -0x18(%rbp), %rdi
callq 0x14320
jmp 0x87b0
leaq -0x2b0(%rbp), %rdi
leaq 0x31764(%rip), %rsi     # 0x39c1b
callq 0x28020
testb $0x1, %al
jne 0x84c5
jmp 0x8621
leaq -0x2c8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x280b0
movq %rax, -0x300(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x280e0
movq %rax, -0x308(%rbp)
leaq -0x300(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x28110
testb $0x1, %al
jne 0x8515
jmp 0x861c
leaq -0x300(%rbp), %rdi
callq 0x28150
movups (%rax), %xmm0
movaps %xmm0, -0x320(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x4b0(%rbp)
leaq -0x320(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x1ded0
movq -0x4a8(%rbp), %rdi
movq %rax, -0x4a0(%rbp)
callq 0x1b660
movq %rax, -0x498(%rbp)
leaq -0x341(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x5880
movq -0x4a0(%rbp), %rsi
movq -0x498(%rbp), %rdx
movq -0x490(%rbp), %rcx
leaq -0x340(%rbp), %rdi
callq 0x5570
jmp 0x8599
movq -0x4b0(%rbp), %rdi
leaq -0x340(%rbp), %rsi
xorl %edx, %edx
callq 0x28170
jmp 0x85b0
leaq -0x340(%rbp), %rdi
callq 0x5320
leaq -0x341(%rbp), %rdi
callq 0x5520
leaq -0x300(%rbp), %rdi
callq 0x28270
jmp 0x84f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x860b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x5320
leaq -0x341(%rbp), %rdi
callq 0x5520
jmp 0x87cb
jmp 0x87ae
leaq -0x2b0(%rbp), %rdi
leaq 0x315f2(%rip), %rsi     # 0x39c21
callq 0x28020
testb $0x1, %al
jne 0x863d
jmp 0x8791
leaq -0x2c8(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x350(%rbp), %rdi
callq 0x280b0
movq %rax, -0x358(%rbp)
movq -0x350(%rbp), %rdi
callq 0x280e0
movq %rax, -0x360(%rbp)
leaq -0x358(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x28110
testb $0x1, %al
jne 0x868d
jmp 0x878f
leaq -0x358(%rbp), %rdi
callq 0x28150
movups (%rax), %xmm0
movaps %xmm0, -0x370(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x4d8(%rbp)
leaq -0x370(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x1ded0
movq -0x4d0(%rbp), %rdi
movq %rax, -0x4c8(%rbp)
callq 0x1b660
movq %rax, -0x4c0(%rbp)
leaq -0x391(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x5880
movq -0x4c8(%rbp), %rsi
movq -0x4c0(%rbp), %rdx
movq -0x4b8(%rbp), %rcx
leaq -0x390(%rbp), %rdi
callq 0x5570
jmp 0x8711
movq -0x4d8(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x28290
jmp 0x8726
leaq -0x390(%rbp), %rdi
callq 0x5320
leaq -0x391(%rbp), %rdi
callq 0x5520
leaq -0x358(%rbp), %rdi
callq 0x28270
jmp 0x8671
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x8781
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x390(%rbp), %rdi
callq 0x5320
leaq -0x391(%rbp), %rdi
callq 0x5520
jmp 0x87cb
jmp 0x87ac
testb $0x1, -0x9(%rbp)
je 0x87aa
movq -0x30(%rbp), %rdi
movl -0x274(%rbp), %esi
callq 0xce50
jmp 0x87a8
jmp 0x87aa
jmp 0x87ac
jmp 0x87ae
jmp 0x87b0
movl $0x2, -0x248(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x28300
jmp 0x8043
leaq -0x2c8(%rbp), %rdi
callq 0x28300
jmp 0x8bc4
leaq -0x280(%rbp), %rdi
xorl %esi, %esi
callq 0x28360
movq %rax, -0x3a0(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27eb0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4d9(%rbp)
jne 0x8815
jmp 0x8862
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x3d, %ecx
movb %al, -0x4d9(%rbp)
je 0x8862
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %edi
movq -0x250(%rbp), %rsi
callq 0x27ef0
movb %al, -0x4da(%rbp)
jmp 0x8854
movb -0x4da(%rbp), %al
xorb $-0x1, %al
movb %al, -0x4d9(%rbp)
movb -0x4d9(%rbp), %al
testb $0x1, %al
jne 0x886e
jmp 0x887f
leaq -0x280(%rbp), %rdi
callq 0x27f30
jmp 0x87f1
movq -0x280(%rbp), %rax
movq %rax, -0x3a8(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27eb0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x4db(%rbp)
jne 0x88b1
jmp 0x88e2
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %edi
movq -0x250(%rbp), %rsi
callq 0x27ef0
movb %al, -0x4dc(%rbp)
jmp 0x88d4
movb -0x4dc(%rbp), %al
movb %al, -0x4db(%rbp)
jmp 0x88e2
movb -0x4db(%rbp), %al
testb $0x1, %al
jne 0x88ee
jmp 0x88fc
leaq -0x280(%rbp), %rdi
callq 0x27f30
jmp 0x888d
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x27f50
testb $0x1, %al
jne 0x8927
leaq -0x280(%rbp), %rdi
callq 0x1b1b0
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x8945
testb $0x1, -0x9(%rbp)
je 0x8940
movq -0x28(%rbp), %rdi
movl -0x274(%rbp), %esi
callq 0xcda0
jmp 0x893e
jmp 0x8940
jmp 0x8043
leaq -0x280(%rbp), %rdi
callq 0x27f30
movq -0x280(%rbp), %rax
movq %rax, -0x3b0(%rbp)
movq -0x288(%rbp), %rax
movq %rax, -0x3b8(%rbp)
leaq -0x3a8(%rbp), %rdi
movl $0x1, %esi
callq 0x283a0
movq %rax, -0x3c0(%rbp)
leaq -0x3b0(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x27eb0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x4dd(%rbp)
jne 0x89d3
leaq -0x270(%rbp), %rdi
callq 0x5430
movq %rax, -0x3c8(%rbp)
leaq -0x3a0(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x27eb0
movb %al, -0x4dd(%rbp)
movb -0x4dd(%rbp), %al
testb $0x1, %al
jne 0x89e2
jmp 0x8b6b
leaq -0x3e8(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x5700
leaq -0x3a8(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x27f90
movq %rax, -0x4e8(%rbp)
leaq -0x3b8(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x27f90
movq -0x4f0(%rbp), %rdi
movq %rax, %rcx
movq -0x4e8(%rbp), %rax
leaq 0x1(%rax,%rcx), %rsi
callq 0x57b0
jmp 0x8a3f
leaq -0x270(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0x5430
movq %rax, -0x410(%rbp)
leaq -0x3a0(%rbp), %rdi
movq %rdi, -0x508(%rbp)
leaq -0x410(%rbp), %rsi
callq 0x27f90
movq -0x508(%rbp), %rsi
movq %rax, -0x4f8(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x27f90
movq -0x500(%rbp), %rsi
movq -0x4f8(%rbp), %rdx
movq %rax, %rcx
leaq -0x408(%rbp), %rdi
callq 0x54c0
jmp 0x8aac
leaq -0x3e8(%rbp), %rdi
movq %rdi, -0x510(%rbp)
leaq -0x408(%rbp), %rsi
movq %rsi, -0x518(%rbp)
callq 0x5600
movq -0x518(%rbp), %rdi
callq 0x5320
movq -0x510(%rbp), %rdi
movl $0x1, %esi
movl $0x3d, %edx
callq 0x5510
jmp 0x8af1
movq -0x3b0(%rbp), %rax
movq %rax, -0x418(%rbp)
movq -0x3b8(%rbp), %rax
movq %rax, -0x420(%rbp)
movq -0x418(%rbp), %rsi
movq -0x420(%rbp), %rdx
leaq -0x3e8(%rbp), %rdi
callq 0x283e0
jmp 0x8b29
movq -0x18(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
xorl %edx, %edx
callq 0x162b0
jmp 0x8b3d
leaq -0x3e8(%rbp), %rdi
callq 0x5320
jmp 0x8b94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x5320
jmp 0x8bc4
leaq -0x270(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x5910
movq -0x520(%rbp), %rsi
movq -0x18(%rbp), %rdi
xorl %edx, %edx
callq 0x162b0
jmp 0x8b92
jmp 0x8b94
jmp 0x8043
leaq -0x270(%rbp), %rdi
callq 0x5320
movl $0x0, -0x248(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x5110
addq $0x520, %rsp            # imm = 0x520
popq %rbp
retq
leaq -0x270(%rbp), %rdi
callq 0x5320
leaq -0x238(%rbp), %rdi
callq 0x5110
movq -0x240(%rbp), %rdi
callq 0x5870
nopl (%rax,%rax)