// File: Falldog[P]dcinja/src/dcinja.cpp
// Function: execute(cxxopts::ParseResult&)
int execute(cxxopts::ParseResult& result) {
    json data;
    std::string content;

    // 0. change current working dir
    if (result.count("cwd")) {
        auto cwd = result["cwd"].as<std::string>();
        if (chdir(cwd.c_str()) != 0) {
            std::cout << "cwd fail, please make sure your dir path exists" << std::endl;
            exit(1);
        }
    }

    // 1. prepare json data & extra envs
    //    priority: envs(-e) >> json(-j) >> json-file(-f)
    if (result.count("json-file")) {
        auto& json_files = result["json-file"].as<std::vector<std::string>>();
        for (size_t i=0 ; i<json_files.size() ; ++i) {
            std::string json_content;
            read_source(json_files[i], json_content);
            data.merge_patch(
                json::parse(json_content.begin(), json_content.end())
            );
        }
    }
    if (result.count("json")) {
        auto& jsons = result["json"].as<std::vector<std::string>>();
        for (size_t i=0 ; i<jsons.size() ; ++i) {
            data.merge_patch(
                json::parse(jsons[i])
            );
        }
    }
    if (result.count("envs")) {
        auto& envs = result["envs"].as<std::vector<std::string>>();
        for (size_t i=0 ; i<envs.size() ; ++i) {
            auto idx = envs[i].find_first_of("=");
            if (idx == std::string::npos) {
                char * _env = std::getenv(envs[i].c_str());
                if (_env) {
                    std::string value = _env;
                    data[envs[i]] = value;
                }
            }
            else {
                std::string key = envs[i].substr(0, idx);
                std::string value = envs[i].substr(idx+1);
                data[key] = value;
            }
        }
    }
    if (result.count("force-system-envs")) {
        for (json::iterator it = data.begin(); it != data.end(); ++it) {
            char * _env = std::getenv(it.key().c_str());
            if (_env) {
                std::string value = _env;
                data[it.key()] = value;
            }
        }
    }
    if (result.count("verbose")) {
        std::cerr << "<<< JSON content: >>>" << std::endl;
        std::cerr << data.dump(4) << std::endl;
    }

    // 2. read source content
    if (result.count("src")) {
        auto src = result["src"].as<std::string>();
        read_source(src, content);
    } else {
        read_source("", content);
    }

    // 3. convert content -> template
    std::pair<std::string, std::string> x_delims = parse_delimiters(result["expression"].as<std::string>());
    std::pair<std::string, std::string> t_delims = parse_delimiters(result["statement"].as<std::string>());
    std::pair<std::string, std::string> c_delims = parse_delimiters(result["comment"].as<std::string>());

    inja::Environment env;
    env.set_expression(x_delims.first, x_delims.second);
    env.set_statement(t_delims.first, t_delims.second);
    env.set_comment(c_delims.first, c_delims.second);

    inja::Template tmpl = env.parse(content);

    // 4. render output from template
    if (result.count("dest")) {
        auto dest = result["dest"].as<std::string>();
        std::ofstream ofs;
        ofs.open(dest, std::ofstream::out | std::ofstream::trunc);
        env.render_to(ofs, tmpl, data);
        ofs.close();
    } else {
        env.render_to(std::cout, tmpl, data);
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xdd0, %rsp            # imm = 0xDD0
movq %rdi, -0x8(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x18(%rbp), %rdi
callq 0x11e00
leaq -0x38(%rbp), %rdi
callq 0xb820
movq -0x8(%rbp), %rax
movq %rax, -0xb30(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0xb28(%rbp)
callq 0xba70
movq -0xb28(%rbp), %rdx
leaq 0xb39e9(%rip), %rsi     # 0xc21d7
leaq -0x58(%rbp), %rdi
callq 0x10b90
jmp 0xe7f9
movq -0xb30(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x118a0
movq %rax, -0xb38(%rbp)
jmp 0xe812
leaq -0x58(%rbp), %rdi
callq 0xbb98
leaq -0x59(%rbp), %rdi
callq 0xb600
movq -0xb38(%rbp), %rax
cmpq $0x0, %rax
je 0xe9b6
movq -0x8(%rbp), %rax
movq %rax, -0xb48(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0xb40(%rbp)
callq 0xba70
movq -0xb40(%rbp), %rdx
leaq 0xb3976(%rip), %rsi     # 0xc21d7
leaq -0xb0(%rbp), %rdi
callq 0x10b90
jmp 0xe86f
movq -0xb48(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x11e40
movq %rax, -0xb50(%rbp)
jmp 0xe88b
movq -0xb50(%rbp), %rdi
callq 0x11f30
movq %rax, -0xb58(%rbp)
jmp 0xe8a0
movq -0xb58(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0xb230
jmp 0xe8b5
leaq -0xb0(%rbp), %rdi
callq 0xbb98
leaq -0xb1(%rbp), %rdi
callq 0xb600
leaq -0x90(%rbp), %rdi
callq 0xb1f0
movq %rax, %rdi
callq 0xb8a0
cmpl $0x0, %eax
je 0xe9aa
movq 0x10e687(%rip), %rdi    # 0x11cf78
leaq 0xb3b3d(%rip), %rsi     # 0xc2435
callq 0xb550
movq %rax, -0xb60(%rbp)
jmp 0xe906
movq -0xb60(%rbp), %rdi
movq 0x10e614(%rip), %rsi    # 0x11cf28
callq 0xb5d0
jmp 0xe91b
movl $0x1, %edi
callq 0xb6d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xe948
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xbb98
leaq -0x59(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xe97c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0xbb98
leaq -0xb1(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xbb98
jmp 0x1009a
leaq -0x90(%rbp), %rdi
callq 0xbb98
movq -0x8(%rbp), %rax
movq %rax, -0xb70(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0xb68(%rbp)
callq 0xba70
movq -0xb68(%rbp), %rdx
leaq 0xb393f(%rip), %rsi     # 0xc2321
leaq -0xd8(%rbp), %rdi
callq 0x10b90
jmp 0xe9f0
movq -0xb70(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x118a0
movq %rax, -0xb78(%rbp)
jmp 0xea0c
leaq -0xd8(%rbp), %rdi
callq 0xbb98
leaq -0xd9(%rbp), %rdi
callq 0xb600
movq -0xb78(%rbp), %rax
cmpq $0x0, %rax
je 0xecf1
movq -0x8(%rbp), %rax
movq %rax, -0xb88(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0xb80(%rbp)
callq 0xba70
movq -0xb80(%rbp), %rdx
leaq 0xb38c0(%rip), %rsi     # 0xc2321
leaq -0x108(%rbp), %rdi
callq 0x10b90
jmp 0xea6f
movq -0xb88(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x11e40
movq %rax, -0xb90(%rbp)
jmp 0xea8b
movq -0xb90(%rbp), %rdi
callq 0x11ff0
movq %rax, -0xb98(%rbp)
jmp 0xeaa0
leaq -0x108(%rbp), %rdi
callq 0xbb98
leaq -0x109(%rbp), %rdi
callq 0xb600
movq -0xb98(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq $0x0, -0x118(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0xba0(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x120b0
movq %rax, %rcx
movq -0xba0(%rbp), %rax
cmpq %rcx, %rax
jae 0xecef
leaq -0x138(%rbp), %rdi
callq 0xb820
movq -0xe8(%rbp), %rdi
movq -0x118(%rbp), %rsi
callq 0x120d0
movq %rax, %rsi
leaq -0x158(%rbp), %rdi
callq 0xb230
jmp 0xeb2e
leaq -0x158(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xbf40
jmp 0xeb43
leaq -0x158(%rbp), %rdi
callq 0xbb98
leaq -0x138(%rbp), %rdi
movq %rdi, -0xbb8(%rbp)
callq 0xb4e0
movq -0xbb8(%rbp), %rdi
movq %rax, -0x170(%rbp)
callq 0xb340
movq %rax, -0x178(%rbp)
xorl %eax, %eax
movl %eax, -0xba4(%rbp)
movl %eax, %esi
leaq -0x198(%rbp), %rdi
movq %rdi, -0xbb0(%rbp)
callq 0x12420
movq -0xbb0(%rbp), %rcx
movl -0xba4(%rbp), %r9d
movq -0x170(%rbp), %rsi
movq -0x178(%rbp), %rdx
leaq -0x168(%rbp), %rdi
movl $0x1, %r8d
callq 0x12240
jmp 0xebc9
leaq -0x18(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x120f0
jmp 0xebdb
leaq -0x168(%rbp), %rdi
callq 0x12460
leaq -0x198(%rbp), %rdi
callq 0x124a0
leaq -0x138(%rbp), %rdi
callq 0xbb98
movq -0x118(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x118(%rbp)
jmp 0xead1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xec3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0xbb98
leaq -0xd9(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xec73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xbb98
leaq -0x109(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xecde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x158(%rbp), %rdi
callq 0xbb98
jmp 0xecde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xecd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x12460
leaq -0x198(%rbp), %rdi
callq 0x124a0
leaq -0x138(%rbp), %rdi
callq 0xbb98
jmp 0x1009a
jmp 0xecf1
movq -0x8(%rbp), %rax
movq %rax, -0xbc8(%rbp)
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0xbc0(%rbp)
callq 0xba70
movq -0xbc0(%rbp), %rdx
leaq 0xb35d0(%rip), %rsi     # 0xc22ed
leaq -0x1b8(%rbp), %rdi
callq 0x10b90
jmp 0xed2b
movq -0xbc8(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x118a0
movq %rax, -0xbd0(%rbp)
jmp 0xed47
leaq -0x1b8(%rbp), %rdi
callq 0xbb98
leaq -0x1b9(%rbp), %rdi
callq 0xb600
movq -0xbd0(%rbp), %rax
cmpq $0x0, %rax
je 0xef80
movq -0x8(%rbp), %rax
movq %rax, -0xbe0(%rbp)
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0xbd8(%rbp)
callq 0xba70
movq -0xbd8(%rbp), %rdx
leaq 0xb3551(%rip), %rsi     # 0xc22ed
leaq -0x1e8(%rbp), %rdi
callq 0x10b90
jmp 0xedaa
movq -0xbe0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x11e40
movq %rax, -0xbe8(%rbp)
jmp 0xedc6
movq -0xbe8(%rbp), %rdi
callq 0x11ff0
movq %rax, -0xbf0(%rbp)
jmp 0xeddb
leaq -0x1e8(%rbp), %rdi
callq 0xbb98
leaq -0x1e9(%rbp), %rdi
callq 0xb600
movq -0xbf0(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq $0x0, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rax
movq %rax, -0xbf8(%rbp)
movq -0x1c8(%rbp), %rdi
callq 0x120b0
movq %rax, %rcx
movq -0xbf8(%rbp), %rax
cmpq %rcx, %rax
jae 0xef7e
movq -0x1c8(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
callq 0x120d0
movq %rax, -0xc10(%rbp)
xorl %eax, %eax
movl %eax, -0xbfc(%rbp)
movl %eax, %esi
leaq -0x228(%rbp), %rdi
movq %rdi, -0xc08(%rbp)
callq 0x12420
movq -0xc10(%rbp), %rsi
movq -0xc08(%rbp), %rdx
movl -0xbfc(%rbp), %r8d
leaq -0x208(%rbp), %rdi
movl $0x1, %ecx
callq 0x124c0
jmp 0xee98
leaq -0x18(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x120f0
jmp 0xeeaa
leaq -0x208(%rbp), %rdi
callq 0x12460
leaq -0x228(%rbp), %rdi
callq 0x124a0
movq -0x1f8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1f8(%rbp)
jmp 0xee0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xeeff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0xbb98
leaq -0x1b9(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xef36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0xbb98
leaq -0x1e9(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xef6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x12460
leaq -0x228(%rbp), %rdi
callq 0x124a0
jmp 0x1009a
jmp 0xef80
movq -0x8(%rbp), %rax
movq %rax, -0xc20(%rbp)
leaq -0x249(%rbp), %rdi
movq %rdi, -0xc18(%rbp)
callq 0xba70
movq -0xc18(%rbp), %rdx
leaq 0xb328b(%rip), %rsi     # 0xc2237
leaq -0x248(%rbp), %rdi
callq 0x10b90
jmp 0xefba
movq -0xc20(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x118a0
movq %rax, -0xc28(%rbp)
jmp 0xefd6
leaq -0x248(%rbp), %rdi
callq 0xbb98
leaq -0x249(%rbp), %rdi
callq 0xb600
movq -0xc28(%rbp), %rax
cmpq $0x0, %rax
je 0xf400
movq -0x8(%rbp), %rax
movq %rax, -0xc38(%rbp)
leaq -0x279(%rbp), %rdi
movq %rdi, -0xc30(%rbp)
callq 0xba70
movq -0xc30(%rbp), %rdx
leaq 0xb320c(%rip), %rsi     # 0xc2237
leaq -0x278(%rbp), %rdi
callq 0x10b90
jmp 0xf039
movq -0xc38(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x11e40
movq %rax, -0xc40(%rbp)
jmp 0xf055
movq -0xc40(%rbp), %rdi
callq 0x11ff0
movq %rax, -0xc48(%rbp)
jmp 0xf06a
leaq -0x278(%rbp), %rdi
callq 0xbb98
leaq -0x279(%rbp), %rdi
callq 0xb600
movq -0xc48(%rbp), %rax
movq %rax, -0x258(%rbp)
movq $0x0, -0x288(%rbp)
movq -0x288(%rbp), %rax
movq %rax, -0xc50(%rbp)
movq -0x258(%rbp), %rdi
callq 0x120b0
movq %rax, %rcx
movq -0xc50(%rbp), %rax
cmpq %rcx, %rax
jae 0xf3fe
movq -0x258(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x120d0
movq %rax, %rdi
leaq 0xb3549(%rip), %rsi     # 0xc262e
xorl %eax, %eax
movl %eax, %edx
callq 0xb2d0
movq %rax, -0x290(%rbp)
cmpq $-0x1, -0x290(%rbp)
jne 0xf2b8
movq -0x258(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x120d0
movq %rax, %rdi
callq 0xb1f0
movq %rax, %rdi
callq 0xb6e0
movq %rax, -0x298(%rbp)
cmpq $0x0, -0x298(%rbp)
je 0xf2b3
movq -0x298(%rbp), %rax
movq %rax, -0xc60(%rbp)
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0xc58(%rbp)
callq 0xba70
movq -0xc60(%rbp), %rsi
movq -0xc58(%rbp), %rdx
leaq -0x2b8(%rbp), %rdi
callq 0x10b90
jmp 0xf178
leaq -0x2b9(%rbp), %rdi
callq 0xb600
leaq -0x2d0(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x12650
jmp 0xf199
movq -0x258(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x120d0
movq %rax, %rsi
leaq -0x18(%rbp), %rdi
callq 0x126a0
movq %rax, -0xc68(%rbp)
jmp 0xf1c1
movq -0xc68(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x12800
leaq -0x2d0(%rbp), %rdi
callq 0x12460
leaq -0x2b8(%rbp), %rdi
callq 0xbb98
jmp 0xf2b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf217
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0xbb98
leaq -0x249(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf24e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xbb98
leaq -0x279(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2b9(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf2a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x12460
leaq -0x2b8(%rbp), %rdi
callq 0xbb98
jmp 0x1009a
jmp 0xf3e5
movq -0x258(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x120d0
movq %rax, %rsi
movq -0x290(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x2f0(%rbp), %rdi
callq 0xb5b0
jmp 0xf2e7
movq -0x258(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x120d0
movq %rax, %rsi
movq -0x290(%rbp), %rdx
incq %rdx
leaq -0x310(%rbp), %rdi
movq $-0x1, %rcx
callq 0xb5b0
jmp 0xf31c
leaq -0x320(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x12650
jmp 0xf331
leaq -0x18(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x126a0
movq %rax, -0xc70(%rbp)
jmp 0xf34a
movq -0xc70(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x12800
leaq -0x320(%rbp), %rdi
callq 0x12460
leaq -0x310(%rbp), %rdi
callq 0xbb98
leaq -0x2f0(%rbp), %rdi
callq 0xbb98
jmp 0xf3e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf3d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf3c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x12460
leaq -0x310(%rbp), %rdi
callq 0xbb98
leaq -0x2f0(%rbp), %rdi
callq 0xbb98
jmp 0x1009a
jmp 0xf3e7
movq -0x288(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x288(%rbp)
jmp 0xf09b
jmp 0xf400
movq -0x8(%rbp), %rax
movq %rax, -0xc80(%rbp)
leaq -0x341(%rbp), %rdi
movq %rdi, -0xc78(%rbp)
callq 0xba70
movq -0xc78(%rbp), %rdx
leaq 0xb2e7f(%rip), %rsi     # 0xc22ab
leaq -0x340(%rbp), %rdi
callq 0x10b90
jmp 0xf43a
movq -0xc80(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x118a0
movq %rax, -0xc88(%rbp)
jmp 0xf456
leaq -0x340(%rbp), %rdi
callq 0xbb98
leaq -0x341(%rbp), %rdi
callq 0xb600
movq -0xc88(%rbp), %rax
cmpq $0x0, %rax
je 0xf66c
leaq -0x368(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x12870
leaq -0x388(%rbp), %rdi
movq %rdi, -0xc98(%rbp)
leaq -0x18(%rbp), %rsi
callq 0x128e0
movq -0xc98(%rbp), %rsi
leaq -0x368(%rbp), %rdi
callq 0x128b0
movb %al, -0xc89(%rbp)
jmp 0xf4c1
movb -0xc89(%rbp), %al
testb $0x1, %al
jne 0xf4d0
jmp 0xf66a
leaq -0x368(%rbp), %rdi
callq 0x12920
movq %rax, -0xca0(%rbp)
jmp 0xf4e5
movq -0xca0(%rbp), %rdi
callq 0xb1f0
movq %rax, %rdi
callq 0xb6e0
movq %rax, -0x390(%rbp)
cmpq $0x0, -0x390(%rbp)
je 0xf655
movq -0x390(%rbp), %rax
movq %rax, -0xcb0(%rbp)
leaq -0x3b1(%rbp), %rdi
movq %rdi, -0xca8(%rbp)
callq 0xba70
movq -0xcb0(%rbp), %rsi
movq -0xca8(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x10b90
jmp 0xf54b
leaq -0x3b1(%rbp), %rdi
callq 0xb600
leaq -0x3c8(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x12650
jmp 0xf56c
leaq -0x368(%rbp), %rdi
callq 0x12920
movq %rax, -0xcb8(%rbp)
jmp 0xf581
movq -0xcb8(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x126a0
movq %rax, -0xcc0(%rbp)
jmp 0xf59a
movq -0xcc0(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x12800
leaq -0x3c8(%rbp), %rdi
callq 0x12460
leaq -0x3b0(%rbp), %rdi
callq 0xbb98
jmp 0xf655
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf5f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x340(%rbp), %rdi
callq 0xbb98
leaq -0x341(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3b1(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x12460
leaq -0x3b0(%rbp), %rdi
callq 0xbb98
jmp 0x1009a
jmp 0xf657
leaq -0x368(%rbp), %rdi
callq 0x12a40
jmp 0xf665
jmp 0xf48f
jmp 0xf66c
movq -0x8(%rbp), %rax
movq %rax, -0xcd0(%rbp)
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0xcc8(%rbp)
callq 0xba70
movq -0xcc8(%rbp), %rdx
leaq 0xb2d70(%rip), %rsi     # 0xc2408
leaq -0x3e8(%rbp), %rdi
callq 0x10b90
jmp 0xf6a6
movq -0xcd0(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x118a0
movq %rax, -0xcd8(%rbp)
jmp 0xf6c2
leaq -0x3e8(%rbp), %rdi
callq 0xbb98
leaq -0x3e9(%rbp), %rdi
callq 0xb600
movq -0xcd8(%rbp), %rax
cmpq $0x0, %rax
je 0xf7d1
movq 0x10d8f6(%rip), %rdi    # 0x11cfe8
leaq 0xb2d6c(%rip), %rsi     # 0xc2465
callq 0xb550
movq %rax, -0xce0(%rbp)
jmp 0xf707
movq -0xce0(%rbp), %rdi
movq 0x10d813(%rip), %rsi    # 0x11cf28
callq 0xb5d0
jmp 0xf71c
leaq -0x410(%rbp), %rdi
leaq -0x18(%rbp), %rsi
movl $0x4, %edx
movl $0x20, %ecx
xorl %r9d, %r9d
movl %r9d, %r8d
callq 0x12ae0
jmp 0xf73e
movq 0x10d8a3(%rip), %rdi    # 0x11cfe8
leaq -0x410(%rbp), %rsi
callq 0xb500
movq %rax, -0xce8(%rbp)
jmp 0xf75a
movq -0xce8(%rbp), %rdi
movq 0x10d7c0(%rip), %rsi    # 0x11cf28
callq 0xb5d0
jmp 0xf76f
leaq -0x410(%rbp), %rdi
callq 0xbb98
jmp 0xf7d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf7a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0xbb98
leaq -0x3e9(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x410(%rbp), %rdi
callq 0xbb98
jmp 0x1009a
movq -0x8(%rbp), %rax
movq %rax, -0xcf8(%rbp)
leaq -0x431(%rbp), %rdi
movq %rdi, -0xcf0(%rbp)
callq 0xba70
movq -0xcf0(%rbp), %rdx
leaq 0xb29fb(%rip), %rsi     # 0xc21f8
leaq -0x430(%rbp), %rdi
callq 0x10b90
jmp 0xf80b
movq -0xcf8(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x118a0
movq %rax, -0xd00(%rbp)
jmp 0xf827
leaq -0x430(%rbp), %rdi
callq 0xbb98
leaq -0x431(%rbp), %rdi
callq 0xb600
movq -0xd00(%rbp), %rax
cmpq $0x0, %rax
je 0xf9d1
movq -0x8(%rbp), %rax
movq %rax, -0xd10(%rbp)
leaq -0x479(%rbp), %rdi
movq %rdi, -0xd08(%rbp)
callq 0xba70
movq -0xd08(%rbp), %rdx
leaq 0xb297c(%rip), %rsi     # 0xc21f8
leaq -0x478(%rbp), %rdi
callq 0x10b90
jmp 0xf88a
movq -0xd10(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x11e40
movq %rax, -0xd18(%rbp)
jmp 0xf8a6
movq -0xd18(%rbp), %rdi
callq 0x11f30
movq %rax, -0xd20(%rbp)
jmp 0xf8bb
movq -0xd20(%rbp), %rsi
leaq -0x458(%rbp), %rdi
callq 0xb230
jmp 0xf8d0
leaq -0x478(%rbp), %rdi
callq 0xbb98
leaq -0x479(%rbp), %rdi
callq 0xb600
leaq -0x4a0(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0xb230
jmp 0xf8fd
leaq -0x4a0(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xbf40
jmp 0xf90f
leaq -0x4a0(%rbp), %rdi
callq 0xbb98
leaq -0x458(%rbp), %rdi
callq 0xbb98
jmp 0xfa63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x430(%rbp), %rdi
callq 0xbb98
leaq -0x431(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf989
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x478(%rbp), %rdi
callq 0xbb98
leaq -0x479(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xf9c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0xbb98
leaq -0x458(%rbp), %rdi
callq 0xbb98
jmp 0x1009a
leaq -0x4c1(%rbp), %rdi
movq %rdi, -0xd28(%rbp)
callq 0xba70
movq -0xd28(%rbp), %rdx
leaq 0xb2c0d(%rip), %rsi     # 0xc25ff
leaq -0x4c0(%rbp), %rdi
callq 0x10b90
jmp 0xfa00
leaq -0x4c0(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xbf40
jmp 0xfa12
leaq -0x4c0(%rbp), %rdi
callq 0xbb98
leaq -0x4c1(%rbp), %rdi
callq 0xb600
jmp 0xfa63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xfa52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0xbb98
leaq -0x4c1(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq -0x8(%rbp), %rax
movq %rax, -0xd38(%rbp)
leaq -0x529(%rbp), %rdi
movq %rdi, -0xd30(%rbp)
callq 0xba70
movq -0xd30(%rbp), %rdx
leaq 0xb7a39(%rip), %rsi     # 0xc74c8
leaq -0x528(%rbp), %rdi
callq 0x10b90
jmp 0xfa9d
movq -0xd38(%rbp), %rdi
leaq -0x528(%rbp), %rsi
callq 0x11e40
movq %rax, -0xd40(%rbp)
jmp 0xfab9
movq -0xd40(%rbp), %rdi
callq 0x11f30
movq %rax, -0xd48(%rbp)
jmp 0xface
movq -0xd48(%rbp), %rsi
leaq -0x508(%rbp), %rdi
callq 0xc240
jmp 0xfae3
leaq -0x528(%rbp), %rdi
callq 0xbb98
leaq -0x529(%rbp), %rdi
callq 0xb600
movq -0x8(%rbp), %rax
movq %rax, -0xd58(%rbp)
leaq -0x591(%rbp), %rdi
movq %rdi, -0xd50(%rbp)
callq 0xba70
movq -0xd50(%rbp), %rdx
leaq 0xb2879(%rip), %rsi     # 0xc23a0
leaq -0x590(%rbp), %rdi
callq 0x10b90
jmp 0xfb35
movq -0xd58(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0x11e40
movq %rax, -0xd60(%rbp)
jmp 0xfb51
movq -0xd60(%rbp), %rdi
callq 0x11f30
movq %rax, -0xd68(%rbp)
jmp 0xfb66
movq -0xd68(%rbp), %rsi
leaq -0x570(%rbp), %rdi
callq 0xc240
jmp 0xfb7b
leaq -0x590(%rbp), %rdi
callq 0xbb98
leaq -0x591(%rbp), %rdi
callq 0xb600
movq -0x8(%rbp), %rax
movq %rax, -0xd78(%rbp)
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xd70(%rbp)
callq 0xba70
movq -0xd70(%rbp), %rdx
leaq 0xb2817(%rip), %rsi     # 0xc23d6
leaq -0x5f8(%rbp), %rdi
callq 0x10b90
jmp 0xfbcd
movq -0xd78(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x11e40
movq %rax, -0xd80(%rbp)
jmp 0xfbe9
movq -0xd80(%rbp), %rdi
callq 0x11f30
movq %rax, -0xd88(%rbp)
jmp 0xfbfe
movq -0xd88(%rbp), %rsi
leaq -0x5d8(%rbp), %rdi
callq 0xc240
jmp 0xfc13
leaq -0x5f8(%rbp), %rdi
callq 0xbb98
leaq -0x5f9(%rbp), %rdi
callq 0xb600
leaq -0x858(%rbp), %rdi
callq 0x12cb0
jmp 0xfc39
leaq -0x4e8(%rbp), %rdx
leaq -0x858(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x12d50
jmp 0xfc55
leaq -0x550(%rbp), %rdx
leaq -0x858(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x12e20
jmp 0xfc71
leaq -0x5b8(%rbp), %rdx
leaq -0x858(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x12f10
jmp 0xfc8d
leaq -0x38(%rbp), %rdi
callq 0xb610
movq %rax, -0x8b0(%rbp)
movq %rdx, -0x8a8(%rbp)
movq -0x8b0(%rbp), %rdx
movq -0x8a8(%rbp), %rcx
leaq -0x8a0(%rbp), %rdi
leaq -0x858(%rbp), %rsi
callq 0x12f70
jmp 0xfcc7
movq -0x8(%rbp), %rax
movq %rax, -0xd98(%rbp)
leaq -0x8d1(%rbp), %rdi
movq %rdi, -0xd90(%rbp)
callq 0xba70
movq -0xd90(%rbp), %rdx
leaq 0xb2525(%rip), %rsi     # 0xc2218
leaq -0x8d0(%rbp), %rdi
callq 0x10b90
jmp 0xfd01
movq -0xd98(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x118a0
movq %rax, -0xda0(%rbp)
jmp 0xfd1d
leaq -0x8d0(%rbp), %rdi
callq 0xbb98
leaq -0x8d1(%rbp), %rdi
callq 0xb600
movq -0xda0(%rbp), %rax
cmpq $0x0, %rax
je 0xffd5
movq -0x8(%rbp), %rax
movq %rax, -0xdb0(%rbp)
leaq -0x919(%rbp), %rdi
movq %rdi, -0xda8(%rbp)
callq 0xba70
movq -0xda8(%rbp), %rdx
leaq 0xb24a6(%rip), %rsi     # 0xc2218
leaq -0x918(%rbp), %rdi
callq 0x10b90
jmp 0xfd80
movq -0xdb0(%rbp), %rdi
leaq -0x918(%rbp), %rsi
callq 0x11e40
movq %rax, -0xdb8(%rbp)
jmp 0xfd9c
movq -0xdb8(%rbp), %rdi
callq 0x11f30
movq %rax, -0xdc0(%rbp)
jmp 0xfdb1
movq -0xdc0(%rbp), %rsi
leaq -0x8f8(%rbp), %rdi
callq 0xb230
jmp 0xfdc6
leaq -0x918(%rbp), %rdi
callq 0xbb98
leaq -0x919(%rbp), %rdi
callq 0xb600
leaq -0xb20(%rbp), %rdi
callq 0xb9e0
jmp 0xfdec
movl $0x10, %edi
movl $0x20, %esi
callq 0x13050
movl %eax, -0xdc4(%rbp)
jmp 0xfe03
movl -0xdc4(%rbp), %edx
leaq -0xb20(%rbp), %rdi
leaq -0x8f8(%rbp), %rsi
callq 0xb2b0
jmp 0xfe1e
leaq -0x858(%rbp), %rdi
leaq -0xb20(%rbp), %rsi
leaq -0x8a0(%rbp), %rdx
leaq -0x18(%rbp), %rcx
callq 0x13070
jmp 0xfe3e
leaq -0xb20(%rbp), %rdi
callq 0xb850
jmp 0xfe4c
leaq -0xb20(%rbp), %rdi
callq 0xb8b0
leaq -0x8f8(%rbp), %rdi
callq 0xbb98
jmp 0x10005
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xfe8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x528(%rbp), %rdi
callq 0xbb98
leaq -0x529(%rbp), %rdi
callq 0xb600
jmp 0x1009a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xfec6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x590(%rbp), %rdi
callq 0xbb98
leaq -0x591(%rbp), %rdi
callq 0xb600
jmp 0x1008e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xfefd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0xbb98
leaq -0x5f9(%rbp), %rdi
callq 0xb600
jmp 0x10082
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x10076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1006a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xff56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x8d0(%rbp), %rdi
callq 0xbb98
leaq -0x8d1(%rbp), %rdi
callq 0xb600
jmp 0x1005e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xff8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x918(%rbp), %rdi
callq 0xbb98
leaq -0x919(%rbp), %rdi
callq 0xb600
jmp 0x1005e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xffc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb20(%rbp), %rdi
callq 0xb8b0
leaq -0x8f8(%rbp), %rdi
callq 0xbb98
jmp 0x1005e
movq 0x10cf9c(%rip), %rsi    # 0x11cf78
leaq -0x858(%rbp), %rdi
leaq -0x8a0(%rbp), %rdx
leaq -0x18(%rbp), %rcx
callq 0x13070
jmp 0xfff5
jmp 0x10005
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x1005e
leaq -0x8a0(%rbp), %rdi
callq 0x13120
leaq -0x858(%rbp), %rdi
callq 0x13150
leaq -0x5d8(%rbp), %rdi
callq 0x131b0
leaq -0x570(%rbp), %rdi
callq 0x131b0
leaq -0x508(%rbp), %rdi
callq 0x131b0
leaq -0x38(%rbp), %rdi
callq 0xbb98
leaq -0x18(%rbp), %rdi
callq 0x12460
xorl %eax, %eax
addq $0xdd0, %rsp            # imm = 0xDD0
popq %rbp
retq
leaq -0x8a0(%rbp), %rdi
callq 0x13120
leaq -0x858(%rbp), %rdi
callq 0x13150
leaq -0x5d8(%rbp), %rdi
callq 0x131b0
leaq -0x570(%rbp), %rdi
callq 0x131b0
leaq -0x508(%rbp), %rdi
callq 0x131b0
leaq -0x38(%rbp), %rdi
callq 0xbb98
leaq -0x18(%rbp), %rdi
callq 0x12460
movq -0x68(%rbp), %rdi
callq 0xba60
nopw %cs:(%rax,%rax)