// File: /workspace/github_cpp_makefile_star2_O3/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 0x43f8d9
leaq 0x1e8(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x68(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1c3404(%rip), %rsi    # 0x5c913c
leaq 0x1c3401(%rip), %rdx    # 0x5c9140
leaq 0x58(%rsp), %rdi
callq 0x4083fe
leaq 0x1c8(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq $0x2a, 0x198(%rsp)
movq 0x8(%r13), %rsi
testq %rsi, %rsi
je 0x407326
addq $0x8, %r13
movsd 0x1c3283(%rip), %xmm0   # 0x5c9008
movsd %xmm0, 0x180(%rsp)
movl $0x186a0, %eax          # imm = 0x186A0
movq %rax, 0x188(%rsp)
movq $-0x1, 0x190(%rsp)
leaq 0x8(%rsp), %r12
leaq 0xa0(%rsp), %rbp
movq $0x0, 0x1f8(%rsp)
movq $0x0, 0x208(%rsp)
movq $0x0, 0x50(%rsp)
movq $0x0, 0x78(%rsp)
movq $0x0, 0x200(%rsp)
movq $0x0, 0x210(%rsp)
xorl %r15d, %r15d
movq $0x0, 0x48(%rsp)
movq %r12, %rdi
movq %rbp, %rdx
callq 0x4079ce
movq %r12, %rdi
leaq 0x1c3423(%rip), %rsi    # 0x5c923a
callq 0x4c2b40
testl %eax, %eax
je 0x4060aa
movq %r12, %rdi
leaq 0x1c3313(%rip), %rsi    # 0x5c9141
callq 0x4c2b40
testl %eax, %eax
je 0x406101
movq %r12, %rdi
leaq 0x1c330a(%rip), %rsi    # 0x5c914f
callq 0x4c2b40
testl %eax, %eax
je 0x40625e
movq %r12, %rdi
leaq 0x1c32fd(%rip), %rsi    # 0x5c9159
callq 0x4c2b40
testl %eax, %eax
je 0x40629d
movq %r12, %rdi
leaq 0x1cd105(%rip), %rsi    # 0x5d2f78
callq 0x4c2b40
testl %eax, %eax
je 0x4062aa
movq %r12, %rdi
leaq 0x1c32d3(%rip), %rsi    # 0x5c915d
callq 0x4c2b40
testl %eax, %eax
je 0x4062bc
movq %r12, %rdi
leaq 0x1c32c1(%rip), %rsi    # 0x5c9162
callq 0x4c2b40
testl %eax, %eax
je 0x4062ce
movq %r12, %rdi
leaq 0x1c32b4(%rip), %rsi    # 0x5c916c
callq 0x4c2b40
testl %eax, %eax
je 0x4062e1
movq %r12, %rdi
leaq 0x1c32a5(%rip), %rsi    # 0x5c9174
callq 0x4c2b40
testl %eax, %eax
je 0x4062e7
movq %r12, %rdi
leaq 0x1c329b(%rip), %rsi    # 0x5c9181
callq 0x4c2b40
testl %eax, %eax
je 0x406330
movq %r12, %rdi
leaq 0x1c328f(%rip), %rsi    # 0x5c918c
callq 0x4c2b40
testl %eax, %eax
je 0x406340
cmpq $0x0, 0x48(%rsp)
je 0x406350
movq %r12, %rdi
leaq 0x1c32a5(%rip), %rsi    # 0x5c91c5
callq 0x4c2b40
testl %eax, %eax
je 0x40646b
movq %r12, %rdi
testq %r15, %r15
je 0x40647e
leaq 0x1c32b8(%rip), %rsi    # 0x5c91f8
callq 0x4c2b40
testl %eax, %eax
je 0x40651b
movq %r13, %rdi
callq 0x440010
movsd %xmm0, 0x1a0(%rsp)
movq %rbp, %rdi
leaq 0x1c329c(%rip), %rsi    # 0x5c9204
callq 0x407a0c
movq %r12, 0x80(%rsp)
leaq 0x66a9(%rip), %rax      # 0x40c625
movq %rax, 0x88(%rsp)
leaq 0x669b(%rip), %rax      # 0x40c626
movq %rax, 0x90(%rsp)
movq %rbp, %rdi
leaq 0x80(%rsp), %rsi
callq 0x40afdc
leaq 0x1a0(%rsp), %rcx
movq %rcx, 0x80(%rsp)
leaq 0x667b(%rip), %rcx      # 0x40c635
movq %rcx, 0x88(%rsp)
leaq 0x666d(%rip), %rcx      # 0x40c636
movq %rcx, 0x90(%rsp)
movq %rax, %rdi
leaq 0x80(%rsp), %rsi
callq 0x40afdc
leaq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x40c0ac
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x58(%rsp), %rdi
callq 0x4c1fa0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x40601e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
movq %rbp, %rdi
callq 0x407b82
movl $0xc, %edx
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c31d1(%rip), %rsi    # 0x5c920a
callq 0x4b0120
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq $0x655aa0, %rdi         # imm = 0x655AA0
callq 0x4b0120
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1ca1b3(%rip), %rsi    # 0x5d0219
callq 0x4b0120
movsd 0x1a0(%rsp), %xmm0
movq %rbx, %rdi
callq 0x4b1380
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1d4cdf(%rip), %rsi    # 0x5dad6a
callq 0x4b0120
movsd 0x1a0(%rsp), %xmm0
movq (%r15), %rax
movq %r15, %rdi
movq %r12, %rsi
callq *0x18(%rax)
jmp 0x4062fe
movq %rbp, %rdi
movq %r13, %rsi
callq 0x43fb5c
leaq 0x1b8(%rsp), %rdi
movq %rbp, %rsi
callq 0x4c0980
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4060ea
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0x1b8(%rsp), %rdi
movl $0x2f, %esi
callq 0x4c0fc0
jmp 0x4062fe
movq %rbp, %rdi
leaq 0x1c3040(%rip), %rsi    # 0x5c914b
callq 0x407a0c
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x43fb5c
movq %rbx, 0x1a0(%rsp)
leaq 0x5f69(%rip), %rax      # 0x40c09b
movq %rax, 0x1a8(%rsp)
leaq 0x5f5b(%rip), %rax      # 0x40c09c
movq %rax, 0x1b0(%rsp)
movq %rbp, %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x40afdc
leaq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x40c0ac
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x58(%rsp), %rdi
callq 0x4c1fa0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406196
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x4061bb
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x442d20
cmpb $0x1, 0x170(%rsp)
jne 0x4061da
leaq 0x178(%rsp), %rdi
callq 0x447100
movb $0x0, 0x170(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x407ccc
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x40620c
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x406251
movq 0xd8(%rsp), %rsi
subq %rdi, %rsi
callq 0x442d20
xorl %eax, %eax
movq %rax, 0xb8(%rsp)
movl %eax, 0xc0(%rsp)
movq %rax, 0xc8(%rsp)
movl %eax, 0xd0(%rsp)
movq %rax, 0xd8(%rsp)
movq %rbp, %rdi
callq 0x407d02
jmp 0x4062fe
movq %rbp, %rdi
movq %r13, %rsi
callq 0x43fb5c
leaq 0x58(%rsp), %rdi
movq %rbp, %rsi
callq 0x4c0980
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4062fe
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x4062fe
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0x50(%rsp)
jmp 0x4062fe
movq %r13, %rdi
callq 0x43fd79
movq %rax, 0x198(%rsp)
jmp 0x4062fe
movq %r13, %rdi
callq 0x43fd79
movq %rax, 0x188(%rsp)
jmp 0x4062fe
movq %r13, %rdi
callq 0x440010
movsd %xmm0, 0x180(%rsp)
jmp 0x4062fe
addq $-0x8, %r13
jmp 0x4062f7
movq %r13, %rdi
callq 0x43fd79
movq %rax, 0x190(%rsp)
movb $0x1, %al
movq %rax, 0x78(%rsp)
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40631a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x10(%r13), %rsi
addq $0x10, %r13
testq %rsi, %rsi
jne 0x405e02
jmp 0x40653e
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0x200(%rsp)
jmp 0x4062fe
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0x210(%rsp)
jmp 0x4062fe
movq %r12, %rdi
leaq 0x1c2e66(%rip), %rsi    # 0x5c91c0
callq 0x4c2b40
testl %eax, %eax
jne 0x4073c0
movq %rbp, %rdi
movq %r13, %rsi
callq 0x43fb5c
movq %rbp, %rdi
callq 0x43921e
movq %rax, 0x48(%rsp)
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4063a4
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
movq %rbp, %rdi
leaq 0x1c2d9d(%rip), %rsi    # 0x5c914b
callq 0x407a0c
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x43fb5c
movq %rbx, 0x1a0(%rsp)
leaq 0x5cc6(%rip), %rax      # 0x40c09b
movq %rax, 0x1a8(%rsp)
leaq 0x5cb8(%rip), %rax      # 0x40c09c
movq %rax, 0x1b0(%rsp)
movq %rbp, %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x40afdc
leaq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x40c0ac
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0x58(%rsp), %rdi
callq 0x4c1fa0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406439
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x40645e
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x442d20
movq %rbp, %rdi
callq 0x407b82
jmp 0x4062fe
addq $-0x8, %r13
movb $0x1, %al
movq %rax, 0x208(%rsp)
jmp 0x4062fe
leaq 0x1c2d6d(%rip), %rsi    # 0x5c91f2
callq 0x4c2b40
testl %eax, %eax
jne 0x4073f3
movq %rbp, %rdi
movq %r13, %rsi
callq 0x43fb5c
leaq 0x1d8(%rsp), %rdi
movq %rbp, %rsi
callq 0x4c0980
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4064d2
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0x1d8(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x439294
movq %rax, %r15
movq %rbp, %rdi
leaq 0x1d8(%rsp), %rsi
movl $0x2f, %edx
callq 0x407bdd
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq 0x58(%rsp), %rdi
callq 0x4c1fa0
jmp 0x406276
movq %r13, %rdi
callq 0x440010
movq (%r15), %rax
movb $0x1, %cl
movq %rcx, 0x1f8(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq *0x18(%rax)
jmp 0x4062fe
cmpq $0x0, 0x48(%rsp)
je 0x407326
testq %r15, %r15
movq 0x188(%rsp), %r12
movq 0x78(%rsp), %r13
movq 0x190(%rsp), %rbp
je 0x40735a
leaq 0x1ebc63(%rip), %rsi    # 0x5f21d2
leaq 0x1b8(%rsp), %rdi
callq 0x4c2b40
testl %eax, %eax
je 0x40738d
leaq 0x1c2cb4(%rip), %rsi    # 0x5c923f
leaq 0xa0(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x407c44
leaq 0xa0(%rsp), %rdi
callq 0x43f51e
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4065cf
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0x1c2c73(%rip), %rsi    # 0x5c9249
leaq 0xa0(%rsp), %rdi
callq 0x407a0c
leaq 0x198(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x6045(%rip), %rax      # 0x40c63f
movq %rax, 0x8(%rsi)
leaq 0x603b(%rip), %rax      # 0x40c640
movq %rax, 0x10(%rsi)
leaq 0xa0(%rsp), %rdi
callq 0x40afdc
leaq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x40c0ac
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x58(%rsp), %rdi
callq 0x4c1fa0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406653
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
cmpb $0x1, 0x170(%rsp)
jne 0x406671
leaq 0x178(%rsp), %rbx
movq %rbx, %rdi
callq 0x447100
movb $0x0, -0x8(%rbx)
leaq 0x118(%rsp), %rbx
movq %rbx, %rdi
callq 0x407ccc
movq -0x28(%rbx), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x4066a2
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x4066e7
movq 0xd8(%rsp), %rsi
subq %rdi, %rsi
callq 0x442d20
xorl %eax, %eax
movq %rax, 0xb8(%rsp)
movl %eax, 0xc0(%rsp)
movq %rax, 0xc8(%rsp)
movl %eax, 0xd0(%rsp)
movq %rax, 0xd8(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x407d02
testb $0x1, 0x50(%rsp)
je 0x40676f
leaq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, (%rdi)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
addq %rsi, %rdx
callq 0x4082fc
leaq 0x1c2a32(%rip), %rsi    # 0x5c9159
leaq 0xa0(%rsp), %rdi
callq 0x4c20e0
movzbl %r13b, %esi
andl $0x1, %esi
leaq 0xa0(%rsp), %rdi
callq 0x43f91e
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x406774
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x406774
callq 0x43fa62
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c2ad0(%rip), %rsi    # 0x5c9252
movl $0x9, %edx
callq 0x4b0120
leaq 0xa0(%rsp), %rdi
callq 0x43f7ea
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
movq $0x655aa0, %rdi         # imm = 0x655AA0
callq 0x4b0120
leaq 0x8(%rsp), %rsi
movb $0xa, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b0120
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4067ef
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, (%rdi)
movq 0x1b8(%rsp), %rsi
movq 0x1c0(%rsp), %rdx
addq %rsi, %rdx
callq 0x4082fc
leaq 0x1c2a3b(%rip), %rsi    # 0x5c925c
leaq 0xa0(%rsp), %rdi
callq 0x4c20e0
leaq 0xa0(%rsp), %rsi
movq 0x48(%rsp), %rdi
callq 0x4391e0
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x406865
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, (%rdi)
movq 0x1b8(%rsp), %rsi
movq 0x1c0(%rsp), %rdx
addq %rsi, %rdx
callq 0x4082fc
leaq 0x1c2ab1(%rip), %rsi    # 0x5c9348
leaq 0xa0(%rsp), %rdi
callq 0x4c20e0
cmpq $-0x1, %rbp
je 0x406a7b
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c29a2(%rip), %rsi    # 0x5c9264
leaq 0x1c29a1(%rip), %rdx    # 0x5c926a
callq 0x4083fe
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl %r12d, %edx
callq 0x407793
leaq 0x8(%rsp), %rdi
callq 0x43f5c9
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40690d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406929
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
testb %bl, %bl
jne 0x406b04
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c291f(%rip), %rsi    # 0x5c9264
leaq 0x1c291e(%rip), %rdx    # 0x5c926a
callq 0x4083fe
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl %ebp, %edx
callq 0x407793
leaq 0x8(%rsp), %rdi
callq 0x43f5c9
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40698f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x4069ab
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
testb %bl, %bl
je 0x406b21
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c28e8(%rip), %rsi    # 0x5c92a9
movl $0x25, %edx
callq 0x4b0120
movl %ebp, %esi
movq $0x655aa0, %rdi         # imm = 0x655AA0
callq 0x4b0a20
leaq 0x1d438a(%rip), %rsi    # 0x5dad6a
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b0120
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c2863(%rip), %rsi    # 0x5c9264
leaq 0x1c2862(%rip), %rdx    # 0x5c926a
callq 0x4083fe
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl %ebp, %edx
callq 0x407793
leaq 0xa0(%rsp), %rdi
leaq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x4c0980
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406a52
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406a6e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
leal 0x1(%rbp), %eax
movq %rax, 0x50(%rsp)
jmp 0x406d28
testb $0x1, %r13b
je 0x406d1f
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c27cb(%rip), %rsi    # 0x5c9264
leaq 0x1c27ca(%rip), %rdx    # 0x5c926a
callq 0x4083fe
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl %r12d, %edx
callq 0x407793
leaq 0x8(%rsp), %rdi
callq 0x43f5c9
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406ae4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406b00
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
testb %bl, %bl
je 0x406b43
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c2759(%rip), %rsi    # 0x5c926b
movl $0x3d, %edx
callq 0x4b0120
jmp 0x406f98
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c279b(%rip), %rsi    # 0x5c92cf
movl $0x25, %edx
callq 0x4b0120
jmp 0x406f9a
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c270d(%rip), %rsi    # 0x5c9264
leaq 0x1c270c(%rip), %rdx    # 0x5c926a
callq 0x4083fe
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x28(%rsp), %rcx
xorl %edx, %edx
callq 0x407793
leaq 0x8(%rsp), %rdi
callq 0x43f5c9
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406ba1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406bbd
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
testb %bl, %bl
je 0x406d07
cmpl $0x2, %r12d
jb 0x40724f
movq %r12, %rax
xorl %r12d, %r12d
movq $0x655aa0, %r14         # imm = 0x655AA0
leaq 0x8(%rsp), %rbp
movq %rax, 0x50(%rsp)
movl $0x12, %edx
movq %r14, %rdi
leaq 0x1c2700(%rip), %rsi    # 0x5c92f5
callq 0x4b0120
movl %r12d, %esi
movq %r14, %rdi
callq 0x4b0a20
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1c9602(%rip), %rsi    # 0x5d0219
callq 0x4b0120
movq 0x50(%rsp), %rax
leal (%rax,%r12), %ebx
shrl %ebx
movl %ebx, %esi
movq %r13, %rdi
callq 0x4b0a20
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1c95d6(%rip), %rsi    # 0x5d0219
callq 0x4b0120
movl 0x50(%rsp), %esi
movq %r13, %rdi
callq 0x4b0a20
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1d4107(%rip), %rsi    # 0x5dad6a
callq 0x4b0120
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %r13
movq %r13, %rdi
leaq 0x1c25e3(%rip), %rsi    # 0x5c9264
leaq 0x1c25e2(%rip), %rdx    # 0x5c926a
callq 0x4083fe
movq %rbp, %rdi
leaq 0x58(%rsp), %rsi
movl %ebx, %edx
movq %r13, %rcx
callq 0x407793
movq %rbp, %rdi
callq 0x43f5c9
movl %eax, %r13d
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406cc6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406ce2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
testb %r13b, %r13b
cmovnel %ebx, %r12d
movq 0x50(%rsp), %rax
cmovel %ebx, %eax
movq %rax, 0x50(%rsp)
subl %r12d, %eax
cmpl $0x1, %eax
ja 0x406be6
jmp 0x407254
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c25f3(%rip), %rsi    # 0x5c9308
movl $0x32, %edx
callq 0x4b0120
movq $0x0, 0x50(%rsp)
leaq 0xa0(%rsp), %rsi
movq 0x48(%rsp), %rdi
callq 0x43920a
movq 0x48(%rsp), %rdi
movq (%rdi), %rax
movq $0x655aa0, %rsi         # imm = 0x655AA0
callq *0x18(%rax)
testb $0x1, 0x208(%rsp)
je 0x406db1
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c25d1(%rip), %rsi    # 0x5c933b
leaq 0x1c25d1(%rip), %rdx    # 0x5c9342
callq 0x4083fe
leaq 0x8(%rsp), %rdi
movsd 0x1c228d(%rip), %xmm0   # 0x5c9010
xorps %xmm1, %xmm1
movq 0x48(%rsp), %rsi
callq 0x43cc0c
movq %rax, %r12
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406db4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x406db4
xorl %r12d, %r12d
testb $0x1, %r13b
jne 0x406e84
movq 0x48(%rsp), %rsi
movq (%rsi), %rax
leaq 0x28(%rsp), %rdi
callq *0x28(%rax)
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
addq %rsi, %rdx
callq 0x4082fc
leaq 0x1c2468(%rip), %rsi    # 0x5c925c
leaq 0x8(%rsp), %rdi
callq 0x4c20e0
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x43afa0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406e29
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
addq %rsi, %rdx
callq 0x4082fc
leaq 0x1c24f4(%rip), %rsi    # 0x5c9343
leaq 0x8(%rsp), %rdi
callq 0x4c20e0
leaq 0x8(%rsp), %rsi
movq 0x48(%rsp), %rdi
callq 0x439210
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x406e84
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c24c1(%rip), %rsi    # 0x5c9353
movl $0x6, %edx
callq 0x4b0120
movq 0x1d8(%rsp), %rsi
movq 0x1e0(%rsp), %rdx
movq $0x655aa0, %rdi         # imm = 0x655AA0
callq 0x4b0120
leaq 0x8(%rsp), %rsi
movb $0xa, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b0120
movl 0x198(%rsp), %esi
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
testb $0x1, 0x210(%rsp)
je 0x406efe
movq (%r15), %rax
xorl %ebx, %ebx
movq %r15, %rdi
movq 0x48(%rsp), %rsi
xorl %edx, %edx
callq *0x50(%rax)
jmp 0x406f9a
leaq 0x1c2455(%rip), %rsi    # 0x5c935a
leaq 0x1d8(%rsp), %rdi
callq 0x4c2b40
testl %eax, %eax
setne %al
orb 0x1f8(%rsp), %al
testb $0x1, %al
jne 0x406f30
movq (%r15), %rax
movq %r15, %rdi
movq 0x48(%rsp), %rsi
callq *0x38(%rax)
testb $0x1, 0x200(%rsp)
jne 0x406f48
movq (%r15), %rax
movq %r15, %rdi
movq 0x48(%rsp), %rsi
callq *0x40(%rax)
movq (%r15), %rax
movsd 0x1c20c5(%rip), %xmm0   # 0x5c9018
movq %r15, %rdi
movq 0x48(%rsp), %rsi
callq *0x48(%rax)
movq (%r15), %rax
movq $0x655aa0, %rsi         # imm = 0x655AA0
movq %r15, %rdi
callq *0x28(%rax)
movl 0x50(%rsp), %eax
cmpq %rax, 0x188(%rsp)
jne 0x407039
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c23ed(%rip), %rsi    # 0x5c937b
movl $0x21, %edx
callq 0x4b0120
xorl %ebx, %ebx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x406fbf
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x406fe4
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x407000
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x407025
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x442d20
movl %ebx, %eax
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cvttsd2si 0x180(%rsp), %rax
movq %rax, 0x180(%rsp)
movl $0x1, %ecx
movq $0x655aa0, %rbx         # imm = 0x655AA0
movl $0x1, %edx
movl %edx, %eax
movq %rbx, %r13
movl %eax, %ebx
movl %ecx, %r14d
movl %ecx, %ebp
movl %eax, 0x78(%rsp)
callq 0x43f4e2
subl $0x1, %ebx
setb %cl
orb %cl, %al
testb $0x1, %al
jne 0x4070ac
movq (%r15), %rax
movq %r15, %rdi
movq 0x48(%rsp), %rsi
movsd 0x1c1f88(%rip), %xmm0   # 0x5c9018
callq *0x48(%rax)
testq %r12, %r12
je 0x40706c
movq (%r12), %rax
movq %r12, %rdi
movq 0x48(%rsp), %rsi
movq %rbp, %rdx
callq *0x18(%rax)
jmp 0x40706c
movq 0x48(%rsp), %rdi
movq (%rdi), %rax
movq %r13, %rbx
movq %r13, %rsi
callq *0x18(%rax)
movl %r14d, 0x190(%rsp)
leaq 0x58(%rsp), %r14
leaq 0x28(%rsp), %r13
movq (%r15), %rax
movq %r15, %rdi
movq %rbx, %rsi
callq *0x28(%rax)
movq (%r15), %rax
movq %r15, %rdi
movq %r14, %rsi
callq *0x30(%rax)
testq %r12, %r12
je 0x407167
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
movq %r13, %rdi
leaq 0x1c20c5(%rip), %rsi    # 0x5c91c5
leaq 0x1c20c2(%rip), %rdx    # 0x5c91c9
callq 0x4083fe
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
movq 0x50(%rsp), %rdx
movq %r13, %rcx
callq 0x407793
movq %r12, %rdi
movq %rbp, %rsi
callq 0x43cad6
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40714b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x407167
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
movq %r13, %rdi
leaq 0x1c20e9(%rip), %rsi    # 0x5c9264
leaq 0x1c20e8(%rip), %rdx    # 0x5c926a
callq 0x4083fe
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
movq 0x50(%rsp), %rdx
movq %r13, %rcx
callq 0x407793
movq 0x48(%rsp), %rdi
movq %rbp, %rsi
callq 0x439210
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4071c8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x4071e4
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
callq 0x43f4e2
testb %al, %al
jne 0x40722d
movl $0x3e8, %ecx            # imm = 0x3E8
movq 0x180(%rsp), %rax
movl 0x78(%rsp), %edx
cmpl $0x1, %edx
je 0x40705e
movq 0x50(%rsp), %rax
incl %eax
movq %rax, 0x50(%rsp)
cmpq %rax, 0x188(%rsp)
movl 0x190(%rsp), %ecx
jne 0x40705c
jmp 0x406f80
movl $0x1, %ebx
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c211d(%rip), %rsi    # 0x5c935d
movl $0x1d, %edx
callq 0x4b0120
jmp 0x406f9a
movq %r12, 0x50(%rsp)
movq $0x655aa0, %rdi         # imm = 0x655AA0
leaq 0x1c2047(%rip), %rsi    # 0x5c92a9
movl $0x25, %edx
callq 0x4b0120
movq 0x50(%rsp), %rax
leal -0x1(%rax), %ebx
movq $0x655aa0, %rdi         # imm = 0x655AA0
movq %rbx, %rsi
callq 0x4b0a20
leaq 0x1d3ae0(%rip), %rsi    # 0x5dad6a
movl $0x1, %edx
movq %rax, %rdi
callq 0x4b0120
leaq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c1fb9(%rip), %rsi    # 0x5c9264
leaq 0x1c1fb8(%rip), %rdx    # 0x5c926a
callq 0x4083fe
movq 0x78(%rsp), %r13
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl %ebx, %edx
callq 0x407793
leaq 0xa0(%rsp), %rdi
leaq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x4c0980
movq (%rbx), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x407301
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x406d28
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x406d28
leaq 0xb0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1c1ede(%rip), %rsi    # 0x5c9217
leaq 0x1c1ee3(%rip), %rdx    # 0x5c9223
leaq 0xa0(%rsp), %rdi
callq 0x4083fe
leaq 0xa0(%rsp), %rdi
callq 0x43f581
leaq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c1eb0(%rip), %rsi    # 0x5c9224
leaq 0x1c1eb6(%rip), %rdx    # 0x5c9231
callq 0x4083fe
leaq 0xa0(%rsp), %rdi
callq 0x43f581
leaq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c1e8b(%rip), %rsi    # 0x5c9232
leaq 0x1c1e90(%rip), %rdx    # 0x5c923e
callq 0x4083fe
leaq 0xa0(%rsp), %rdi
callq 0x43f581
leaq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c1dbd(%rip), %rsi    # 0x5c9197
leaq 0x1c1de3(%rip), %rdx    # 0x5c91c4
callq 0x4083fe
leaq 0xa0(%rsp), %rdi
callq 0x43f581
leaq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1c1dbd(%rip), %rsi    # 0x5c91ca
leaq 0x1c1de3(%rip), %rdx    # 0x5c91f7
callq 0x4083fe
leaq 0xa0(%rsp), %rdi
callq 0x43f581
jmp 0x407483
jmp 0x4076df
jmp 0x407483
jmp 0x4076df
jmp 0x4076df
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x4076d0
movq 0x38(%rsp), %rsi
jmp 0x4076c8
jmp 0x4076df
jmp 0x4076df
jmp 0x407483
jmp 0x4076df
jmp 0x407627
jmp 0x4076fd
jmp 0x407683
jmp 0x40767c
jmp 0x4076df
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4076e2
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x4076e2
jmp 0x4076df
jmp 0x40767c
jmp 0x40762c
jmp 0x407627
jmp 0x4076fd
jmp 0x4076a8
jmp 0x4076fd
jmp 0x407627
jmp 0x4076fd
jmp 0x40762c
jmp 0x407627
jmp 0x4076fd
jmp 0x4076df
jmp 0x4076fd
jmp 0x407511
jmp 0x407511
jmp 0x4076fd
jmp 0x407511
jmp 0x407511
jmp 0x4076fd
jmp 0x4076fd
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x407700
movq 0x18(%rsp), %rsi
jmp 0x407663
jmp 0x4076fd
jmp 0x40762c
jmp 0x407627
jmp 0x4076fd
jmp 0x4076fd
jmp 0x4076fd
jmp 0x4076f8
jmp 0x4076fd
jmp 0x4076f8
jmp 0x4076fd
jmp 0x4076f8
jmp 0x40762c
jmp 0x407627
jmp 0x4076fd
jmp 0x40762c
jmp 0x407627
jmp 0x4076fd
jmp 0x4076fd
jmp 0x4076f8
jmp 0x4076fd
jmp 0x4076fd
jmp 0x4076f8
jmp 0x4076f8
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x407607
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x407607
jmp 0x4076f8
jmp 0x4076fd
jmp 0x4076f8
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
jne 0x407715
jmp 0x407725
jmp 0x4076f8
movq %rax, %rbx
jmp 0x407766
jmp 0x4076f8
jmp 0x4076fd
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x407b82
jmp 0x407725
jmp 0x407627
jmp 0x40762c
jmp 0x4076fd
jmp 0x4076fd
movq %rax, %rbx
jmp 0x40764b
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x40764b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x407700
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x407700
jmp 0x4076fd
jmp 0x4076df
jmp 0x4076fd
movq %rax, %rbx
jmp 0x4076d0
jmp 0x4076df
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x4076ab
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x442d20
jmp 0x4076ab
jmp 0x4076df
jmp 0x4076fd
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x4076d0
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x442d20
leaq 0xa0(%rsp), %rdi
callq 0x407b82
jmp 0x4076e2
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x407725
movq 0x18(%rsp), %rsi
jmp 0x40771d
movq %rax, %rbx
jmp 0x407725
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x407725
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x40774a
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x407766
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x442d20
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x40778b
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x442d20
movq %rbx, %rdi
callq 0x4f63f0