// File: establishment[P]sandman/src/bin.cpp
// Function: ParseCommandLineArguments(int, char**)
ProcessConfig ParseCommandLineArguments(int argc, char** argv) {
    CommandLineConfig config;
    auto options = AddOptions(config);

    vector<string> positional;
    options.add_options()("positional", " -- run command", cxxopts::value<vector<string>>(positional));

    options.parse_positional("positional");
    try {
        options.parse(argc, argv);

        if (options.count("help")) {
            std::cout << options.help({"", "Config", "Time", "Memory", "Redirects", "Rules"}) << std::endl;
            exit(0);
        }
    } catch (const cxxopts::option_not_exists_exception& e) {
        auto GetOption = [](const string& exception_message) {
            string result = "";
            bool quoted = false;
            for (char32_t  c : exception_message) {
                if (c == 4294967266) {
                    quoted = false;
                }               

                if (quoted) {
                    result += c;
                }

                if (c == 4294967192) {
                    quoted = true;
                }
            }

            return result;
        };
        
        
        std::cout << e.what() << u8". Did you mean ‘" << ClosestOption(GetOption(e.what())) << u8"’?\n";
        exit(1);
    } catch (const cxxopts::OptionException& e) {
        std::cout << "error parsing options: " << e.what() << "\n";
        exit(1);
    }

    ProcessConfig p_config;
    p_config = config;
   
    if (options.count("interactive")) {
        p_config.swapPipeOpenOrder = true;
    }

    if (options.count("full-env")) {
        p_config.environment.passEnvironment = true;
    }

    if (options.count("share-net")) {
        p_config.shareNetwork = true;
    }

    if (options.count("init")) {
        p_config.mode = ProcessConfig::kInit;
    }

    if (options.count("run")) {
        p_config.mode = ProcessConfig::kRun;
    }

    if (options.count("cleanup")) {
        p_config.mode = ProcessConfig::kCleanup;
    }

    /// convert times to ms
    p_config.cpuTimeLimitMs = 1000.0 * config.cpuTimeLimitS;
    p_config.wallTimeLimitMs = 1000.0 * config.wallTimeLimitS;
    p_config.extraTimeMs = 1000.0 * config.extraTimeS;

    /// add positional arguments
    for (const string& word : positional) {
        p_config.runCommand += "\"" + word + "\"" + " ";
    }

    return p_config;
}

