#include "math.h" #include "float.h"//for _isnan #include "BaseFun.h" #include "wvst.h" int __cdecl fir(double *in_buffer,int array_num,int wave_len,double mfl,double fl,double fh); int Index_table[16]={ -1, -1, -1, -1, 0x02, 0x04, 0x06, 0x08, -1, -1, -1, -1, 0x02, 0x04, 0x06, 0x08 }; DWORD value_table[90]={ 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x10, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1C, 0x1F, 0x22, 0x25, 0x29, 0x2D, 0x32, 0x37, 0x3C, 0x42, 0x49, 0x50, 0x58, 0x61, 0x6B, 0x76, 0x82, 0x8F, 0x9D, 0xAD, 0xBE, 0xD1, 0xE6, 0xFD, 0x117, 0x133, 0x151, 0x173, 0x198, 0x1C1, 0x1EE, 0x220, 0x256, 0x292, 0x2D4, 0x31C, 0x36C, 0x3C3, 0x424, 0x48E, 0x502, 0x583, 0x610, 0x6AB, 0x756, 0x812, 0x8E0, 0x9C3, 0xABD, 0xBD0, 0xCFF, 0xE4C, 0xFBA, 0x114C, 0x1307, 0x14EE, 0x1706, 0x1954, 0x1BDC, 0x1EA5, 0x21B6, 0x2515, 0x28CA, 0x2CDF, 0x315B, 0x364B, 0x3BB9, 0x41B2, 0x4844, 0x4F7E, 0x5771, 0x602F, 0x69CE, 0x7462, 0x7FFF }; int MFL=19,MFH=20,DFL=21,DFH=22; int par[]={ 0,0,//1 0,0,//2 0,0x3f000000,//3 0,1,//4 0,8,//5 0,0x190,//6 0x205BC01A,0x40345141,//7 0,0,//8 0x548A9BD0,0x40247B18,//9 0x205BC01A,0x40445141,//10 0,0,//11 0x0C6A7EF9E,0x4022774B,//12 0,0x3FE00000,//13=1 0,0,//14 0,2,//15 0,0x3FF00000,//16=1 0,0x40000000,//17=2 0,0,//18 0,0,//19 0,0,//20 //MFL 0xCCCCCCCD,0x3FDCCCCC,//21 //MFH=0.45 0,0,//22 //DFL 0xCCCCCCCD,0x3FDCCCCC,//23 //DFH=0.45 0,0x3FF00000,//24=1 0,0x3FF00000,//28 0,0x3FF00000,//29 0,0x3FF00000,//30 0,0x3FF00000,//31 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000, 0,0x3FF00000//58 }; void polishing_head_data(double *in_buffer,int array_num,int wave_len,int flag) { for(int i=0;i0) { for(int j=0;j<4;j++) { in_buffer[array_pos+j]=in_buffer[array_pos+4]; } } else if(flag<0){ for(int j=0;j<4;j++) { in_buffer[wave_len-1-j+array_pos]=in_buffer[array_pos+wave_len-5]; } } } } void fun_a_b(double *x1,double *x2,int wave_len,double *mult_val,double *add_val) { *add_val=0; *mult_val=0; double x1_mul_x2=0; double x1_mul_x1=0; double x2_add=0; double x1_add=0; for(int i=0;i=0&&parwave_len-1) { temp[j]=in_buffer[array_pos+wave_len-1]; } } for(int j=0;j0) { var_14=in_buffer[array_pos+j]; } else { var_14=-in_buffer[array_pos+j]; } out_buffer[i]+=var_14; } } } void Qurt(double *par)//没用到 { for(int array_num=0;array_num<8;array_num++) { double add_value=0.0; int j=0; int a_b_c_d=0; for(a_b_c_d=0;a_b_c_d<4;a_b_c_d++) { if(par[array_num*4+a_b_c_d]!=0.0) { add_value+=par[array_num+a_b_c_d]; j++; } } if(j!=0) add_value/=j; for(a_b_c_d=0;a_b_c_d<4;a_b_c_d++) { double Rij=1; if(par[array_num*4+a_b_c_d]!=0.0) Rij=add_value/par[array_num*4+a_b_c_d]; par[array_num*4+a_b_c_d]=Rij; } } } void Compute_Input_Par(MyDataTypeEnum vVdl,int x_delay,int y_delay,int ndim) { int off=0; int d_len=400; int d_byte=202; if(ndim==19788) { d_len=340; d_byte=206; off=4; } double *pp=(double *)&par[0]; int nu=(ndim-12)/d_byte; short *temp=(short *)malloc(nu*d_len*2+1); short te[1024]; //wvst_dipole int t=vVdl.vushort[4]; float tt=t/1000./20.; t=tt; if(t<1) t=1; pp[6]=t*20.3174; pp[7]=vVdl.vshort[2]*20.3174; t=vVdl.vushort[5]; tt=t/1000./20.; t=tt; if(t<1) t=1; pp[9]=t*20.3174; pp[10]=vVdl.vshort[3]*20.3174; int flag=0; if(pp[15]>0) { flag=pp[15]+0.5;//取整 } else { flag=pp[15]-0.5;//取整 } double temp_monpole_sampling_dela=0.0; if(flag==0) { pp[17]=0; temp_monpole_sampling_dela=pp[7]; } else if(flag==1) { pp[17]=vVdl.vshort[2]; temp_monpole_sampling_dela=0; } else { pp[17]=int(pp[15]/pp[6]); temp_monpole_sampling_dela=pp[17]/pp[6]+pp[7]; } double temp_dipole_sampling_dela=0.0; double x_delay_value=x_delay; if(x_delay=y_delay) x_delay_value=x_delay; if(pp[16]>0) { flag=pp[16]+0.5; } else { flag=pp[16]-0.5; } if(flag==0) { pp[18]=0; temp_dipole_sampling_dela=pp[10]; } else if(flag==1) { pp[18]=vVdl.vshort[3]; temp_dipole_sampling_dela=0; } else if(flag==2){ pp[18]=vVdl.vshort[3]-int(x_delay_value/pp[9]); temp_dipole_sampling_dela=0; } else { pp[18]=int(pp[16]/pp[9]); temp_dipole_sampling_dela=pp[18]/pp[9]+pp[10]; } pp[7]=temp_monpole_sampling_dela; pp[10]=temp_dipole_sampling_dela; if(par[27]>=0) { free(temp); return; } int i=0; for(int j=0;j<8;j++) {//8 double *in_buff=new double[d_len*4]; for(int k=0;k<4;k++) {//a,b,c,d int si=i*d_byte*4*8+j*4*d_byte+k*d_byte+0xe; GetWvst((unsigned char*)&vVdl.vchar[si+off],&te[0],d_len); short l=*(short*)&vVdl.vchar[si-2]; if(l>4) l=0; if(l<0) l=0; for(int n=0;n>4))&0xf; } First=!First;//one byte will be opentioned two value_index=Index_table[bit_index]+value_index; if(value_index<0) value_index=0; if(value_index>0x58) value_index=0x58; int maxhight_bit_index=bit_index&0x8; bit_index=bit_index&0x7; value=(temp_table_value>>3);//|0x70000000; if(bit_index&0x4) { value+=temp_table_value; } if(bit_index&0x2) { value+=(temp_table_value>>1);//|0x80000000; } if(bit_index&0x1) { value+=(temp_table_value>>2);//|0x30000000; } if(maxhight_bit_index) { OValue-=value; } else { OValue+=value; } if(OValue>= 32767) OValue= 32767; if(OValue<=-32767) OValue=-32767; temp_table_value=value_table[value_index]; outbuf[OIndex]=OValue; i++; } } /////////////////////////////// // // Dpsx=> // Dpsx[0]=>tool model // Dpsx[1]=>Dipole_Source_frequency (HZ) // Dpsx[2]=>Dipole_SourcePulse_delay (us) // // void Get_Wave_Object(/*int mone_or_dipole,*/CMemRdWt *slf,float dep,int *outcurve,short *in_buffer,int ndim) { int d_len=400; if(ndim==19788) d_len=340; short *inbuffer=new short[8*d_len+1]; double *out_buffer=new double[8*d_len+1]; double *pp=(double *)&par[0]; int no=0; // if(mone_or_dipole) { //MP for(int array_num=0;array_num<8;array_num++) { for(int num=0;numWriteWave(outcurve[no++],dep,1,inbuffer); /////////////////////////////////////////////////////////////////////////// //XX for(int array_num=0;array_num<8;array_num++) { for(int num=0;numWriteWave(outcurve[no++],dep,1,inbuffer); ////////////////////////////////////////////////////////////////////////// //XY for(int array_num=0;array_num<8;array_num++) { for(int num=0;numWriteWave(outcurve[no++],dep,1,inbuffer); //////////////////////////////////////////////////////////////////////// //YX for(int array_num=0;array_num<8;array_num++) { for(int num=0;numWriteWave(outcurve[no++],dep,1,inbuffer); /////////////////////////////////////////////////////////////////////// //YY for(int array_num=0;array_num<8;array_num++) { for(int num=0;numWriteWave(outcurve[no++],dep,1,inbuffer); } ////////////////////////////////////////////////////////////////////////////////// // else { for(int m_x_y=0;m_x_y<3;m_x_y++) { for(int a_b_c_d=0;a_b_c_d<4;a_b_c_d++) { for(int array_num=0;array_num<8;array_num++) { for(int num=0;numWriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==1) { // MB=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==2) { // MC=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==3) { // MD=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } } else if(m_x_y==1) { if(a_b_c_d==0) { // XA=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==1) { // XB=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==2) { // XC=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==3) { // XD=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } } else if(m_x_y==2) { if(a_b_c_d==0) { // YA=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==1) { // YB=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==2) { // YC=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } else if(a_b_c_d==3) { // YD=inbuffer; slf->WriteWave(outcurve[no++],dep,1,inbuffer); } } } } } delete inbuffer; delete out_buffer; } void WriteWvst(CMemRdWt *m_Slf,float dep,int *outcurve,MyDataTypeEnum vVdl,int ndim)//main { int off=0; int d_len=400; int d_byte=202; if(ndim==19788) { d_len=340; d_byte=206; off=4; } int nu=(ndim-12)/d_byte; short *temp=(short *)malloc(nu*d_len*2+1); short te[1024]; double *pp=(double *)&par[0]; // pp[MFL]=0.0; //wvst_dipole for(int i=0;i<3;i++) {//m.x.y for(int j=0;j<8;j++) {//8 for(int k=0;k<4;k++) {//a,b,c,d int si=i*d_byte*4*8+j*4*d_byte+k*d_byte+0xe; GetWvst((unsigned char*)&vVdl.vchar[si+off],&te[0],d_len); double *in_buff=new double[d_len]; short l=*(short*)&vVdl.vchar[si-2]; if(l>4) l=0; if(l<0) l=0; for(int n=0;nWriteCurve(outcurve[17],dep,1,(char *)&Seq_no); delete temp; } double mysin(double ff) { return sin(ff); } double mycos(double ff) { return cos(ff); } double mylog(double ff) { return log(ff); } long myftol(double ff) { return ff; } int dft(double *in_buffer,int *wave_len,int array_num,int eq_1,int eq_0)//int *wave_len __cdecl { double var_374 ;//;// -374h int var_364;//;// -364h int var_360;//;// -360h int var_35C;//;// -35Ch int var_358;//;// -358h int var_354;//;// -354h int var_350;//;// -350h int var_34C;//;// -34Ch int var_348;//;// -348h int var_344;//;// -344h int var_340;//;// -340h int var_33C;//;// -33Ch int var_338;//;// -338h int var_334;//;// -334h int var_330;//;// -330h int var_32C;//;// -32Ch int var_328;//;// -328h int var_324;//;// -324h int var_320;//;// -320h int var_31C;//;// -31Ch int var_318;//;// -318h int var_314;//;// -314h int out_val;//;// -310h int save_const_1;// -30Ch int temp[100]; int var_288;//;// -288h int varmyexp;//;// -284h double const3 ;//;// -280h int var_278;//;// -278h double var_274 ;//;// -274h int var_26C;//;// -26Ch int var_268;//;// -268h int var_264;//;// -264h double var_260 ;//;// -260h double var_258 ;//;// -258h double var_250 ;//;// -250h double var_248 ;//;// -248h double var_240 ;//;// -240h int var_238;//;// -238h int i;//;// -234h int var_230;//;// -230h int var_22C;//;// -22Ch int var_228;//;// -228h int var_out_val;//;// -224h int var_220;//;// -220h double var_21C ;//;// -21Ch double var_214 ;//;// -214h int var_20C;//;// -20Ch int var_208;//;// -208h int var_204;//;// -204h int var_200;//;// -200h int var_1FC;//;// -1FCh int var_1F8;//;// -1F8h double const1 ;//;// -1F4h int var_1EC;//;// -1ECh int var_1E8;//;// -1E8h double var_1E4 ;//;// -1E4h double var_1DC ;//;// -1DCh int var_1D4;//;// -1D4h int var_1D0;//;// -1D0h int var_1CC;//;// -1CCh double var_1C8 ;//;// -1C8h double var_1C0 ;//;// -1C0h int j;//;// -1B8h int var_1B4;//;// -1B4h int var_eq_2;//;// -1B0h double var_1AC ;//;// -1ACh int var_1A4;//;// -1A4h int l;//;// -1A0h int var_19C;//;// -19Ch int var_198;//;// -198h int var_194;//;// -194h double var_190 ;//;// -190h double var_188 ;//;// -188h int var_180;//;// -180h int var_17C;//;// -17Ch double var_178 ;//;// -178h double var_170 ;//;// -170h int first_val;//;// -168h double var_164 ;//;// -164h int k;//;// -15Ch int var_158;//;// -158h double var_154 ;//;// -154h int var_14C;//;// -14Ch int var_148;//;// -148h int var_len;//;// -144h int out_cut;//;// -140h int mul_more2_exd_1;//;// -13Ch int var_138;//;// -138h double var_134 ;//;// -134h int const_1;//;// -12Ch int var_128;//;// -128h int var_124;//;// -124h double var_120 ;//;// -120h double var_118 ;//;// -118h double var_110 ;//;// -110h double var_108 ;//;// -108h int var_100;//;// -100h int var_FC;//;// -0FCh int var_F8;//;// -0F8h double var_F4 ;//;// -0F4h int var_EC;//;// -0ECh int var_E8;//;// -0E8h int var_E4;//;// -0E4h int var_E0;//;// -0E0h int var_DC;//;// -0DCh double var_D8 ;//;// -0D8h double var_D0 ;//;// -0D0h double var_C8 ;//;// -0C8h double var_C0 ;//;// -0C0h int var_B8;//;// -0B8h int var_B4;//;// -0B4h int var_B0;//;// -0B0h int var_AC;//;// -0ACh int var_A8;//;// -0A8h double* buffer;//;// -0A4h int var_A0;//;// -0A0h int var_9C;//;// -9Ch int var_98;//;// -98h double var_94 ;//;// -94h int var_8C;//;// -8Ch double var_88 ;//;// -88h double var_80 ;//;// -80h double var_78 ;//;// -78h double var_70 ;//;// -70h double var_68 ;//;// -68h int var_60;//;// -60h int var_5C;//;// -5Ch int mul_more1;//;// -58h double var_54 ;//;// -54h int var_4C;//;// -4Ch int var48;//;// -48h double var44 ;//;// -44h double var_3C ;//;// -3Ch double var_34 ;//;// -34h double const4 ;//;// -2Ch int var_24;//;// -24h int var_20;//;// -20h int var_1C;//;// -1Ch int var_18;//;// -18h double var_14 ;//;// -14h double const2 ;//;// -0Ch int var_4;//;// -4 double eq2=2.0; double eq0=0.0; double eq1=1.0; // mov eax, wave_len // sub eax, 4 // mov wave_len, eax ; //arg_4-=4; // wave_len-=4; // mov ecx, in_buffer // sub ecx, 8 // mov in_buffer, ecx ; //arg_0-=8; // in_buffer-=8; // cmp array_num, 1 // jge short loc_415956 // mov eax, 1 ; //<1 // jmp return if(array_num<1) return 1; // mov var_20, 1 // mov var_1C, 2 var_20=1; var_1C=2; char p1[8]={0x54,0x41,0x17,0x44,0x40,0x19,0x21,0xFB}; char p2[8]={0x66,0x81,0x15,0x1E,0x3F,0xE6,0xA0,0x9E}; char p3[8]={0xFE,0xFA,0x39,0xEF,0x3F,0xE6,0x2E,0x42}; char p4[8]={0xFE,0xFA,0x39,0xEF,0x3F,0xF6,0x2E,0x42}; char p10[8]={0x40,0x19,0x21,0xFB,0x54,0x41,0x17,0x44}; char p20[8]={0x3F,0xE6,0xA0,0x9E,0x66,0x81,0x15,0x1E}; char p30[8]={0x3F,0xE6,0x2E,0x42,0xFE,0xFA,0x39,0xEF}; char p40[8]={0x3F,0xF6,0x2E,0x42,0xFE,0xFA,0x39,0xEF}; for(int i0=0;i0<8;i0++) { p1[i0]=p10[7-i0]; p2[i0]=p20[7-i0]; p3[i0]=p30[7-i0]; p4[i0]=p40[7-i0]; } // mov dword ptr const1, 54411744h // mov dword ptr const1+4, 401921FBh memmove(&const1,p1,8); // mov dword ptr const2, 6681151Eh // mov dword ptr const2+4, 3FE6A09Eh memmove(&const2,p2,8); // mov dword ptr const3, 0FEFA39EFh // mov dword ptr const3+4, 3FE62E42h memmove(&const3,p3,8); // mov dword ptr const4, 0FEFA39EFh // mov dword ptr const4+4, 3FF62E42h memmove(&const4,p4,8); // mov var_194, 0 var_194=0; // mov var_1FC, 0 var_1FC=0; // mov mul_more1, 2 mul_more1=2; // mov mul_more2_exd_1, 1 mul_more2_exd_1=1; // mov out_cut, 0 out_cut=0; // mov edx, array_num var_len=array_num; // mov var_len, edx // mov i, 1 i=0; // jmp short loc_4159FB goto loc_4159FB; loc_4159EC:; // mov eax, i // add eax, 1 // mov i, eax i++; loc_4159FB:; // mov ecx, i // cmp ecx, var_len // jg loc_415ADB if(i>var_len) goto loc_415ADB; // mov edx, i // mov eax, wave_len // mov ecx, out_cut // cmp ecx, [eax+edx*4] // jle short loc_415A2F ; //out_buffer[i]>out_cut? if(out_cut<=wave_len[i]) goto loc_415A2F; // mov edx, out_cut ; //> // mov out_val, edx ; //out_val=cut out_val=out_cut; goto loc_415A41; // jmp short loc_415A41 loc_415A2F:; // mov eax, i // mov ecx, wave_len // mov edx, [ecx+eax*4] // mov out_val, edx ; out_val=wave_len[i]; loc_415A41:; // mov eax, out_val // mov out_cut, eax ; //out_cut=out_val out_cut=out_val; // mov ecx, i // mov edx, wave_len // cmp dword ptr [edx+ecx*4], 0 // jg short loc_415A66 ; if(wave_len[i]>0) goto loc_415A66 ; // mov eax, 2 // jmp return return 2; loc_415A66:; // cmp i, 1 ; //i!=1 // jnz short loc_415AA1 if(i!=0) goto loc_415AA1; // mov eax, i // mov ecx, wave_len // mov edx, [ecx+eax*4] // mov first_val, edx ; //first rec, first_val=wave_len[i]; // mov eax, first_val // and eax, 80000001h // jns short loc_415A93 ; ;//not neg short eax=first_val&0x80000001; if(eax>=0) goto loc_415A93 ; // dec eax // or eax, 0FFFFFFFEh eax--; eax=eax|0xFFFFFFFE; eax++; loc_415A93:; // test eax, eax // jz short loc_415AA1 if(eax==0) goto loc_415AA1; // mov eax, 3 ; //not 0 error 3 // jmp return return 3; loc_415AA1:; // mov ecx, i // mov edx, wave_len // mov eax, mul_more1 // imul eax, [edx+ecx*4] // mov mul_more1, eax ; //var_58*=out_buffer[i] mul_more1=wave_len[i]*mul_more1; // cmp i, 1 // jle short loc_415AD6 ; //<2 continue loop if(i<=0) goto loc_415AD6 ; // mov ecx, i // mov edx, wave_len // mov eax, mul_more2_exd_1 // imul eax, [edx+ecx*4] // mov mul_more2_exd_1, eax ; //var_13c*=out_buffer[i] mul_more2_exd_1=wave_len[i]*mul_more2_exd_1; loc_415AD6:; // jmp loc_4159EC goto loc_4159EC; loc_415ADB:; // mov ecx, out_cut // shl ecx, 1 // mov out_cut, ecx ; //out_cut*=2 out_cut*=2; // mov buffer, 0 // mov edx, out_cut // shl edx, 1 // shl edx, 3 // push edx // call malloc // add esp, 4 // mov buffer, eax buffer=(double*)malloc(out_cut*2*8); // mov var_eq_2, 2 var_eq_2=2; // mov eax, array_num // mov var_len, eax var_len=array_num; // mov i, 1 i=0; // jmp short loc_415B3B goto loc_415B3B; loc_415B2C:; // mov ecx, i // add ecx, 1 // mov i, ecx i++; loc_415B3B:; // mov edx, i // cmp edx, var_len // jg loc_417FA2 if(i>var_len) goto loc_417FA2; // mov eax, i // mov ecx, wave_len // mov edx, [ecx+eax*4] // mov var_264, edx var_264=wave_len[i]; // mov eax, var_eq_2 // imul eax, var_264 // mov var_1D4, eax ; ;=out_buffer[i]*var_1b0 var_1D4=var_eq_2*var_264; // cmp var_264, 1 // jle loc_417F79 ; //out_buffer[i]<=1 if(var_264<=1) goto loc_417F79; // mov ecx, var_264 ; //out_buffer[i]>1 // mov var_out_val, ecx var_out_val=var_264; // mov edx, var_eq_2 // mov var_22C, edx var_22C=var_eq_2; // mov j, 1 j=1; // mov const_1, 2 const_1=2; // fild var_out_val // sub esp, 8 // fstp qword ptr [esp] // call mylog // add esp, 8 // fdiv const3 ; // /var_280 // fadd eq2 ; //+2.0 // fst var_374 var_374=mylog(var_out_val)/const3+eq2; // sub esp, 8 // fstp qword ptr [esp] // call myftol // add esp, 8 // mov varmyexp, eax varmyexp=myftol(var_374); // mov k, 0 k=0; // jmp short loc_415BF1 goto loc_415BF1; loc_415BE2:; // mov eax, k // add eax, 1 // mov k, eax k++; loc_415BF1:; // mov ecx, k // cmp ecx, varmyexp // jge loc_415CA6 if(k>=varmyexp) goto loc_415CA6; // mov eax, var_out_val // cdq // idiv const_1 // test edx, edx ; //% // jnz short loc_415C74 ; //%!=0 if(var_out_val%const_1) goto loc_415C74 ; // mov edx, var_out_val ; //能整除 // cmp edx, const_1 ; //==? // jz short loc_415C74 ; //= if(var_out_val==const_1) goto loc_415C74 ; // mov eax, j ; //!= // mov ecx, const_1 // mov [ebp+eax*4+save_const_1], ecx ; //var_30=const1 // [j+save_const_1]=const_1; // lea edx,save_const_1 // mov [edx+eax*4], ecx ; //var_30=const1 temp[save_const_1+j]=const_1; // mov edx, j // add edx, 1 // mov j, edx ; // j++; // mov eax, var_out_val // cdq // idiv const_1 // mov var_out_val, eax ; //能整除,取整数部分=〉var_out_val var_out_val/=const_1; // cmp const_1, 2 // jnz short loc_415C72 if(const_1!=2) goto loc_415C72; // mov eax, var_22C // add eax, var_22C // mov var_22C, eax ; //const_1=2时,var_22c*=2; var_22C=var_22C*2; loc_415C72:; // jmp short loc_415CA1 goto loc_415CA1; loc_415C74:; // cmp const_1, 2 ; //不能整除情况 // jnz short loc_415C92 ; //const_1=2=>const_1+=2 if(const_1!=2) goto loc_415C92; // mov const_1, 3 ; //const_1=2,const_1=3 const_1=3; // mov ecx, j // mov var_4C, ecx ; //记下第二层大循环次数 var_4C=j; // jmp short loc_415CA1 goto loc_415CA1; loc_415C92:; // mov edx, const_1 ; //const_1=2=>const_1+=2 // add edx, 2 // mov const_1, edx const_1+=2; loc_415CA1:; // jmp loc_415BE2 goto loc_415BE2; loc_415CA6:; // cmp var_out_val, 2 // jnz short loc_415CD4 if(var_out_val!=2) goto loc_415CD4; // mov eax, var_22C // add eax, var_22C // mov var_22C, eax ; //var_22c*=2; var_22C*=2; // mov ecx, j //// mov [ebp+ecx*4+save_const_1], 0 // lea edx,save_const_1 // mov [edx+ecx*4], 0 temp[save_const_1+j]=0; // jmp short loc_415CE7 goto loc_415CE7; loc_415CD4: // mov edx, j // mov eax, var_out_val // mov [ebp+edx*4+save_const_1], eax ; //when var_out_val!=2,save_const_1=var_out_va // push ecx // lea ecx,save_const_1 // mov [ecx+4*edx], eax ; // pop ecx temp[save_const_1+j]=var_out_val; loc_415CE7:; // mov eax, var_1D4 // cdq // idiv var_22C // mov var_F8, eax var_F8=var_1D4/var_22C; // mov var_AC, 1 var_AC=1; // mov ecx, var_eq_2 // mov var_148, ecx var_148=var_eq_2; // cmp eq_0, 0 // jg loc_415E3A if(eq_0>0) goto loc_415E3A; // cmp i, 4 ; //arg_10<=0 // jge loc_415E3A if(i>=4) goto loc_415E3A; // cmp i, 1 ; //i<4 // jle short loc_415D5C ; i>=4 if(i<=1) goto loc_415D5C ; // mov var_198, 2 ; //i>1 var_198=2; // mov eax, var_1FC // cdq // sub eax, edx // sar eax, 1 // add eax, 1 // mov edx, var_194 // imul edx, eax // mov var_148, edx ; //var_148=var_1fc/4*val_194 var_148=(var_1FC/2+1)*var_194; // jmp loc_415E38 goto loc_415E38; loc_415D5C:; // mov eax, var_22C ; i>=4 // cmp eax, var_eq_2 // jg short loc_415D79 ; //var_22c>var_eq_2 if(var_22C>var_eq_2) goto loc_415D79; // mov var_198, 3 ; var_22c<=var_eq_2 var_198=3; // jmp loc_415E38 goto loc_415E38; loc_415D79:; // mov var_198, 4 ; //var_22c>var_eq_2 var_198=4; // mov var_AC, 2 var_AC=2; // mov eax, var_22C // cdq // sub eax, edx // sar eax, 1 // mov var_22C, eax ; //var_22c/=2 var_22C/=2; // mov eax, var_264 // cdq // sub eax, edx // sar eax, 1 // mov var_264, eax ; //var_264/=2; var_264/=2; // mov eax, var_1D4 // cdq // sub eax, edx // sar eax, 1 // mov var_1D4, eax ; //var_1d4/=2; var_1D4/=2; // mov eax, mul_more1 // cdq // sub eax, edx // sar eax, 1 // mov mul_more1, eax ; //mul_more1/=2; mul_more1/=2; // mov var_17C, 0FFFFFFFFh var_17C=-1; // mov ecx, mul_more1 // mov k, ecx ; //k=mul_more1 k=mul_more1; // mov l, 1 l=1; // jmp short loc_415DF9 goto loc_415DF9; loc_415DEA:; // mov edx, l // add edx, 1 // mov l, edx l++; loc_415DF9:; // mov eax, l // cmp eax, k // jg short loc_415E38 if(l>k) goto loc_415E38; // mov ecx, var_17C // add ecx, 2 // mov var_17C, ecx var_17C+=2; // mov edx, var_17C // mov eax, in_buffer // mov ecx, l // mov esi, in_buffer // mov edi, [eax+edx*8] // mov [esi+ecx*8], edi // mov edx, [eax+edx*8+4] // mov [esi+ecx*8+4], edx ; //in_buffer[l]=in_buffer[var_17c]; in_buffer[l]=in_buffer[var_17C]; // jmp short loc_415DEA goto loc_415DEA; loc_415E38:; // jmp short loc_415E44 goto loc_415E44; loc_415E3A:; // mov var_198, 1 var_198=1; loc_415E44:; // fild var_22C // sub esp, 8 // fst var_374 var_374=var_22C; // fstp qword ptr [esp] // call mylog // add esp, 8 // fdiv const4 // fadd eq1 // sub esp, 8 // fstp qword ptr [esp] // call myftol // add esp, 8 // mov varmyexp, eax ; //varmyexp=var_22c/var_2c+1 varmyexp=myftol(log(var_374)/const4+eq1); // cmp var_F8, 1 // jg loc_416112 if(var_F8>1) goto loc_416112; // mov eax, var_1D4 // cdq // sub eax, edx // sar eax, 1 // mov var_14C, eax var_14C=var_1D4/2; // mov l, 1 l=1; // mov eax, var_1D4 // mov k, eax k=var_1D4; // mov ecx, var_eq_2 // mov var_180, ecx var_180=var_eq_2; // mov var_1F8, 1 var_1F8=1; // jmp short loc_415ECA goto loc_415ECA; loc_415EB8:; // mov edx, var_1F8 // add edx, var_180 // mov var_1F8, edx var_1F8+=var_180; loc_415ECA:; // cmp var_180, 0 // jge short loc_415EEC if(var_180>=0) goto loc_415EEC; // mov eax, var_1F8 // xor ecx, ecx // cmp eax, k // setnl cl // mov var_314, ecx var_314=(var_1F8>=k); // jmp short loc_415F03 goto loc_415F03; loc_415EEC:; // mov edx, var_1F8 // xor eax, eax // cmp edx, k // setle al // mov var_314, eax var_314=(var_1F8<=k); loc_415F03:; // cmp var_314, 0 // jz loc_41610D if(var_314==0) goto loc_41610D; // mov ecx, l // cmp ecx, var_1F8 // jge loc_4160A9 if(l>=var_1F8) goto loc_4160A9; // mov edx, var_eq_2 // mov eax, var_1F8 // lea ecx, [eax+edx-2] var_A0=var_eq_2+var_1F8-2; // mov var_A0, ecx // mov edx, var_A0 // mov var_1A4, edx var_1A4=var_A0; // mov eax, var_1F8 // mov var_1CC, eax var_1F8=var_1CC; // jmp short loc_415F61 goto loc_415F61; loc_415F52:; // mov ecx, var_1CC // add ecx, 2 // mov var_1CC, ecx var_1CC+=2; loc_415F61:; // mov edx, var_1CC // cmp edx, var_1A4 // jg loc_4160A9 if(var_1CC>var_1A4) goto loc_4160A9; // mov eax, mul_more1 // mov var_1D0, eax var_1D0=mul_more1; // mov ecx, var_1D4 // mov var_20C, ecx var_20C=var_1D4; // mov edx, var_1CC // mov var_220, edx var_220=var_1CC; // jmp short loc_415FA8 goto loc_415FA8; loc_415F96:; // mov eax, var_220 // add eax, var_20C // mov var_220, eax var_220+=var_20C; loc_415FA8:; // cmp var_20C, 0 // jge short loc_415FCA if(var_20C>=0) goto loc_415FCA; // mov ecx, var_220 // xor edx, edx // cmp ecx, var_1D0 // setnl dl // mov var_318, edx var_318=(var_220>=var_1D0); // jmp short loc_415FE1 goto loc_415FE1; loc_415FCA:; // mov eax, var_220 // xor ecx, ecx // cmp eax, var_1D0 // setle cl // mov var_318, ecx var_318=(var_220<=var_1D0); loc_415FE1:; // cmp var_318, 0 // jz loc_4160A4 if(var_318==0) goto loc_4160A4; // mov edx, l // add edx, var_220 // sub edx, var_1F8 // mov var48, edx var48=l+var_220-var_1F8; // mov eax, var_220 // mov ecx, in_buffer // mov edx, [ecx+eax*8] // mov dword ptr var_80, edx // mov eax, [ecx+eax*8+4] // mov dword ptr [var_80+4], eax var_80=in_buffer[var_220]; // mov ecx, var_220 // mov edx, in_buffer // mov eax, [edx+ecx*8+8] // mov dword ptr var_178, eax // mov ecx, [edx+ecx*8+0Ch] // mov dword ptr [var_178+4], ecx var_178=in_buffer[var_220+1]; // mov edx, var48 // mov eax, in_buffer // mov ecx, var_220 // mov esi, in_buffer // mov edi, [eax+edx*8] // mov [esi+ecx*8], edi // mov edx, [eax+edx*8+4] // mov [esi+ecx*8+4], edx // mov eax, var48 // mov ecx, in_buffer // mov edx, var_220 // mov esi, in_buffer // mov edi, [ecx+eax*8+8] // mov [esi+edx*8+8], edi // mov eax, [ecx+eax*8+0Ch] // mov [esi+edx*8+0Ch], eax in_buffer[var_220]=in_buffer[var48]; // mov ecx, var48 // mov edx, in_buffer // mov eax, dword ptr var_80 // mov [edx+ecx*8], eax // mov eax, dword ptr [var_80+4] // mov [edx+ecx*8+4], eax in_buffer[var48]=var_80; // mov ecx, var48 // mov edx, in_buffer // mov eax, dword ptr var_178 // mov [edx+ecx*8+8], eax // mov eax, dword ptr [var_178+4] // mov [edx+ecx*8+0Ch], eax in_buffer[var48+1]=var_178; // jmp loc_415F96 goto loc_415F96; loc_4160A4: // jmp loc_415F52 goto loc_415F52; loc_4160A9: // mov ecx, var_14C // mov var_out_val, ecx var_out_val=var_14C; loc_4160B5: // mov edx, var_out_val // cmp edx, var_eq_2 if(var_out_valvar_180) goto loc_416460; // mov ecx, mul_more1 // mov k, ecx k=mul_more1; // mov edx, var_1D4 // mov var_1A4, edx var_1A4=var_1D4; // mov eax, var_1CC // mov var_220, eax var_220=var_1CC; // jmp short loc_41618E goto loc_41618E; loc_41617C:; // mov ecx, var_220 // add ecx, var_1A4 // mov var_220, ecx var_220+=var_1A4; loc_41618E:; // cmp var_1A4, 0 // jge short loc_4161B0 if(var_1A4>=0) goto loc_4161B0; // mov edx, var_220 // xor eax, eax // cmp edx, k // setnl al // mov var_31C, eax var_31C=(var_220>k); // jmp short loc_4161C7 goto loc_4161C7; loc_4161B0:; // mov ecx, var_220 // xor edx, edx // cmp ecx, k // setle dl // mov var_31C, edx var_31C=(var_220<=k); loc_4161C7:; // cmp var_31C, 0 // jz loc_41645B if(var_31C==0) goto loc_41645B; // mov eax, var_220 // mov l, eax l=var_220; // mov ecx, var_E8 // mov var_20C, ecx var_20C=var_E8; // mov var_17C, 1 var_17C=1; // jmp short loc_416207 goto loc_416207; loc_4161F8:; // mov edx, var_17C // add edx, 2 // mov var_17C, edx var_17C+=2; loc_416207:; // mov eax, var_17C // cmp eax, var_20C // jg loc_41635E if(var_17C>var_20C) goto loc_41635E; // cmp var_198, 3 // jz short loc_41626C if(var_198==3) goto loc_41626C; // mov ecx, l // mov edx, in_buffer // mov eax, var_17C // mov esi, buffer // mov edi, [edx+ecx*8] // mov [esi+eax*8], edi // mov ecx, [edx+ecx*8+4] // mov [esi+eax*8+4], ecx buffer[var_17C]=in_buffer[l]; // mov edx, l // mov eax, in_buffer // mov ecx, var_17C // mov esi, buffer // mov edi, [eax+edx*8+8] // mov [esi+ecx*8+8], edi // mov edx, [eax+edx*8+0Ch] // mov [esi+ecx*8+0Ch], edx buffer[var_17C+1]=in_buffer[l+1]; // jmp short loc_4162AB goto loc_4162AB; loc_41626C:; // mov eax, l // mov ecx, in_buffer // mov edx, var_17C // mov esi, buffer // mov edi, [ecx+eax*8] // mov [esi+edx*8], edi // mov eax, [ecx+eax*8+4] // mov [esi+edx*8+4], eax buffer[var_17C]=in_buffer[l]; // mov ecx, var_17C /// mov edx, buffer // mov dword ptr [edx+ecx*8+8], 0 // mov dword ptr [edx+ecx*8+0Ch], 0 buffer[var_17C+1]=0; loc_4162AB:; // mov eax, var_1D4 // mov var_8C, eax var_8C=var_1D4; // mov ecx, var_AC // mov j, ecx j=var_AC; // mov var_98, 1 var_98=1; loc_4162CD:; // mov edx, var_8C // cmp edx, var_eq_2 // jle short loc_416359 if(var_8C=0) goto loc_4163DA; // mov eax, var_1F8 // xor ecx, ecx // cmp eax, var_20C // setnl cl // mov var_320, ecx var_320=(var_1F8>=var_320); // jmp short loc_4163F1 goto loc_4163F1; loc_4163DA:; // mov edx, var_1F8 // xor eax, eax // cmp edx, var_20C // setle al // mov var_320, eax var_320=(var_1F8<=var_20C); loc_4163F1:; // cmp var_320, 0 // jz short loc_416456 if(var_320==0) goto loc_416456; // mov ecx, var_17C // mov edx, buffer // mov eax, var_1F8 // mov esi, in_buffer // mov edi, [edx+ecx*8] // mov [esi+eax*8], edi // mov ecx, [edx+ecx*8+4] // mov [esi+eax*8+4], ecx in_buffer[var_1F8]=buffer[var_17C]; // mov edx, var_17C // mov eax, buffer // mov ecx, var_1F8 // mov esi, in_buffer // mov edi, [eax+edx*8+8] // mov [esi+ecx*8+8], edi // mov edx, [eax+edx*8+0Ch] // mov [esi+ecx*8+0Ch], edx in_buffer[var_1F8+1]=buffer[var_17C+1]; // mov eax, var_17C // add eax, 2 // mov var_17C, eax var_17C+=2; // jmp loc_4163A6 goto loc_4163A6; loc_416456:; // jmp loc_41617C goto loc_41617C; loc_41645B:; // jmp loc_416138 goto loc_416138; loc_416460:; // mov ecx, var_22C // cmp ecx, var_eq_2 // jle loc_416F4C if(var_22C<=var_eq_2) goto loc_416F4C; // mov edx, var_eq_2 // add edx, var_eq_2 // mov var_19C, edx var_19C=var_eq_2*2; // mov eax, var_22C // cdq // idiv var_eq_2 // mov var_158, eax var_158=var_22C/var_eq_2; // fild var_158 // sub esp, 8 // fst var_374 var_374=var_158; // fstp qword ptr [esp] // call mylog // add esp, 8 // fdiv const4 // fst var_94 var_94=mylog(var_374)/const4; // sub esp, 8 // fstp qword ptr [esp] // call myftol // add esp, 8 // mov var_138, eax var_138=myftol(var_94); // fild var_138 // fsubr var_94 // fstp var_1C0 var_1C0=var_138-var_94; // mov var_158, 2 var_158= 2; // fld var_1C0 // fcomp eq0 // fnstsw ax // test ah, 40h // jz short loc_4164F8 if(var_1C0>eq0) goto loc_4164F8; // mov var_158, 1 var_158=1; loc_4164F8:; // cmp var_158, 2 // jnz loc_41667E if(var_158!=2) goto loc_41667E; // mov eax, var_148 // mov var_180, eax var_180=var_148; // mov var_1CC, 1 var_1CC=1; // jmp short loc_41652C goto loc_41652C; loc_41651D:; // mov ecx, var_1CC // add ecx, 2 // mov var_1CC, ecx var_1CC+=2; loc_41652C:; // mov edx, var_1CC // cmp edx, var_180 // jg loc_41667E if(var_1CC>var_180) goto loc_41667E; // mov eax, mul_more1 // mov var_1A4, eax var_1A4=mul_more1; // mov ecx, var_19C // mov k, ecx k=var_19C; // mov edx, var_1CC // mov var_9C, edx var_9C=var_1CC; // jmp short loc_416573 goto loc_416573; loc_416561:; // mov eax, var_9C // add eax, k // mov var_9C, eax var_9C+=k; loc_416573:; // cmp k, 0 // jge short loc_416595 if(k>=0) goto loc_416595; // mov ecx, var_9C // xor edx, edx // cmp ecx, var_1A4 // setnl dl // mov var_324, edx var_324=(var_9C>=var_1A4); // jmp short loc_4165AC goto loc_4165AC; loc_416595:; // mov eax, var_9C // xor ecx, ecx // cmp eax, var_1A4 // setle cl // mov var_324, ecx var_324=(var_9C<=var_324); loc_4165AC:; // cmp var_324, 0 // jz loc_416679 if(var_324==0) goto loc_416679; // mov edx, var_9C // add edx, var_eq_2 // mov var_A8, edx var_A8=var_9C+var_eq_2; // mov eax, var_A8 // mov ecx, in_buffer // mov edx, [ecx+eax*8] // mov dword ptr var_80, edx // mov eax, [ecx+eax*8+4] // mov dword ptr [var_80+4], eax in_buffer[var_A8]=var_80; // mov ecx, var_A8 // mov edx, in_buffer // mov eax, [edx+ecx*8+8] // mov dword ptr var_178, eax // mov ecx, [edx+ecx*8+0Ch] // mov dword ptr var_178+4, ecx in_buffer[var_A8+1]=var_178; // mov edx, var_9C // mov eax, in_buffer // fld qword ptr [eax+edx*8] // fsub var_80 // mov ecx, var_A8 // mov edx, in_buffer // fstp qword ptr [edx+ecx*8] in_buffer[var_A8]=in_buffer[var_9C]-var_80; // mov eax, var_9C // mov ecx, in_buffer // fld qword ptr [ecx+eax*8+8] // fsub var_178 // mov edx, var_A8 // mov eax, in_buffer // fstp qword ptr [eax+edx*8+8] in_buffer[var_A8+1]=in_buffer[var_9C]-var_178; // mov ecx, var_9C // mov edx, in_buffer // fld var_80 // fadd qword ptr [edx+ecx*8] // mov eax, var_9C // mov ecx, in_buffer // fstp qword ptr [ecx+eax*8] in_buffer[var_9C]=in_buffer[var_9C]+var_80; // mov edx, var_9C // mov eax, in_buffer // fld var_178 // fadd qword ptr [eax+edx*8+8] // mov ecx, var_9C // mov edx, in_buffer // fstp qword ptr [edx+ecx*8+8] in_buffer[var_9C+1]=in_buffer[var_9C]+var_178; // jmp loc_416561 goto loc_416561; loc_416679:; // jmp loc_41651D goto loc_41651D; loc_41667E:; // mov eax, var_eq_2 // mov var_FC, eax var_FC=var_eq_2; loc_41668A:; // mov eax, var_22C // cdq // sub eax, edx // sar eax, 1 // cmp var_FC, eax // jge loc_416F4C if(var_FC>=var_22C/2) goto loc_416F4C; // mov ecx, var_19C // mov var_180, ecx var_180=var_19C; // mov eax, var_FC // cdq // sub eax, edx // sar eax, 1 // mov k, eax k=var_FC/2; // mov edx, var_180 // cmp edx, k // jle short loc_4166DA if(var_180<=k) goto loc_4166DA; // mov eax, var_180 // mov var_328, eax var_328=var_180; // jmp short loc_4166E6 goto loc_4166E6; loc_4166DA:; // mov ecx, k // mov var_328, ecx var_328=k; loc_4166E6:; // mov edx, var_328 // mov var_B4, edx var_B4=var_328; // mov eax, var_B4 // mov var_180, eax var_180=var_B4; // mov ecx, var_19C // mov k, ecx k=var_19C; // mov edx, var_eq_2 // mov var_200, edx var_200=var_eq_2; // jmp short loc_41672A goto loc_41672A; // loc_416718:; // mov eax, var_200 // add eax, k // mov var_200, eax var_200+=k; loc_41672A:; // cmp k, 0 // jge short loc_41674C if(k>=0) goto loc_41674C; // mov ecx, var_200 // xor edx, edx // cmp ecx, var_180 // setnl dl // mov var_32C, edx var_32C=(var_200>=var_180); // jmp short loc_416763 goto loc_416763; loc_41674C:; // mov eax, var_200 // xor ecx, ecx // cmp eax, var_180 // setle cl // mov var_32C, ecx var_32C=(var_200<=var_180); loc_416763:; // cmp var_32C, 0 // jz loc_416F24 if(var_32C==0) goto loc_416F24; // mov edx, var_200 // mov var_out_val, edx var_out_val=var_200; // mov eax, var_FC // cmp eax, var_eq_2 // jle loc_416876 if(var_FC<=var_eq_2) goto loc_416876; // fld const1 // fchs // fimul var_200 // mov ecx, var_FC // shl ecx, 2 // mov var_330, ecx var_330=var_FC*2; // fild var_330 // fdivp st(1), st // fstp var_88 var_88=var_330/(-const1*var_200); // cmp eq_1, 0 // jl short loc_4167CD if(eq_1<0) goto loc_4167CD; // fld var_88 // fchs // fstp var_88 var_88=-var_88; loc_4167CD:; // mov edx,dword ptr var_88+4 // push edx // mov eax,dword ptr var_88 // push eax // call mycos // mycos(var_88); // add esp,8 // fstp var_D0 var_D0=mycos(var_88); // mov ecx,dword ptr var_88+4 // push ecx // mov edx,dword ptr var_88 // push edx // call mysin // add esp,8 // fstp var_1DC var_1DC=mysin(var_88); // fld var_D0 // fmul var_D0 var_D0*var_D0; // fld var_1DC // fmul var_1DC // fsubp st(1), st // fstp var_134 var_134=var_1DC*var_1DC-var_D0*var_D0; // fld var_D0 // fadd st, st // fmul var_1DC // fstp var_250 var_250=(var_D0+var_D0)*var_1DC; // fld var_134 // fmul var_D0 // fld var_250 // fmul var_1DC // fsubp st(1), st // fstp var_1AC var_1AC=var_250*var_1DC-var_134*var_D0; // fld var_134 // fmul var_1DC // fld var_250 // fmul var_D0 // faddp st(1), st // fstp var_70 var_70=var_134*var_1DC+var_250*var_D0; loc_416876:; // mov eax, var_out_val // cmp eax, var_FC // jg loc_416F1F if(var_out_val>var_FC) goto loc_416F1F; // mov ecx, var_148 // mov var_1A4, ecx var_1A4=var_148; // mov var_1CC, 1 var_1CC=1; // jmp short loc_4168AF goto loc_4168AF; loc_4168A0:; // mov edx, var_1CC // add edx, 2 // mov var_1CC, edx var_1CC+=2; loc_4168AF:; // mov eax, var_1CC // cmp eax, var_1A4 // jg loc_416E1D if(var_1CC>var_1A4) goto loc_416E1D; // mov ecx, var_158 // imul ecx, var_out_val // mov edx, var_1CC // add edx, ecx // mov var_128, edx var_128=var_1CC+var_158*var_out_val; // mov eax, var_FC // cmp eax, var_eq_2 // jg short loc_4168F6 if(var_FC>var_eq_2) goto loc_4168F6; // mov ecx, var_1CC // mov var_128, ecx var_128=var_1CC; loc_4168F6:; // mov edx, var_158 // imul edx, var_FC // mov var_208, edx var_208=var_158*var_FC; // mov eax, varmyexp // mov var_1D0, eax var_1D0=varmyexp; // mov var_1B4, 1 var_1B4=1; // jmp short loc_416930 goto loc_416930; loc_416921:; // mov ecx, var_1B4 // add ecx, 1 // mov var_1B4, ecx var_1B4++; loc_416930:; // mov edx, var_1B4 // cmp edx, var_1D0 // jg loc_416E18 if(var_1B4>var_1D0) goto loc_416E18; // mov eax, var_208 // shl eax, 2 // mov var_EC, eax var_EC=var_208*2*2; // mov ecx, var_EC // cmp ecx, var_22C // jg loc_416E13 if(var_EC>var_22C) goto loc_416E13; // mov edx, mul_more1 // mov var_20C, edx var_20C=mul_more1; // mov eax, var_EC // mov var_238, eax var_238=var_EC; // mov ecx, var_128 // mov var_9C, ecx var_9C=var_128; // jmp short loc_416998 goto loc_416998; loc_416986:; // mov edx, var_9C // add edx, var_238 // mov var_9C, edx var_9C=var_9C+var_238; loc_416998:; // cmp var_238, 0 // jge short loc_4169BA if(var_238>=0) goto loc_4169BA; // mov eax, var_9C // xor ecx, ecx // cmp eax, var_20C // setnl cl // mov var_334, ecx var_334=(var_9C>=var_20C); // jmp short loc_4169D1 goto loc_4169D1; loc_4169BA:; // mov edx, var_9C // xor eax, eax // cmp edx, var_20C // setle al // mov var_334, eax var_334=(var_9C<=var_20C); loc_4169D1:; // cmp var_334, 0 // jz loc_416DEC if(var_334==0) goto loc_416DEC; // mov ecx, var_9C // add ecx, var_208 // mov var_A8, ecx var_A8=var_9C+var_208; // mov edx, var_A8 // add edx, var_208 // mov var_E4, edx var_E4=var_A8+var_208; // mov eax, var_E4 // add eax, var_208 // mov var_124, eax var_124=var_E4+var_208; // mov ecx, var_FC // cmp ecx, var_eq_2 // jg loc_416B63 if(var_FC>var_eq_2) goto loc_416B63; // mov edx, var_9C // mov eax, in_buffer // mov ecx, var_A8 // mov esi, in_buffer // fld qword ptr [eax+edx*8] // fadd qword ptr [esi+ecx*8] // fstp var_68 var_68=in_buffer[var_9C]+in_buffer[var_A8]; // mov edx, var_9C // mov eax, in_buffer // mov ecx, var_A8 // mov esi, in_buffer // fld qword ptr [eax+edx*8+8] // fadd qword ptr [esi+ecx*8+8] // fstp var_164 var_164=in_buffer[var_9C+1]+in_buffer[var_A8+1]; // mov edx, var_E4 // mov eax, in_buffer // mov ecx, var_124 // mov esi, in_buffer // fld qword ptr [eax+edx*8] // fadd qword ptr [esi+ecx*8] // fstp var_118 var_118=in_buffer[var_E4]+in_buffer[var_124]; // mov edx, var_E4 // mov eax, in_buffer // mov ecx, var_124 // mov esi, in_buffer // fld qword ptr [eax+edx*8+8] // fadd qword ptr [esi+ecx*8+8] // fstp var_21C var_21C=in_buffer[var_E4+1]+in_buffer[var_124+1]; // mov edx, var_9C // mov eax, in_buffer // mov ecx, var_A8 // mov esi, in_buffer // fld qword ptr [eax+edx*8] // fsub qword ptr [esi+ecx*8] // fstp var_190 var_190=in_buffer[var_9C]-in_buffer[var_A8]; // mov edx, var_9C // mov eax, in_buffer // mov ecx, var_A8 // mov esi, in_buffer // fld qword ptr [eax+edx*8+8] // fsub qword ptr [esi+ecx*8+8] // fstp var_3C var_3C=in_buffer[var_9C+1]-in_buffer[var_A8+1]; // cmp eq_1, 0 // jge short loc_416B20 if(eq_1>=0) goto loc_416B20; // mov edx, var_E4 // mov eax, in_buffer // mov ecx, var_124 // mov esi, in_buffer // fld qword ptr [eax+edx*8+8] // fsub qword ptr [esi+ecx*8+8] // fstp var_248 var_248=in_buffer[var_E4+1]+in_buffer[var_124+1]; // mov edx, var_124 // mov eax, in_buffer // mov ecx, var_E4 // mov esi, in_buffer // fld qword ptr [eax+edx*8] // fsub qword ptr [esi+ecx*8] // fstp var_C8 var_C8=in_buffer[var_124]-in_buffer[var_E4]; // jmp short loc_416B5E goto loc_416B5E; loc_416B20:; // mov edx, var_124 // mov eax, in_buffer // mov ecx, var_E4 // mov esi, in_buffer // fld qword ptr [eax+edx*8+8] // fsub qword ptr [esi+ecx*8+8] // fstp var_248 var_248=in_buffer[var_124+1]-in_buffer[var_E4+1]; // mov edx, var_E4 // mov eax, in_buffer // mov ecx, var_124 // mov esi, in_buffer // fld qword ptr [eax+edx*8] // fsub qword ptr [esi+ecx*8] // fstp var_C8 var_C8=in_buffer[var_E4]-in_buffer[var_124];; loc_416B5E:; // jmp loc_416D2F goto loc_416D2F; loc_416B63:; // mov edx, var_A8 // mov eax, in_buffer // fld var_134 // fmul qword ptr [eax+edx*8] // mov ecx, var_A8 // mov edx, in_buffer // fld var_250 // fmul qword ptr [edx+ecx*8+8] // fsubp st(1), st // fstp var_110 var_110=var_250*in_buffer[var_A8+1]-var_134*in_buffer[var_A8]; // mov eax, var_A8 // mov ecx, in_buffer // fld var_134 // fmul qword ptr [ecx+eax*8+8] // mov edx, var_A8 // mov eax, in_buffer // fld var_250 // fmul qword ptr [eax+edx*8] // faddp st(1), st // fstp var_214 var_214=var_250*in_buffer[var_A8]+var_134*in_buffer[var_A8+1]; // mov ecx, var_E4 // mov edx, in_buffer // fld var_D0 // fmul qword ptr [edx+ecx*8] // mov eax, var_E4 // mov ecx, in_buffer // fld var_1DC // fmul qword ptr [ecx+eax*8+8] // fsubp st(1), st // fstp var_188 var_188=var_1DC*in_buffer[var_E4+1]-var_D0*in_buffer[var_E4]; // mov edx, var_E4 // mov eax, in_buffer // fld var_D0 // fmul qword ptr [eax+edx*8+8] // mov ecx, var_E4 // mov edx, in_buffer // fld var_1DC // fmul qword ptr [edx+ecx*8] // faddp st(1), st // fstp var_34 var_34=var_1DC*in_buffer[var_E4]+var_D0*in_buffer[var_E4+1]; // mov eax, var_124 // mov ecx, in_buffer // fld var_1AC // fmul qword ptr [ecx+eax*8] // mov edx, var_124 // mov eax, in_buffer // fld var_70 // fmul qword ptr [eax+edx*8+8] // fsubp st(1), st // fstp var_240 var_240=var_70*in_buffer[var_124+1]-var_1AC*in_buffer[var_124]; // mov ecx, var_124 // mov edx, in_buffer // fld var_1AC // fmul qword ptr [edx+ecx*8+8] // mov eax, var_124 // mov ecx, in_buffer // fld var_70 // fmul qword ptr [ecx+eax*8] // faddp st(1), st // fstp var_C0 var_C0=var_70*in_buffer[var_124]-var_1AC*in_buffer[var_124+1]; // mov edx, var_9C // mov eax, in_buffer // fld var_110 // fadd qword ptr [eax+edx*8] // fstp var_68 var_68=var_110+in_buffer[var_9C]; // mov ecx, var_9C // mov edx, in_buffer // fld var_214 // fadd qword ptr [edx+ecx*8+8] // fstp var_164 var_164=var_214+in_buffer[var_9C+1]; // fld var_188 // fadd var_240 // fstp var_118 var_118=var_188+var_240; // fld var_34 // fadd var_C0 // fstp var_21C var_21C=var_34+var_C0; // mov eax, var_9C // mov ecx, in_buffer // fld qword ptr [ecx+eax*8] // fsub var_110 // fstp var_190 var_190=in_buffer[var_9C]-var_110; // mov edx, var_9C // mov eax, in_buffer // fld qword ptr [eax+edx*8+8] // fsub var_214 // fstp var_3C var_3C=in_buffer[var_9C+1]-var_214; // cmp eq_1, 0 // jge short loc_416D0E if(eq_1>=0) goto loc_416D0E; // fld var_34 // fsub var_C0 // fstp var_248 var_248=var_34-var_C0; // fld var_240 // fsub var_188 // fstp var_C8 var_C8=var_240-var_188; // jmp short loc_416D2F goto loc_416D2F; loc_416D0E:; // fld var_C0 // fsub var_34 // fstp var_248 var_248=var_C0-var_34; // fld var_188 // fsub var_240 // fstp var_C8 var_C8=var_188-var_240; loc_416D2F:; // fld var_68 // fadd var_118 // mov ecx, var_9C // mov edx, in_buffer // fstp qword ptr [edx+ecx*8] in_buffer[var_9C]=var_68+var_118; // fld var_164 // fadd var_21C // mov eax, var_9C // mov ecx, in_buffer // fstp qword ptr [ecx+eax*8+8] in_buffer[var_9C+1]=var_164+var_21C; // fld var_190 // fadd var_248 // mov edx, var_A8 // mov eax, in_buffer // fstp qword ptr [eax+edx*8] in_buffer[var_A8]=var_190+var_248; // fld var_3C // fadd var_C8 // mov ecx, var_A8 // mov edx, in_buffer // fstp qword ptr [edx+ecx*8+8] in_buffer[var_A8+1]=var_3C+var_C8; // fld var_68 // fsub var_118 // mov eax, var_E4 // mov ecx, in_buffer // fstp qword ptr [ecx+eax*8] in_buffer[var_E4]=var_68-var_118; // fld var_164 // fsub var_21C // mov edx, var_E4 // mov eax, in_buffer // fstp qword ptr [eax+edx*8+8] in_buffer[var_E4+1]=var_164-var_21C; // fld var_190 // fsub var_248 // mov ecx, var_124 // mov edx, in_buffer // fstp qword ptr [edx+ecx*8] in_buffer[var_124]=var_190-var_248; // fld var_3C // fsub var_C8 // mov eax, var_124 // mov ecx, in_buffer // fstp qword ptr [ecx+eax*8+8] in_buffer[var_124+1]=var_3C-var_C8; // jmp loc_416986 goto loc_416986; loc_416DEC:; // mov edx, var_EC // mov var_208, edx var_208=var_EC; // mov eax, var_128 // sub eax, var_1CC // mov ecx, var_1CC // lea edx, [ecx+eax*4] // mov var_128, edx var_128=var_1CC+(var_128-var_1CC)*4; loc_416E13:; // jmp loc_416921 goto loc_416921; loc_416E18:; // jmp loc_4168A0 goto loc_4168A0; loc_416E1D:; // mov eax, var_out_val // add eax, var_B4 // mov var_out_val, eax var_out_val=var_out_val+var_B4; // cmp eq_1, 0 // jge short loc_416E70 if(eq_1>=0) goto loc_416E70; // mov ecx, dword ptr var_D0 // mov dword ptr var_80, ecx // mov edx, dword ptr [var_D0+4] // mov dword ptr [var_80+4], edx var_80=var_D0; // fld var_D0 // fadd var_1DC // fmul const2 // fstp var_D0 var_D0=(var_D0+var_1DC)*const2; // fld var_1DC // fsub var_80 // fmul const2 // fstp var_1DC var_1DC=(var_1DC-var_80)*const2; // jmp short loc_416EA9 goto loc_416EA9; loc_416E70:; // mov eax, dword ptr var_D0 // mov dword ptr var_80, eax // mov ecx, dword ptr [var_D0+4] // mov dword ptr [var_80+4], ecx var_80=var_D0; // fld var_D0 // fsub var_1DC // fmul const2 // fstp var_D0 var_D0=(var_D0-var_1DC)*const2; // fld var_80 // fadd var_1DC // fmul const2 // fstp var_1DC var_1DC=(var_80-var_1DC)*const2; loc_416EA9:; // fld var_D0 // fmul var_D0 // fld var_1DC // fmul var_1DC // fsubp st(1), st // fstp var_134 var_134=var_D0*var_D0-var_1DC*var_1DC; // fld var_D0 // fadd st, st // fmul var_1DC // fstp var_250 var_250=(var_D0+var_D0)*var_1DC; // fld var_134 // fmul var_D0 // fld var_250 // fmul var_1DC // fsubp st(1), st // fstp var_1AC var_1AC=var_134*var_D0-var_250*var_1DC; // fld var_134 // fmul var_1DC // fld var_250 // fmul var_D0 // faddp st(1), st // fstp var_70 var_70=var_134*var_1DC+var_250*var_D0; // jmp loc_416876 goto loc_416876; loc_416F1F:; // jmp loc_416718 goto loc_416718; loc_416F24:; // mov edx, 3 // sub edx, var_158 // mov var_158, edx var_158=3-var_158; // mov eax, var_FC // add eax, var_FC // mov var_FC, eax var_FC=var_FC+var_FC; // jmp loc_41668A goto loc_41668A; loc_416F4C:; // cmp var_F8, 1 // jle loc_417675 if(var_F8<=1) goto loc_417675; // mov ecx, var_22C // mov var_60, ecx var_60=var_22C; // mov edx, var_4C // mov j, edx j=var_4C; loc_416F6B:; // mov eax, var_60 // cmp eax, var_1D4 // jge loc_417675 if(var_60>=var_1D4) goto loc_417675; /////////ww // mov ecx, j // lea edx, save_const_1 // mov edx, [edx+ecx*4] // imul edx, var_60 // mov var_8C, edx var_8C=temp[save_const_1+j]*var_60; // fld const1 // fchs // mov eax, j ///ww // lea edx, save_const_1 // fidiv [edx+eax*4] // fstp var_88 var_88=-const1/temp[save_const_1+j]; // cmp eq_1, 0 // jl short loc_416FC0 if(eq_1<0) goto loc_416FC0; // fld var_88 // fchs // fstp var_88 var_88=-var_88; loc_416FC0: // mov ecx, dword ptr var_88+4 // push ecx // mov edx, dword ptr var_88 // push edx // call mycos // add esp, 8 // fstp var_1C8 var_1C8=mycos(var_88); // mov eax, dword ptr var_88+4 // push eax // mov ecx, dword ptr var_88 // push ecx // call mysin // add esp, 8 // fstp var_78 var_78=mysin(var_88); // mov edx, var_60 // mov var_180, edx var_180=var_60; // mov eax, var_eq_2 // mov var_1A4, eax var_1A4=var_eq_2; // mov var_288, 1 var_288=1; // jmp short loc_417028 goto loc_417028; loc_417016: // mov ecx, var_288 // add ecx, var_1A4 // mov var_288, ecx var_288+=var_1A4; loc_417028:; // cmp var_1A4, 0 // jge short loc_41704A if(var_1A4>=0) goto loc_41704A; // mov edx, var_288 // xor eax, eax // cmp edx, var_180 // setnl al // mov var_338, eax var_338=(var_288>=var_180); // jmp short loc_417061 goto loc_417061; loc_41704A:; // mov ecx, var_288 // xor edx, edx // cmp ecx, var_180 // setle dl // mov var_338, edx var_338=(var_288<=var_180); loc_417061:; // cmp var_338, 0 // jz loc_417658 if(var_338==0) goto loc_417658; // fld const1 // fchs // mov eax, var_288 // sub eax, 1 // mov var_33C, eax var_33C=var_288-1; // fild var_33C // fmulp st(1), st // fidiv var_8C // fstp var_260 var_260=-const1*var_33C; // cmp eq_1, 0 if(eq_1<0) goto loc_4170AD; // jl short loc_4170AD // fld var_260 // fchs // fstp var_260 // var_260=var_260*(-1); loc_4170AD:; // mov ecx, dword ptr var_260+4 // push ecx // mov edx, dword ptr var_260 // push edx // call mycos // add esp, 8 // fstp var_258 var_258=mycos(var_260); // mov eax, dword ptr var_260+4 // push eax // mov ecx, dword ptr var_260 // push ecx // call mysin // add esp, 8 // fstp var_F4 var_F4=mysin(var_260); // mov edx, var_148 // mov eax, var_288 // lea ecx, [eax+edx-2] // mov var_A0, ecx var_A0=var_148+var_288-2; // mov edx, var_A0 // mov var_1D0, edx var_1D0=var_A0; // mov eax, var_288 // mov var_1CC, eax var_1CC=var_288; // jmp short loc_417124 goto loc_417124; loc_417115: // mov ecx, var_1CC // add ecx, 2 // mov var_1CC, ecx var_1CC+=2; loc_417124: // mov edx, var_1CC // cmp edx, var_1D0 // jg loc_417653 if(var_1CC>var_1D0) goto loc_417653; // mov eax, mul_more1 // mov var_238, eax var_238=mul_more1; // mov ecx, var_1D4 // mov var_20C, ecx var_20C=var_1D4; // mov edx, var_1CC // mov var_220, edx var_220=var_1CC; // jmp short loc_41716B goto loc_41716B; loc_417159: // mov eax, var_220 // add eax, var_20C // mov var_220, eax var_220+=var_20C; loc_41716B: // cmp var_20C, 0 // jge short loc_41718D if(var_20C>=0) goto loc_41718D; // mov ecx, var_220 // xor edx, edx // cmp ecx, var_238 // setnl dl // mov var_340, edx var_340=(var_220>=var_340); // jmp short loc_4171A4 goto loc_4171A4; loc_41718D: // mov eax, var_220 // xor ecx, ecx // cmp eax, var_238 // setle cl // mov var_340, ecx var_340=(var_220<=var_238); loc_4171A4: // cmp var_340, 0 // jz loc_41764E if(var_340==0) goto loc_41764E; // mov var_17C, 1 var_17C=1; // mov edx, dword ptr var_258 // mov dword ptr var_D0, edx // mov eax, dword ptr var_258+4 // mov dword ptr [var_D0+4], eax var_D0=var_258; // mov ecx, dword ptr var_F4 // mov dword ptr var_1DC, ecx // mov edx, dword ptr [var_F4+4] // mov dword ptr [var_1DC+4], edx var_1DC=var_F4; // mov eax, var_220 // add eax, var_8C // sub eax, var_60 // mov var_204, eax var_204=var_220+var_8C-var_60; // mov ecx, var_204 // mov var_278, ecx var_278=var_204; // mov edx, var_60 // mov save_const_1, edx save_const_1=var_60; // mov eax, var_220 // mov var_4, eax var_4=var_220; // jmp short loc_41722C goto loc_41722C; loc_417220:; // mov ecx, var_4 // add ecx, save_const_1 // mov var_4, ecx var_4+=save_const_1; loc_41722C:; // cmp save_const_1, 0 // jge short loc_41724B if(save_const_1>=0) goto loc_41724B; // mov edx, var_4 // xor eax, eax // cmp edx, var_278 // setnl al // mov var_344, eax var_344=(var_4>=var_278); // jmp short loc_41725F goto loc_41725F; loc_41724B:; // mov ecx, var_4 // xor edx, edx // cmp ecx, var_278 // setle dl // mov var_344, edx var_344=(var_4<=var_278); loc_41725F:; // cmp var_344, 0 // jz loc_41750D if(var_344==0) goto loc_41750D; // fld var_D0 // fadd var_D0 // fstp var44 var44=var_D0+var_D0; // mov eax, var_4 // add eax, var_1D4 // sub eax, var_8C // mov var_228, eax var_228=var_4+var_1D4-var_8C; // mov ecx, var_228 // mov var_24, ecx var_24=var_228; // mov edx, var_8C // mov var_5C, edx var_5C=var_8C; // mov eax, var_4 // mov var48, eax var48=var_4; // jmp short loc_4172B3 goto loc_4172B3; loc_4172AA:; // mov ecx, var48 // add ecx, var_5C // mov var48, ecx var48+=var_5C; loc_4172B3:; // cmp var_5C, 0 // jge short loc_4172CC if(var_5C>=0) goto loc_4172CC; // mov edx, var48 // xor eax, eax // cmp edx, var_24 // setnl al // mov var_348, eax var_348=(var48>=var_24); // jmp short loc_4172DD goto loc_4172DD; loc_4172CC:; // mov ecx, var48 // xor edx, edx // cmp ecx, var_24 // setle dl // mov var_348, edx var_348=var48<=var_24; loc_4172DD:; // cmp var_348, 0 // jz loc_4174C4 if(var_348==0) goto loc_4174C4; // mov eax, var48 // sub eax, var_4 // add eax, var_220 // mov var_100, eax var_100=var48-var_4+var_220; // mov ecx, var_100 // add ecx, var_8C // sub ecx, var_60 // mov l, ecx l=var_100+var_8C-var_60; // mov edx, l // mov eax, in_buffer // mov ecx, [eax+edx*8] // mov dword ptr var_D8, ecx // mov edx, [eax+edx*8+4] // mov dword ptr var_D8+4, edx var_D8=in_buffer[l]; // mov eax, l // mov ecx, in_buffer // mov edx, [ecx+eax*8+8] // mov dword ptr var_1E4, edx // mov eax, [ecx+eax*8+0Ch] // mov dword ptr var_1E4+4, eax var_1E4=in_buffer[l+1]; // mov dword ptr var_170, 0 // mov dword ptr [var_170+4], 0 var_170=0; // mov dword ptr var_14, 0 // mov dword ptr var_14+4, 0 var_14=0; // mov ecx, l // sub ecx, var_60 // mov l, ecx l-=var_60; loc_41737B:; // mov edx, l // cmp edx, var_100 // jle loc_41743B if(l<=var_100) goto loc_41743B; // mov eax, dword ptr var_D8 // mov var_E0, eax var_E0=var_D8; // mov ecx, dword ptr var_D8+4 // mov var_DC, ecx var_DC=*(int *)(((char*)&var_D8)+4); // mov edx, dword ptr var_1E4 // mov var_1EC, edx var_1EC=var_1E4; // mov eax, dword ptr var_1E4+4 // mov var_1E8, eax var_1E8=*(int *)(((char*)&var_1E4)+4); // fld var44 // fmul var_D8 // fsub var_170 // mov ecx, l // mov edx, in_buffer // fadd qword ptr [edx+ecx*8] // fstp var_D8 var_D8=(var44*var_D8-var_170)+in_buffer[l]; // fld var44 // fmul var_1E4 // fsub var_14 // mov eax, l // mov ecx, in_buffer // fadd qword ptr [ecx+eax*8+8] // fstp var_1E4 var_1E4=(var44*var_1E4-var_14)+in_buffer[l+1]; // mov edx, var_E0 // mov dword ptr var_170, edx *(int*)&var_170=var_E0; // mov eax, var_DC // mov dword ptr [var_170+4], eax *(int*)((char*)&var_170+4)=var_DC; // mov ecx, var_1EC // mov dword ptr var_14, ecx *(int *)((char*)&var_14)=var_1EC; // mov edx, var_1E8 // mov dword ptr var_14+4, edx *(int *)(((char*)&var_14)+4)=var_1E8; // mov eax, l // sub eax, var_60 // mov l, eax l-=var_60; // jmp loc_41737B goto loc_41737B; loc_41743B:; // fld var_D0 // fmul var_D8 // fld var_1DC // fmul var_1E4 // fsubp st(1), st // fsub var_170 // mov ecx, l // mov edx, in_buffer // fadd qword ptr [edx+ecx*8] // mov eax, var_17C // mov ecx, buffer // fstp qword ptr [ecx+eax*8] buffer[var_17C]=var_D0*var_D8-var_1DC*var_1E4-var_170+in_buffer[l]; // fld var_1DC // fmul var_D8 // fld var_D0 // fmul var_1E4 // faddp st(1), st // fsub var_14 // mov edx, l // mov eax, in_buffer // fadd qword ptr [eax+edx*8+8] // mov ecx, var_17C // mov edx, buffer // fstp qword ptr [edx+ecx*8+8] buffer[var_17C+1]=var_1DC*var_D8-var_D0*var_1E4-var_14+in_buffer[l]; // mov eax, var_17C // add eax, 2 // mov var_17C, eax var_17C+=2; // jmp loc_4172AA goto loc_4172AA; loc_4174C4:; // fld var_D0 // fmul var_78 // fstp var_120 var_120=var_D0*var_78; // fld var_D0 // fmul var_1C8 // fld var_1DC // fmul var_78 // fsubp st(1), st // fstp var_D0 var_D0=var_D0*var_1C8-var_1DC*var_78; // fld var_1DC // fmul var_1C8 // fadd var_120 // fstp var_1DC var_1DC=var_1DC*var_1C8+var_120; // jmp loc_417220 goto loc_417220; loc_41750D:; // mov var_17C, 1 var_17C=1; // mov ecx, var_204 // mov save_const_1, ecx save_const_1=var_204; // mov edx, var_60 // mov var_278, edx var_278=var_60; // mov eax, var_220 // mov var_4, eax var_4=var_220; // jmp short loc_417543 goto loc_417543; loc_417537:; // mov ecx, var_4 // add ecx, var_278 // mov var_4, ecx var_4+=var_278; loc_417543:; // cmp var_278, 0 // jge short loc_417562 if(var_278>=0) goto loc_417562; // mov edx, var_4 // xor eax, eax // cmp edx, save_const_1 // setnl al // mov var_34C, eax var_34C=(var_4>=save_const_1); // jmp short loc_417576 goto loc_417576; loc_417562:; // mov ecx, var_4 // xor edx, edx // cmp ecx, save_const_1 // setle dl // mov var_34C, edx var_34C=(var_4<=save_const_1); loc_417576:; // cmp var_34C, 0 // jz loc_417649 if(var_34C==0) goto loc_417649; // mov eax, var_4 // add eax, var_1D4 // sub eax, var_8C // mov var_228, eax var_228=var_4+var_1D4-var_8C; // mov ecx, var_228 // mov var_5C, ecx var_5C=var_228; // mov edx, var_8C // mov var_24, edx var_24=var_8C; // mov eax, var_4 // mov var48, eax var48=var_4; // jmp short loc_4175BB goto loc_4175BB; loc_4175B2:; // mov ecx, var48 // add ecx, var_24 // mov var48, ecx var48+=var_24; loc_4175BB:; // cmp var_24, 0 // jge short loc_4175D4 if(var_24>=0) goto loc_4175D4; // mov edx, var48 // xor eax, eax // cmp edx, var_5C // setnl al // mov var_350, eax var_350=(var48>=var_5C); // jmp short loc_4175E5 goto loc_4175E5; loc_4175D4:; // mov ecx, var48 // xor edx, edx // cmp ecx, var_5C // setle dl // mov var_350, edx var_350=(var48<=var_5C); loc_4175E5:; // cmp var_350, 0 // jz short loc_417644 if(var_350==0) goto loc_417644; // mov eax, var_17C // mov ecx, buffer // mov edx, var48 // mov esi, in_buffer // mov edi, [ecx+eax*8] // mov [esi+edx*8], edi // mov eax, [ecx+eax*8+4] // mov [esi+edx*8+4], eax in_buffer[var48]=buffer[var_17C]; // mov ecx, var_17C // mov edx, buffer // mov eax, var48 // mov esi, in_buffer // mov edi, [edx+ecx*8+8] // mov [esi+eax*8+8], edi // mov ecx, [edx+ecx*8+0Ch] // mov [esi+eax*8+0Ch], ecx in_buffer[var48+1]=buffer[var_17C+1]; // mov edx, var_17C // add edx, 2 // mov var_17C, edx var_17C+=2; // jmp loc_4175B2 // goto loc_4175B2; loc_417644:; // jmp loc_417537 goto loc_417537; loc_417649:; // jmp loc_417159 goto loc_417159; loc_41764E:; // jmp loc_417115 goto loc_417115; loc_417653:; // jmp loc_417016 goto loc_417016; loc_417658:; // mov eax, j // add eax, 1 // mov j, eax j++; // mov ecx, var_8C // mov var_60, ecx var_60=var_8C; // jmp loc_416F6B goto loc_416F6B; loc_417675:; // cmp var_198, 4 // jnz loc_417C62 if(var_198!=4) goto loc_417C62; // mov edx, var_264 // mov var_18, edx var_18=var_264; // mov eax, var_264 // add eax, var_264 // mov var_264, eax var_264=var_264*2; // fld const1 // fchs // fidiv var_264 // fstp var_88 var_88=-const1/var_264; // cmp eq_1, 0 // jl short loc_4176C5 if(eq_1<0) goto loc_4176C5; // fld var_88 // fchs // fstp var_88 var_88=-var_88; // loc_4176C5: // mov ecx, dword ptr var_88+4 // push ecx // mov edx, dword ptr var_88 // push edx // call mycos // add esp, 8 // fstp var_1C8 var_1C8=mycos(var_88); // mov eax, dword ptr var_88+4 // push eax // mov ecx, dword ptr var_88 // push ecx // call mysin // add esp, 8 // fstp var_78 var_78=mysin(var_88); // mov edx, dword ptr var_1C8 // mov dword ptr var_D0, edx ; //var_d0=cos() // mov eax, dword ptr [var_1C8+4] // mov dword ptr [var_D0+4], eax var_D0=var_1C8; // mov ecx, dword ptr var_78 ; //mysin // mov dword ptr var_1DC, ecx // mov edx, dword ptr var_78+4 // mov dword ptr [var_1DC+4], edx var_1DC=var_78; // mov var_B8, 3 ; // var_B8=3; // mov eax, var_18 // lea ecx, [eax+eax-1] // mov var_100, ecx var_100=var_18*2-1; loc_41773B: // mov edx, var_B8 // cmp edx, var_100 // jge loc_417978 if(var_B8>=var_100) goto loc_417978; // mov eax, var_100 // mov l, eax l=var_100; // mov ecx, mul_more1 // mov var_1A4, ecx var_1A4=mul_more1; // mov edx, var_1D4 // mov var_180, edx var_180=var_1D4; // mov eax, var_B8 // mov var_17C, eax var_17C=var_B8; // jmp short loc_41778E goto loc_41778E; loc_41777C: // mov ecx, var_17C // add ecx, var_180 // mov var_17C, ecx var_17C+=var_180; loc_41778E:; // cmp var_180, 0 // jge short loc_4177B0 if(var_180>=0) goto loc_4177B0; // mov edx, var_17C // xor eax, eax // cmp edx, var_1A4 // setnl al // mov var_354, eax var_354=(var_17C>=var_1A4); // jmp short loc_4177C7 goto loc_4177C7; loc_4177B0:; // mov ecx, var_17C // xor edx, edx // cmp ecx, var_1A4 // setle dl // mov var_354, edx var_354=(var_17C>=var_1A4); loc_4177C7:; // cmp var_354, 0 // jz loc_417911 if(var_354==0) goto loc_417911; // mov eax, var_17C // mov ecx, in_buffer // mov edx, l // mov esi, in_buffer // fld qword ptr [ecx+eax*8] // fadd qword ptr [esi+edx*8] // fdiv eq2 ; //2.0 // fstp var_54 var_54=(in_buffer[var_17C]+in_buffer[l])/eq2; // mov eax, var_17C // mov ecx, in_buffer // mov edx, l // mov esi, in_buffer // fld qword ptr [ecx+eax*8+8] // fadd qword ptr [esi+edx*8+8] // fdiv eq2 // fstp var_154 var_154=(in_buffer[var_17C+1]+in_buffer[l+1])/eq2; // mov eax, var_17C // mov ecx, in_buffer // mov edx, l // mov esi, in_buffer // fld qword ptr [ecx+eax*8] // fsub qword ptr [esi+edx*8] // fdiv eq2 // fstp var_274 var_274=(in_buffer[var_17C]-in_buffer[l])/eq2; // mov eax, var_17C // mov ecx, in_buffer // mov edx, l // mov esi, in_buffer // fld qword ptr [ecx+eax*8+8] // fsub qword ptr [esi+edx*8+8] // fdiv eq2 // fstp var_108 ; //var_108=var_154=var_54=var_275=2.0/(var_17c+var_1a0) var_108=(in_buffer[var_17C+1]-in_buffer[l+1])/eq2; // fld var_D0 // fmul var_154 // fld var_1DC // fmul var_274 // faddp st(1), st // fstp var_80 ; var_80= var_80=var_D0*var_154+var_1DC*var_274; // fld var_1DC // fmul var_154 // fld var_D0 // fmul var_274 // fsubp st(1), st // fstp var_178 var_178=var_1DC*var_154-var_D0*var_274; // fld var_54 // fadd var_80 // mov eax, var_17C // mov ecx, in_buffer // fstp qword ptr [ecx+eax*8] in_buffer[var_17C]=var_54+var_80; // fld var_108 // fadd var_178 // mov edx, var_17C // mov eax, in_buffer // fstp qword ptr [eax+edx*8+8] in_buffer[var_17C+1]=var_108+var_178; // fld var_54 // fsub var_80 // mov ecx, l // mov edx, in_buffer // fstp qword ptr [edx+ecx*8] in_buffer[l]=var_54-var_80; // fld var_108 // fchs // fadd var_178 // mov eax, l /// mov ecx, in_buffer ; //out // fstp qword ptr [ecx+eax*8+8] in_buffer[i+1]=-var_108+var_178; // mov edx, l // add edx, var_1D4 ; //step // mov l, edx l+=var_1D4; // jmp loc_41777C // goto loc_41777C; loc_417911:; // mov eax, var_B8 // add eax, 2 // mov var_B8, eax var_B8+=2; // mov ecx, var_100 // sub ecx, 2 // mov var_100, ecx var_100-=2; // fld var_D0 // fmul var_78 // fstp var_120 var_120=var_D0*var_78; // fld var_D0 // fmul var_1C8 // fld var_1DC // fmul var_78 // fsubp st(1), st // fstp var_D0 var_D0=var_D0*var_1C8-var_1DC*var_78; // fld var_1DC // fmul var_1C8 // fadd var_120 // fstp var_1DC var_1DC=var_1DC*var_1C8+var_120; // jmp loc_41773B goto loc_41773B; loc_417978:; // mov edx, var_B8 // cmp edx, var_100 // jnz loc_417A29 if(var_B8!=var_B8) goto loc_417A29; // cmp eq_1, 0 // jge loc_417A29 if(l>=0) goto loc_417A29; // mov eax, mul_more1 // mov k, eax k=mul_more1; // mov ecx, var_1D4 // mov var_180, ecx var_180=var_1D4; // mov edx, var_B8 // mov var_17C, edx var_17C=var_B8; // jmp short loc_4179C9 goto loc_4179C9; loc_4179B7:; // mov eax, var_17C // add eax, var_180 // mov var_17C, eax var_17C+=var_180; loc_4179C9:; // cmp var_180, 0 // jge short loc_4179EB if(var_180>=0) goto loc_4179EB; // mov ecx, var_17C // xor edx, edx // cmp ecx, k // setnl dl // mov var_358, edx var_358=(var_17C>=k); // jmp short loc_417A02 goto loc_417A02; loc_4179EB:; // mov eax, var_17C // xor ecx, ecx // cmp eax, k // setle cl // mov var_358, ecx var_358=(var_17C<=k); loc_417A02:; // cmp var_358, 0 // jz short loc_417A29 if(var_358==0) goto loc_417A29; // mov edx, var_17C // mov eax, in_buffer // fld qword ptr [eax+edx*8+8] // fchs // mov ecx, var_17C // mov edx, in_buffer // fstp qword ptr [edx+ecx*8+8] in_buffer[var_17C+1]=-in_buffer[var_17C+1]; // jmp short loc_4179B7 goto loc_4179B7; loc_417A29:; // mov eax, var_1D4 // add eax, var_1D4 // mov var_1D4, eax var_1D4*=2; // mov ecx, mul_more1 // add ecx, mul_more1 // mov mul_more1, ecx mul_more1*=2; // mov edx, mul_more1 // add edx, 1 // mov l, edx l=mul_more1+1; // mov eax, mul_more1 // cdq // sub eax, edx // sar eax, 1 // add eax, 1 // mov var_230, eax var_230=mul_more1/2+l; // mov eax, mul_more2_exd_1 // mov var_180, eax var_180=mul_more2_exd_1; // mov var_26C, 1 var_26C=1; // jmp short loc_417A88 goto loc_417A88; loc_417A79:; // mov ecx, var_26C // add ecx, 1 // mov var_26C, ecx var_26C+=1; loc_417A88:; // mov edx, var_26C // cmp edx, var_180 // jg loc_417C32 if(var_26C>var_180) goto loc_417C32; // mov eax, var_18 // shl eax, 1 // mov ecx, var_230 // sub ecx, eax // mov var_B8, ecx var_B8=var_230-var_18*2; // mov edx, var_B8 // mov var_17C, edx var_17C=var_B8; loc_417AB9:; // mov eax, var_17C // cmp eax, var_230 // jge short loc_417B23 if(var_17C>=var_230) goto loc_417B23; // mov ecx, var_17C // add ecx, 2 // mov var_17C, ecx var_17C+=2; // mov edx, l // sub edx, 2 // mov l, edx l-=2; // mov eax, var_17C // mov ecx, in_buffer // mov edx, l // mov esi, in_buffer // mov edi, [ecx+eax*8] // mov [esi+edx*8], edi // mov eax, [ecx+eax*8+4] // mov [esi+edx*8+4], eax in_buffer[l]=in_buffer[var_17C]; // mov ecx, var_17C // mov edx, in_buffer // fld qword ptr [edx+ecx*8+8] // fchs // mov eax, l // mov ecx, in_buffer // fstp qword ptr [ecx+eax*8+8] in_buffer[l+1]=-in_buffer[var_17C+1]; // jmp short loc_417AB9 goto loc_417AB9; loc_417B23:; // mov edx, var_B8 // mov eax, in_buffer // mov ecx, var_B8 // mov esi, in_buffer // fld qword ptr [eax+edx*8] // fsub qword ptr [esi+ecx*8+8] // mov edx, l // mov eax, in_buffer // fstp qword ptr [eax+edx*8] in_buffer[l]=in_buffer[var_B8]-in_buffer[var_B8+1]; // mov ecx, l // mov edx, in_buffer // mov dword ptr [edx+ecx*8+8], 0 // mov dword ptr [edx+ecx*8+0Ch], 0 in_buffer[l+1]=0; // mov eax, var_17C // cmp eax, l // jge loc_417C2D if(var_17C>=l) goto loc_417C2D; loc_417B73:; // mov ecx, var_17C // cmp ecx, var_B8 // jle short loc_417BE3 if(var_17C<=var_B8) goto loc_417BE3; // mov edx, var_17C // sub edx, 2 // mov var_17C, edx var_17C-=2; // mov eax, l // sub eax, 2 // mov l, eax l-=2; // mov ecx, var_17C // mov edx, in_buffer // mov eax, l // mov esi, in_buffer // mov edi, [edx+ecx*8] // mov [esi+eax*8], edi // mov ecx, [edx+ecx*8+4] // mov [esi+eax*8+4], ecx in_buffer[l]=in_buffer[var_17C]; // mov edx, var_17C // mov eax, in_buffer // mov ecx, l // mov esi, in_buffer // mov edi, [eax+edx*8+8] // mov [esi+ecx*8+8], edi // mov edx, [eax+edx*8+0Ch] // mov [esi+ecx*8+0Ch], edx in_buffer[l+1]=in_buffer[var_17C+1]; // jmp short loc_417B73 goto loc_417B73; loc_417BE3:; // mov eax, var_B8 // mov ecx, in_buffer // mov edx, var_B8 // mov esi, in_buffer // fld qword ptr [ecx+eax*8] // fadd qword ptr [esi+edx*8+8] // mov eax, l // mov ecx, in_buffer // fstp qword ptr [ecx+eax*8] in_buffer[l]=in_buffer[var_B8]+in_buffer[var_B8+1]; // mov edx, l // mov eax, in_buffer // mov dword ptr [eax+edx*8+8], 0 // mov dword ptr [eax+edx*8+0Ch], 0 in_buffer[l+1]=0; // mov ecx, var_B8 // mov var_230, ecx var_230=var_B8; // loc_417C2D:; // jmp loc_417A79 goto loc_417A79; loc_417C32:; // mov edx, var_20 // mov eax, in_buffer // mov ecx, var_1C // mov esi, in_buffer // fld qword ptr [eax+edx*8] // fadd qword ptr [esi+ecx*8] // mov edx, var_20 // mov eax, in_buffer // fstp qword ptr [eax+edx*8] in_buffer[var_20]=in_buffer[var_20]+in_buffer[var_1C]; // mov ecx, var_1C // mov edx, in_buffer // mov dword ptr [edx+ecx*8], 0 // mov dword ptr [edx+ecx*8+4], 0 in_buffer[var_1C]=0; loc_417C62:; // cmp var_198, 2 // jnz loc_417F79 if(var_198!=2) goto loc_417F79; // mov eax, var_148 // cmp eax, var_eq_2 // jge loc_417F79 if(var_148>=var_eq_2) goto loc_417F79; // mov ecx, mul_more1 // mov var_180, ecx var_180=mul_more1; // mov edx, var_1D4 // mov k, edx k=var_1D4; // mov var_220, 1 var_220=1; // jmp short loc_417CB4 goto loc_417CB4; loc_417CA2:; // mov eax, var_220 // add eax, k // mov var_220, eax var_220+=k; loc_417CB4:; // cmp k, 0 // jge short loc_417CD6 if(k>=0) goto loc_417CD6; // mov ecx, var_220 // xor edx, edx // cmp ecx, var_180 // setnl dl // mov var_35C, edx var_35C=(var_220>=var_180); // jmp short loc_417CED goto loc_417CED; loc_417CD6:; // mov eax, var_220 // xor ecx, ecx // cmp eax, var_180 // setle cl // mov var_35C, ecx var_35C=(var_220<=var_180); loc_417CED:; // cmp var_35C, 0 // jz loc_417F79 if(var_35C==0) goto loc_417F79; // mov edx, var_220 // add edx, var_1D4 // sub edx, var_eq_2 // mov var_B0, edx var_B0=var_220+var_1D4-var_eq_2; // mov eax, var_B0 // mov var_1A4, eax var_1A4=var_B0; // mov ecx, var_eq_2 // mov var_1D0, ecx var_1D0=var_eq_2; // mov edx, var_220 // mov var_1F8, edx var_1F8=var_220; // jmp short loc_417D4A goto loc_417D4A; loc_417D38:; // mov eax, var_1F8 // add eax, var_1D0 // mov var_1F8, eax var_1F8=var_1F8; loc_417D4A:; // cmp var_1D0, 0 // jge short loc_417D6C if(var_1D0==0) goto loc_417D6C; // mov ecx, var_1F8 // xor edx, edx // cmp ecx, var_1A4 // setnl dl // mov var_360, edx var_360=(var_1F8>=var_1A4); // jmp short loc_417D83 goto loc_417D83; loc_417D6C:; // mov eax, var_1F8 // xor ecx, ecx // cmp eax, var_1A4 // setle cl // mov var_360, ecx var_360=(var_1F8<=var_1A4); loc_417D83:; // cmp var_360, 0 // jz loc_417F74 if(var_360==0) goto loc_417F74; // mov edx, var_eq_2 // mov eax, var_1F8 // lea ecx, [eax+edx-2] // mov var_230, ecx var_230=var_eq_2+var_1F8-2; // mov edx, var_1F8 // add edx, var_148 // mov var_B8, edx var_B8+=var_148; // mov eax, var_220 // mov ecx, var_eq_2 // lea edx, [ecx+eax*2] // sub edx, var_B8 // mov var_268, edx var_268=var_220*2+var_eq_2-var_B8; // mov eax, var_1F8 // cmp eax, var_220 // jle short loc_417DF3 if(var_1F8<=var_220) goto loc_417DF3; // mov ecx, var_268 // add ecx, var_1D4 // mov var_268, ecx var_268+=var_1D4; loc_417DF3:; // cmp i, 2 // jle loc_417E96 if(i<=2) goto loc_417E96; // mov edx, var_268 // add edx, var_194 // mov l, edx l=var_268+var_194; // mov eax, var_230 // mov var_20C, eax var_20C=var_230; // mov ecx, var_B8 // mov var_17C, ecx var_17C=var_B8; // jmp short loc_417E3B goto loc_417E3B; loc_417E2C:; // mov edx, var_17C // add edx, 2 // mov var_17C, edx var_17C+=2; loc_417E3B:; // mov eax, var_17C // cmp eax, var_20C // jg short loc_417E96 if(var_17C>var_20C) goto loc_417E96; // mov ecx, l // mov edx, in_buffer // mov eax, var_17C // mov esi, in_buffer // mov edi, [edx+ecx*8] // mov [esi+eax*8], edi // mov ecx, [edx+ecx*8+4] // mov [esi+eax*8+4], ecx in_buffer[var_17C]=in_buffer[l]; // mov edx, l // mov eax, in_buffer // fld qword ptr [eax+edx*8+8] // fchs // mov ecx, var_17C // mov edx, in_buffer // fstp qword ptr [edx+ecx*8+8] in_buffer[var_17C]=-in_buffer[l]; // mov eax, l // sub eax, 2 // mov l, eax l-=2; // jmp short loc_417E2C goto loc_417E2C; loc_417E96:; // mov ecx, var_268 // mov l, ecx l=var_268; // mov edx, var_230 // mov var_20C, edx var_20C=var_230; // mov eax, var_194 // mov var_238, eax var_238=var_194; // mov ecx, var_B8 // mov var_17C, ecx var_17C=var_B8; // jmp short loc_417EDA goto loc_417EDA; loc_417EC8:; // mov edx, var_17C // add edx, var_238 // mov var_17C, edx var_17C+=var_238; loc_417EDA:; // cmp var_238, 0 // jge short loc_417EFC if(var_238>=0) goto loc_417EFC; // mov eax, var_17C // xor ecx, ecx // cmp eax, var_20C // setnl cl // mov var_364, ecx var_364=(var_17C>=var_20C); // jmp short loc_417F13 goto loc_417F13; loc_417EFC:; // mov edx, var_17C // xor eax, eax // cmp edx, var_20C // setle al // mov var_364, eax var_364=(var_17C<=var_20C); loc_417F13:; // cmp var_364, 0 // jz short loc_417F6F if(var_364==0) goto loc_417F6F; // mov ecx, l // mov edx, in_buffer // mov eax, var_17C // mov esi, in_buffer // mov edi, [edx+ecx*8] // mov [esi+eax*8], edi // mov ecx, [edx+ecx*8+4] // mov [esi+eax*8+4], ecx ; //1a0=>17c in_buffer[var_17C]=in_buffer[l]; // mov edx, l // mov eax, in_buffer // fld qword ptr [eax+edx*8+8] // fchs // mov ecx, var_17C // mov edx, in_buffer // fstp qword ptr [edx+ecx*8+8] in_buffer[var_17C+1]=-in_buffer[l]; /// mov eax, l // sub eax, var_194 ; //step // mov l, eax l-=var_194; // jmp loc_417EC8 goto loc_417EC8; loc_417F6F:; // jmp loc_417D38 goto loc_417D38; loc_417F74:; // jmp loc_417CA2 goto loc_417CA2; loc_417F79:; // mov ecx, var_eq_2 // mov var_194, ecx var_194=var_eq_2; // mov edx, var_1D4 // mov var_eq_2, edx var_eq_2=var_eq_2; // mov eax, var_264 // mov var_1FC, eax var_1FC=var_264; // jmp loc_415B2C goto loc_415B2C; loc_417FA2:; // mov ecx, buffer // push ecx // call free // add esp, 4 // mov buffer, 0 // xor eax, eax free(buffer); return 1; } double myexp(double ff) { return exp(ff); } int get_len_mul2(int arg_0) { int var_8;// = dword ptr -8 int len;// = dword ptr -4 len=arg_0; var_8=2; loc_41304C:; if(len<=2) goto loc_413064; len/=2; var_8*=2; goto loc_41304C; loc_413064:; if(var_8>=arg_0) goto loc_413074; var_8*=2; loc_413074:; return var_8; } int fir(double *in_buffer,int array_num,int wave_len,double delay,double fl,double fh)//__cdecl { fl=fl/1000.0; fh=fh/1000.0; double var_C8 ;// -0C8h double exp_1 ;// -0B8h int eq_len ;// -0A0h double eq_1_div_delay_div_len2;//= qword ptr -9Ch int len2 ;//= byte ptr -94h int i ;// -90h double var_8C ;// -8Ch int len_sub_j_mul_2 ;// -84h int array_pos ;// -80h double eq_1div_len2 ;// -7Ch double fl_0 ;// -74h double wave_len_mul ;// -6Ch int j_mul_2 ;// -64h int len ;// -60h double* temp_buffer=0 ;// -5Ch double eq_4605_dir_dir_fl_sub_fl_mul_1886;//= qword ptr -58h int j ;// -50h double fl_sub_fl_mul_1886;//= qword ptr -4Ch double var44 ;// -44h double var_3C ;// -3Ch double fh_0 ;// -34h double fh_div_div_6229 ;// -2Ch int flag ;// -24h double fl_mul_1886 ;// -20h float fm ;// -18h float delay_0 ;// -10h double fh_mul_6229 ;// -8 float eq0=0.0; float eq23=23.0; float eq2=2.0; float eq1=1; float eq0_5=0.5; double eq1_1886=1.1886; double dbl_51C7E8=1.33; double eq_460517108=0.460517108; double eq_6229l=0.6229; // fld fl // fcomp eq0 // fnstsw ax // test ah, 40h // jz short loc_413948;//>=0 if(fl>eq0) goto loc_413948; // fld fh // fcomp eq0 // fnstsw ax // test ah, 40h // jz short loc_413948;//>=0 if(fh>eq0) goto loc_413948; // jmp loc_414073 goto loc_414073; loc_413948: if(fl<=eq0) goto loc_413968; // fld fh // fcomp eq0 // fnstsw ax // test ah, 1 // jz short loc_41396D;//>=0 if(fh>eq0) goto loc_41396D; loc_413968: // jmp loc_414073 goto loc_414073; loc_41396D: char *p=(char*)&eq1_1886; // mov dword ptr eq1_1886, 6F0068DCh // mov dword ptr eq1_1886+4, 3FF30481h ; //1.1886 eq1_1886=1.1886; // memmove(p,0x6F0068DC3FF30481); // mov dword ptr eq_6229l, 0FB15B574h // mov dword ptr eq_6229l+4, 3FE3EECBh ; //0.6229 eq_6229l=0.6229; // mov eax, dword ptr fl // mov dword ptr fl_0, eax // mov ecx, dword ptr fl+4 // mov dword ptr fl_0+4, ecx ; //backup arg_14 fl_0=fl; // mov edx, dword ptr fh // mov dword ptr fh_0, edx // mov eax, dword ptr fh+4 // mov dword ptr fh_0+4, eax ; //backup arg_1C fh_0=fh; // fld delay // fcomp eq0 // fnstsw ax // test ah, 41h // jz short loc_4139C2;//<=0 return if(delay>eq0) goto loc_4139C2; // jmp loc_414073 goto loc_414073; loc_4139C2: // fld eq0_5 // fdiv delay // fstp delay_0 delay_0=eq0_5; if(fl_0eq0) goto loc_413A1E; // mov dword ptr fl_0, 0 // mov dword ptr fl_0+4, 0 fl_0=0; loc_413A1E: // fld fh_0 // fcomp eq0 // fnstsw ax // test ah, 1 // jz short loc_413A3C if(fh_0>eq0) goto loc_413A3C; // mov dword ptr fh_0, 0 // mov dword ptr fh_0+4, 0 ; //var_arg_1C=0 fh_0=0; loc_413A3C: // fld fl_0 // fcomp eq0 // fnstsw ax // test ah, 40h // jz short loc_413A5E if(fl_0>eq0) goto loc_413A5E; if(fh_0<=delay_0) goto loc_413A5E; // jmp loc_414073 goto loc_414073; loc_413A5E: // mov edx, wave_len // push edx // call get_len_mul2 // add esp, 4 // mov dword ptr len2, eax len2=get_len_mul2(wave_len); // fild dword ptr len2 // fidiv wave_len wave_len_mul=len2/wave_len; if(wave_len_muleq0) goto loc_413AE6; // mov flag, 0 ; //0 flag=0; // jmp short loc_413B13 goto loc_413B13; loc_413AE6: // fld fl_0 // fcomp eq0 // fnstsw ax // test ah, 40h // jz short loc_413AFF if(fl_0>eq0) goto loc_413AFF; // mov flag, 1 ; //1 flag=1; // jmp short loc_413B13 goto loc_413B13; loc_413AFF:; if(fl_0=array_num) goto loc_414067; // mov eax, i // imul eax, wave_len // mov array_pos, eax array_pos=i*wave_len; // mov j, 0 j=0; // jmp short loc_413C36 goto loc_413C36; loc_413C2D:; // mov ecx, j // add ecx, 1 // mov j, ecx j++; loc_413C36:; // mov edx, j // cmp edx, dword ptr len2 // jge short loc_413C98 if(j>=len2) goto loc_413C98; // mov eax, j /// shl eax, 1 // mov j_mul_2, eax ; //var_64=var_50*2 j_mul_2=j*2; // mov ecx, j // cmp ecx, wave_len // jge short loc_413C6B if(j>=wave_len) goto loc_413C6B; // mov edx, j // add edx, array_pos // mov eax, in_buffer // fld eq_1div_len2 ; //乘系数 // fmul qword ptr [eax+edx*8] ; //mul // eq_1div_len2*in_buffer[(j+array_pos)*8]; // mov ecx, j_mul_2 // mov edx, temp_buffer ; //new_buffer // fstp qword ptr [edx+ecx*8] ; //save temp_buffer[j_mul_2]=eq_1div_len2*in_buffer[(j+array_pos)]; // jmp short loc_413C80 goto loc_413C80; loc_413C6B:; // mov eax, j_mul_2 // mov ecx, temp_buffer // mov dword ptr [ecx+eax*8], 0 ; //=0 // mov dword ptr [ecx+eax*8+4], 0 temp_buffer[j_mul_2]=0; loc_413C80:; // mov edx, j_mul_2 // mov eax, temp_buffer // mov dword ptr [eax+edx*8+8], 0 ; //=0 // mov dword ptr [eax+edx*8+0Ch], 0 ; //16byte temp_buffer[j_mul_2+1]=0; // jmp short loc_413C2D goto loc_413C2D; loc_413C98: // push 0 ; eq_0 // push 0FFFFFFFFh ; eq_1 // push 1 ; array_num // lea ecx, len2 // push ecx ; wave_len // mov edx, temp_buffer // push edx ; in_buffer dft(temp_buffer, &len2,1,-1,0); // call dft // add esp, 14h // mov j, 0 j=0; // jmp short loc_413CC3 goto loc_413CC3; loc_413CBA:; // mov eax, j // add eax, 1 // mov j, eax j++; loc_413CC3:; // mov ecx, j // cmp ecx, eq_len // jg loc_414008 if(j>eq_len) goto loc_414008; // mov edx, j // shl edx, 1 // mov j_mul_2, edx j_mul_2=j*2; // mov eax, len // sub eax, j_mul_2 // mov len_sub_j_mul_2, eax len_sub_j_mul_2=len-j_mul_2; // fild j // fmul eq_1_div_delay_div_len2 // fstp var_3C var_3C=j*eq_1_div_delay_div_len2; // cmp flag, 3 // jge loc_413E3D if(flag>=3) goto loc_413E3D; // fld var_3C // fcomp fl_mul_1886 // fnstsw ax // test ah, 1 // jz loc_413D9A if(var_3C>fl_mul_1886) goto loc_413D9A; // fld var_3C // fsub fl_mul_1886 // fstp var44 var44=var_3C-fl_mul_1886; // fld eq_4605_dir_dir_fl_sub_fl_mul_1886 // fmul var44 // fmul var44 // fstp var_8C var_8C=eq_4605_dir_dir_fl_sub_fl_mul_1886*var44*var44; // mov dword ptr exp_1, 0 // mov dword ptr exp_1+4, 0 exp_1=0; // fld var_8C // fcomp eq23 // fnstsw ax // test ah, 1 // jz short loc_413D68 if(var_8C>eq23) goto loc_413D68; // fld var_8C // fchs // sub esp, 8 // fst var_C8 var_8C=-var_8C; // fstp qword ptr [esp] // call myexp // myexp(var_8C); // add esp, 8 // fstp exp_1 exp_1=exp(var_8C); loc_413D68:; // mov ecx, j_mul_2 // mov edx, temp_buffer // fld exp_1 // fmul qword ptr [edx+ecx*8] // mov eax, j_mul_2 // mov ecx, temp_buffer // fstp qword ptr [ecx+eax*8] temp_buffer[j_mul_2]=temp_buffer[j_mul_2]*exp_1; // mov edx, j_mul_2 // mov eax, temp_buffer // fld exp_1 // fmul qword ptr [eax+edx*8+8] // mov ecx, j_mul_2 // mov edx, temp_buffer // fstp qword ptr [edx+ecx*8+8] temp_buffer[j_mul_2+1]=temp_buffer[j_mul_2+1]*exp_1; loc_413D9A:; if(var_3Cvar_8 // fsub fh_mul_6229 // fstp var44 ; //var44=var_3c-fh_mul_6229 var44=var_3C-fh_mul_6229; // fld fh_div_div_6229 // fmul var44 // fmul var44 // fstp var_8C ; //var_8c=var_2c*var44*var44 var_8C=fh_div_div_6229*var44*var44 ; // =var_2c*(var_3c-var_8)^2 // mov dword ptr exp_1, 0 // mov dword ptr exp_1+4, 0 exp_1=0; // fld var_8C // fcomp eq23 ; //23.1 // fnstsw ax // test ah, 1 // jz short loc_413E06 ; //var_8c>=23.1 if(var_8C>eq23) goto loc_413E06 ; // fld var_8C ; //var_8c<23.1 // fchs ; //*(-1) // sub esp, 8 // fst var_C8 ; //=>obj =>push obj // fstp qword ptr [esp] var_8C=var_8C*(-1); // call myexp ; //e^(-var_8c) // add esp, 8 // fstp exp_1 exp_1=exp(var_8C); loc_413E06:; // mov eax, j_mul_2 // mov ecx, temp_buffer // fld exp_1 // fmul qword ptr [ecx+eax*8] // mov edx, j_mul_2 // mov eax, temp_buffer // fstp qword ptr [eax+edx*8] ; //var_5c*=var_b8 temp_buffer[j_mul_2]=temp_buffer[j_mul_2]*exp_1; // mov ecx, j_mul_2 // mov edx, temp_buffer // fld exp_1 // fmul qword ptr [edx+ecx*8+8] // mov eax, j_mul_2 // mov ecx, temp_buffer // fstp qword ptr [ecx+eax*8+8] temp_buffer[j_mul_2+1]=temp_buffer[j_mul_2+1]*exp_1; loc_413E38:; // jmp loc_413F9B goto loc_413F9B; loc_413E3D:; // fld var_3C // fcomp fl_mul_1886 // fnstsw ax // test ah, 1 // jz loc_413EEC if(var_3C>fl_mul_1886) goto loc_413EEC; if(var_3Ceq23) goto loc_413EBA; // fld var_8C // fchs // sub esp, 8 // fst var_C8 var_8C=-1*var_8C; // fstp qword ptr [esp] // call myexp // add esp, 8 // fstp exp_1 exp_1=exp(var_8C); loc_413EBA:; // mov edx, j_mul_2 // mov eax, temp_buffer // fld exp_1 // fmul qword ptr [eax+edx*8] // mov ecx, j_mul_2 // mov edx, temp_buffer // fstp qword ptr [edx+ecx*8] temp_buffer[j_mul_2]=temp_buffer[j_mul_2]*exp_1; // mov eax, j_mul_2 // mov ecx, temp_buffer // fld exp_1 // fmul qword ptr [ecx+eax*8+8] // mov edx, j_mul_2 // mov eax, temp_buffer // fstp qword ptr [eax+edx*8+8] temp_buffer[j_mul_2+1]=temp_buffer[j_mul_2+1]*exp_1; loc_413EEC:; if(var_3Cfm) goto loc_413F9B; // fld var_3C // fsub fh_mul_6229 // fstp var44 var44=var_3C-fh_mul_6229; // fld fh_div_div_6229 // fmul var44 // fmul var44 // fstp var_8C var_8C=fh_div_div_6229*var44*var44; // mov dword ptr exp_1, 0 // mov dword ptr exp_1+4, 0 exp_1=0; // fld var_8C // fcomp eq23 // fnstsw ax // test ah, 1 // jz short loc_413F69 if(var_8C>eq23) goto loc_413F69; // fld var_8C // fchs // sub esp, 8 // fst var_C8 var_C8=-1*var_C8; // fstp qword ptr [esp] // call myexp // add esp, 8 // fstp exp_1 exp_1=exp(var_C8); loc_413F69:; // mov ecx, j_mul_2 // mov edx, temp_buffer // fld exp_1 // fmul qword ptr [edx+ecx*8] // mov eax, j_mul_2 // mov ecx, temp_buffer // fstp qword ptr [ecx+eax*8] temp_buffer[j_mul_2]=temp_buffer[j_mul_2]*exp_1; // mov edx, j_mul_2 // mov eax, temp_buffer // fld exp_1 // fmul qword ptr [eax+edx*8+8] // mov ecx, j_mul_2 // mov edx, temp_buffer // fstp qword ptr [edx+ecx*8+8] temp_buffer[j_mul_2+1]=temp_buffer[j_mul_2+1]*exp_1; loc_413F9B:; // cmp j, 0 // jle short loc_413FE2 if(j<=0) goto loc_413FE2; // mov eax, j // cmp eax, eq_len // jge short loc_413FE2 if(j>=eq_len) goto loc_413FE2; // mov ecx, j_mul_2 ; //0~var_a0 // mov edx, temp_buffer // mov eax, len_sub_j_mul_2 // mov esi, temp_buffer // mov edi, [edx+ecx*8] ; //var_64 move to var_84 // mov [esi+eax*8], edi // mov ecx, [edx+ecx*8+4] // mov [esi+eax*8+4], ecx ////////////////? temp_buffer[len_sub_j_mul_2]=temp_buffer[j_mul_2]; // mov edx, j_mul_2 // mov eax, temp_buffer // fld qword ptr [eax+edx*8+8] ; //hight 8 byte=> // fchs // mov ecx, len_sub_j_mul_2 // mov edx, temp_buffer // fstp qword ptr [edx+ecx*8+8] temp_buffer[len_sub_j_mul_2+1]=temp_buffer[j_mul_2+1]; loc_413FE2:; // mov eax, j // cmp eax, eq_len // jnz short loc_414003 if(j!=eq_len) goto loc_414003; // mov ecx, j_mul_2 // mov edx, temp_buffer // mov dword ptr [edx+ecx*8+8], 0 // mov dword ptr [edx+ecx*8+0Ch], 0 ; //when var_50==var_a0,var_5c_hight_8_byte=0 temp_buffer[j_mul_2+1]=0; loc_414003:; // jmp loc_413CBA goto loc_413CBA; loc_414008:; // push 1 ; eq_0 // push 1 ; eq_1 // push 1 ; array_num // lea eax, len2 // push eax ; wave_len // mov ecx, temp_buffer // push ecx ; in_buffer // call dft // add esp, 14h dft(temp_buffer,&len2,1,1,1); // mov j, 0 j=0; // jmp short loc_414033 goto loc_414033; loc_41402A:; // mov edx, j // add edx, 1 // mov j, edx j++; loc_414033:; // mov eax, j // cmp eax, wave_len // jge short loc_414062 if(j>=wave_len) goto loc_414062; // mov ecx, j // shl ecx, 1 // mov j_mul_2, ecx j_mul_2=j*2; // mov edx, j_mul_2 // mov eax, temp_buffer // mov ecx, j // add ecx, array_pos // mov esi, in_buffer // mov edi, [eax+edx*8] // mov [esi+ecx*8], edi // mov edx, [eax+edx*8+4] // mov [esi+ecx*8+4], edx // FILE *fp=fopen("d:\\aa.txt","a"); in_buffer[(j+array_pos)]=temp_buffer[j_mul_2]; // fprintf(fp,"k=%d val=%f\n",j+array_pos,in_buffer[(j+array_pos)]); // fclose(fp); // jmp short loc_41402A goto loc_41402A; loc_414062:; // jmp loc_413BF9 goto loc_413BF9; loc_414067:; free(temp_buffer); loc_414073:; return 1; }