#include #include #include #include int ika287(int x) { while(x>=288){ x -=288; } while(-99999=1){ for(i=0;i<16;i++){ SWA[i] = WARARERU[i]; } for(i=0;i<4+12;i++){ WARARERU[i] = WARU[i]; } for(i=0;i<4+12;i++){ WARU[i] = SWA[i]; } WARU[4+12] = /*0*/-99999; } for(i=0;i<33;i++){ Q[i] = /*0*/-99999; } for(i=0;i<15;i++){ if(WARARERU[3+12-i] != /*0*/-99999){ k=i;break;//goto l2a; } } l++; }//while loop end //last: /* int SIGMA[3];*/ SIGMA[2] = 0; SIGMA[1] = GF289EXP2VEC(Y,ika287(GF289VEC2EXP(Y,Q[1]) - GF289VEC2EXP(Y,Q[0]))); SIGMA[0] = 1; // goto hhh; ;;; printf("miseisaku!!\n");while(1); last: // ji8ji8polymult(B[l+1],Q,B[l+2],Y); // B[l+2][0] ^= 1; for(i=0;i<17;i++){ SIGMA[i] = B[l+2][i]; } SIGMA[16] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[16]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[15] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[15]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[14] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[14]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[13] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[13]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[12] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[12]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[11] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[11]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[10] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[10]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[9] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[9]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[8] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[8]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[7] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[7]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[6] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[6]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[5] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[5]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[4] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[4]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[3] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[3]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[2] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[2]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[1] = /*GF289EXP2VEC(Y,*/ika287(/*GF289VEC2EXP(Y,*/SIGMA[1]/*)*/ - /*GF289VEC2EXP(Y,*/SIGMA[0]/*)*/); SIGMA[0] = /*1*/144; //hhh: ; for(i=0;i<17;i++){ printf("SIGMA[%d] = ALFA^%d\n",i,SIGMA[i]/*,GF289VEC2EXP(Y,SIGMA[i])*/); } //while(1); for(i=0;i<9;i++){ if(SIGMA[8-i] != /*0*/-99999){ l=8-i;break; } } printf("l=%d\n",l);//while(1); if(l==8){goto ayamari8ko;} if(l==7){goto ayamari7ko;} if(l==6){goto ayamari6ko;} if(l==5){goto ayamari5ko;} if(l==4){goto ayamari4ko;} if(l==3){goto ayamari3ko;} if(l==2){goto ayamari2ko;} if(l==1){goto ayamari1ko;} //8 block ayamari no baai AAG = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[3],S[2],S[1], S[9],S[8],S[7],S[6],S[5],S[4],S[3],S[2], S[10],S[9],S[8],S[7],S[6],S[5],S[4],S[3], S[11],S[10],S[9],S[8],S[7],S[6],S[5],S[4], S[12],S[11],S[10],S[9],S[8],S[7],S[6],S[5], S[13],S[12],S[11],S[10],S[9],S[8],S[7],S[6], S[14],S[13],S[12],S[11],S[10],S[9],S[8],S[7], S[15],S[14],S[13],S[12],S[11],S[10],S[9],S[8],Y); printf("AAG=%d\n",AAG); // while(1); if(AAG==0){goto ayamari7ika;} RAW1BUNSHI = VEC_DET8x8(S[9],S[7],S[6],S[5],S[4],S[3],S[2],S[1], S[10],S[8],S[7],S[6],S[5],S[4],S[3],S[2], S[11],S[9],S[8],S[7],S[6],S[5],S[4],S[3], S[12],S[10],S[9],S[8],S[7],S[6],S[5],S[4], S[13],S[11],S[10],S[9],S[8],S[7],S[6],S[5], S[14],S[12],S[11],S[10],S[9],S[8],S[7],S[6], S[15],S[13],S[12],S[11],S[10],S[9],S[8],S[7], S[16],S[14],S[13],S[12],S[11],S[10],S[9],S[8],Y); RAW2BUNSHI = VEC_DET8x8(S[8],S[9],S[6],S[5],S[4],S[3],S[2],S[1], S[9],S[10],S[7],S[6],S[5],S[4],S[3],S[2], S[10],S[11],S[8],S[7],S[6],S[5],S[4],S[3], S[11],S[12],S[9],S[8],S[7],S[6],S[5],S[4], S[12],S[13],S[10],S[9],S[8],S[7],S[6],S[5], S[13],S[14],S[11],S[10],S[9],S[8],S[7],S[6], S[14],S[15],S[12],S[11],S[10],S[9],S[8],S[7], S[15],S[16],S[13],S[12],S[11],S[10],S[9],S[8],Y); RAW3BUNSHI = VEC_DET8x8(S[8],S[7],S[9],S[5],S[4],S[3],S[2],S[1], S[9],S[8],S[10],S[6],S[5],S[4],S[3],S[2], S[10],S[9],S[11],S[7],S[6],S[5],S[4],S[3], S[11],S[10],S[12],S[8],S[7],S[6],S[5],S[4], S[12],S[11],S[13],S[9],S[8],S[7],S[6],S[5], S[13],S[12],S[14],S[10],S[9],S[8],S[7],S[6], S[14],S[13],S[15],S[11],S[10],S[9],S[8],S[7], S[15],S[14],S[16],S[12],S[11],S[10],S[9],S[8],Y); RAW4BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[9],S[4],S[3],S[2],S[1], S[9],S[8],S[7],S[10],S[5],S[4],S[3],S[2], S[10],S[9],S[8],S[11],S[6],S[5],S[4],S[3], S[11],S[10],S[9],S[12],S[7],S[6],S[5],S[4], S[12],S[11],S[10],S[13],S[8],S[7],S[6],S[5], S[13],S[12],S[11],S[14],S[9],S[8],S[7],S[6], S[14],S[13],S[12],S[15],S[10],S[9],S[8],S[7], S[15],S[14],S[13],S[16],S[11],S[10],S[9],S[8],Y); RAW5BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[9],S[3],S[2],S[1], S[9],S[8],S[7],S[6],S[10],S[4],S[3],S[2], S[10],S[9],S[8],S[7],S[11],S[5],S[4],S[3], S[11],S[10],S[9],S[8],S[12],S[6],S[5],S[4], S[12],S[11],S[10],S[9],S[13],S[7],S[6],S[5], S[13],S[12],S[11],S[10],S[14],S[8],S[7],S[6], S[14],S[13],S[12],S[11],S[15],S[9],S[8],S[7], S[15],S[14],S[13],S[12],S[16],S[10],S[9],S[8],Y); RAW6BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[9],S[2],S[1], S[9],S[8],S[7],S[6],S[5],S[10],S[3],S[2], S[10],S[9],S[8],S[7],S[6],S[11],S[4],S[3], S[11],S[10],S[9],S[8],S[7],S[12],S[5],S[4], S[12],S[11],S[10],S[9],S[8],S[13],S[6],S[5], S[13],S[12],S[11],S[10],S[9],S[14],S[7],S[6], S[14],S[13],S[12],S[11],S[10],S[15],S[8],S[7], S[15],S[14],S[13],S[12],S[11],S[16],S[9],S[8],Y); RAW7BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[3],S[9],S[1], S[9],S[8],S[7],S[6],S[5],S[4],S[10],S[2], S[10],S[9],S[8],S[7],S[6],S[5],S[11],S[3], S[11],S[10],S[9],S[8],S[7],S[6],S[12],S[4], S[12],S[11],S[10],S[9],S[8],S[7],S[13],S[5], S[13],S[12],S[11],S[10],S[9],S[8],S[14],S[6], S[14],S[13],S[12],S[11],S[10],S[9],S[15],S[7], S[15],S[14],S[13],S[12],S[11],S[10],S[16],S[8],Y); RAW8BUNSHI = VEC_DET8x8(S[8],S[7],S[6],S[5],S[4],S[3],S[2],S[9], S[9],S[8],S[7],S[6],S[5],S[4],S[3],S[10], S[10],S[9],S[8],S[7],S[6],S[5],S[4],S[11], S[11],S[10],S[9],S[8],S[7],S[6],S[5],S[12], S[12],S[11],S[10],S[9],S[8],S[7],S[6],S[13], S[13],S[12],S[11],S[10],S[9],S[8],S[7],S[14], S[14],S[13],S[12],S[11],S[10],S[9],S[8],S[15], S[15],S[14],S[13],S[12],S[11],S[10],S[9],S[16],Y); RAW1EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW1BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); RAW2EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW2BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); RAW3EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW3BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); RAW4EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW4BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); RAW5EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW5BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); RAW6EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW6BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); RAW7EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW7BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); RAW8EXP = ika287(GF289MULT(GF289VEC2EXP(Y,RAW8BUNSHI) ,(ika287(255-GF289VEC2EXP(Y,AAG))))); // for(i=0;i<9;i++){ printf("RAW1EXP=%d\n",RAW1EXP); printf("RAW2EXP=%d\n",RAW2EXP); printf("RAW3EXP=%d\n",RAW3EXP); printf("RAW4EXP=%d\n",RAW4EXP); printf("RAW5EXP=%d\n",RAW5EXP); printf("RAW6EXP=%d\n",RAW6EXP); printf("RAW7EXP=%d\n",RAW7EXP); printf("RAW8EXP=%d\n",RAW8EXP);while(1); // } ayamari8ko: RAW1EXP = /*GF289VEC2EXP(Y,*/SIGMA[1]/*)*/; RAW2EXP = /*GF289VEC2EXP(Y,*/SIGMA[2]/*)*/; RAW3EXP = /*GF289VEC2EXP(Y,*/SIGMA[3]/*)*/; RAW4EXP = /*GF289VEC2EXP(Y,*/SIGMA[4]/*)*/; RAW5EXP = /*GF289VEC2EXP(Y,*/SIGMA[5]/*)*/; RAW6EXP = /*GF289VEC2EXP(Y,*/SIGMA[6]/*)*/; RAW7EXP = /*GF289VEC2EXP(Y,*/SIGMA[7]/*)*/; RAW8EXP = /*GF289VEC2EXP(Y,*/SIGMA[8]/*)*/; for(i=0;i