// File: /workspace/github_cpp_makefile_star2_O1/Cell-veto[P]postlhc/main.cpp
// Function: main
int main (int, const char **argv)
{
    buffer_cerr ();
    AbstractStorage *stor = 0;
    AbstractChainRunner *cr = 0;
    AbstractCorrelator *gofr = 0;

    string inter, prefix = "out/";
    string in_prefix;
    bool probe_test = false;
    bool skip_calib = false;
    bool recover = false;
    bool redirect_log = false;
    bool write_gofr = false;
    double snap_disp = 100;
    unsigned long random_seed = 42;
    unsigned long snap_target = 100000;
    long recover_from = -1;
    bool dont_optimize_sr_lr_split = false;

    // parse command line, initializing our tools along the way
    for (++argv; *argv; argv += 2)
    {
        string kw = *argv;

        if (kw == "load")
        {
            in_prefix = read_arg <string> (argv);
            in_prefix += '/';
        }
        else if (kw == "addprefix")
        {
            prefix += boost::str (format ("%s/") % read_arg <string> (argv));
        }
        else if (kw == "setprefix")
        {
            prefix = read_arg <string> (argv);
        }
        else if (kw == "log")
        {
            redirect_log = true;
            --argv; // no argument
        }
        else if (kw == "seed")
        {
            random_seed = read_arg <unsigned long> (argv);
        }
        else if (kw == "snap")
        {
            snap_target = read_arg <unsigned long> (argv);
        }
        else if (kw == "snap_disp")
        {
            snap_disp = read_arg <double> (argv);
        }
        else if (kw == "recover")
        {
            recover = true;
            --argv; // no argument
        }
        else if (kw == "recover_from")
        {
            recover_from = static_cast <long> (read_arg <unsigned long> (argv));
            recover = true;
        }
        else if (kw == "skip_calib")
        {
            skip_calib = true;
            --argv; // no argument
        }
        else if (kw == "probe_test")
        {
            probe_test = true;
            --argv; // no argument
        }
        else if (!stor)
        {
            // create storage
            if (kw == "stor")
                stor = make_storage (read_arg <string> (argv));
            else
                rt_error ("First set storage mechanism with keyword stor");

            prefix += boost::str (format ("%s/") % read_arg <string> (argv));
        }
        else if (kw == "gofr")
        {
            // we will write a density/density pair correlator
            write_gofr = true;
            --argv; // no argument
        }
        else if (!cr)
        {
            // as soon as we encounter 'inter', instantiate the ECMC algorithm
            if (kw == "inter")
            {
                inter = read_arg <string> (argv);
                cr = make_chainrunner (inter, stor);
                prefix += inter + '/';
            }
            else
                rt_error ("First set interaction type with keyword inter");
        }
        else if (kw == "sr_lr_split")
        {
            // we don't want a subdirectory for this parameter.
            double value = read_arg <double> (argv);
            cr->set_parameter (kw, value);
            dont_optimize_sr_lr_split = true;
        }
        else
        {
            // unrecognized argument -- assume it's an interaction parameter
            double value = read_arg <double> (argv);
            prefix += boost::str (format ("%s%f/") % kw % value);
            std::cerr << "inter_param " << kw << " " << value << "\n";
            cr->set_parameter (kw, value);
        }
    }

    if (!stor)
        rt_error ("Missing stor");
    if (!cr)
        rt_error ("Missing inter");
    if (in_prefix == "")
        rt_error ("Missing load");

    // make the output directory
    shell ("mkdir -p " + prefix);

    prefix += boost::str (format ("seed%lu_") % random_seed);

    // redirect std::cerr to logfile
    // (append if recovering)
    if (redirect_log)
        redirect_cerr (prefix + "log", recover);
    else
        dont_redirect_cerr ();

    std::cerr << "hostname " << hostname () << '\n';

    // load data
    stor->load_periods (in_prefix + "periods");
    unsigned snap = 0;
    string in_filename = in_prefix + "coords.dat";
    if (recover_from != -1)
    {
        // check if final snapshot exists already
        if (file_is_readable (format_out (prefix, snap_target)))
        {
            std::cerr << "recover: the final target snapshot already exists.  exiting.\n";
            return 0;
        }

        if (file_is_readable (format_out (prefix, recover_from)))
        {
            snap = recover_from + 1u;
            std::cerr << "recover: attempting to load snapshot " << (snap-1u) << "\n";
            in_filename = format_out (prefix, snap-1u);
        }
        else
        {
            std::cerr << "recover snapshot not found; aborting\n";
            return -1;
        }
    }
    else if (recover)
    {
        // check if final snapshot exists already
        if (file_is_readable (format_out (prefix, snap_target)))
        {
            std::cerr << "recover: the final target snapshot already exists.  exiting.\n";
            return 0;
        }

        // find the first snapshot which is _not_ on disk
        if (file_is_readable (format_out (prefix, 0)))
        {
            // bisection-style algorithm
            // loop invariant is: low is present, high is missing
            unsigned low = 0, high = snap_target;
            while (high - low > 1)
            {
                unsigned mid = (low+high) / 2;
                std::cerr << "recover: checking " << low << " "
                    << mid << " " << high << "\n";
                if (file_is_readable (format_out (prefix, mid)))
                    low = mid;
                else
                    high = mid;
            }

            snap = high;
            std::cerr << "recover: attempting to load snapshot " << (snap-1u) << "\n";
            in_filename = format_out (prefix, snap-1u);
        }
        else
        {
            std::cerr << "recover: no snapshots found, starting clean slate\n";
        }
    }
    stor->add_data (in_filename);
    stor->dump_statistics (std::cerr);

    if (write_gofr)
        gofr = make_correlator ("density", stor, 0.01, 0.);

    if (!recover)
    {
        stor->periods ().savetxt (prefix + "periods");
        stor->save_data (prefix + "init-coords.dat");
    }

    // init chainrunner
    std::cerr << "inter " << inter << '\n';
    cr->seed_random (random_seed);

    if (probe_test)
    {
        cr->probe_test_pattern (stor);
        return 0;
    }

    if (inter == "lj" && !dont_optimize_sr_lr_split)
    {
        cr->optimize_sr_lr_split (stor);
    }

    if (!skip_calib)
    {
        cr->calibrate (stor);
    }

    // warm-up
    cr->collide (stor, 1.);
    cr->dump_statistics (std::cerr);
    unsigned jmany = 1, gofr_samples = 1;
    for (; snap != snap_target; ++snap)
    {
    redo_snap:
        for (unsigned j = 0; !sigterm_caught () && j != jmany; ++j)
        {
            cr->collide (stor, 1.);
            if (gofr) gofr->sample (stor, gofr_samples);
        }

        stor->dump_statistics (std::cerr);
        cr->dump_statistics (std::cerr);
        cr->save_histograms (prefix);
        if (gofr) gofr->savetxt (format_out (prefix, snap, "gofr"));
        stor->save_data (format_out (prefix, snap));

        if (sigterm_caught ())
        {
            std::cerr << "exit caught SIGTERM, exiting\n";
            return 1;
        }

        if (jmany == 1)
        {
            // now for real
            jmany = snap_disp;
            gofr_samples = 1000;
            goto redo_snap;
        }
    }

    std::cerr << "exit number of snapshots reached\n";
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
movq %rsi, %r13
callq 0x440ccd
leaq 0x208(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1c43f4(%rip), %rsi    # 0x5ca13c
leaq 0x1c43f1(%rip), %rdx    # 0x5ca140
leaq 0x60(%rsp), %rdi
callq 0x40843e
leaq 0x1e8(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq $0x2a, 0x1b8(%rsp)
movq $0x0, 0xb8(%rsp)
cmpq $0x0, 0x8(%r13)
je 0x40657d
addq $0x8, %r13
movsd 0x1c4269(%rip), %xmm0   # 0x5ca008
movsd %xmm0, 0x88(%rsp)
movl $0x186a0, %eax          # imm = 0x186A0
movq %rax, 0x58(%rsp)
movq $-0x1, 0x50(%rsp)
leaq 0x8(%rsp), %rbx
leaq 0xc8(%rsp), %r12
movq $0x0, 0x1a8(%rsp)
movq $0x0, 0xb0(%rsp)
movq $0x0, 0x48(%rsp)
movq $0x0, 0x80(%rsp)
movq $0x0, 0x1b0(%rsp)
movq $0x0, 0xc0(%rsp)
xorl %r15d, %r15d
xorl %r14d, %r14d
movq (%r13), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0x407a6e
movq %rbx, %rdi
leaq 0x1c440e(%rip), %rsi    # 0x5ca23a
callq 0x4c3ef0
testl %eax, %eax
je 0x4060bc
movq %rbx, %rdi
leaq 0x1c42fe(%rip), %rsi    # 0x5ca141
callq 0x4c3ef0
testl %eax, %eax
je 0x406113
movq %rbx, %rdi
leaq 0x1c42f5(%rip), %rsi    # 0x5ca14f
callq 0x4c3ef0
testl %eax, %eax
je 0x406270
movq %rbx, %rdi
leaq 0x1c42e8(%rip), %rsi    # 0x5ca159
callq 0x4c3ef0
testl %eax, %eax
je 0x4062af
movq %rbx, %rdi
leaq 0x1cdf70(%rip), %rsi    # 0x5d3df8
callq 0x4c3ef0
testl %eax, %eax
je 0x4062bc
movq %rbx, %rdi
leaq 0x1c42be(%rip), %rsi    # 0x5ca15d
callq 0x4c3ef0
testl %eax, %eax
je 0x4062ce
movq %rbx, %rdi
leaq 0x1c42ac(%rip), %rsi    # 0x5ca162
callq 0x4c3ef0
testl %eax, %eax
je 0x4062dd
movq %rbx, %rdi
leaq 0x1c429f(%rip), %rsi    # 0x5ca16c
callq 0x4c3ef0
testl %eax, %eax
je 0x4062f0
movq %rbx, %rdi
leaq 0x1c4290(%rip), %rsi    # 0x5ca174
callq 0x4c3ef0
testl %eax, %eax
je 0x4062f6
movq %rbx, %rdi
leaq 0x1c4286(%rip), %rsi    # 0x5ca181
callq 0x4c3ef0
testl %eax, %eax
je 0x40633d
movq %rbx, %rdi
leaq 0x1c427a(%rip), %rsi    # 0x5ca18c
callq 0x4c3ef0
testl %eax, %eax
je 0x40634d
movq %rbx, %rdi
testq %r14, %r14
je 0x40635d
leaq 0x1c4293(%rip), %rsi    # 0x5ca1c5
callq 0x4c3ef0
testl %eax, %eax
je 0x406473
movq %rbx, %rdi
testq %r15, %r15
je 0x406486
leaq 0x1c42a6(%rip), %rsi    # 0x5ca1f8
callq 0x4c3ef0
testl %eax, %eax
je 0x406521
movq %r13, %rdi
callq 0x441407
movsd %xmm0, 0x1c0(%rsp)
movq %r12, %rdi
leaq 0x1c428a(%rip), %rsi    # 0x5ca204
callq 0x407aac
movq %rbx, 0x90(%rsp)
leaq 0x656f(%rip), %rax      # 0x40c4fd
movq %rax, 0x98(%rsp)
leaq 0x6561(%rip), %rax      # 0x40c4fe
movq %rax, 0xa0(%rsp)
movq %r12, %rdi
leaq 0x90(%rsp), %rsi
callq 0x40aeb6
leaq 0x1c0(%rsp), %rcx
movq %rcx, 0x90(%rsp)
leaq 0x6541(%rip), %rcx      # 0x40c50d
movq %rcx, 0x98(%rsp)
leaq 0x6533(%rip), %rcx      # 0x40c50e
movq %rcx, 0xa0(%rsp)
movq %rax, %rdi
leaq 0x90(%rsp), %rsi
callq 0x40aeb6
leaq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x40bf84
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0x4c3350
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406030
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq %r12, %rdi
callq 0x407c22
movl $0xc, %edx
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c41bf(%rip), %rsi    # 0x5ca20a
callq 0x4b14d0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq $0x656aa0, %rdi         # imm = 0x656AA0
callq 0x4b14d0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1cb021(%rip), %rsi    # 0x5d1099
callq 0x4b14d0
movsd 0x1c0(%rsp), %xmm0
movq %rbp, %rdi
callq 0x4b2730
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1d5b4d(%rip), %rsi    # 0x5dbbea
callq 0x4b14d0
movsd 0x1c0(%rsp), %xmm0
movq (%r15), %rax
movq %r15, %rdi
movq %rbx, %rsi
callq *0x18(%rax)
jmp 0x40630d
movq %r12, %rdi
movq %r13, %rsi
callq 0x440f50
leaq 0x1d8(%rsp), %rdi
movq %r12, %rsi
callq 0x4c1d30
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x4060fc
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0x1d8(%rsp), %rdi
movl $0x2f, %esi
callq 0x4c2370
jmp 0x40630d
movq %r12, %rdi
leaq 0x1c402e(%rip), %rsi    # 0x5ca14b
callq 0x407aac
leaq 0x90(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
callq 0x440f50
movq %rbp, 0x1c0(%rsp)
leaq 0x5e2f(%rip), %rax      # 0x40bf73
movq %rax, 0x1c8(%rsp)
leaq 0x5e21(%rip), %rax      # 0x40bf74
movq %rax, 0x1d0(%rsp)
movq %r12, %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x40aeb6
leaq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x40bf84
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0x4c3350
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x4061a8
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x4061cd
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x4440d0
cmpb $0x1, 0x198(%rsp)
jne 0x4061ec
leaq 0x1a0(%rsp), %rdi
callq 0x4484b0
movb $0x0, 0x198(%rsp)
leaq 0x140(%rsp), %rdi
callq 0x407d6c
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x40621e
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x406263
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x4440d0
xorl %eax, %eax
movq %rax, 0xe0(%rsp)
movl %eax, 0xe8(%rsp)
movq %rax, 0xf0(%rsp)
movl %eax, 0xf8(%rsp)
movq %rax, 0x100(%rsp)
movq %r12, %rdi
callq 0x407da2
jmp 0x40630d
movq %r12, %rdi
movq %r13, %rsi
callq 0x440f50
leaq 0x60(%rsp), %rdi
movq %r12, %rsi
callq 0x4c1d30
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x40630d
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x40630d
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0x48(%rsp)
jmp 0x40630d
movq %r13, %rdi
callq 0x441170
movq %rax, 0x1b8(%rsp)
jmp 0x40630d
movq %r13, %rdi
callq 0x441170
movq %rax, 0x58(%rsp)
jmp 0x40630d
movq %r13, %rdi
callq 0x441407
movsd %xmm0, 0x88(%rsp)
jmp 0x40630d
addq $-0x8, %r13
jmp 0x406303
movq %r13, %rdi
callq 0x441170
movq %rax, 0x50(%rsp)
movb $0x1, %al
movq %rax, 0x80(%rsp)
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406329
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
cmpq $0x0, 0x10(%r13)
leaq 0x10(%r13), %r13
jne 0x405e13
jmp 0x406544
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0x1b0(%rsp)
jmp 0x40630d
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0xc0(%rsp)
jmp 0x40630d
leaq 0x1c3e5c(%rip), %rsi    # 0x5ca1c0
callq 0x4c3ef0
testl %eax, %eax
jne 0x40742c
movq %r12, %rdi
movq %r13, %rsi
callq 0x440f50
movq %r12, %rdi
callq 0x43a7ca
movq %rax, %r14
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x4063ac
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq %r12, %rdi
leaq 0x1c3d95(%rip), %rsi    # 0x5ca14b
callq 0x407aac
leaq 0x90(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
callq 0x440f50
movq %rbp, 0x1c0(%rsp)
leaq 0x5b96(%rip), %rax      # 0x40bf73
movq %rax, 0x1c8(%rsp)
leaq 0x5b88(%rip), %rax      # 0x40bf74
movq %rax, 0x1d0(%rsp)
movq %r12, %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x40aeb6
leaq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x40bf84
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0x4c3350
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406441
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x406466
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq %r12, %rdi
callq 0x407c22
jmp 0x40630d
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0xb0(%rsp)
jmp 0x40630d
leaq 0x1c3d65(%rip), %rsi    # 0x5ca1f2
callq 0x4c3ef0
testl %eax, %eax
jne 0x40745f
movq %r12, %rdi
movq %r13, %rsi
callq 0x440f50
leaq 0x1f8(%rsp), %rdi
movq %r12, %rsi
callq 0x4c1d30
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x4064da
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0x1f8(%rsp), %rdi
movq %r14, %rsi
callq 0x43a840
movq %rax, %r15
movq %r12, %rdi
leaq 0x1f8(%rsp), %rsi
movl $0x2f, %edx
callq 0x407c7d
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0x4c3350
jmp 0x406288
movq %r13, %rdi
callq 0x441407
movq (%r15), %rax
movb $0x1, %cl
movq %rcx, 0x1a8(%rsp)
movq %r15, %rdi
movq %rbx, %rsi
callq *0x18(%rax)
jmp 0x40630d
cvttsd2si 0x88(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0xc0(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0x58(%rsp), %r12
movq 0x80(%rsp), %r13
movq 0xb0(%rsp), %rbp
jmp 0x4065c5
movq $-0x1, 0x50(%rsp)
movl $0x186a0, %r12d         # imm = 0x186A0
movl $0x64, %eax
movq %rax, 0x88(%rsp)
xorl %r14d, %r14d
xorl %r15d, %r15d
movq $0x0, 0x1b0(%rsp)
xorl %r13d, %r13d
movq $0x0, 0x48(%rsp)
xorl %ebp, %ebp
movq $0x0, 0x1a8(%rsp)
testq %r14, %r14
je 0x407390
testq %r15, %r15
je 0x4073c4
leaq 0x1eca74(%rip), %rsi    # 0x5f3052
leaq 0x1d8(%rsp), %rdi
callq 0x4c3ef0
testl %eax, %eax
je 0x4073f8
leaq 0x1c3c45(%rip), %rsi    # 0x5ca23f
leaq 0xc8(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x407ce4
leaq 0xc8(%rsp), %rdi
callq 0x440912
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x40663a
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0x1c3c08(%rip), %rsi    # 0x5ca249
leaq 0xc8(%rsp), %rdi
callq 0x407aac
leaq 0x1b8(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x5eb2(%rip), %rax      # 0x40c517
movq %rax, 0x8(%rsi)
leaq 0x5ea8(%rip), %rax      # 0x40c518
movq %rax, 0x10(%rsi)
leaq 0xc8(%rsp), %rdi
callq 0x40aeb6
leaq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x40bf84
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0x4c3350
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4066bd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
cmpb $0x1, 0x198(%rsp)
jne 0x4066db
leaq 0x1a0(%rsp), %rbx
movq %rbx, %rdi
callq 0x4484b0
movb $0x0, -0x8(%rbx)
leaq 0x140(%rsp), %rbx
movq %rbx, %rdi
callq 0x407d6c
movq -0x28(%rbx), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x40670c
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x406751
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x4440d0
xorl %eax, %eax
movq %rax, 0xe0(%rsp)
movl %eax, 0xe8(%rsp)
movq %rax, 0xf0(%rsp)
movl %eax, 0xf8(%rsp)
movq %rax, 0x100(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0x407da2
testb $0x1, 0x48(%rsp)
je 0x4067d9
leaq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
movq %rax, (%rdi)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
callq 0x408340
leaq 0x1c39c8(%rip), %rsi    # 0x5ca159
leaq 0xc8(%rsp), %rdi
callq 0x4c3490
movzbl %r13b, %esi
andl $0x1, %esi
leaq 0xc8(%rsp), %rdi
callq 0x440d12
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x4067de
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x4067de
callq 0x440e56
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c3a66(%rip), %rsi    # 0x5ca252
movl $0x9, %edx
callq 0x4b14d0
leaq 0xc8(%rsp), %rdi
callq 0x440bde
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq $0x656aa0, %rdi         # imm = 0x656AA0
callq 0x4b14d0
leaq 0x8(%rsp), %rsi
movb $0xa, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b14d0
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x406859
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
movq %rax, (%rdi)
movq 0x1d8(%rsp), %rsi
movq 0x1e0(%rsp), %rdx
addq %rsi, %rdx
callq 0x408340
leaq 0x1c39d1(%rip), %rsi    # 0x5ca25c
leaq 0xc8(%rsp), %rdi
callq 0x4c3490
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x43a78c
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x4068cd
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
movq %rax, (%rdi)
movq 0x1d8(%rsp), %rsi
movq 0x1e0(%rsp), %rdx
addq %rsi, %rdx
callq 0x408340
movq %r12, 0x58(%rsp)
leaq 0x1c3a44(%rip), %rsi    # 0x5ca348
leaq 0xc8(%rsp), %rdi
callq 0x4c3490
cmpq $-0x1, 0x50(%rsp)
je 0x406ae1
leaq 0x38(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1c3936(%rip), %rsi    # 0x5ca264
leaq 0x1c3935(%rip), %rdx    # 0x5ca26a
leaq 0x28(%rsp), %rdi
callq 0x40843e
leaq 0x8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movq 0x58(%rsp), %rdx
callq 0x40782e
leaq 0x8(%rsp), %rdi
callq 0x4409bd
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406980
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x406997
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
testb %bl, %bl
jne 0x406b6d
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x1c38b6(%rip), %rsi    # 0x5ca264
leaq 0x1c38b5(%rip), %rdx    # 0x5ca26a
callq 0x40843e
leaq 0x8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movq 0x50(%rsp), %rdx
callq 0x40782e
leaq 0x8(%rsp), %rdi
callq 0x4409bd
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4069fb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x406a12
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
testb %bl, %bl
je 0x406b8a
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c3881(%rip), %rsi    # 0x5ca2a9
movl $0x25, %edx
callq 0x4b14d0
movl 0x50(%rsp), %esi
movq $0x656aa0, %rdi         # imm = 0x656AA0
callq 0x4b1dd0
leaq 0x1d51a1(%rip), %rsi    # 0x5dbbea
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b14d0
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x1c37ff(%rip), %rsi    # 0x5ca264
leaq 0x1c37fe(%rip), %rdx    # 0x5ca26a
callq 0x40843e
leaq 0x8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movq 0x50(%rsp), %rdx
callq 0x40782e
leaq 0xc8(%rsp), %rdi
leaq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x4c1d30
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406ab9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x406ad0
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x50(%rsp), %rax
incl %eax
movq %rax, 0x48(%rsp)
jmp 0x406da7
testb $0x1, %r13b
je 0x406d9e
leaq 0x38(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1c3769(%rip), %rsi    # 0x5ca264
leaq 0x1c3768(%rip), %rdx    # 0x5ca26a
leaq 0x28(%rsp), %rdi
callq 0x40843e
movq 0x58(%rsp), %rdx
leaq 0x8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x28(%rsp), %rcx
callq 0x40782e
leaq 0x8(%rsp), %rdi
callq 0x4409bd
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406b4d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406b69
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
testb %bl, %bl
je 0x406bac
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c36f0(%rip), %rsi    # 0x5ca26b
movl $0x3d, %edx
callq 0x4b14d0
jmp 0x406ffe
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c3732(%rip), %rsi    # 0x5ca2cf
movl $0x25, %edx
callq 0x4b14d0
jmp 0x407000
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c36a4(%rip), %rsi    # 0x5ca264
leaq 0x1c36a3(%rip), %rdx    # 0x5ca26a
callq 0x40843e
leaq 0x8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x28(%rsp), %rcx
xorl %edx, %edx
callq 0x40782e
movq 0x58(%rsp), %r12
leaq 0x8(%rsp), %rdi
callq 0x4409bd
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406c0f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406c2b
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
testb %bl, %bl
je 0x406d86
movq %rbp, 0xb0(%rsp)
movq %r13, 0x80(%rsp)
cmpl $0x2, %r12d
jb 0x4072ae
movq %r12, %rax
xorl %r12d, %r12d
leaq 0x8(%rsp), %rbp
movq %rax, 0x48(%rsp)
movl $0x12, %edx
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c3685(%rip), %rsi    # 0x5ca2f5
callq 0x4b14d0
movl %r12d, %esi
movq $0x656aa0, %rdi         # imm = 0x656AA0
callq 0x4b1dd0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1ca403(%rip), %rsi    # 0x5d1099
callq 0x4b14d0
movq 0x48(%rsp), %rax
leal (%rax,%r12), %ebx
shrl %ebx
movl %ebx, %esi
movq %r13, %rdi
callq 0x4b1dd0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1ca3d7(%rip), %rsi    # 0x5d1099
callq 0x4b14d0
movl 0x48(%rsp), %esi
movq %r13, %rdi
callq 0x4b1dd0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1d4f08(%rip), %rsi    # 0x5dbbea
callq 0x4b14d0
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %r13
movq %r13, %rdi
leaq 0x1c3564(%rip), %rsi    # 0x5ca264
leaq 0x1c3563(%rip), %rdx    # 0x5ca26a
callq 0x40843e
movq %rbp, %rdi
leaq 0x60(%rsp), %rsi
movl %ebx, %edx
movq %r13, %rcx
callq 0x40782e
movq %rbp, %rdi
callq 0x4409bd
movl %eax, %r13d
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406d45
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406d61
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
testb %r13b, %r13b
cmovnel %ebx, %r12d
movq 0x48(%rsp), %rax
cmovel %ebx, %eax
movq %rax, 0x48(%rsp)
subl %r12d, %eax
cmpl $0x1, %eax
ja 0x406c5d
jmp 0x4072b3
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c3574(%rip), %rsi    # 0x5ca308
movl $0x32, %edx
callq 0x4b14d0
movq $0x0, 0x48(%rsp)
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x43a7b6
movq (%r14), %rax
movq $0x656aa0, %rsi         # imm = 0x656AA0
movq %r14, %rdi
callq *0x18(%rax)
testb $0x1, %bpl
je 0x406e26
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c355a(%rip), %rsi    # 0x5ca33b
leaq 0x1c355a(%rip), %rdx    # 0x5ca342
callq 0x40843e
leaq 0x8(%rsp), %rdi
movsd 0x1c3216(%rip), %xmm0   # 0x5ca010
xorps %xmm1, %xmm1
movq %r14, %rsi
callq 0x43e19c
movq %rax, %r12
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406e29
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x406e29
xorl %r12d, %r12d
testb $0x1, %r13b
jne 0x406ef5
movq (%r14), %rax
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq *0x28(%rax)
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
callq 0x408340
leaq 0x1c33f5(%rip), %rsi    # 0x5ca25c
leaq 0x8(%rsp), %rdi
callq 0x4c3490
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x43c520
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406e9c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
callq 0x408340
leaq 0x1c3481(%rip), %rsi    # 0x5ca343
leaq 0x8(%rsp), %rdi
callq 0x4c3490
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x43a7bc
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406ef5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c3450(%rip), %rsi    # 0x5ca353
movl $0x6, %edx
callq 0x4b14d0
movq 0x1f8(%rsp), %rsi
movq 0x200(%rsp), %rdx
movq $0x656aa0, %rdi         # imm = 0x656AA0
callq 0x4b14d0
leaq 0x8(%rsp), %rsi
movb $0xa, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b14d0
movl 0x1b8(%rsp), %esi
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
testb $0x1, 0xb8(%rsp)
je 0x406f6d
movq (%r15), %rax
xorl %ebx, %ebx
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq *0x50(%rax)
jmp 0x407000
leaq 0x1c33e6(%rip), %rsi    # 0x5ca35a
leaq 0x1f8(%rsp), %rdi
callq 0x4c3ef0
testl %eax, %eax
setne %al
orb 0x1a8(%rsp), %al
testb $0x1, %al
jne 0x406f9d
movq (%r15), %rax
movq %r15, %rdi
movq %r14, %rsi
callq *0x38(%rax)
testb $0x1, 0x1b0(%rsp)
jne 0x406fb3
movq (%r15), %rax
movq %r15, %rdi
movq %r14, %rsi
callq *0x40(%rax)
movq (%r15), %rax
movsd 0x1c305a(%rip), %xmm0   # 0x5ca018
movq %r15, %rdi
movq %r14, %rsi
callq *0x48(%rax)
movq (%r15), %rax
movq $0x656aa0, %rsi         # imm = 0x656AA0
movq %r15, %rdi
callq *0x28(%rax)
movl 0x48(%rsp), %eax
cmpq %rax, 0x58(%rsp)
jne 0x40709f
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c3387(%rip), %rsi    # 0x5ca37b
movl $0x21, %edx
callq 0x4b14d0
xorl %ebx, %ebx
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x407025
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x40704a
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x407066
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x40708b
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x4440d0
movl %ebx, %eax
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x1, %ecx
movq $0x656aa0, %rbp         # imm = 0x656AA0
movl $0x1, %edx
movq %r14, 0xc0(%rsp)
movl %edx, %ebx
movq %rbp, %r13
movl %ecx, 0xb8(%rsp)
movl %ecx, %ebp
movl %ebx, 0x50(%rsp)
callq 0x4408d6
subl $0x1, %ebx
setb %cl
orb %cl, %al
testb $0x1, %al
jne 0x407106
movq (%r15), %rax
movq %r15, %rdi
movq %r14, %rsi
movsd 0x1c2f2c(%rip), %xmm0   # 0x5ca018
callq *0x48(%rax)
testq %r12, %r12
je 0x4070ca
movq (%r12), %rax
movq %r12, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq *0x18(%rax)
jmp 0x4070ca
movq %r14, %rdi
movq (%r14), %rax
movq %r13, %rbp
movq %r13, %rsi
callq *0x18(%rax)
leaq 0x60(%rsp), %r13
movq (%r15), %rax
movq %r15, %rdi
movq %rbp, %rsi
callq *0x28(%rax)
movq (%r15), %rax
movq %r15, %rdi
movq %r13, %rsi
callq *0x30(%rax)
testq %r12, %r12
je 0x4071bd
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %r13
movq %r13, %rdi
leaq 0x1c3071(%rip), %rsi    # 0x5ca1c5
leaq 0x1c306e(%rip), %rdx    # 0x5ca1c9
callq 0x40843e
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x60(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %r13, %rcx
callq 0x40782e
movq %r12, %rdi
movq %rbx, %rsi
callq 0x43e066
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4071a1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x4071bd
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %r13
movq %r13, %rdi
leaq 0x1c308e(%rip), %rsi    # 0x5ca264
leaq 0x1c308d(%rip), %rdx    # 0x5ca26a
callq 0x40843e
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x60(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %r13, %rcx
callq 0x40782e
movq 0xc0(%rsp), %rdi
movq %rbx, %rsi
callq 0x43a7bc
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x407228
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x407244
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
callq 0x4408d6
testb %al, %al
jne 0x40728c
movl $0x3e8, %ecx            # imm = 0x3E8
movq 0x88(%rsp), %rax
movl %eax, %ebx
movl 0x50(%rsp), %edx
cmpl $0x1, %edx
je 0x4070ba
movq 0x48(%rsp), %rax
incl %eax
movq %rax, 0x48(%rsp)
cmpq %rax, 0x58(%rsp)
movl 0xb8(%rsp), %ecx
jne 0x4070b8
jmp 0x406fe6
movl $0x1, %ebx
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c30be(%rip), %rsi    # 0x5ca35d
movl $0x1d, %edx
callq 0x4b14d0
jmp 0x407000
movq %r12, 0x48(%rsp)
movq $0x656aa0, %rdi         # imm = 0x656AA0
leaq 0x1c2fe8(%rip), %rsi    # 0x5ca2a9
movl $0x25, %edx
callq 0x4b14d0
movq 0x48(%rsp), %rax
leal -0x1(%rax), %ebx
movq $0x656aa0, %rdi         # imm = 0x656AA0
movq %rbx, %rsi
callq 0x4b1dd0
leaq 0x1d4901(%rip), %rsi    # 0x5dbbea
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b14d0
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c2f5a(%rip), %rsi    # 0x5ca264
leaq 0x1c2f59(%rip), %rdx    # 0x5ca26a
callq 0x40843e
movq 0x80(%rsp), %r13
movq 0xb0(%rsp), %rbp
leaq 0x8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl %ebx, %edx
callq 0x40782e
leaq 0xc8(%rsp), %rdi
leaq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x4c1d30
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40736b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406da7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x406da7
leaq 0xd8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1c2e74(%rip), %rsi    # 0x5ca217
leaq 0x1c2e79(%rip), %rdx    # 0x5ca223
leaq 0xc8(%rsp), %rdi
callq 0x40843e
leaq 0xc8(%rsp), %rdi
callq 0x440975
leaq 0xd8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1c2e4d(%rip), %rsi    # 0x5ca224
leaq 0x1c2e53(%rip), %rdx    # 0x5ca231
leaq 0xc8(%rsp), %rdi
callq 0x40843e
leaq 0xc8(%rsp), %rdi
callq 0x440975
leaq 0xd8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1c2e27(%rip), %rsi    # 0x5ca232
leaq 0x1c2e2c(%rip), %rdx    # 0x5ca23e
leaq 0xc8(%rsp), %rdi
callq 0x40843e
leaq 0xc8(%rsp), %rdi
callq 0x440975
leaq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c2d51(%rip), %rsi    # 0x5ca197
leaq 0x1c2d77(%rip), %rdx    # 0x5ca1c4
callq 0x40843e
leaq 0xc8(%rsp), %rdi
callq 0x440975
leaq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c2d51(%rip), %rsi    # 0x5ca1ca
leaq 0x1c2d77(%rip), %rdx    # 0x5ca1f7
callq 0x40843e
leaq 0xc8(%rsp), %rdi
callq 0x440975
jmp 0x4074e5
jmp 0x407778
jmp 0x4074e5
jmp 0x407778
jmp 0x407778
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x407769
movq 0x38(%rsp), %rsi
jmp 0x407761
jmp 0x407778
jmp 0x407778
jmp 0x4074e5
jmp 0x407778
jmp 0x40771c
jmp 0x407715
jmp 0x407778
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x40777b
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x40777b
jmp 0x407778
jmp 0x4076c7
jmp 0x407798
jmp 0x407715
jmp 0x407741
jmp 0x4076cc
jmp 0x4076c7
jmp 0x407798
jmp 0x407778
jmp 0x407798
jmp 0x407607
jmp 0x407798
jmp 0x4076cc
jmp 0x4076c7
jmp 0x407798
jmp 0x407798
jmp 0x40757d
jmp 0x40757d
jmp 0x407798
jmp 0x40757d
jmp 0x40757d
jmp 0x407798
jmp 0x407798
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40779b
movq 0x18(%rsp), %rsi
jmp 0x407703
jmp 0x407798
jmp 0x4075e6
jmp 0x407607
jmp 0x407798
jmp 0x407798
jmp 0x407798
jmp 0x407793
jmp 0x4075c8
jmp 0x407793
jmp 0x4075c8
jmp 0x407793
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x4077b0
jmp 0x4077c0
jmp 0x407793
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40760a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x40760a
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
jne 0x4076fe
jmp 0x40779b
jmp 0x407798
jmp 0x4076cc
jmp 0x4076c7
jmp 0x407798
jmp 0x407798
jmp 0x407793
jmp 0x407798
jmp 0x407798
jmp 0x407793
jmp 0x407793
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4076a2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x4076a2
jmp 0x407793
movq %rax, %rbx
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x4077ab
jmp 0x407793
movq %rax, %rbx
jmp 0x407801
jmp 0x407793
jmp 0x407798
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x407c22
jmp 0x4077c0
jmp 0x4076c7
jmp 0x4076cc
jmp 0x407798
jmp 0x407778
jmp 0x407798
movq %rax, %rbx
jmp 0x4076eb
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4076eb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x40779b
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x40779b
jmp 0x407798
movq %rax, %rbx
jmp 0x407769
jmp 0x407778
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x407744
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4440d0
jmp 0x407744
jmp 0x407798
jmp 0x407778
movq %rax, %rbx
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x407769
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x4440d0
leaq 0xc8(%rsp), %rdi
callq 0x407c22
jmp 0x40777b
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4077c0
movq 0x18(%rsp), %rsi
jmp 0x4077b8
jmp 0x407798
movq %rax, %rbx
jmp 0x4077c0
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x4077c0
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x4077e5
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x407801
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x407826
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x4440d0
movq %rbx, %rdi
callq 0x4f77a0