// File: TooruAkagi[P]GCIS_Index/gcis_uni_locate.cpp
// Function: main
int main(int argc, char *argv[]){
    for(int i = 0;i<argc;i++){
      if('-'==argv[i][0]){ //符号
        if('i'==argv[i][1]){ //input
            int k = strlen(argv[i+1]);
            inname = (char*)malloc(k);
            for(int k2=0;k2<k;k2++){inname[k2]=argv[i+1][k2];}
        }
        if('q'==argv[i][1]){ //input
            int k = strlen(argv[i+1]);
            qname = (char*)malloc(k);
            for(int k2=0;k2<k;k2++){qname[k2]=argv[i+1][k2];}
        }
        if('m'==argv[i][1]){ //mode
            runmode=0;
            for(int k = 0;k<strlen(argv[i+1]);k++){
                if(10 > argv[i+1][k]-'0' && argv[i+1][k]-'0'>=0){
                runmode *=10;
                runmode += argv[i+1][k] - '0';
                }
                else{break;}
            }
        }
        if('r'==argv[i][1]){ //mode
            querysuu=0;
            for(int k = 0;k<strlen(argv[i+1]);k++){
                if(10 > argv[i+1][k]-'0' && argv[i+1][k]-'0'>=0){
                querysuu *=10;
                querysuu += argv[i+1][k] - '0';
                }
                else{break;}
            }
        }
        if('l'==argv[i][1]){ //mode
            plength=0;
            for(int k = 0;k<strlen(argv[i+1]);k++){
                if(10 > argv[i+1][k]-'0' && argv[i+1][k]-'0'>=0){
                plength *=10;
                plength += argv[i+1][k] - '0';
                }
                else{break;}
            }
        }
        if('s'==argv[i][1]){ //mode
            qstart=0;
            for(int k = 0;k<strlen(argv[i+1]);k++){
                if(10 > argv[i+1][k]-'0' && argv[i+1][k]-'0'>=0){
                qstart *=10;
                qstart += argv[i+1][k] - '0';
                }
                else{break;}
            }
        }
        if('h'==argv[i][1]){shelp();return 0;} //help
        i++;continue;
      }
    }
    if(qname==NULL){shelp();return 0;} //
    if(inname==NULL){
      int k = strlen(defaultinname);
      inname = (char*)malloc(k);
      for(int k2=0;k2<k;k2++){inname[k2]=defaultinname[k2];}
    }
    if(runmode==-1){runmode=MMODE;}
    if(plength==-1){plength=MLONG;}
    if(querysuu==-1){querysuu=MREP;}
    if(qstart==-1){qstart=MSTART;}
    FILE *fp;
    dcs[0] = 0;dc2s[0] = 0;ccs[0] = 0;cc2s[0] = 0; 
    unsigned char chr;
    unsigned int a;
    fp = fopen(inname, "r");
    int flag = 0; //0:loops,1:dcs,2:dc2s,3:D,4:D_2,5:D3,6:NS
    int w = 0;
    while(flag<11){ //18種類の配列を，その様式ごとにindexファイルから拾う
        fscanf(fp,"%c",&chr);a = chr;
        fscanf(fp,"%c",&chr);a += chr*256;
        fscanf(fp,"%c",&chr);a += chr*65536;
        fscanf(fp,"%c",&chr);a += chr*65536*256;
        if(flag==11 && w==0){
            //printf("\n[%d]:%u [%d,%d]",flag,a,dc2s[loops]-Sizelist[2],D_3[w]);
            //for(int yj=0;yj<loops;yj++){printf("(%d)",cc2s[yj]);}
            exit(1);
        }
        if(flag==10){NS[w]=a;w++;if(w==Sizelist[0]){flag++;w=0;}}
        if(flag==9){k3sub[w]=a;w++;if(w==Sizelist[3]){flag++;w=0;}}
        if(flag==8){d2topsub[w]=a;w++;if(w==Sizelist[5]){flag++;w=0;}}
        if(flag==7){D_3[w]=a;w++;if(w==dc2s[loops]-Sizelist[2]){flag++;w=0;}}
        if(flag==6){exceptr[w]=a;
            //printf("\nexceptr[%d] = %d",w,exceptr[w]);
            if(w==loops){
                flag++;w=0;
                if(dc2s[loops] == Sizelist[2]){flag++;} //D_3(4byte)がなかったら飛ばす
            }else{w++;}
        }
        if(flag==5){cc2s[w]=a;if(w==loops){flag++;w=0;}else{w++;}}
        if(flag==4){ccs[w]=a;if(w==loops){flag++;w=1;}else{w++;}}
        if(flag==3){dc2s[w]=a;
            //printf("\ndc2s[%d] = %d",w,a);
            if(w==loops){
                D_3 = (int*)malloc(4*(dc2s[loops] - Sizelist[2])); //D_3の配列サイズだけは後から決まる
                flag++;w=1;
            }
            else{w++;}
        }
        if(flag==2){dcs[w]=a;if(w==loops){flag++;w=1;}else{w++;}}
        if(flag==1){
            Sizelist[w]=a;
            if(w==10){
                flag++;w=1; //各種サイズを設定
                NS = (int*)malloc(4*Sizelist[0]);
                D_3s = (unsigned char*)malloc(Sizelist[1]);
                D_3m = (unsigned short int*)malloc(2*(Sizelist[2]-Sizelist[1]));
                d2topsub = (int*)malloc(4*Sizelist[5]);
                d2topsub2 = (unsigned short int*)malloc(2*Sizelist[6]);
                k3sub = (int*)malloc(4*Sizelist[3]);
                k3sub2 = (unsigned short int*)malloc(2*Sizelist[4]);
                k = (bool*)malloc(Sizelist[7]);
                k3 = (bool*)malloc(Sizelist[8]);
                d2under = (bool*)malloc(Sizelist[10]);
                d2top = (bool*)malloc(Sizelist[9]);
            }else{w++;}}
        if(flag==0){loops=a;flag++;}
    }
    //printf("\n-finishing 4byte part-\n");
    if(Sizelist[2]-Sizelist[1]==0){flag++;w=0;} //D_3mはないので，flagを一つ進める
    while(flag<14){ //2byteデータを読み込む
        fscanf(fp,"%c",&chr);a = chr;
        fscanf(fp,"%c",&chr);a += chr*256;
        //if(flag==13 && w == 1060){printf("//%d(%d)//",chr,Sizelist[4]);exit(3);}
        if(flag==13){k3sub2[w]=a;if(w+1==Sizelist[4]){flag++;w=0;}else{w++;}}
        if(flag==12){d2topsub2[w]=a;if(w+1==Sizelist[6]){flag++;w=0;}else{w++;}}
        if(flag==11){D_3m[w]=a;if(w+1==Sizelist[2]-Sizelist[1]){flag++;w=0;}else{w++;}}
    }
    d2topx = (unsigned char*)malloc(Sizelist[9]/8 + 1);
    k3x = (unsigned char*)malloc(Sizelist[8]/8 + 1);
    //printf("\n-finishing 2byte part-\n");
    while(flag<19){ //1byte式のデータ・bit列を読み込む
        fscanf(fp,"%c",&chr);a = chr;
        if(flag==16 && w>=0 && w<300){mote=1;}else{mote=0;}
        if(flag==18){
            d2topx[w/8]=a;
            if(bitload(d2top,a,w,Sizelist[9])==-1){flag++;w=0;}
            else{w+=8;}}
        if(flag==17){if(bitload(d2under,a,w,Sizelist[10])==-1){flag++;w=0;}else{w+=8;}}
        if(flag==16){
            k3x[w/8]=a;
            if(bitload(k3,a,w,Sizelist[8])==-1){flag++;w=0;}
            else{w+=8;}
        }
        if(flag==15){if(bitload(k,a,w,Sizelist[7])==-1){flag++;w=0;}else{w+=8;}}
        if(flag==14){D_3s[w]=a;if(w+1==Sizelist[1]){flag++;w=0;}else{w++;}}
    }
    fclose(fp);
    cc2s[loops]=Sizelist[8];ccs[loops]=Sizelist[8]-dc2s[loops];
    for(int i=0;i<256;i++){
        int ju = 128;
        int je = 0;
        for(int j=0;j<8;j++){
            if(i%(ju*2)>=ju){je++;}
            rankct[i][j] = je;
            ju = ju/2;
        }
    } //rankctの定義
    int popo = 5;
    int ujk = ccs[popo]; //ccs[popo+1]-ccs[popo]+2 ccs[popo+1]-ccs[popo]+2
    
    int ancl[querysuu][5];
    int anst[querysuu];
    double ancd[querysuu];
    int *m;
    int msize = 10000;
    m = (int*)malloc(4*msize);
    msize = queryload(m);
    double avt = 0;
    int jogaipar = 0;
    if(runmode==2){
        msize = qrmload(m,plength,0,anst);
        clock_t timesb = clock();
        patternmatching1(m,msize,loops);
        clock_t timee = clock();
        const double time = static_cast<double>(timee - timesb) / CLOCKS_PER_SEC * 1000.0;
        printf("\n[length of the pattern : %d] / ans:%d / core:%d : time %lf[ms]\n",msize,ans,coreans,time);
        printf("\nvain = %d",vain);
        if(CHECKFLAG==1){
            msize = qrmload(m,plength,0,anst);
            anscheck(msize,m);
        }
    }
    if(runmode==1 || runmode==3){
        double pertime = 0.00;
        if(runmode==3){srand((unsigned int)time(NULL));}
        for(int jo = 0;jo < querysuu;jo++){
            int ralen = plength;
            if(runmode==1){ralen = plength;}
            msize = qrmload(m,ralen,jo,anst);
            clock_t timesb = clock();
            patternmatching1(m,msize,loops);
            clock_t timee = clock();
            const double time = static_cast<double>(timee - timesb) / CLOCKS_PER_SEC * 1000.0;
            const double time2 = static_cast<double>(timessub - timesb) / CLOCKS_PER_SEC * 1000.0;
            printf("\n[length of the pattern : %d] / (%d) : time %lf[ms]\n",msize,ans,time);
            printf("\nvain = %d",vain);
            ancl[jo][0] = ans;
            ancl[jo][1] = coreans;coreans=0;
            ancl[jo][2] = ralen;
            ancl[jo][3] = transk;
            ancd[jo] = time;
            avt+=time;
            pertime += (time2*100)/time;
            if(CHECKFLAG==1){
                msize = qrmreload(m,ralen);
                anscheck(msize,m);
            }
            ans=0;
        }
        printf("avarage time : %lf[ms]",avt/querysuu);
        for(int jo=0;jo<querysuu;jo++){
            printf("\n(%d : P-length : %d from position %d[%d trans] / ans:%d / core:%d / time %lf[ms])",jo,ancl[jo][2],anst[jo],ancl[jo][3],ancl[jo][0],ancl[jo][1],ancd[jo]);
            }
        printf("\n[transformation time : %.3f %]\n",pertime/querysuu);
    }
    if(runmode==4){
        for(int jo = 0;jo < querysuu;jo++){
            msize = qrmloadset(m,jo);
            //if(jswt==1){printf("\n除外");jogaipar++;jo--;continue;}
            if(DEBUGFLAG==1){
                printf("\n検索文字列:[");
                for(int rek = 0;rek<msize;rek++){printf("%c",m[rek]);}
                printf("]\n");
            }
            clock_t timesb = clock();
            patternmatching1(m,msize,loops);
            clock_t timee = clock();
            const double time = static_cast<double>(timee - timesb) / CLOCKS_PER_SEC * 1000.0;
            printf("\n[length of the pattern : %d] / (ans:%d / core:%d ) : time %lf[ms]\n",msize,ans,coreans,time);
            ancl[jo][0] = ans;ans=0;
            ancl[jo][1] = coreans;coreans=0;
            ancl[jo][2] = msize;
            ancl[jo][3] = transk;
            ancd[jo] = time;
            avt += time;
        }
        printf("avarage time : %lf[ms]",avt/querysuu);
        for(int jo=0;jo<querysuu;jo++){
            printf("\n(P-length : %d [%d trans] / ans:%d / core:%d / time %lf[ms])",ancl[jo][2],ancl[jo][3],ancl[jo][0],ancl[jo][1],ancd[jo]);
            }
    }
    if(runmode==0){
        msize = queryload(m);
        clock_t timesb = clock();
        patternmatching1(m,msize,loops);
        clock_t timee = clock();
        const double time = static_cast<double>(timee - timesb) / CLOCKS_PER_SEC * 1000.0;
        printf("\n[length of the pattern : %d] / (%d) : time %lf[ms]\n",msize,ans,time);
        printf("\nvain = %d",vain);
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x8ad1
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %ecx
movl $0x2d, %eax
cmpl %ecx, %eax
jne 0x8ac1
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movl $0x69, %eax
cmpl %ecx, %eax
jne 0x863c
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20b0
movl %eax, -0x18(%rbp)
movslq -0x18(%rbp), %rdi
callq 0x21f0
movq %rax, 0x5c0e(%rip)      # 0xe208
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x863a
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x1c(%rbp), %rcx
movb (%rax,%rcx), %dl
movq 0x5be0(%rip), %rax      # 0xe208
movslq -0x1c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x8601
jmp 0x863c
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movl $0x71, %eax
cmpl %ecx, %eax
jne 0x86c0
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20b0
movl %eax, -0x20(%rbp)
movslq -0x20(%rbp), %rdi
callq 0x21f0
movq %rax, 0x5b92(%rip)      # 0xe210
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x86be
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x24(%rbp), %rcx
movb (%rax,%rcx), %dl
movq 0x5b64(%rip), %rax      # 0xe210
movslq -0x24(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x8685
jmp 0x86c0
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movl $0x6d, %eax
cmpl %ecx, %eax
jne 0x87b3
movl $0x0, 0x5a75(%rip)      # 0xe15c
movl $0x0, -0x28(%rbp)
movslq -0x28(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20b0
movq %rax, %rcx
movq -0x140(%rbp), %rax
cmpq %rcx, %rax
jae 0x87b1
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
subl $0x30, %ecx
movl $0xa, %eax
cmpl %ecx, %eax
jle 0x879f
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
cmpl $0x0, %eax
jl 0x879f
imull $0xa, 0x59ed(%rip), %eax # 0xe15c
movl %eax, 0x59e7(%rip)      # 0xe15c
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
addl 0x59c5(%rip), %eax      # 0xe15c
movl %eax, 0x59bf(%rip)      # 0xe15c
jmp 0x87a1
jmp 0x87b1
jmp 0x87a3
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x86ee
jmp 0x87b3
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movl $0x72, %eax
cmpl %ecx, %eax
jne 0x88a6
movl $0x0, 0x598a(%rip)      # 0xe164
movl $0x0, -0x2c(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20b0
movq %rax, %rcx
movq -0x148(%rbp), %rax
cmpq %rcx, %rax
jae 0x88a4
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
subl $0x30, %ecx
movl $0xa, %eax
cmpl %ecx, %eax
jle 0x8892
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
cmpl $0x0, %eax
jl 0x8892
imull $0xa, 0x5902(%rip), %eax # 0xe164
movl %eax, 0x58fc(%rip)      # 0xe164
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
addl 0x58da(%rip), %eax      # 0xe164
movl %eax, 0x58d4(%rip)      # 0xe164
jmp 0x8894
jmp 0x88a4
jmp 0x8896
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x87e1
jmp 0x88a6
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movl $0x6c, %eax
cmpl %ecx, %eax
jne 0x8999
movl $0x0, 0x5893(%rip)      # 0xe160
movl $0x0, -0x30(%rbp)
movslq -0x30(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20b0
movq %rax, %rcx
movq -0x150(%rbp), %rax
cmpq %rcx, %rax
jae 0x8997
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
subl $0x30, %ecx
movl $0xa, %eax
cmpl %ecx, %eax
jle 0x8985
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
cmpl $0x0, %eax
jl 0x8985
imull $0xa, 0x580b(%rip), %eax # 0xe160
movl %eax, 0x5805(%rip)      # 0xe160
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
addl 0x57e3(%rip), %eax      # 0xe160
movl %eax, 0x57dd(%rip)      # 0xe160
jmp 0x8987
jmp 0x8997
jmp 0x8989
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x88d4
jmp 0x8999
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movl $0x73, %eax
cmpl %ecx, %eax
jne 0x8a8c
movl $0x0, 0x57a8(%rip)      # 0xe168
movl $0x0, -0x34(%rbp)
movslq -0x34(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20b0
movq %rax, %rcx
movq -0x158(%rbp), %rax
cmpq %rcx, %rax
jae 0x8a8a
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
subl $0x30, %ecx
movl $0xa, %eax
cmpl %ecx, %eax
jle 0x8a78
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
cmpl $0x0, %eax
jl 0x8a78
imull $0xa, 0x5720(%rip), %eax # 0xe168
movl %eax, 0x571a(%rip)      # 0xe168
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
addl 0x56f8(%rip), %eax      # 0xe168
movl %eax, 0x56f2(%rip)      # 0xe168
jmp 0x8a7a
jmp 0x8a8a
jmp 0x8a7c
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x89c7
jmp 0x8a8c
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x1(%rax), %ecx
movl $0x68, %eax
cmpl %ecx, %eax
jne 0x8ab6
callq 0x8480
movl $0x0, -0x4(%rbp)
jmp 0x9d12
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x8ac3
jmp 0x8ac3
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x8590
cmpq $0x0, 0x5737(%rip)      # 0xe210
jne 0x8aec
callq 0x8480
movl $0x0, -0x4(%rbp)
jmp 0x9d12
cmpq $0x0, 0x5714(%rip)      # 0xe208
jne 0x8b4d
leaq 0x5653(%rip), %rdi      # 0xe150
callq 0x20b0
movl %eax, -0x38(%rbp)
movslq -0x38(%rbp), %rdi
callq 0x21f0
movq %rax, 0x56f3(%rip)      # 0xe208
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x38(%rbp), %eax
jge 0x8b4b
movslq -0x3c(%rbp), %rcx
leaq 0x5621(%rip), %rax      # 0xe150
movb (%rax,%rcx), %dl
movq 0x56cf(%rip), %rax      # 0xe208
movslq -0x3c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x8b1c
jmp 0x8b4d
cmpl $-0x1, 0x5608(%rip)     # 0xe15c
jne 0x8b60
movl $0x3, 0x55fc(%rip)      # 0xe15c
cmpl $-0x1, 0x55f9(%rip)     # 0xe160
jne 0x8b73
movl $0x64, 0x55ed(%rip)     # 0xe160
cmpl $-0x1, 0x55ea(%rip)     # 0xe164
jne 0x8b86
movl $0xa, 0x55de(%rip)      # 0xe164
cmpl $-0x1, 0x55db(%rip)     # 0xe168
jne 0x8b99
movl $0x0, 0x55cf(%rip)      # 0xe168
movl $0x0, 0x56fd(%rip)      # 0xe2a0
movl $0x0, 0x5743(%rip)      # 0xe2f0
movl $0x0, 0x5789(%rip)      # 0xe340
movl $0x0, 0x57cf(%rip)      # 0xe390
movq 0x5640(%rip), %rdi      # 0xe208
leaq 0x246c(%rip), %rsi      # 0xb03b
callq 0x21c0
movq %rax, -0x48(%rbp)
movl $0x0, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
cmpl $0xb, -0x54(%rbp)
jge 0x906d
movq -0x48(%rbp), %rdi
leaq 0x2925(%rip), %rsi      # 0xb520
leaq -0x49(%rbp), %rdx
movb $0x0, %al
callq 0x2270
movzbl -0x49(%rbp), %eax
movl %eax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
leaq 0x2908(%rip), %rsi      # 0xb520
leaq -0x49(%rbp), %rdx
movb $0x0, %al
callq 0x2270
movzbl -0x49(%rbp), %eax
shll $0x8, %eax
addl -0x50(%rbp), %eax
movl %eax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
leaq 0x28e5(%rip), %rsi      # 0xb520
leaq -0x49(%rbp), %rdx
movb $0x0, %al
callq 0x2270
movzbl -0x49(%rbp), %eax
shll $0x10, %eax
addl -0x50(%rbp), %eax
movl %eax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
leaq 0x28c2(%rip), %rsi      # 0xb520
leaq -0x49(%rbp), %rdx
movb $0x0, %al
callq 0x2270
movzbl -0x49(%rbp), %eax
shll $0x10, %eax
shll $0x8, %eax
addl -0x50(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0xb, -0x54(%rbp)
jne 0x8c8f
cmpl $0x0, -0x58(%rbp)
jne 0x8c8f
movl $0x1, %edi
callq 0x21e0
cmpl $0xa, -0x54(%rbp)
jne 0x8ccc
movl -0x50(%rbp), %edx
movq 0x5799(%rip), %rax      # 0xe438
movslq -0x58(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl 0x54f8(%rip), %eax      # 0xe1b0
jne 0x8cca
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x8ccc
cmpl $0x9, -0x54(%rbp)
jne 0x8d09
movl -0x50(%rbp), %edx
movq 0x5784(%rip), %rax      # 0xe460
movslq -0x58(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl 0x54c7(%rip), %eax      # 0xe1bc
jne 0x8d07
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x8d09
cmpl $0x8, -0x54(%rbp)
jne 0x8d46
movl -0x50(%rbp), %edx
movq 0x573f(%rip), %rax      # 0xe458
movslq -0x58(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl 0x5492(%rip), %eax      # 0xe1c4
jne 0x8d44
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x8d46
cmpl $0x7, -0x54(%rbp)
jne 0x8d96
movl -0x50(%rbp), %edx
movq 0x5712(%rip), %rax      # 0xe468
movslq -0x58(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
movslq 0x542c(%rip), %rdx      # 0xe19c
leaq 0x5579(%rip), %rcx      # 0xe2f0
movl (%rcx,%rdx,4), %ecx
subl 0x5438(%rip), %ecx      # 0xe1b8
cmpl %ecx, %eax
jne 0x8d94
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x8d96
cmpl $0x6, -0x54(%rbp)
jne 0x8df7
movl -0x50(%rbp), %edx
movslq -0x58(%rbp), %rcx
leaq 0x5636(%rip), %rax      # 0xe3e0
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
cmpl 0x53e6(%rip), %eax      # 0xe19c
jne 0x8dec
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
movslq 0x53cd(%rip), %rcx      # 0xe19c
leaq 0x551a(%rip), %rax      # 0xe2f0
movl (%rax,%rcx,4), %eax
cmpl 0x53d9(%rip), %eax      # 0xe1b8
jne 0x8dea
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x8df5
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x8df7
cmpl $0x5, -0x54(%rbp)
jne 0x8e36
movl -0x50(%rbp), %edx
movslq -0x58(%rbp), %rcx
leaq 0x5585(%rip), %rax      # 0xe390
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
cmpl 0x5385(%rip), %eax      # 0xe19c
jne 0x8e2b
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x8e34
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x8e36
cmpl $0x4, -0x54(%rbp)
jne 0x8e75
movl -0x50(%rbp), %edx
movslq -0x58(%rbp), %rcx
leaq 0x54f6(%rip), %rax      # 0xe340
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
cmpl 0x5346(%rip), %eax      # 0xe19c
jne 0x8e6a
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x8e73
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x8e75
cmpl $0x3, -0x54(%rbp)
jne 0x8edd
movl -0x50(%rbp), %edx
movslq -0x58(%rbp), %rcx
leaq 0x5467(%rip), %rax      # 0xe2f0
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
cmpl 0x5307(%rip), %eax      # 0xe19c
jne 0x8ed2
movslq 0x52fe(%rip), %rcx      # 0xe19c
leaq 0x544b(%rip), %rax      # 0xe2f0
movl (%rax,%rcx,4), %eax
subl 0x530a(%rip), %eax      # 0xe1b8
shll $0x2, %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x55a8(%rip)      # 0xe468
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x8edb
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x8edd
cmpl $0x2, -0x54(%rbp)
jne 0x8f1c
movl -0x50(%rbp), %edx
movslq -0x58(%rbp), %rcx
leaq 0x53af(%rip), %rax      # 0xe2a0
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
cmpl 0x529f(%rip), %eax      # 0xe19c
jne 0x8f11
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x8f1a
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x8f1c
cmpl $0x1, -0x54(%rbp)
jne 0x9050
movl -0x50(%rbp), %edx
movslq -0x58(%rbp), %rcx
leaq 0x527c(%rip), %rax      # 0xe1b0
movl %edx, (%rax,%rcx,4)
cmpl $0xa, -0x58(%rbp)
jne 0x9045
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x1, -0x58(%rbp)
movl 0x5259(%rip), %eax      # 0xe1b0
shll $0x2, %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x54cf(%rip)      # 0xe438
movslq 0x5244(%rip), %rdi      # 0xe1b4
callq 0x21f0
movq %rax, 0x5514(%rip)      # 0xe490
movl 0x5236(%rip), %eax      # 0xe1b8
subl 0x522c(%rip), %eax      # 0xe1b4
shll %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x54b7(%rip)      # 0xe450
movl 0x5225(%rip), %eax      # 0xe1c4
shll $0x2, %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x54a7(%rip)      # 0xe458
movl 0x5211(%rip), %eax      # 0xe1c8
shll %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x5478(%rip)      # 0xe440
movl 0x51ee(%rip), %eax      # 0xe1bc
shll $0x2, %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x5480(%rip)      # 0xe460
movl 0x51da(%rip), %eax      # 0xe1c0
shll %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x5451(%rip)      # 0xe448
movslq 0x51ce(%rip), %rdi      # 0xe1cc
callq 0x21f0
movq %rax, 0x548e(%rip)      # 0xe498
movslq 0x51bf(%rip), %rdi      # 0xe1d0
callq 0x21f0
movq %rax, 0x5483(%rip)      # 0xe4a0
movslq 0x51b4(%rip), %rdi      # 0xe1d8
callq 0x21f0
movq %rax, 0x5478(%rip)      # 0xe4a8
movslq 0x519d(%rip), %rdi      # 0xe1d4
callq 0x21f0
movq %rax, 0x546d(%rip)      # 0xe4b0
jmp 0x904e
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x9050
cmpl $0x0, -0x54(%rbp)
jne 0x9068
movl -0x50(%rbp), %eax
movl %eax, 0x513d(%rip)      # 0xe19c
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x8be6
movl 0x5145(%rip), %eax      # 0xe1b8
subl 0x513b(%rip), %eax      # 0xe1b4
cmpl $0x0, %eax
jne 0x908e
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x9090
cmpl $0xe, -0x54(%rbp)
jge 0x91b9
movq -0x48(%rbp), %rdi
leaq 0x247b(%rip), %rsi      # 0xb520
leaq -0x49(%rbp), %rdx
movb $0x0, %al
callq 0x2270
movzbl -0x49(%rbp), %eax
movl %eax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
leaq 0x245e(%rip), %rsi      # 0xb520
leaq -0x49(%rbp), %rdx
movb $0x0, %al
callq 0x2270
movzbl -0x49(%rbp), %eax
shll $0x8, %eax
addl -0x50(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0xd, -0x54(%rbp)
jne 0x9120
movl -0x50(%rbp), %eax
movw %ax, %dx
movq 0x535b(%rip), %rax      # 0xe448
movslq -0x58(%rbp), %rcx
movw %dx, (%rax,%rcx,2)
movl -0x58(%rbp), %eax
addl $0x1, %eax
cmpl 0x50bf(%rip), %eax      # 0xe1c0
jne 0x9115
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x911e
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x9120
cmpl $0xc, -0x54(%rbp)
jne 0x9166
movl -0x50(%rbp), %eax
movw %ax, %dx
movq 0x530d(%rip), %rax      # 0xe440
movslq -0x58(%rbp), %rcx
movw %dx, (%rax,%rcx,2)
movl -0x58(%rbp), %eax
addl $0x1, %eax
cmpl 0x5081(%rip), %eax      # 0xe1c8
jne 0x915b
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x9164
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x9166
cmpl $0xb, -0x54(%rbp)
jne 0x91b4
movl -0x50(%rbp), %eax
movw %ax, %dx
movq 0x52d7(%rip), %rax      # 0xe450
movslq -0x58(%rbp), %rcx
movw %dx, (%rax,%rcx,2)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl 0x502b(%rip), %ecx      # 0xe1b8
subl 0x5021(%rip), %ecx      # 0xe1b4
cmpl %ecx, %eax
jne 0x91a9
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x91b2
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x91b4
jmp 0x9090
movl 0x5015(%rip), %eax      # 0xe1d4
movl $0x8, %ecx
cltd
idivl %ecx
addl $0x1, %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x52e7(%rip)      # 0xe4c0
movl 0x4ff1(%rip), %eax      # 0xe1d0
movl $0x8, %ecx
cltd
idivl %ecx
addl $0x1, %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, 0x52bf(%rip)      # 0xe4b8
cmpl $0x13, -0x54(%rbp)
jge 0x940e
movq -0x48(%rbp), %rdi
leaq 0x2312(%rip), %rsi      # 0xb520
leaq -0x49(%rbp), %rdx
movb $0x0, %al
callq 0x2270
movzbl -0x49(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpl $0x10, -0x54(%rbp)
jne 0x9241
cmpl $0x0, -0x58(%rbp)
jl 0x9241
cmpl $0x12c, -0x58(%rbp)     # imm = 0x12C
jge 0x9241
movl $0x1, 0x6241(%rip)      # 0xf480
jmp 0x924b
movl $0x0, 0x6235(%rip)      # 0xf480
cmpl $0x12, -0x54(%rbp)
jne 0x92c5
movl -0x50(%rbp), %eax
movb %al, -0x161(%rbp)
movq 0x525f(%rip), %rax      # 0xe4c0
movq %rax, -0x160(%rbp)
movl -0x58(%rbp), %eax
movl $0x8, %ecx
cltd
idivl %ecx
movb -0x161(%rbp), %dl
movl %eax, %ecx
movq -0x160(%rbp), %rax
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movq 0x5221(%rip), %rdi      # 0xe4b0
movl -0x50(%rbp), %eax
movl -0x58(%rbp), %edx
movl 0x4f39(%rip), %ecx      # 0xe1d4
movzbl %al, %esi
callq 0x8040
cmpl $-0x1, %eax
jne 0x92ba
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x92c3
movl -0x58(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x58(%rbp)
jmp 0x92c5
cmpl $0x11, -0x54(%rbp)
jne 0x9308
movq 0x51d6(%rip), %rdi      # 0xe4a8
movl -0x50(%rbp), %eax
movl -0x58(%rbp), %edx
movl 0x4efa(%rip), %ecx      # 0xe1d8
movzbl %al, %esi
callq 0x8040
cmpl $-0x1, %eax
jne 0x92fd
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x9306
movl -0x58(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x58(%rbp)
jmp 0x9308
cmpl $0x10, -0x54(%rbp)
jne 0x9382
movl -0x50(%rbp), %eax
movb %al, -0x171(%rbp)
movq 0x519a(%rip), %rax      # 0xe4b8
movq %rax, -0x170(%rbp)
movl -0x58(%rbp), %eax
movl $0x8, %ecx
cltd
idivl %ecx
movb -0x171(%rbp), %dl
movl %eax, %ecx
movq -0x170(%rbp), %rax
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movq 0x5154(%rip), %rdi      # 0xe4a0
movl -0x50(%rbp), %eax
movl -0x58(%rbp), %edx
movl 0x4e78(%rip), %ecx      # 0xe1d0
movzbl %al, %esi
callq 0x8040
cmpl $-0x1, %eax
jne 0x9377
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x9380
movl -0x58(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x58(%rbp)
jmp 0x9382
cmpl $0xf, -0x54(%rbp)
jne 0x93c5
movq 0x5109(%rip), %rdi      # 0xe498
movl -0x50(%rbp), %eax
movl -0x58(%rbp), %edx
movl 0x4e31(%rip), %ecx      # 0xe1cc
movzbl %al, %esi
callq 0x8040
cmpl $-0x1, %eax
jne 0x93ba
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x93c3
movl -0x58(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x58(%rbp)
jmp 0x93c5
cmpl $0xe, -0x54(%rbp)
jne 0x9409
movl -0x50(%rbp), %eax
movb %al, %dl
movq 0x50b9(%rip), %rax      # 0xe490
movslq -0x58(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x58(%rbp), %eax
addl $0x1, %eax
cmpl 0x4dca(%rip), %eax      # 0xe1b4
jne 0x93fe
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
jmp 0x9407
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x9409
jmp 0x91f9
movq -0x48(%rbp), %rdi
callq 0x2170
movl 0x4db3(%rip), %edx      # 0xe1d0
movslq 0x4d78(%rip), %rcx      # 0xe19c
leaq 0x4f65(%rip), %rax      # 0xe390
movl %edx, (%rax,%rcx,4)
movl 0x4d9c(%rip), %edx      # 0xe1d0
movslq 0x4d61(%rip), %rcx      # 0xe19c
leaq 0x4eae(%rip), %rax      # 0xe2f0
subl (%rax,%rcx,4), %edx
movslq 0x4d50(%rip), %rcx      # 0xe19c
leaq 0x4eed(%rip), %rax      # 0xe340
movl %edx, (%rax,%rcx,4)
movl $0x0, -0x5c(%rbp)
cmpl $0x100, -0x5c(%rbp)     # imm = 0x100
jge 0x94dc
movl $0x80, -0x60(%rbp)
movl $0x0, -0x64(%rbp)
movl $0x0, -0x68(%rbp)
cmpl $0x8, -0x68(%rbp)
jge 0x94cf
movl -0x5c(%rbp), %eax
movl -0x60(%rbp), %ecx
shll %ecx
cltd
idivl %ecx
cmpl -0x60(%rbp), %edx
jl 0x949a
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %edx
movslq -0x5c(%rbp), %rcx
leaq 0x5fe8(%rip), %rax      # 0xf490
shlq $0x5, %rcx
addq %rcx, %rax
movslq -0x68(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x60(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x947b
jmp 0x94d1
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x945d
movl $0x5, -0x6c(%rbp)
movslq -0x6c(%rbp), %rcx
leaq 0x4e52(%rip), %rax      # 0xe340
movl (%rax,%rcx,4), %eax
movl %eax, -0x70(%rbp)
movl 0x4c6a(%rip), %eax      # 0xe164
movq %rsp, %rcx
movq %rcx, -0x78(%rbp)
leaq (%rax,%rax,4), %rcx
leaq 0xf(,%rcx,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x190(%rbp)
movq %rcx, %rsp
movq %rax, -0x80(%rbp)
movl 0x4c39(%rip), %eax      # 0xe164
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x188(%rbp)
movq %rcx, %rsp
movq %rax, -0x88(%rbp)
movl 0x4c10(%rip), %eax      # 0xe164
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x180(%rbp)
movq %rcx, %rsp
movq %rax, -0x90(%rbp)
movl $0x2710, -0x9c(%rbp)    # imm = 0x2710
movl -0x9c(%rbp), %eax
shll $0x2, %eax
movslq %eax, %rdi
callq 0x21f0
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
callq 0x7d70
movl %eax, -0x9c(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0xa8(%rbp)
movl $0x0, -0xac(%rbp)
cmpl $0x2, 0x4b95(%rip)      # 0xe15c
jne 0x968d
movq -0x188(%rbp), %rcx
movq -0x98(%rbp), %rdi
movl 0x4b7f(%rip), %esi      # 0xe160
xorl %edx, %edx
callq 0x7e80
movl %eax, -0x9c(%rbp)
callq 0x2110
movq %rax, -0xb8(%rbp)
movq -0x98(%rbp), %rdi
movl -0x9c(%rbp), %esi
movl 0x4b8f(%rip), %edx      # 0xe19c
callq 0x7800
callq 0x2110
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
subq -0xb8(%rbp), %rax
cvtsi2sd %rax, %xmm0
movsd 0x19d7(%rip), %xmm1     # 0xb010
divsd %xmm1, %xmm0
movsd 0x19c3(%rip), %xmm1     # 0xb008
mulsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movl -0x9c(%rbp), %esi
movl 0x4dcb(%rip), %edx      # 0xe428
movl 0x4dc9(%rip), %ecx      # 0xe42c
movsd -0xc8(%rbp), %xmm0
leaq 0x1eb1(%rip), %rdi      # 0xb523
movb $0x1, %al
callq 0x2030
movl 0x4bb5(%rip), %esi      # 0xe234
leaq 0x1ede(%rip), %rdi      # 0xb564
movb $0x0, %al
callq 0x2030
cmpl $0x1, 0x4ac8(%rip)      # 0xe15c
je 0x96a3
cmpl $0x3, 0x4abf(%rip)      # 0xe15c
jne 0x99f1
xorps %xmm0, %xmm0
movsd %xmm0, -0xd0(%rbp)
cmpl $0x3, 0x4aa7(%rip)      # 0xe15c
jne 0x96c7
xorl %eax, %eax
movl %eax, %edi
callq 0x2150
movl %eax, %edi
callq 0x2160
movl $0x0, -0xd4(%rbp)
movl -0xd4(%rbp), %eax
cmpl 0x4a87(%rip), %eax      # 0xe164
jge 0x98e3
movl 0x4a77(%rip), %eax      # 0xe160
movl %eax, -0xd8(%rbp)
cmpl $0x1, 0x4a66(%rip)      # 0xe15c
jne 0x9704
movl 0x4a62(%rip), %eax      # 0xe160
movl %eax, -0xd8(%rbp)
movq -0x188(%rbp), %rcx
movq -0x98(%rbp), %rdi
movl -0xd8(%rbp), %esi
movl -0xd4(%rbp), %edx
callq 0x7e80
movl %eax, -0x9c(%rbp)
callq 0x2110
movq %rax, -0xe0(%rbp)
movq -0x98(%rbp), %rdi
movl -0x9c(%rbp), %esi
movl 0x4a54(%rip), %edx      # 0xe19c
callq 0x7800
callq 0x2110
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
subq -0xe0(%rbp), %rax
cvtsi2sd %rax, %xmm0
movsd 0x189c(%rip), %xmm1     # 0xb010
divsd %xmm1, %xmm0
movsd 0x1888(%rip), %xmm1     # 0xb008
mulsd %xmm1, %xmm0
movsd %xmm0, -0xf0(%rbp)
movq 0x8205(%rip), %rax      # 0x11998
subq -0xe0(%rbp), %rax
cvtsi2sd %rax, %xmm0
movsd 0x1869(%rip), %xmm1     # 0xb010
divsd %xmm1, %xmm0
movsd 0x1855(%rip), %xmm1     # 0xb008
mulsd %xmm1, %xmm0
movsd %xmm0, -0xf8(%rbp)
movl -0x9c(%rbp), %esi
movl 0x4c5d(%rip), %edx      # 0xe428
movsd -0xf0(%rbp), %xmm0
leaq 0x1d95(%rip), %rdi      # 0xb56f
movb $0x1, %al
callq 0x2030
movl 0x4a4d(%rip), %esi      # 0xe234
leaq 0x1d76(%rip), %rdi      # 0xb564
movb $0x0, %al
callq 0x2030
movq -0x190(%rbp), %rcx
movq -0x180(%rbp), %rax
movl 0x4c1f(%rip), %esi      # 0xe428
movslq -0xd4(%rbp), %rdx
imulq $0x14, %rdx, %rdi
movq %rcx, %rdx
addq %rdi, %rdx
movl %esi, (%rdx)
movl 0x4c0a(%rip), %esi      # 0xe42c
movslq -0xd4(%rbp), %rdx
imulq $0x14, %rdx, %rdi
movq %rcx, %rdx
addq %rdi, %rdx
movl %esi, 0x4(%rdx)
movl $0x0, 0x4bec(%rip)      # 0xe42c
movl -0xd8(%rbp), %esi
movslq -0xd4(%rbp), %rdx
imulq $0x14, %rdx, %rdi
movq %rcx, %rdx
addq %rdi, %rdx
movl %esi, 0x8(%rdx)
movl 0x4c78(%rip), %edx      # 0xe4d8
movslq -0xd4(%rbp), %rsi
imulq $0x14, %rsi, %rsi
addq %rsi, %rcx
movl %edx, 0xc(%rcx)
movsd -0xf0(%rbp), %xmm0
movslq -0xd4(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0xf0(%rbp), %xmm0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd 0x1773(%rip), %xmm0     # 0xb018
mulsd -0xf8(%rbp), %xmm0
divsd -0xf0(%rbp), %xmm0
addsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movl $0x0, 0x4b59(%rip)      # 0xe428
movl -0xd4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd4(%rbp)
jmp 0x96d1
movsd -0xa8(%rbp), %xmm0
cvtsi2sdl 0x4871(%rip), %xmm1 # 0xe164
divsd %xmm1, %xmm0
leaq 0x1ca6(%rip), %rdi      # 0xb5a4
movb $0x1, %al
callq 0x2030
movl $0x0, -0xfc(%rbp)
movl -0xfc(%rbp), %eax
cmpl 0x4849(%rip), %eax      # 0xe164
jge 0x99cf
movq -0x180(%rbp), %rdi
movq -0x190(%rbp), %rax
movq -0x188(%rbp), %rcx
movl -0xfc(%rbp), %esi
movslq -0xfc(%rbp), %rdx
imulq $0x14, %rdx, %r8
movq %rax, %rdx
addq %r8, %rdx
movl 0x8(%rdx), %edx
movslq -0xfc(%rbp), %r8
movl (%rcx,%r8,4), %ecx
movslq -0xfc(%rbp), %r8
imulq $0x14, %r8, %r9
movq %rax, %r8
addq %r9, %r8
movl 0xc(%r8), %r8d
movslq -0xfc(%rbp), %r9
imulq $0x14, %r9, %r10
movq %rax, %r9
addq %r10, %r9
movl (%r9), %r9d
movslq -0xfc(%rbp), %r10
imulq $0x14, %r10, %r10
addq %r10, %rax
movl 0x4(%rax), %eax
movslq -0xfc(%rbp), %r10
movsd (%rdi,%r10,8), %xmm0
leaq 0x1c12(%rip), %rdi      # 0xb5bb
subq $0x10, %rsp
movl %eax, (%rsp)
movb $0x1, %al
callq 0x2030
addq $0x10, %rsp
movl -0xfc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xfc(%rbp)
jmp 0x990f
movsd -0xd0(%rbp), %xmm0
cvtsi2sdl 0x4785(%rip), %xmm1 # 0xe164
divsd %xmm1, %xmm0
leaq 0x1c24(%rip), %rdi      # 0xb60e
movb $0x1, %al
callq 0x2030
cmpl $0x4, 0x4764(%rip)      # 0xe15c
jne 0x9c4c
movl $0x0, -0x100(%rbp)
movl -0x100(%rbp), %eax
cmpl 0x4750(%rip), %eax      # 0xe164
jge 0x9b83
movq -0x98(%rbp), %rdi
movl -0x100(%rbp), %esi
callq 0x7c00
movl %eax, -0x9c(%rbp)
callq 0x2110
movq %rax, -0x108(%rbp)
movq -0x98(%rbp), %rdi
movl -0x9c(%rbp), %esi
movl 0x474b(%rip), %edx      # 0xe19c
callq 0x7800
callq 0x2110
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rax
subq -0x108(%rbp), %rax
cvtsi2sd %rax, %xmm0
movsd 0x1593(%rip), %xmm1     # 0xb010
divsd %xmm1, %xmm0
movsd 0x157f(%rip), %xmm1     # 0xb008
mulsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
movl -0x9c(%rbp), %esi
movl 0x4987(%rip), %edx      # 0xe428
movl 0x4985(%rip), %ecx      # 0xe42c
movsd -0x118(%rbp), %xmm0
leaq 0x1b79(%rip), %rdi      # 0xb62f
movb $0x1, %al
callq 0x2030
movq -0x190(%rbp), %rcx
movq -0x180(%rbp), %rax
movl 0x4957(%rip), %esi      # 0xe428
movslq -0x100(%rbp), %rdx
imulq $0x14, %rdx, %rdi
movq %rcx, %rdx
addq %rdi, %rdx
movl %esi, (%rdx)
movl $0x0, 0x493a(%rip)      # 0xe428
movl 0x4938(%rip), %esi      # 0xe42c
movslq -0x100(%rbp), %rdx
imulq $0x14, %rdx, %rdi
movq %rcx, %rdx
addq %rdi, %rdx
movl %esi, 0x4(%rdx)
movl $0x0, 0x491a(%rip)      # 0xe42c
movl -0x9c(%rbp), %esi
movslq -0x100(%rbp), %rdx
imulq $0x14, %rdx, %rdi
movq %rcx, %rdx
addq %rdi, %rdx
movl %esi, 0x8(%rdx)
movl 0x49a6(%rip), %edx      # 0xe4d8
movslq -0x100(%rbp), %rsi
imulq $0x14, %rsi, %rsi
addq %rsi, %rcx
movl %edx, 0xc(%rcx)
movsd -0x118(%rbp), %xmm0
movslq -0x100(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x118(%rbp), %xmm0
addsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movl -0x100(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x100(%rbp)
jmp 0x9a08
movsd -0xa8(%rbp), %xmm0
cvtsi2sdl 0x45d1(%rip), %xmm1 # 0xe164
divsd %xmm1, %xmm0
leaq 0x1a06(%rip), %rdi      # 0xb5a4
movb $0x1, %al
callq 0x2030
movl $0x0, -0x11c(%rbp)
movl -0x11c(%rbp), %eax
cmpl 0x45a9(%rip), %eax      # 0xe164
jge 0x9c4a
movq -0x180(%rbp), %rax
movq -0x190(%rbp), %rdi
movslq -0x11c(%rbp), %rcx
imulq $0x14, %rcx, %rdx
movq %rdi, %rcx
addq %rdx, %rcx
movl 0x8(%rcx), %esi
movslq -0x11c(%rbp), %rcx
imulq $0x14, %rcx, %rdx
movq %rdi, %rcx
addq %rdx, %rcx
movl 0xc(%rcx), %edx
movslq -0x11c(%rbp), %rcx
imulq $0x14, %rcx, %r8
movq %rdi, %rcx
addq %r8, %rcx
movl (%rcx), %ecx
movslq -0x11c(%rbp), %r8
imulq $0x14, %r8, %r8
addq %r8, %rdi
movl 0x4(%rdi), %r8d
movslq -0x11c(%rbp), %rdi
movsd (%rax,%rdi,8), %xmm0
leaq 0x1a44(%rip), %rdi      # 0xb673
movb $0x1, %al
callq 0x2030
movl -0x11c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x11c(%rbp)
jmp 0x9baf
jmp 0x9c4c
cmpl $0x0, 0x4509(%rip)      # 0xe15c
jne 0x9d04
movq -0x98(%rbp), %rdi
callq 0x7d70
movl %eax, -0x9c(%rbp)
callq 0x2110
movq %rax, -0x128(%rbp)
movq -0x98(%rbp), %rdi
movl -0x9c(%rbp), %esi
movl 0x4512(%rip), %edx      # 0xe19c
callq 0x7800
callq 0x2110
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rax
subq -0x128(%rbp), %rax
cvtsi2sd %rax, %xmm0
movsd 0x135a(%rip), %xmm1     # 0xb010
divsd %xmm1, %xmm0
movsd 0x1346(%rip), %xmm1     # 0xb008
mulsd %xmm1, %xmm0
movsd %xmm0, -0x138(%rbp)
movl -0x9c(%rbp), %esi
movl 0x474e(%rip), %edx      # 0xe428
movsd -0x138(%rbp), %xmm0
leaq 0x1886(%rip), %rdi      # 0xb56f
movb $0x1, %al
callq 0x2030
movl 0x453e(%rip), %esi      # 0xe234
leaq 0x1867(%rip), %rdi      # 0xb564
movb $0x0, %al
callq 0x2030
movl $0x0, -0x4(%rbp)
movq -0x78(%rbp), %rax
movq %rax, %rsp
movl -0x4(%rbp), %eax
movq %rbp, %rsp
popq %rbp
retq
nopw (%rax,%rax)