// Assembly:
subq $0x8a8, %rsp            # imm = 0x8A8
movq %rdi, 0x190(%rsp)
movq %rdi, %rax
movq %rax, 0x198(%rsp)
movq %rdi, 0x8a0(%rsp)
movl %esi, 0x89c(%rsp)
movq %rdx, 0x890(%rsp)
leaq 0x708(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0xa4650
movq 0x1a0(%rsp), %rsi
leaq 0x610(%rsp), %rdi
callq 0x976f0
jmp 0x9e71d
leaq 0x5e8(%rsp), %rdi
callq 0xa2570
leaq 0x59f(%rsp), %rdi
movq %rdi, 0x188(%rsp)
callq 0x8ca50
movq 0x188(%rsp), %rdx
leaq 0x56a5e(%rip), %rsi     # 0xf51ac
leaq 0x5a0(%rsp), %rdi
callq 0xa0a90
jmp 0x9e75d
leaq 0x5c0(%rsp), %rdi
leaq 0x610(%rsp), %rsi
leaq 0x5a0(%rsp), %rdx
callq 0xa3f80
jmp 0x9e77c
leaq 0x577(%rsp), %rdi
movq %rdi, 0x180(%rsp)
callq 0x8ca50
movq 0x180(%rsp), %rdx
leaq 0x57707(%rip), %rsi     # 0xf5ea7
leaq 0x578(%rsp), %rdi
callq 0xa0a90
jmp 0x9e7af
leaq 0x54f(%rsp), %rdi
movq %rdi, 0x178(%rsp)
callq 0x8ca50
movq 0x178(%rsp), %rdx
leaq 0x576df(%rip), %rsi     # 0xf5eb2
leaq 0x550(%rsp), %rdi
callq 0xa0a90
jmp 0x9e7e2
leaq 0x528(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
callq 0xa4580
jmp 0x9e7f9
leaq 0x538(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0xa43a0
leaq 0x507(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x8ca50
movq 0x170(%rsp), %rdx
leaq 0x5697a(%rip), %rsi     # 0xf51ac
leaq 0x508(%rsp), %rdi
callq 0xa0a90
jmp 0x9e841
leaq 0x5c0(%rsp), %rdi
leaq 0x578(%rsp), %rsi
leaq 0x550(%rsp), %rdx
leaq 0x538(%rsp), %rcx
leaq 0x508(%rsp), %r8
callq 0xa4020
jmp 0x9e870
leaq 0x508(%rsp), %rdi
callq 0x8cbd8
leaq 0x507(%rsp), %rdi
callq 0x8c630
leaq 0x538(%rsp), %rdi
callq 0xa43d0
leaq 0x528(%rsp), %rdi
callq 0xa43e0
leaq 0x550(%rsp), %rdi
callq 0x8cbd8
leaq 0x54f(%rsp), %rdi
callq 0x8c630
leaq 0x578(%rsp), %rdi
callq 0x8cbd8
leaq 0x577(%rsp), %rdi
callq 0x8c630
leaq 0x5c0(%rsp), %rdi
callq 0xa43f0
leaq 0x5a0(%rsp), %rdi
callq 0x8cbd8
leaq 0x59f(%rsp), %rdi
callq 0x8c630
leaq 0x4df(%rsp), %rdi
movq %rdi, 0x168(%rsp)
callq 0x8ca50
movq 0x168(%rsp), %rdx
leaq 0x57584(%rip), %rsi     # 0xf5ea7
leaq 0x4e0(%rsp), %rdi
callq 0xa0a90
jmp 0x9e932
leaq 0x610(%rsp), %rdi
leaq 0x4e0(%rsp), %rsi
callq 0xa4660
jmp 0x9e949
leaq 0x4e0(%rsp), %rdi
callq 0x8cbd8
leaq 0x4df(%rsp), %rdi
callq 0x8c630
leaq 0x610(%rsp), %rdi
leaq 0x89c(%rsp), %rsi
leaq 0x890(%rsp), %rdx
callq 0xa4820
jmp 0x9e982
leaq 0x4b7(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0x8ca50
movq 0x160(%rsp), %rdx
leaq 0x574fc(%rip), %rsi     # 0xf5ea2
leaq 0x4b8(%rsp), %rdi
callq 0xa0a90
jmp 0x9e9b5
leaq 0x610(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
callq 0xa58e0
movl %eax, 0x15c(%rsp)
jmp 0x9e9d3
leaq 0x4b8(%rsp), %rdi
callq 0x8cbd8
leaq 0x4b7(%rsp), %rdi
callq 0x8c630
movl 0x15c(%rsp), %eax
cmpl $0x0, %eax
je 0x9f337
movb $0x1, 0x399(%rsp)
leaq 0x3a8(%rsp), %rax
movq %rax, 0x148(%rsp)
movq %rax, 0x3a0(%rsp)
leaq 0x39f(%rsp), %rdi
movq %rdi, 0x150(%rsp)
callq 0x8ca50
movq 0x148(%rsp), %rdi
movq 0x150(%rsp), %rdx
leaq 0x56763(%rip), %rsi     # 0xf51ac
callq 0xa0a90
jmp 0x9ea50
leaq 0x3c8(%rsp), %rax
movq %rax, 0x138(%rsp)
movq %rax, 0x3a0(%rsp)
leaq 0x39e(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x8ca50
movq 0x138(%rsp), %rdi
movq 0x140(%rsp), %rdx
leaq 0x56d59(%rip), %rsi     # 0xf57ed
callq 0xa0a90
jmp 0x9ea9b
leaq 0x3e8(%rsp), %rax
movq %rax, 0x128(%rsp)
movq %rax, 0x3a0(%rsp)
leaq 0x39d(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x8ca50
movq 0x128(%rsp), %rdi
movq 0x130(%rsp), %rdx
leaq 0x56e35(%rip), %rsi     # 0xf5914
callq 0xa0a90
jmp 0x9eae6
leaq 0x408(%rsp), %rax
movq %rax, 0x118(%rsp)
movq %rax, 0x3a0(%rsp)
leaq 0x39c(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x8ca50
movq 0x118(%rsp), %rdi
movq 0x120(%rsp), %rdx
leaq 0x56e9e(%rip), %rsi     # 0xf59c8
callq 0xa0a90
jmp 0x9eb31
leaq 0x428(%rsp), %rax
movq %rax, 0x108(%rsp)
movq %rax, 0x3a0(%rsp)
leaq 0x39b(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0x8ca50
movq 0x108(%rsp), %rdi
movq 0x110(%rsp), %rdx
leaq 0x56ed1(%rip), %rsi     # 0xf5a46
callq 0xa0a90
jmp 0x9eb7c
leaq 0x448(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq %rax, 0x3a0(%rsp)
leaq 0x39a(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x8ca50
movq 0xf8(%rsp), %rdi
movq 0x100(%rsp), %rdx
leaq 0x56823(%rip), %rsi     # 0xf53e3
callq 0xa0a90
jmp 0x9ebc7
movb $0x0, 0x399(%rsp)
leaq 0x3a8(%rsp), %rax
movq %rax, 0x468(%rsp)
movq $0x6, 0x470(%rsp)
leaq 0x398(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0xa3950
movq 0xf0(%rsp), %rcx
movq 0x468(%rsp), %rsi
movq 0x470(%rsp), %rdx
leaq 0x478(%rsp), %rdi
callq 0xa3960
jmp 0x9ec27
leaq 0x490(%rsp), %rdi
leaq 0x610(%rsp), %rsi
leaq 0x478(%rsp), %rdx
callq 0xa5970
jmp 0x9ec46
movq 0x7f323(%rip), %rdi     # 0x11df70
leaq 0x490(%rsp), %rsi
callq 0x8c4f0
movq %rax, 0xe8(%rsp)
jmp 0x9ec64
movq 0xe8(%rsp), %rdi
movq 0x7f2bd(%rip), %rsi     # 0x11df30
callq 0x8c600
jmp 0x9ec7a
leaq 0x490(%rsp), %rdi
callq 0x8cbd8
leaq 0x478(%rsp), %rdi
callq 0xa1d50
leaq 0x398(%rsp), %rdi
callq 0xa39f0
leaq 0x3a8(%rsp), %rax
movq %rax, 0xd8(%rsp)
addq $0xc0, %rax
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0xd0(%rsp)
callq 0x8cbd8
movq 0xd8(%rsp), %rcx
movq 0xd0(%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0xe0(%rsp)
jne 0x9ecbf
leaq 0x39a(%rsp), %rdi
callq 0x8c630
leaq 0x39b(%rsp), %rdi
callq 0x8c630
leaq 0x39c(%rsp), %rdi
callq 0x8c630
leaq 0x39d(%rsp), %rdi
callq 0x8c630
leaq 0x39e(%rsp), %rdi
callq 0x8c630
leaq 0x39f(%rsp), %rdi
callq 0x8c630
xorl %edi, %edi
callq 0x8c700
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9fbb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9ee89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9ee7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9ee62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9ee48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9ee3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9ee14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x508(%rsp), %rdi
callq 0x8cbd8
leaq 0x507(%rsp), %rdi
callq 0x8c630
leaq 0x538(%rsp), %rdi
callq 0xa43d0
leaq 0x528(%rsp), %rdi
callq 0xa43e0
leaq 0x550(%rsp), %rdi
callq 0x8cbd8
leaq 0x54f(%rsp), %rdi
callq 0x8c630
leaq 0x578(%rsp), %rdi
callq 0x8cbd8
leaq 0x577(%rsp), %rdi
callq 0x8c630
leaq 0x5c0(%rsp), %rdi
callq 0xa43f0
leaq 0x5a0(%rsp), %rdi
callq 0x8cbd8
leaq 0x59f(%rsp), %rdi
callq 0x8c630
jmp 0x9fb9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9eed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x4e0(%rsp), %rdi
callq 0x8cbd8
leaq 0x4df(%rsp), %rdi
callq 0x8c630
jmp 0x9fb9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f14a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9ef34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x4b8(%rsp), %rdi
callq 0x8cbd8
leaq 0x4b7(%rsp), %rdi
callq 0x8c630
jmp 0x9f14a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f0da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f0cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f0c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f0b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f0a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f099
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f036
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f029
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x490(%rsp), %rdi
callq 0x8cbd8
leaq 0x478(%rsp), %rdi
callq 0xa1d50
leaq 0x398(%rsp), %rdi
callq 0xa39f0
leaq 0x3a8(%rsp), %rax
movq %rax, 0xc0(%rsp)
addq $0xc0, %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0xb8(%rsp)
callq 0x8cbd8
movq 0xc0(%rsp), %rcx
movq 0xb8(%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0xc8(%rsp)
jne 0x9f061
jmp 0x9f099
leaq 0x39a(%rsp), %rdi
callq 0x8c630
leaq 0x39b(%rsp), %rdi
callq 0x8c630
leaq 0x39c(%rsp), %rdi
callq 0x8c630
leaq 0x39d(%rsp), %rdi
callq 0x8c630
leaq 0x39e(%rsp), %rdi
callq 0x8c630
leaq 0x39f(%rsp), %rdi
callq 0x8c630
testb $0x1, 0x399(%rsp)
jne 0x9f0f3
jmp 0x9f148
movq 0x3a0(%rsp), %rax
leaq 0x3a8(%rsp), %rcx
cmpq %rax, %rcx
movq %rax, 0xb0(%rsp)
je 0x9f146
movq 0xb0(%rsp), %rdi
addq $-0x20, %rdi
movq %rdi, 0xa8(%rsp)
callq 0x8cbd8
movq 0xa8(%rsp), %rax
leaq 0x3a8(%rsp), %rcx
cmpq %rcx, %rax
movq %rax, 0xb0(%rsp)
jne 0x9f110
jmp 0x9f148
jmp 0x9f14a
movl 0x604(%rsp), %eax
movl %eax, 0xa4(%rsp)
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x9f2b2
movq 0x608(%rsp), %rdi
callq 0x8c1e0
movq %rax, 0x388(%rsp)
movq 0x388(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
movq 0x7eddb(%rip), %rdi     # 0x11df70
callq 0x8c590
movq %rax, 0x98(%rsp)
jmp 0x9f1a4
movq 0x98(%rsp), %rdi
leaq 0x56d27(%rip), %rsi     # 0xf5eda
callq 0x8c590
movq %rax, 0x90(%rsp)
jmp 0x9f1c2
movq 0x388(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, 0x80(%rsp)
leaq 0x31f(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x8ca50
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
leaq 0x320(%rsp), %rdi
callq 0xa0a90
jmp 0x9f20f
leaq 0x340(%rsp), %rdi
leaq 0x387(%rsp), %rsi
leaq 0x320(%rsp), %rdx
callq 0x9fbe0
jmp 0x9f22e
leaq 0x360(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x97130
jmp 0x9f245
movq 0x90(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0x8c4f0
movq %rax, 0x78(%rsp)
jmp 0x9f261
movq 0x78(%rsp), %rdi
leaq 0x56c80(%rip), %rsi     # 0xf5eed
callq 0x8c590
jmp 0x9f274
leaq 0x360(%rsp), %rdi
callq 0x8cbd8
leaq 0x340(%rsp), %rdi
callq 0x8cbd8
leaq 0x320(%rsp), %rdi
callq 0x8cbd8
leaq 0x31f(%rsp), %rdi
callq 0x8c630
movl $0x1, %edi
callq 0x8c700
movl 0xa4(%rsp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x9fb9f
movq 0x608(%rsp), %rdi
callq 0x8c1e0
movq %rax, 0x390(%rsp)
movq 0x7ec8e(%rip), %rdi     # 0x11df70
leaq 0x56bd9(%rip), %rsi     # 0xf5ec2
callq 0x8c590
movq %rax, 0x70(%rsp)
jmp 0x9f2f5
movq 0x390(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq 0x70(%rsp), %rdi
movq %rax, %rsi
callq 0x8c590
movq %rax, 0x68(%rsp)
jmp 0x9f31a
movq 0x68(%rsp), %rdi
leaq 0x572f4(%rip), %rsi     # 0xf661a
callq 0x8c590
jmp 0x9f32d
movl $0x1, %edi
callq 0x8c700
jmp 0x9f40b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
callq 0x8c980
jmp 0x9f357
jmp 0x9fb9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f3ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f3f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f3e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f3d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x360(%rsp), %rdi
callq 0x8cbd8
leaq 0x340(%rsp), %rdi
callq 0x8cbd8
leaq 0x320(%rsp), %rdi
callq 0x8cbd8
leaq 0x31f(%rsp), %rdi
callq 0x8c630
callq 0x8c980
jmp 0x9f406
jmp 0x9fb9f
movq 0x190(%rsp), %rdi
movb $0x0, 0x31e(%rsp)
callq 0xa1ff0
jmp 0x9f422
movq 0x190(%rsp), %rdi
leaq 0x708(%rsp), %rsi
callq 0xa2db0
jmp 0x9f439
leaq 0x2f7(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x8ca50
movq 0x60(%rsp), %rdx
leaq 0x5630f(%rip), %rsi     # 0xf5766
leaq 0x2f8(%rsp), %rdi
callq 0xa0a90
jmp 0x9f466
leaq 0x610(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0xa58e0
movl %eax, 0x5c(%rsp)
jmp 0x9f481
leaq 0x2f8(%rsp), %rdi
callq 0x8cbd8
leaq 0x2f7(%rsp), %rdi
callq 0x8c630
movl 0x5c(%rsp), %eax
cmpl $0x0, %eax
je 0x9f534
movq 0x190(%rsp), %rax
movb $0x1, 0xe4(%rax)
jmp 0x9f534
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9fb9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9fb92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f522
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x2f8(%rsp), %rdi
callq 0x8cbd8
leaq 0x2f7(%rsp), %rdi
callq 0x8c630
jmp 0x9fb92
leaq 0x2cf(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x8ca50
movq 0x50(%rsp), %rdx
leaq 0x56220(%rip), %rsi     # 0xf5772
leaq 0x2d0(%rsp), %rdi
callq 0xa0a90
jmp 0x9f561
leaq 0x610(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0xa58e0
movl %eax, 0x4c(%rsp)
jmp 0x9f57c
leaq 0x2d0(%rsp), %rdi
callq 0x8cbd8
leaq 0x2cf(%rsp), %rdi
callq 0x8c630
movl 0x4c(%rsp), %eax
cmpl $0x0, %eax
je 0x9f5fc
movq 0x190(%rsp), %rax
movl $0x1, 0x10c(%rax)
jmp 0x9f5fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f5ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x8cbd8
leaq 0x2cf(%rsp), %rdi
callq 0x8c630
jmp 0x9fb92
leaq 0x2a7(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x8ca50
movq 0x40(%rsp), %rdx
leaq 0x56196(%rip), %rsi     # 0xf57b0
leaq 0x2a8(%rsp), %rdi
callq 0xa0a90
jmp 0x9f629
leaq 0x610(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0xa58e0
movl %eax, 0x3c(%rsp)
jmp 0x9f644
leaq 0x2a8(%rsp), %rdi
callq 0x8cbd8
leaq 0x2a7(%rsp), %rdi
callq 0x8c630
movl 0x3c(%rsp), %eax
cmpl $0x0, %eax
je 0x9f6c4
movq 0x190(%rsp), %rax
movl $0x1, 0xe0(%rax)
jmp 0x9f6c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f6b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x8cbd8
leaq 0x2a7(%rsp), %rdi
callq 0x8c630
jmp 0x9fb92
leaq 0x27f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x8ca50
movq 0x30(%rsp), %rdx
leaq 0x5675b(%rip), %rsi     # 0xf5e3d
leaq 0x280(%rsp), %rdi
callq 0xa0a90
jmp 0x9f6f1
leaq 0x610(%rsp), %rdi
leaq 0x280(%rsp), %rsi
callq 0xa58e0
movl %eax, 0x2c(%rsp)
jmp 0x9f70c
leaq 0x280(%rsp), %rdi
callq 0x8cbd8
leaq 0x27f(%rsp), %rdi
callq 0x8c630
movl 0x2c(%rsp), %eax
cmpl $0x0, %eax
je 0x9f788
movq 0x190(%rsp), %rax
movl $0x1, (%rax)
jmp 0x9f788
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f776
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x8cbd8
leaq 0x27f(%rsp), %rdi
callq 0x8c630
jmp 0x9fb92
leaq 0x257(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x8ca50
movq 0x20(%rsp), %rdx
leaq 0x567d0(%rip), %rsi     # 0xf5f76
leaq 0x258(%rsp), %rdi
callq 0xa0a90
jmp 0x9f7b5
leaq 0x610(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0xa58e0
movl %eax, 0x1c(%rsp)
jmp 0x9f7d0
leaq 0x258(%rsp), %rdi
callq 0x8cbd8
leaq 0x257(%rsp), %rdi
callq 0x8c630
movl 0x1c(%rsp), %eax
cmpl $0x0, %eax
je 0x9f84c
movq 0x190(%rsp), %rax
movl $0x2, (%rax)
jmp 0x9f84c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f83a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x258(%rsp), %rdi
callq 0x8cbd8
leaq 0x257(%rsp), %rdi
callq 0x8c630
jmp 0x9fb92
leaq 0x22f(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x8ca50
movq 0x10(%rsp), %rdx
leaq 0x55f5a(%rip), %rsi     # 0xf57c4
leaq 0x230(%rsp), %rdi
callq 0xa0a90
jmp 0x9f879
leaq 0x610(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0xa58e0
movl %eax, 0xc(%rsp)
jmp 0x9f894
leaq 0x230(%rsp), %rdi
callq 0x8cbd8
leaq 0x22f(%rsp), %rdi
callq 0x8c630
movl 0xc(%rsp), %eax
cmpl $0x0, %eax
je 0x9f910
movq 0x190(%rsp), %rax
movl $0x3, (%rax)
jmp 0x9f910
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9f8fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x230(%rsp), %rdi
callq 0x8cbd8
leaq 0x22f(%rsp), %rdi
callq 0x8c630
jmp 0x9fb92
movq 0x190(%rsp), %rax
movsd 0x870(%rsp), %xmm0
movsd 0x556df(%rip), %xmm2    # 0xf5008
mulsd %xmm2, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rcx
movq %rcx, %rsi
sarq $0x3f, %rsi
movsd 0x556cc(%rip), %xmm1    # 0xf5010
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rdx
andq %rsi, %rdx
orq %rdx, %rcx
movq %rcx, 0x30(%rax)
movsd 0x878(%rsp), %xmm0
mulsd %xmm2, %xmm0
movaps %xmm0, %xmm3
cvttsd2si %xmm3, %rcx
movq %rcx, %rsi
sarq $0x3f, %rsi
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rdx
andq %rsi, %rdx
orq %rdx, %rcx
movq %rcx, 0x38(%rax)
movsd 0x880(%rsp), %xmm0
mulsd %xmm2, %xmm0
movaps %xmm0, %xmm2
cvttsd2si %xmm2, %rcx
movq %rcx, %rsi
sarq $0x3f, %rsi
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rdx
andq %rsi, %rdx
orq %rdx, %rcx
movq %rcx, 0x40(%rax)
leaq 0x5e8(%rsp), %rax
movq %rax, 0x220(%rsp)
movq 0x220(%rsp), %rdi
callq 0xa2740
movq %rax, 0x218(%rsp)
movq 0x220(%rsp), %rdi
callq 0xa2770
movq %rax, 0x210(%rsp)
leaq 0x218(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0xa27a0
testb $0x1, %al
jne 0x9fa0d
jmp 0x9fb3c
leaq 0x218(%rsp), %rdi
callq 0xa27e0
movq %rax, 0x208(%rsp)
movq 0x208(%rsp), %rdx
leaq 0x55a04(%rip), %rsi     # 0xf5435
leaq 0x1a8(%rsp), %rdi
callq 0xa17c0
jmp 0x9fa40
leaq 0x559ee(%rip), %rdx     # 0xf5435
leaq 0x1c8(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0xa1460
jmp 0x9fa5e
leaq 0x56b8e(%rip), %rdx     # 0xf65f3
leaq 0x1e8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0xa1460
jmp 0x9fa7c
movq 0x190(%rsp), %rdi
addq $0xe8, %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x8c7a0
jmp 0x9fa9a
leaq 0x1e8(%rsp), %rdi
callq 0x8cbd8
leaq 0x1c8(%rsp), %rdi
callq 0x8cbd8
leaq 0x1a8(%rsp), %rdi
callq 0x8cbd8
leaq 0x218(%rsp), %rdi
callq 0xa27f0
jmp 0x9f9ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9fb2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
jmp 0x9fb20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x608(%rsp)
movl %eax, 0x604(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x8cbd8
leaq 0x1c8(%rsp), %rdi
callq 0x8cbd8
leaq 0x1a8(%rsp), %rdi
callq 0x8cbd8
jmp 0x9fb92
movb $0x1, 0x31e(%rsp)
testb $0x1, 0x31e(%rsp)
jne 0x9fb5b
movq 0x190(%rsp), %rdi
callq 0xa2450
leaq 0x5e8(%rsp), %rdi
callq 0xa1d50
leaq 0x610(%rsp), %rdi
callq 0xa45e0
leaq 0x708(%rsp), %rdi
callq 0xa5c40
movq 0x198(%rsp), %rax
addq $0x8a8, %rsp            # imm = 0x8A8
retq
movq 0x190(%rsp), %rdi
callq 0xa2450
leaq 0x5e8(%rsp), %rdi
callq 0xa1d50
leaq 0x610(%rsp), %rdi
callq 0xa45e0
leaq 0x708(%rsp), %rdi
callq 0xa5c40
movq 0x608(%rsp), %rdi
callq 0x8ca40
movq %rax, %rdi
callq 0xa5c30
nopl (%rax,%rax)