// File: /workspace/github_cpp_makefile_star2_O3/pgrouchy[P]NoiseWorld/master.cpp
// Function: main
int main(int argc, char* argv[]) {

    if (argc != 2) {
        cout << "Usage: EMM_SymComm [runID]" << endl;
        exit(-1);
    }

    signal(SIGTERM, term_trap);

    list<Genome*>::iterator curGenome, curGenome2;
    list<Population*>::iterator curPop;

    string myFilename;

    Population *initPop;

    int i, j, fd, intStat, bestIsl, numInSync, counter1 = 0, counter2 = 0, zipCounter = 0, bestFit = 0, era_counter = 0;
    int myInt[6], myBestInt[6];
    double myDouble[2], myBestDouble[2];
    double densityTotal = 0.0;

    int run_id = atoi(argv[1]);

    FILE *dataFile;
    struct stat stFileInfo;
    ofstream myFile;
    struct flock fl = {F_WRLCK, SEEK_SET,   0,      0,     0 };
    fl.l_pid = getpid();

    string tempString, tempString2;

    // Initialize randomizer so that different runs produce different results
    srand( (unsigned)(run_id*100000) );
    //srand ( time(NULL) );

    // make necessary directories
    for (i = 0; i < NUM_ISLANDS; i++) {
        stringstream isl_sync_dir;
        isl_sync_dir << "mkdir /dev/shm/sync_dir_" << i;
        system(isl_sync_dir.str().c_str());

        stringstream isl_sync_file;
        isl_sync_file << "touch /dev/shm/sync_dir_" << i << "/folderSync.txt";
        system(isl_sync_file.str().c_str());
    }
    stringstream data_dir_ss;
    data_dir_ss << "mkdir dataDir_" << run_id;
    system(data_dir_ss.str().c_str());

    // Start islands
    for (i = 0; i < NUM_ISLANDS; i++) {
        // Generate initial population
        initPop = new Population(i);
        stringstream isl_pop_ss;
        isl_pop_ss << "/dev/shm/initPop_" << i << ".pop";
        initPop->savePop(isl_pop_ss.str().c_str());
        delete initPop;
    }
    for (i = 0; i < NUM_SLAVES; i++) {
        // Run slaves
        stringstream isl_ss;
        isl_ss << "nice ./EMM_island " << i << " " << run_id << " &";
        system(isl_ss.str().c_str());
    }

    // we run the simulation until it is killed by the system or user
    while (true) {
        numInSync = 0;
        for (i = 0; i < NUM_SLAVES; i++) {
            stringstream ss;
            ss << "/dev/shm/fitFlag_" << i << ".txt";
            intStat = stat(ss.str().c_str(),&stFileInfo);
            if (intStat == 0) {
                numInSync++;
            } else {
                break;
            }
        }

        if (numInSync == NUM_SLAVES) {

            era_counter++;

            ofstream myFile;
            stringstream ss_gen_file;
            ss_gen_file << "dataDir_" << run_id << "/genOutput.csv";
            myFile.open(ss_gen_file.str().c_str(), ios::out | ios::app);

            myBestInt[3] = -1;

            for (i = 0; i < NUM_ISLANDS; i++) {

                stringstream sync_ss1;
                sync_ss1 << "/dev/shm/sync_dir_" << i << "/folderSync.txt";
                // set file lock
                fl.l_type = F_WRLCK;
                fd = open(sync_ss1.str().c_str(), O_RDWR);
                fcntl(fd, F_SETLKW, &fl);

                stringstream ss2;
                ss2 << "/dev/shm/currentStatus_" << i << ".txt";
                dataFile = fopen(ss2.str().c_str(), "r");
                fscanf(dataFile, "%d,%d,%d,%d,%d,%lf,%lf,%d\n", &myInt[0], &myInt[1], &myInt[2], &myInt[3], &myInt[4], &myDouble[0], &myDouble[1], &myInt[5]);
                fclose(dataFile);

                myFile << "Isl " << i << " t-step " << myInt[1] << " numBirths: " << myInt[3] << " NumMigIn: " << myInt[4] << " avgAge: " << myDouble[0] << " beta: " << myDouble[1] << " hitWall: " << myBestInt[5] << endl;

                cout << "Isl " << i << " t-step " << myInt[1] << " numBirths: " << myInt[3] << " NumMigIn: " << myInt[4] << " avgAge: " << myDouble[0] << " beta: " << myDouble[1] << " hitWall: " << myBestInt[5] << endl;

                if (myInt[3] > myBestInt[3]) {
                    bestIsl = i;
                    for (j = 0; j < 6; j++) {
                        if (j < 2) {
                            myBestDouble[j] = myDouble[j];
                        }
                        myBestInt[j] = myInt[j];
                    }
                }

                // release lock file
                fl.l_type = F_UNLCK;
                fcntl(fd, F_SETLK, &fl);
                close(fd);
                
                counter1 += myInt[3];
                counter2++;
                densityTotal += myDouble[1];
            }
            myFile.close();

            stringstream copy_best_pop;
            copy_best_pop << "cp /dev/shm/popSnapshot-" << (era_counter * ERA) << "_" << bestIsl << ".pop dataDir_" << run_id << "/curBestPop.pop";
            system(copy_best_pop.str().c_str());

            if (myBestInt[3] > bestFit) {
                bestFit = myBestInt[3];
                stringstream copy_best_pop_2;
                copy_best_pop_2 << "cp /dev/shm/popSnapshot-" << (era_counter * ERA) << "_" << bestIsl << ".pop dataDir_" << run_id << "/overallBestPop.pop";
                system(copy_best_pop_2.str().c_str());
            }

            stringstream ss_avg_file;
            ss_avg_file << "dataDir_" << run_id << "/avgPopSize.csv";
            myFile.open(ss_avg_file.str().c_str(), ios::out | ios::app);
            myFile << ((double)counter1 / (double)counter2) << "  " << (densityTotal / (double)counter2) << endl;
            myFile.close();
            counter1 = 0;
            counter2 = 0;
            densityTotal = 0.0;

            stringstream do_zip;
            do_zip << "/dev/shm/zip_time_flag.txt";
            intStat = stat(do_zip.str().c_str(),&stFileInfo);
            if (intStat == 0) {
                stringstream zip_ss;
                if (zipCounter == 0) {
                    zip_ss << "zip -q -j dataDir_" << run_id << "/popSnapshots_" << zipCounter << ".zip /dev/shm/initPop_* /dev/shm/popSnapshot* /dev/shm/mig*.pop";
                } else {
                    zip_ss << "zip -q -j dataDir_" << run_id << "/popSnapshots_" << zipCounter << ".zip /dev/shm/popSnapshot* /dev/shm/mig*.pop";
                }
                system(zip_ss.str().c_str());

                stringstream zip_rm;
                zip_rm << "rm /dev/shm/popSnapshot*";
                system(zip_rm.str().c_str());

                if (zipCounter == 0) {
                    stringstream del_ss;
                    del_ss << "rm /dev/shm/initPop_*";
                    system(del_ss.str().c_str());
                }

                zipCounter++;
                stringstream rm_zip;
                rm_zip << "rm /dev/shm/zip_time_flag.txt";
                system(rm_zip.str().c_str());
            }


            for (i = 0; i < NUM_SLAVES; i++) {
                stringstream ss;
                ss << "rm /dev/shm/fitFlag_" << i << ".txt";
                system(ss.str().c_str());
            }
        }
        numInSync = 0;
        for (i = 0; i < NUM_SLAVES; i++) {
            stringstream ss;
            ss << "/dev/shm/syncFlag_" << i << ".txt";
            intStat = stat(ss.str().c_str(),&stFileInfo);
            if (intStat == 0) {
                numInSync++;
            } else {
                break;
            }
        }
        if (numInSync == NUM_SLAVES) {
            for (i = 0; i < NUM_SLAVES; i++) {
                stringstream ss;
                ss << "rm /dev/shm/syncFlag_" << i << ".txt";
                system(ss.str().c_str());
            }
        }
        usleep(100000);
    }

    return(0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1258, %rsp           # imm = 0x1258
cmpl $0x2, %edi
jne 0x3bad
movq %rsi, %rbx
leaq -0x1cf(%rip), %rsi      # 0x24ec
movl $0xf, %edi
callq 0x2250
leaq 0x300(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x8(%rbx), %rdi
callq 0x22e0
movl %eax, %ebp
leaq 0x1058(%rsp), %rdi
callq 0x2320
movups 0x7cad(%rip), %xmm0     # 0xa3a8
movaps %xmm0, 0xf0(%rsp)
movupd 0x7c8d(%rip), %xmm0     # 0xa398
movapd %xmm0, 0xe0(%rsp)
callq 0x22b0
movl %eax, 0xf8(%rsp)
leaq 0x2e0(%rsp), %rax
movq %rax, -0x10(%rax)
xorl %ebx, %ebx
movq %rbx, -0x8(%rax)
movb %bl, (%rax)
leaq 0x2c0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rbx, -0x8(%rax)
movb %bl, (%rax)
movl %ebp, 0xc(%rsp)
imull $0x186a0, %ebp, %edi    # imm = 0x186A0
callq 0x21c0
leaq 0xe50(%rsp), %rbp
movl $0x80, %eax
leaq 0xe40(%rsp), %r13
leaq (%rax,%r13), %rcx
movq %rcx, 0x10(%rsp)
leaq 0x310(%rsp), %r14
addq %r14, %rax
movq %rax, 0x28(%rsp)
movq 0xb82e(%rip), %r15      # 0xdfb8
movq %r14, %rdi
callq 0x2100
movl $0x18, %edx
leaq 0x320(%rsp), %r12
movq %r12, %rdi
leaq 0x795a(%rip), %rsi      # 0xa103
callq 0x2230
movq %r12, %rdi
movl %ebx, %esi
callq 0x2330
movq %r13, %rdi
leaq 0x328(%rsp), %rsi
callq 0x22f0
movq 0xe40(%rsp), %rdi
callq 0x2190
movq 0xe40(%rsp), %rdi
leaq 0xe50(%rsp), %rax
cmpq %rax, %rdi
je 0x27fa
movq 0xe50(%rsp), %rsi
incq %rsi
callq 0x2210
movq %r13, %rdi
callq 0x2100
movl $0x18, %edx
movq %rbp, %rdi
leaq 0x790b(%rip), %rsi      # 0xa11c
callq 0x2230
movq %rbp, %rdi
movl %ebx, %esi
callq 0x2330
movl $0xf, %edx
movq %rax, %rdi
leaq 0x7906(%rip), %rsi      # 0xa135
callq 0x2230
leaq 0x128(%rsp), %rdi
leaq 0xe58(%rsp), %rsi
callq 0x22f0
movq 0x128(%rsp), %rdi
callq 0x2190
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x287b
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
movq %r13, %rdi
movq %r15, %rsi
callq 0x2130
movq 0x10(%rsp), %rdi
callq 0x2090
movq %r14, %rdi
movq %r15, %rsi
callq 0x2130
movq 0x28(%rsp), %rdi
callq 0x2090
incl %ebx
cmpl $0x64, %ebx
jne 0x278a
leaq 0xe40(%rsp), %rdi
callq 0x2100
leaq 0xe50(%rsp), %rbx
leaq 0x7879(%rip), %rsi      # 0xa145
movl $0xe, %edx
movq %rbx, %rdi
callq 0x2230
movl 0xc(%rsp), %esi
movq %rbx, %rdi
callq 0x2330
leaq 0xe58(%rsp), %rsi
leaq 0x310(%rsp), %rdi
callq 0x22f0
movq 0x310(%rsp), %rdi
callq 0x2190
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x292c
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0x320(%rsp), %rbx
xorl %ebp, %ebp
leaq 0x310(%rsp), %r13
leaq 0x108(%rsp), %r12
movq 0xb66b(%rip), %r14      # 0xdfb8
movl $0x50, %edi
callq 0x2200
movq %rax, %r15
movq %rax, %rdi
movl %ebp, %esi
callq 0x4248
movq %r13, %rdi
callq 0x2100
movl $0x11, %edx
movq %rbx, %rdi
leaq 0x77d9(%rip), %rsi      # 0xa154
callq 0x2230
movq %rbx, %rdi
movl %ebp, %esi
callq 0x2330
movl $0x4, %edx
movq %rax, %rdi
leaq 0x7926(%rip), %rsi      # 0xa2bf
callq 0x2230
leaq 0x128(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x22f0
movq 0x128(%rsp), %rsi
movq %r12, %rdi
leaq 0x9a8(%rsp), %rdx
callq 0x43dc
movq %r15, %rdi
movq %r12, %rsi
callq 0x590e
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x29fb
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x2210
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x2a20
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
movq %r15, %rdi
callq 0x441a
movl $0x50, %esi
movq %r15, %rdi
callq 0x2210
movq %r13, %rdi
movq %r14, %rsi
callq 0x2130
leaq 0x390(%rsp), %rdi
callq 0x2090
incl %ebp
cmpl $0x64, %ebp
jne 0x294d
leaq 0x320(%rsp), %rbx
xorl %ebp, %ebp
leaq 0x310(%rsp), %r14
leaq 0x77ef(%rip), %r13      # 0xa260
leaq 0x7701(%rip), %r15      # 0xa179
movq 0xb539(%rip), %r12      # 0xdfb8
movq %r14, %rdi
callq 0x2100
movl $0x12, %edx
movq %rbx, %rdi
leaq 0x76d0(%rip), %rsi      # 0xa166
callq 0x2230
movq %rbx, %rdi
movl %ebp, %esi
callq 0x2330
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2230
movq %r14, %rdi
movl 0xc(%rsp), %esi
callq 0x2330
movl $0x2, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2230
leaq 0x128(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x22f0
movq 0x128(%rsp), %rdi
callq 0x2190
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x2b1b
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0x310(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x2130
leaq 0x390(%rsp), %rdi
callq 0x2090
incl %ebp
cmpl $0x14, %ebp
jne 0x2a7f
movl $0x80, %eax
leaq (%r14,%rax), %rcx
movq %rcx, 0x10(%rsp)
leaq 0x510(%rsp), %rcx
addq %rax, %rcx
movq %rcx, 0x20(%rsp)
leaq 0x9a8(%rsp), %rcx
leaq (%rcx,%rax), %rcx
movq %rcx, 0x70(%rsp)
leaq 0xcb8(%rsp), %rcx
leaq (%rcx,%rax), %rcx
movq %rcx, 0x60(%rsp)
leaq 0x820(%rsp), %rcx
addq %rax, %rcx
movq %rcx, 0xb8(%rsp)
leaq 0xb30(%rsp), %rcx
addq %rax, %rcx
movq %rcx, 0x68(%rsp)
leaq 0x698(%rsp), %rcx
addq %rax, %rcx
movq %rcx, 0xc0(%rsp)
leaq 0x128(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0xc8(%rsp)
movq 0xb3fa(%rip), %rax      # 0xdfd0
movq (%rax), %rcx
movq %rcx, 0xd8(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0xd0(%rsp)
movq 0xb3c4(%rip), %r13      # 0xdfb8
movl $0x0, 0x1c(%rsp)
movl $0x0, 0x34(%rsp)
movl $0x0, 0x38(%rsp)
xorl %ebx, %ebx
leaq 0x310(%rsp), %rdi
callq 0x2100
movl $0x11, %edx
leaq 0x320(%rsp), %rdi
leaq 0x7712(%rip), %rsi      # 0xa341
callq 0x2230
leaq 0x320(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movl $0x4, %edx
movq %rax, %rdi
leaq 0x74ee(%rip), %rsi      # 0xa140
callq 0x2230
leaq 0x128(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x22f0
movq 0x128(%rsp), %rdi
leaq 0xfc8(%rsp), %rsi
callq 0x21b0
movl %eax, %ebp
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x2ca8
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0x310(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x10(%rsp), %rdi
callq 0x2090
testl %ebp, %ebp
jne 0x2cd3
incl %ebx
cmpl $0x14, %ebx
jne 0x2c0e
jmp 0x2cdc
cmpl $0x14, %ebx
jne 0x3a06
leaq 0x310(%rsp), %rdi
callq 0x2320
leaq 0x128(%rsp), %rdi
callq 0x2100
movl $0x8, %edx
leaq 0x138(%rsp), %rdi
leaq 0x7562(%rip), %rsi      # 0xa26c
callq 0x2230
leaq 0x138(%rsp), %rdi
movl 0xc(%rsp), %esi
callq 0x2330
movl $0xe, %edx
movq %rax, %rdi
leaq 0x744d(%rip), %rsi      # 0xa17c
callq 0x2230
leaq 0x9a8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x22f0
movq 0x9a8(%rsp), %rsi
leaq 0x310(%rsp), %rdi
movl $0x11, %edx
callq 0x2050
movq 0x9a8(%rsp), %rdi
leaq 0x9b8(%rsp), %rax
cmpq %rax, %rdi
je 0x2d88
movq 0x9b8(%rsp), %rsi
incq %rsi
callq 0x2210
incl 0x38(%rsp)
xorpd %xmm0, %xmm0
movsd %xmm0, 0x78(%rsp)
xorl %ebx, %ebx
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
xorl %ebp, %ebp
leaq 0x9a8(%rsp), %r14
movq %r14, %rdi
callq 0x2100
movl $0x12, %edx
leaq 0x9b8(%rsp), %rdi
leaq 0x735e(%rip), %rsi      # 0xa122
callq 0x2230
leaq 0x9b8(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movl $0xf, %edx
movq %rax, %rdi
leaq 0x734e(%rip), %rsi      # 0xa135
callq 0x2230
movw $0x1, 0xe0(%rsp)
leaq 0x510(%rsp), %rdi
leaq 0x9c0(%rsp), %rsi
callq 0x22f0
movq 0x510(%rsp), %rdi
movl $0x2, %esi
xorl %eax, %eax
callq 0x2120
movl %eax, %r15d
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x2e47
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x2210
movl %r15d, %edi
movl $0x7, %esi
leaq 0xe0(%rsp), %rdx
xorl %eax, %eax
callq 0x20e0
leaq 0x510(%rsp), %rdi
callq 0x2100
movl $0x17, %edx
leaq 0x520(%rsp), %rdi
leaq 0x730c(%rip), %rsi      # 0xa18b
callq 0x2230
leaq 0x520(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movl $0x4, %edx
movq %rax, %rdi
leaq 0x729e(%rip), %rsi      # 0xa140
callq 0x2230
leaq 0x698(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0x22f0
movq 0x698(%rsp), %rdi
leaq 0x72d8(%rip), %rsi      # 0xa1a3
callq 0x2240
movq %rax, %r14
movq 0x698(%rsp), %rdi
leaq 0x6a8(%rsp), %rax
cmpq %rax, %rdi
je 0x2ef8
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x2210
movq %r14, %rdi
leaq 0x72a3(%rip), %rsi      # 0xa1a5
leaq 0x40(%rsp), %rdx
leaq 0x44(%rsp), %rcx
leaq 0x48(%rsp), %r8
leaq 0x4c(%rsp), %r9
xorl %eax, %eax
leaq 0x54(%rsp), %r10
pushq %r10
leaq 0xb0(%rsp), %r10
pushq %r10
leaq 0xb0(%rsp), %r10
pushq %r10
leaq 0x68(%rsp), %r10
pushq %r10
callq 0x2360
addq $0x20, %rsp
movq %r14, %rdi
callq 0x21f0
movl $0x4, %edx
leaq 0x310(%rsp), %rdi
leaq 0x7261(%rip), %rsi      # 0xa1c0
callq 0x2230
leaq 0x310(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movq %rax, %r14
movl $0x8, %edx
movq %rax, %rdi
leaq 0x7240(%rip), %rsi      # 0xa1c5
callq 0x2230
movl 0x44(%rsp), %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
movl $0xc, %edx
movq %rax, %rdi
leaq 0x7226(%rip), %rsi      # 0xa1ce
callq 0x2230
movl 0x4c(%rsp), %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
movl $0xb, %edx
movq %rax, %rdi
leaq 0x7210(%rip), %rsi      # 0xa1db
callq 0x2230
movl 0x50(%rsp), %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
movl $0x9, %edx
movq %rax, %rdi
leaq 0x71f9(%rip), %rsi      # 0xa1e7
callq 0x2230
movsd 0xa0(%rsp), %xmm0
movq %r14, %rdi
callq 0x2300
movq %rax, %r14
movl $0x7, %edx
movq %rax, %rdi
leaq 0x71db(%rip), %rsi      # 0xa1f1
callq 0x2230
movsd 0xa8(%rsp), %xmm0
movq %r14, %rdi
callq 0x2300
movq %rax, %r14
movl $0xa, %edx
movq %rax, %rdi
leaq 0x71bb(%rip), %rsi      # 0xa1f9
callq 0x2230
movq %r14, %rdi
movl 0x28(%rsp), %esi
callq 0x2330
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20f0
movl $0x4, %edx
movq 0xaf53(%rip), %rdi      # 0xdfd8
leaq 0x7134(%rip), %rsi      # 0xa1c0
callq 0x2230
movq 0xaf40(%rip), %rdi      # 0xdfd8
movl %ebx, %esi
callq 0x2330
movq %rax, %r14
movl $0x8, %edx
movq %rax, %rdi
leaq 0x7114(%rip), %rsi      # 0xa1c5
callq 0x2230
movl 0x44(%rsp), %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
movl $0xc, %edx
movq %rax, %rdi
leaq 0x70fa(%rip), %rsi      # 0xa1ce
callq 0x2230
movl 0x4c(%rsp), %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
movl $0xb, %edx
movq %rax, %rdi
leaq 0x70e4(%rip), %rsi      # 0xa1db
callq 0x2230
movl 0x50(%rsp), %esi
movq %r14, %rdi
callq 0x2330
movq %rax, %r14
movl $0x9, %edx
movq %rax, %rdi
leaq 0x70cd(%rip), %rsi      # 0xa1e7
callq 0x2230
movsd 0xa0(%rsp), %xmm0
movq %r14, %rdi
callq 0x2300
movq %rax, %r14
movl $0x7, %edx
movq %rax, %rdi
leaq 0x70af(%rip), %rsi      # 0xa1f1
callq 0x2230
movsd 0xa8(%rsp), %xmm0
movq %r14, %rdi
callq 0x2300
movq %rax, %r14
movl $0xa, %edx
movq %rax, %rdi
leaq 0x708f(%rip), %rsi      # 0xa1f9
callq 0x2230
movq %r14, %rdi
movl 0x28(%rsp), %esi
callq 0x2330
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20f0
movl 0x4c(%rsp), %eax
cmpl %r12d, %eax
jle 0x31bd
movl 0x54(%rsp), %ecx
movl %ecx, 0x28(%rsp)
movl %eax, %r12d
movl %ebx, 0x3c(%rsp)
movw $0x2, 0xe0(%rsp)
movl %r15d, %edi
movl $0x6, %esi
leaq 0xe0(%rsp), %rdx
xorl %eax, %eax
callq 0x20e0
movl %r15d, %edi
callq 0x2390
addl 0x4c(%rsp), %ebp
incl %ebx
movsd 0x78(%rsp), %xmm0
addsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
leaq 0x510(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x20(%rsp), %rdi
callq 0x2090
leaq 0x9a8(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
callq 0x2130
movq 0x70(%rsp), %rdi
callq 0x2090
cmpl $0x64, %ebx
jne 0x2da8
leaq 0x310(%rsp), %rdi
callq 0x22a0
leaq 0x9a8(%rsp), %rdi
callq 0x2100
movl $0x18, %edx
leaq 0x9b8(%rsp), %rdi
leaq 0x6f95(%rip), %rsi      # 0xa204
callq 0x2230
imull $0x186a0, 0x38(%rsp), %ebx # imm = 0x186A0
leaq 0x9b8(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
leaq 0x70ca(%rip), %rsi      # 0xa367
callq 0x2230
movq %r14, %rdi
movl 0x3c(%rsp), %esi
callq 0x2330
movq %rax, %r14
movl $0xd, %edx
movq %rax, %rdi
leaq 0x6f5d(%rip), %rsi      # 0xa21d
callq 0x2230
movq %r14, %rdi
movl 0xc(%rsp), %esi
callq 0x2330
movl $0xf, %edx
movq %rax, %rdi
leaq 0x6f4b(%rip), %rsi      # 0xa22b
callq 0x2230
leaq 0x510(%rsp), %rdi
leaq 0x9c0(%rsp), %rsi
callq 0x22f0
movq 0x510(%rsp), %rdi
callq 0x2190
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x332c
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x2210
cmpl 0x34(%rsp), %r12d
jle 0x342c
leaq 0x510(%rsp), %rdi
callq 0x2100
movl $0x18, %edx
leaq 0x520(%rsp), %rdi
leaq 0x6eac(%rip), %rsi      # 0xa204
callq 0x2230
leaq 0x520(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x6fe9(%rip), %rsi      # 0xa367
callq 0x2230
movq %rbx, %rdi
movl 0x3c(%rsp), %esi
callq 0x2330
movq %rax, %rbx
movl $0xd, %edx
movq %rax, %rdi
leaq 0x6e7c(%rip), %rsi      # 0xa21d
callq 0x2230
movq %rbx, %rdi
movl 0xc(%rsp), %esi
callq 0x2330
movl $0x13, %edx
movq %rax, %rdi
leaq 0x6e7a(%rip), %rsi      # 0xa23b
callq 0x2230
leaq 0x698(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0x22f0
movq 0x698(%rsp), %rdi
callq 0x2190
movq 0x698(%rsp), %rdi
leaq 0x6a8(%rsp), %rax
cmpq %rax, %rdi
je 0x340d
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0x510(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x20(%rsp), %rdi
callq 0x2090
movl %r12d, 0x34(%rsp)
leaq 0x510(%rsp), %rdi
callq 0x2100
movl $0x8, %edx
leaq 0x520(%rsp), %rdi
leaq 0x6e1f(%rip), %rsi      # 0xa26c
callq 0x2230
leaq 0x520(%rsp), %rdi
movl 0xc(%rsp), %esi
callq 0x2330
movl $0xf, %edx
movq %rax, %rdi
leaq 0x6ddd(%rip), %rsi      # 0xa24f
callq 0x2230
leaq 0x698(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0x22f0
movq 0x698(%rsp), %rsi
leaq 0x310(%rsp), %rdi
movl $0x11, %edx
callq 0x2050
movq 0x698(%rsp), %rdi
leaq 0x6a8(%rsp), %rax
cmpq %rax, %rdi
je 0x34cb
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x2210
cvtsi2sd %ebp, %xmm0
divsd 0x6b31(%rip), %xmm0     # 0xa008
leaq 0x310(%rsp), %rdi
callq 0x2300
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x6d69(%rip), %rsi      # 0xa25f
callq 0x2230
movsd 0x78(%rsp), %xmm0
divsd 0x6aff(%rip), %xmm0     # 0xa008
movq %rbx, %rdi
callq 0x2300
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20f0
leaq 0x310(%rsp), %rdi
callq 0x22a0
leaq 0x698(%rsp), %rdi
callq 0x2100
movl $0x1a, %edx
leaq 0x6a8(%rsp), %rdi
leaq 0x6dba(%rip), %rsi      # 0xa323
callq 0x2230
leaq 0xb30(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x22f0
movq 0xb30(%rsp), %rdi
leaq 0xfc8(%rsp), %rsi
callq 0x21b0
movl %eax, %ebx
movq 0xb30(%rsp), %rdi
leaq 0xb40(%rsp), %rax
cmpq %rax, %rdi
je 0x35bf
movq 0xb40(%rsp), %rsi
incq %rsi
callq 0x2210
testl %ebx, %ebx
jne 0x389d
leaq 0xb30(%rsp), %rdi
callq 0x2100
cmpl $0x0, 0x1c(%rsp)
je 0x3636
movl $0x12, %edx
leaq 0xb40(%rsp), %rdi
leaq 0x6c73(%rip), %rsi      # 0xa262
callq 0x2230
leaq 0xb40(%rsp), %rdi
movl 0xc(%rsp), %esi
callq 0x2330
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x6c5e(%rip), %rsi      # 0xa275
callq 0x2230
movq %rbx, %rdi
movl 0x1c(%rsp), %esi
callq 0x2330
movl $0x2c, %edx
leaq 0x6c90(%rip), %rsi      # 0xa2c4
jmp 0x368d
movl $0x12, %edx
leaq 0xb40(%rsp), %rdi
leaq 0x6c18(%rip), %rsi      # 0xa262
callq 0x2230
leaq 0xb40(%rsp), %rdi
movl 0xc(%rsp), %esi
callq 0x2330
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x6c03(%rip), %rsi      # 0xa275
callq 0x2230
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2330
movl $0x3f, %edx
leaq 0x6bf7(%rip), %rsi      # 0xa284
movq %rax, %rdi
callq 0x2230
leaq 0x820(%rsp), %rdi
leaq 0xb48(%rsp), %rsi
callq 0x22f0
movq 0x820(%rsp), %rdi
callq 0x2190
movq 0x820(%rsp), %rdi
leaq 0x830(%rsp), %rax
cmpq %rax, %rdi
je 0x36dc
movq 0x830(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0x820(%rsp), %rdi
callq 0x2100
movl $0x18, %edx
leaq 0x830(%rsp), %rdi
leaq 0x6bf4(%rip), %rsi      # 0xa2f1
callq 0x2230
leaq 0xcb8(%rsp), %rdi
leaq 0x838(%rsp), %rsi
callq 0x22f0
movq 0xcb8(%rsp), %rdi
callq 0x2190
movq 0xcb8(%rsp), %rdi
leaq 0xcc8(%rsp), %rax
cmpq %rax, %rdi
je 0x3749
movq 0xcc8(%rsp), %rsi
incq %rsi
callq 0x2210
cmpl $0x0, 0x1c(%rsp)
jne 0x37db
leaq 0xcb8(%rsp), %rdi
callq 0x2100
movl $0x15, %edx
leaq 0xcc8(%rsp), %rdi
leaq 0x6b95(%rip), %rsi      # 0xa30a
callq 0x2230
leaq 0x80(%rsp), %rdi
leaq 0xcd0(%rsp), %rsi
callq 0x22f0
movq 0x80(%rsp), %rdi
callq 0x2190
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x37c1
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0xcb8(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x60(%rsp), %rdi
callq 0x2090
leaq 0xcb8(%rsp), %rdi
callq 0x2100
movl $0x1d, %edx
leaq 0xcc8(%rsp), %rdi
leaq 0x6b24(%rip), %rsi      # 0xa320
callq 0x2230
leaq 0x80(%rsp), %rdi
leaq 0xcd0(%rsp), %rsi
callq 0x22f0
movq 0x80(%rsp), %rdi
callq 0x2190
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x3848
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x2210
incl 0x1c(%rsp)
leaq 0xcb8(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x60(%rsp), %rdi
callq 0x2090
leaq 0x820(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0xb8(%rsp), %rdi
callq 0x2090
leaq 0xb30(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x68(%rsp), %rdi
callq 0x2090
xorl %ebx, %ebx
leaq 0xb30(%rsp), %r14
movq %r14, %rdi
callq 0x2100
movl $0x14, %edx
leaq 0xb40(%rsp), %rdi
leaq 0x6a7b(%rip), %rsi      # 0xa33e
callq 0x2230
leaq 0xb40(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movl $0x4, %edx
movq %rax, %rdi
leaq 0x685a(%rip), %rsi      # 0xa140
callq 0x2230
leaq 0x820(%rsp), %rdi
leaq 0xb48(%rsp), %rsi
callq 0x22f0
movq 0x820(%rsp), %rdi
callq 0x2190
movq 0x820(%rsp), %rdi
leaq 0x830(%rsp), %rax
cmpq %rax, %rdi
je 0x3932
movq 0x830(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0xb30(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
callq 0x2130
movq 0x68(%rsp), %rdi
callq 0x2090
incl %ebx
cmpl $0x14, %ebx
jne 0x38a7
leaq 0x698(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0xc0(%rsp), %rdi
callq 0x2090
leaq 0x510(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x20(%rsp), %rdi
callq 0x2090
leaq 0x9a8(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x70(%rsp), %rdi
callq 0x2090
leaq 0x128(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0xc8(%rsp), %rdi
callq 0x2090
movq 0xd8(%rsp), %rax
movq %rax, 0x310(%rsp)
movq -0x18(%rax), %rax
movq 0xd0(%rsp), %rcx
movq %rcx, 0x310(%rsp,%rax)
leaq 0x318(%rsp), %rdi
callq 0x2180
leaq 0x408(%rsp), %rdi
callq 0x2090
xorl %ebx, %ebx
leaq 0x310(%rsp), %r14
movq %r14, %rdi
callq 0x2100
movl $0x12, %edx
leaq 0x320(%rsp), %rdi
leaq 0x692a(%rip), %rsi      # 0xa356
callq 0x2230
leaq 0x320(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movl $0x4, %edx
movq %rax, %rdi
leaq 0x66f1(%rip), %rsi      # 0xa140
callq 0x2230
leaq 0x128(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x22f0
movq 0x128(%rsp), %rdi
leaq 0xfc8(%rsp), %rsi
callq 0x21b0
movl %eax, %ebp
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x3aa5
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0x310(%rsp), %rdi
movq %r13, %rsi
callq 0x2130
movq 0x10(%rsp), %rdi
callq 0x2090
testl %ebp, %ebp
jne 0x3ad8
incl %ebx
cmpl $0x14, %ebx
leaq 0x310(%rsp), %r14
jne 0x3a10
jmp 0x3ae9
cmpl $0x14, %ebx
leaq 0x310(%rsp), %r14
jne 0x3b9e
xorl %ebx, %ebx
movq %r14, %rdi
callq 0x2100
movl $0x15, %edx
leaq 0x320(%rsp), %rdi
leaq 0x684c(%rip), %rsi      # 0xa353
callq 0x2230
leaq 0x320(%rsp), %rdi
movl %ebx, %esi
callq 0x2330
movl $0x4, %edx
movq %rax, %rdi
leaq 0x6616(%rip), %rsi      # 0xa140
callq 0x2230
leaq 0x128(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x22f0
movq 0x128(%rsp), %rdi
callq 0x2190
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x3b76
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
leaq 0x310(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
callq 0x2130
movq 0x10(%rsp), %rdi
callq 0x2090
incl %ebx
cmpl $0x14, %ebx
jne 0x3aeb
movl $0x186a0, %edi          # imm = 0x186A0
callq 0x2290
jmp 0x2c0c
movq 0xa424(%rip), %rdi      # 0xdfd8
leaq 0x652d(%rip), %rsi      # 0xa0e8
callq 0x21e0
movq %rax, %rdi
callq 0x20b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2260
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x3bfa
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3c34
jmp 0x3bfe
movq %rax, %rbx
jmp 0x3c34
jmp 0x3c82
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x3c34
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3c34
jmp 0x3c31
movq %rax, %rbx
movq 0xa37d(%rip), %rsi      # 0xdfb8
leaq 0xcb8(%rsp), %rdi
callq 0x2130
movq 0x60(%rsp), %rdi
callq 0x2090
jmp 0x3c85
jmp 0x3c82
movq %rax, %rbx
movq 0xcb8(%rsp), %rdi
leaq 0xcc8(%rsp), %rax
cmpq %rax, %rdi
je 0x3c85
movq 0xcc8(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3c85
jmp 0x3c82
movq %rax, %rbx
movq 0xa32c(%rip), %rsi      # 0xdfb8
leaq 0x820(%rsp), %rdi
callq 0x2130
movq 0xb8(%rsp), %rdi
callq 0x2090
jmp 0x3def
jmp 0x3dec
movq %rax, %rbx
movq 0x820(%rsp), %rdi
leaq 0x830(%rsp), %rax
cmpq %rax, %rdi
je 0x3def
movq 0x830(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3def
jmp 0x3dec
jmp 0x3e57
movq %rax, %rbx
movq 0x698(%rsp), %rdi
leaq 0x6a8(%rsp), %rax
cmpq %rax, %rdi
je 0x3d13
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3f24
jmp 0x3df4
jmp 0x3e01
jmp 0x3e57
jmp 0x3e57
jmp 0x3e09
movq %rax, %rbx
movq 0x698(%rsp), %rdi
leaq 0x6a8(%rsp), %rax
cmpq %rax, %rdi
je 0x3f24
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3f24
jmp 0x3e09
jmp 0x3e01
movq %rax, %rbx
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x3f42
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3f42
jmp 0x3e01
jmp 0x3ed6
movq %rax, %rbx
movq 0x9a8(%rsp), %rdi
leaq 0x9b8(%rsp), %rax
cmpq %rax, %rdi
je 0x3fa9
movq 0x9b8(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3fa9
jmp 0x3ed6
movq %rax, %rbx
jmp 0x3fca
jmp 0x40cb
jmp 0x40cb
movq %rax, %rbx
jmp 0x3ee5
movq %rax, %rbx
jmp 0x3f24
jmp 0x3ed6
movq %rax, %rbx
jmp 0x3f42
movq %rax, %rbx
jmp 0x3f24
jmp 0x3f44
jmp 0x40cb
jmp 0x3f44
jmp 0x40cb
movq %rax, %rbx
movq 0x820(%rsp), %rdi
leaq 0x830(%rsp), %rax
cmpq %rax, %rdi
je 0x3e4d
movq 0x830(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3ee5
jmp 0x3ee2
movq %rax, %rbx
jmp 0x3f03
movq %rax, %rbx
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x3e87
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3f47
jmp 0x3f44
jmp 0x40cb
jmp 0x3f6a
jmp 0x3f65
movq %rax, %rbx
movq 0x510(%rsp), %rdi
leaq 0x520(%rsp), %rax
cmpq %rax, %rdi
je 0x3f8b
movq 0x520(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x3f8b
jmp 0x3f65
movq %rax, %rbx
jmp 0x3fa9
jmp 0x3f44
jmp 0x3f44
movq %rax, %rbx
movq 0xa0cc(%rip), %rsi      # 0xdfb8
leaq 0xb30(%rsp), %rdi
callq 0x2130
movq 0x68(%rsp), %rdi
callq 0x2090
movq 0xa0ae(%rip), %rsi      # 0xdfb8
leaq 0x698(%rsp), %rdi
callq 0x2130
movq 0xc0(%rsp), %rdi
callq 0x2090
movq 0xa08d(%rip), %rsi      # 0xdfb8
leaq 0x510(%rsp), %rdi
callq 0x2130
movq 0x20(%rsp), %rdi
callq 0x2090
jmp 0x3f8b
movq %rax, %rbx
movq 0xa06a(%rip), %rsi      # 0xdfb8
leaq 0x310(%rsp), %rdi
callq 0x2130
movq 0x10(%rsp), %rdi
jmp 0x4098
movq %rax, %rbx
jmp 0x3f8b
movq %rax, %rbx
movq 0xa044(%rip), %rsi      # 0xdfb8
leaq 0x510(%rsp), %rdi
callq 0x2130
movq 0x20(%rsp), %rdi
callq 0x2090
movq 0xa026(%rip), %rsi      # 0xdfb8
leaq 0x9a8(%rsp), %rdi
callq 0x2130
movq 0x70(%rsp), %rdi
callq 0x2090
movq 0xa008(%rip), %rsi      # 0xdfb8
leaq 0x128(%rsp), %rdi
callq 0x2130
movq 0xc8(%rsp), %rdi
callq 0x2090
leaq 0x310(%rsp), %rdi
callq 0x22c0
jmp 0x40ce
movq %rax, %rbx
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x4004
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x407c
jmp 0x400d
jmp 0x40cb
movq %rax, %rbx
jmp 0x407c
movq %rax, %rbx
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x403f
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x403f
movq %rax, %rbx
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x407c
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x407c
jmp 0x4079
jmp 0x40cb
movq %rax, %rbx
movl $0x50, %esi
movq %r15, %rdi
jmp 0x40c2
jmp 0x40cb
movq %rax, %rbx
movq 0x9f35(%rip), %rsi      # 0xdfb8
leaq 0x310(%rsp), %rdi
callq 0x2130
leaq 0x390(%rsp), %rdi
callq 0x2090
jmp 0x40ce
movq %rax, %rbx
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x40ce
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x40ce
jmp 0x40cb
movq %rax, %rbx
movq 0x9ee3(%rip), %rsi      # 0xdfb8
leaq 0xe40(%rsp), %rdi
callq 0x2130
leaq 0xec0(%rsp), %rdi
jmp 0x418f
jmp 0x414b
movq %rax, %rbx
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x4158
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x4158
jmp 0x4155
jmp 0x4150
movq %rax, %rbx
movq 0xe40(%rsp), %rdi
leaq 0xe50(%rsp), %rax
cmpq %rax, %rdi
je 0x4176
movq 0xe50(%rsp), %rsi
incq %rsi
callq 0x2210
jmp 0x4176
jmp 0x4150
movq %rax, %rbx
jmp 0x4194
movq %rax, %rbx
jmp 0x4176
movq %rax, %rbx
movq 0x9e59(%rip), %rsi      # 0xdfb8
leaq 0xe40(%rsp), %rdi
callq 0x2130
movq 0x10(%rsp), %rdi
callq 0x2090
movq 0x9e3b(%rip), %rsi      # 0xdfb8
leaq 0x310(%rsp), %rdi
callq 0x2130
movq 0x28(%rsp), %rdi
callq 0x2090
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x41b9
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x2210
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x41de
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x2210
movq 0x9deb(%rip), %rax      # 0xdfd0
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x1060(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x1058(%rsp,%rcx)
callq 0x2180
leaq 0x1150(%rsp), %rdi
callq 0x2090
jmp 0x421b
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x4240
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x2210
movq %rbx, %rdi
callq 0x2340