logplus/BaseFun/src/wvst.cpp

4687 lines
105 KiB
C++
Raw Normal View History

2025-10-29 17:23:30 +08:00

#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 fir(double *in_buffer,int array_num,int wave_len,double mfl,double fl,double fh);
2025-10-29 17:23:30 +08:00
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;
unsigned int par[]={
2025-10-29 17:23:30 +08:00
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;i<array_num;i++) {
int array_pos=i*wave_len;
if(flag>0) {
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<wave_len;i++) {
x1_add+=x1[i];
x1_mul_x1+=x1[i]*x1[i];
x2_add+=x2[i];
x1_mul_x2+=x1[i]*x2[i];
}
double d=x1_add*x1_add-x1_mul_x1*wave_len;
if(d!=0.0) {
*add_val=(x1_add*x1_mul_x2-x1_mul_x1*x2_add)/d;
*mult_val=(x1_add*x2_add-x1_mul_x2*wave_len)/d;
}
}
void method2(double *in_buffer,int array_num,int wave_len,int method)
{
double *temp_buffer=new double[wave_len+1];
double mult_val=0;
double add_val=0;
for(int i=0;i<wave_len;i++) temp_buffer[i]=i;
for(int i=0;i<array_num;i++) {
int array_pos=i*wave_len;
fun_a_b(temp_buffer,&in_buffer[array_pos],wave_len,&mult_val,&add_val);
for(int j=0;j<wave_len;j++) {
in_buffer[array_pos+j]-=mult_val*temp_buffer[j]+add_val;
}
}
delete temp_buffer;
}
int delay(double *in_buffer,int array_num,int wave_len,int input_par)
{
if(input_par==0) return 0;
double *temp=new double[wave_len+1];
for(int i=0;i<array_num;i++) {
memset(temp,0,wave_len*8);
int array_pos=i*wave_len;
for(int j=0;j<wave_len;j++) {
int par=j-input_par;
if(par>=0&&par<wave_len) {
temp[j]=in_buffer[par+array_pos];
}
else if(par<0) {
temp[j]=in_buffer[array_pos];
}
else if(par>wave_len-1) {
temp[j]=in_buffer[array_pos+wave_len-1];
}
}
for(int j=0;j<wave_len;j++) {
in_buffer[array_pos+j]=temp[j];
}
}
delete temp;
return 1;
}
void Add_Array(double *in_buffer,int array_num,int wave_len,double *out_buffer)//没用到
{
double var_14;
int array_pos;
for(int i=0;i<array_num;i++) {
int array_pos=i*wave_len;
out_buffer[i]=0;
for(int j=0;j<wave_len;j++) {
if(in_buffer[array_pos+j]>0) {
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=y_delay;
else 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<d_len;n++)
{
in_buff[n]=(te[n]<<l);
}
}
polishing_head_data(in_buff,4,d_len,1);
method2(in_buff,4,d_len,2);
int p=pp[17];
delay(in_buff,4,d_len,p);
fir(in_buff,4,d_len,pp[6],pp[MFL],pp[MFH]);
Add_Array(in_buff,4,d_len,&pp[23+j*4]);
delete in_buff;
}
Qurt(&pp[23]);
free(temp);
}
void GetWvst(unsigned char *inbuf,short *outbuf,int len)
{
int in_data=0;
int IIndex=0;
int temp_table_value=0;
int value_index=0;
int OValue=0;
int First=0;
int i=0;
int OIndex=0;
int wave_leng=len;
int wave_leng_abs=abs(len);
temp_table_value=value_table[value_index];
if(wave_leng<=0) {
OIndex=wave_leng_abs;
}
else {
OIndex=-1;
}
i=0;
int bit_index=0;
int value=0;
while(i<wave_leng_abs) {
if(wave_leng<=0) OIndex--;
else OIndex++;
if(First!=0) {//lower 4 bits
bit_index=in_data&0xf;
}
else {//hight 4 bits
in_data=inbuf[IIndex];
IIndex++;
bit_index=((in_data>>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;num<d_len;num++) {
out_buffer[array_num*d_len+num]=0;
}
for(int a_b_c_d=0;a_b_c_d<4;a_b_c_d++) {
for(int num=0;num<d_len;num++) {
out_buffer[array_num*d_len+num]+=in_buffer[array_num*4*d_len+a_b_c_d*d_len+num];
}
}
}
fir(out_buffer,par[9],d_len,pp[6],pp[MFL],pp[MFH]);
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
inbuffer[array_num*d_len+num]=out_buffer[array_num*d_len+num];
}
}
slf->WriteWave(outcurve[no++],dep,1,inbuffer);
///////////////////////////////////////////////////////////////////////////
//XX
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
out_buffer[array_num*d_len+num]=in_buffer[array_num*4*d_len+4*8*d_len+num]-in_buffer[array_num*4*d_len+4*8*d_len+2*d_len+num];
}
}
fir(out_buffer,par[9],d_len,pp[9],pp[DFL],pp[DFH]);
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
inbuffer[array_num*d_len+num]=out_buffer[array_num*d_len+num];
}
}
slf->WriteWave(outcurve[no++],dep,1,inbuffer);
//////////////////////////////////////////////////////////////////////////
//XY
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
out_buffer[array_num*d_len+num]=in_buffer[array_num*4*d_len+4*8*d_len+d_len+num]-in_buffer[array_num*4*d_len+4*8*d_len+3*d_len+num];
}
}
fir(out_buffer,par[9],d_len,pp[9],pp[DFL],pp[DFH]);
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
inbuffer[array_num*d_len+num]=out_buffer[array_num*d_len+num];
}
}
slf->WriteWave(outcurve[no++],dep,1,inbuffer);
////////////////////////////////////////////////////////////////////////
//YX
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
out_buffer[array_num*d_len+num]=in_buffer[array_num*4*d_len+2*4*8*d_len+num]-in_buffer[array_num*4*d_len+2*4*8*d_len+2*d_len+num];
}
}
fir(out_buffer,par[9],d_len,pp[9],pp[DFL],pp[DFH]);
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
inbuffer[array_num*d_len+num]=out_buffer[array_num*d_len+num];
}
}
slf->WriteWave(outcurve[no++],dep,1,inbuffer);
///////////////////////////////////////////////////////////////////////
//YY
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
out_buffer[array_num*d_len+num]=in_buffer[array_num*4*d_len+2*4*8*d_len+d_len+num]-in_buffer[array_num*4*d_len+2*4*8*d_len+3*d_len+num];
}
}
fir(out_buffer,par[9],d_len,pp[9],pp[DFL],pp[DFH]);
for(int array_num=0;array_num<8;array_num++) {
for(int num=0;num<d_len;num++) {
inbuffer[array_num*d_len+num]=out_buffer[array_num*d_len+num];
}
}
slf->WriteWave(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;num<d_len;num++) {
inbuffer[array_num*d_len+num]=in_buffer[m_x_y*4*d_len*8+array_num*4*d_len+a_b_c_d*d_len+num];
}
}
if(m_x_y==0) {
if(a_b_c_d==0) {
// MA=inbuffer;
slf->WriteWave(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;n<d_len;n++)
{
in_buff[n]=(te[n]<<l);
}
polishing_head_data(in_buff,1,d_len,1);
method2(in_buff,1,d_len,2);
if(!i) {
int p=pp[17];
delay(in_buff,1,d_len,p);
fir(in_buff,1,d_len,pp[6],pp[MFL],pp[MFH]);//main fir
}
else {
int p=pp[18];
delay(in_buff,1,d_len,p);
fir(in_buff,1,d_len,pp[9],pp[DFL],pp[DFH]);//main fir
}
for(int n=0;n<d_len;n++) {
temp[i*4*8*d_len+j*d_len*4+k*d_len+d_len-n-1]=pp[23+j*4+k]*in_buff[n];
}
float f=vVdl.vushort[4];
f/=1000.0;
f/=20.0;
int m=f;
float monopole_interval=m*20.3174;
f=vVdl.vushort[5];
f/=1000.0;
f/=20.0;
int d=f;
float dipole_interval=d*20.3174;
delete in_buff;
}
}
}
Get_Wave_Object(m_Slf,dep,outcurve,temp,ndim);
float Seq_no=temp[0];
m_Slf->WriteCurve(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;
short eax=0;//jyl
2025-10-29 17:23:30 +08:00
// 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;
2026-05-15 09:22:56 +08:00
unsigned char p1[8]={0x54,0x41,0x17,0x44,0x40,0x19,0x21,0xFB};
unsigned char p2[8]={0x66,0x81,0x15,0x1E,0x3F,0xE6,0xA0,0x9E};
unsigned char p3[8]={0xFE,0xFA,0x39,0xEF,0x3F,0xE6,0x2E,0x42};
unsigned char p4[8]={0xFE,0xFA,0x39,0xEF,0x3F,0xF6,0x2E,0x42};
unsigned char p10[8]={0x40,0x19,0x21,0xFB,0x54,0x41,0x17,0x44};
unsigned char p20[8]={0x3F,0xE6,0xA0,0x9E,0x66,0x81,0x15,0x1E};
unsigned char p30[8]={0x3F,0xE6,0x2E,0x42,0xFE,0xFA,0x39,0xEF};
unsigned char p40[8]={0x3F,0xF6,0x2E,0x42,0xFE,0xFA,0x39,0xEF};
2025-10-29 17:23:30 +08:00
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
//short eax=first_val&0x80000001;//jyl
2025-10-29 17:23:30 +08:00
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
eax=first_val&0x80000001;//jyl提到goto前定义
2025-10-29 17:23:30 +08:00
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=2const_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_val<var_eq_2) goto loc_4160F6;
// jl short loc_4160F6
// mov eax, l
// cmp eax, var_out_val
// jle short loc_4160F6
if(l<=var_out_val) goto loc_4160F6;
// mov ecx, l
// sub ecx, var_out_val
// mov l, ecx
l-=var_out_val;
// mov eax, var_out_val
// cdq
// sub eax, edx
// sar eax, 1
// mov var_out_val, eax
var_out_val/=2;
// jmp short loc_4160B5
goto loc_4160B5;
loc_4160F6:;
// mov edx, l
// add edx, var_out_val
// mov l, edx
l+=var_out_val;
// jmp loc_415EB8
loc_41610D:;
// jmp loc_416460
goto loc_416460;
loc_416112:;
// mov eax, var_264
// shl eax, 1
// mov var_E8, eax
var_264*=2;
// mov ecx, var_eq_2
// mov var_180, ecx
var_180=var_eq_2;
// mov var_1CC, 1
var_1CC=1;
// jmp short loc_416147
goto loc_416147;
loc_416138:;
// mov edx, var_1CC
// add edx, 2
// mov var_1CC, edx
var_1CC+=2;
loc_416147:;
// mov eax, var_1CC
// cmp eax, var_180
// jg loc_416460
if(var_1CC>var_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<var_eq_2) goto loc_416359;
// cmp var_98, 1
// jnz short loc_416359
if(var_98!=1) goto loc_416359;
// lea ecx,save_const_1
// mov eax,j
// shl eax,2
// add ecx,eax
// mov eax, var_8C
// cdq
// idiv [ecx]
// mov var_60, eax
var_60=var_8C/temp[save_const_1+j*2*2];
// mov edx, l
// add edx, var_60
// mov l, edx
l+=var_60;
// mov eax, l
// sub eax, var_220
// cmp eax, var_8C
// jl short loc_41634A
if(l-var_220<var_8C) goto loc_41634A;
// mov ecx, l
// sub ecx, var_8C
// mov l, ecx
i-=var_8C;
// mov edx, var_60
// mov var_8C, edx
var_8C=var_60;
// mov eax, j
// add eax, 1
// mov j, eax
j++;
// jmp short loc_416354
goto loc_416354;
loc_41634A:;
// mov var_98, 0
var_98=0;
loc_416354:;
// jmp loc_4162CD
goto loc_4162CD;
loc_416359:;
// jmp loc_4161F8
goto loc_4161F8;
loc_41635E:;
// mov ecx, var_220
// add ecx, var_1D4
// sub ecx, var_eq_2
// mov var_B0, ecx
var_B0=var_220+var_1D4-var_eq_2;
// mov var_17C, 1
var_17C=1;
// mov edx, var_B0
// mov var_20C, edx
var_20C=var_B0;
// mov eax, var_eq_2
// mov var_1D0, eax
var_1D0=var_eq_2;
// mov ecx, var_220
// mov var_1F8, ecx
var_1F8=var_220;
// jmp short loc_4163B8
goto loc_4163B8;
loc_4163A6:;
// mov edx, var_1F8
// add edx, var_1D0
// mov var_1F8, edx
var_1F8+=var_1D0;
loc_4163B8:;
// cmp var_1D0, 0
// jge short loc_4163DA
if(var_1D0>=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;//jyl
return 1;//jyl
2025-10-29 17:23:30 +08:00
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;//jyl
return 1;//jyl
2025-10-29 17:23:30 +08:00
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;//jyl
return 1;//jyl
2025-10-29 17:23:30 +08:00
loc_4139C2:
// fld eq0_5
// fdiv delay
// fstp delay_0
delay_0=eq0_5;
if(fl_0<delay_0) goto loc_4139E7;
// mov ecx, dword ptr delay_0
// mov dword ptr fl_0, ecx
// mov edx, dword ptr delay_0+4
// mov dword ptr fl_0+4, edx ; //arg_14=arg_C
fl_0=delay_0;
loc_4139E7:
if(fh_0<delay_0) goto loc_413A00;
// mov eax, dword ptr delay_0
// mov dword ptr fh_0, eax
// mov ecx, dword ptr delay_0+4
// mov dword ptr fh_0+4, ecx ; //arg_1C=arg_C
fh_0=delay_0;
loc_413A00:
//fld fl_0
//fcomp eq0
//fnstsw ax
//test ah, 1
//jz short loc_413A1E
if(fl_0>eq0) 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;//jyl
return 1;//jyl
2025-10-29 17:23:30 +08:00
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_mul<dbl_51C7E8) goto loc_413A97;
// mov eax, dword ptr len2
// shl eax, 1
// mov dword ptr len2, eax ; //*2
len2*=2;
loc_413A97:
// mov ecx, dword ptr len2
// shl ecx, 1 ; //*2
// mov len, ecx
len=len2*2;
// fild dword ptr len2
// fdivr eq1 ; //1.0/var_94
// fstp eq_1div_len2 ; //系数
eq_1div_len2=len2/eq1;
// fld eq1
// fdiv delay
// fidiv dword ptr len2
// fstp eq_1_div_delay_div_len2
eq_1_div_delay_div_len2=(int)(eq1/delay+0.5)/len2;
// mov flag, 2
flag=2;
// fld fh_0
// fcomp eq0
// fnstsw ax
// test ah, 40h
// jz short loc_413AE6
if(fh_0>eq0) 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<fh_0) goto loc_413B13;
// mov flag, 3 ; //3
flag=3;
loc_413B13:
// cmp flag, 0
// jnz short loc_413B3F
if(flag!=0) goto loc_413B3F;
// mov edx, dword ptr fl_0
// mov dword ptr fh_0, edx
// mov eax, dword ptr fl_0+4
// mov dword ptr fh_0+4, eax
fh_0=fl_0;
// mov dword ptr fl_mul_1886, 0
// mov dword ptr fl_mul_1886+4, 0
fl_mul_1886=0;
// fld fh_0
// fmul eq_6229l
// fstp fh_mul_6229
fh_mul_6229=fh_0*eq_6229l;
loc_413B3F:
// cmp flag, 1
// jnz short loc_413B69
if(flag!=1) goto loc_413B69;
// mov ecx, dword ptr fh_0
// mov dword ptr fl_0, ecx
// mov edx, dword ptr fh_0+4
// mov dword ptr fl_0+4, edx
fh_0=fl_0;
// mov eax, dword ptr delay_0
// mov dword ptr fh_mul_6229, eax
// mov ecx, dword ptr delay_0+4
// mov dword ptr fh_mul_6229+4, ecx
fh_mul_6229=delay_0;
// fld fl_0
// fmul eq1_1886
// fstp fl_mul_1886
fl_mul_1886=fl_0*eq1_1886;
loc_413B69:;
// cmp flag, 1
// jle short loc_413B87
if(flag<=1) goto loc_413B87;
// fld fl_0
// fmul eq1_1886
// fstp fl_mul_1886
fl_mul_1886=fl_0*eq1_1886;
// fld fh_0
// fmul eq_6229l
// fstp fh_mul_6229
fh_mul_6229=fh_0*eq_6229l;
loc_413B87:;
// fld fl_0
// fadd fh_0
// fdiv eq2
// fstp fm; //fm=(fl+fh)/2
fm=(fl+fh)/eq2;
// fld fl_0
// fsub fl_mul_1886
// fstp fl_sub_fl_mul_1886
fl_sub_fl_mul_1886=fl_0-fl_mul_1886;
// fld eq_460517108
// fdiv fl_sub_fl_mul_1886
// fdiv fl_sub_fl_mul_1886
// fstp eq_4605_dir_dir_fl_sub_fl_mul_1886
eq_4605_dir_dir_fl_sub_fl_mul_1886=eq_460517108/fl_sub_fl_mul_1886/fl_sub_fl_mul_1886;
// fld fh_0
// fsub fh_mul_6229
// fstp fl_sub_fl_mul_1886
fl_sub_fl_mul_1886=fh_0-fh_mul_6229;
// fld eq_460517108 ; //0.4605
// fdiv fl_sub_fl_mul_1886
// fdiv fl_sub_fl_mul_1886
// fstp fh_div_div_6229
fh_div_div_6229=eq_460517108/fl_sub_fl_mul_1886/fl_sub_fl_mul_1886;
// mov edx, dword ptr len2
// sar edx, 1
// mov eq_len, edx
eq_len=len2/2;
// mov temp_buffer, 0
// mov eax, len
// shl eax, 3
// push eax
// call malloc
// add esp, 4
// mov temp_buffer, eax
temp_buffer=(double*)malloc(len*8);
// mov i, 0
i=0;
// jmp short loc_413C08
goto loc_413C08;
loc_413BF9:;
// mov ecx, i
// add ecx, 1
// mov i, ecx
i++;
loc_413C08:;
// mov edx, i
// cmp edx, array_num
// jge loc_414067
if(i>=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_3C<fh_mul_6229) goto loc_413E38;
// fld var_3C ; //var_3c>var_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_3C<fm) goto loc_413EEC;
// 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_413EBA
if(var_8C>eq23) 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_3C<fh_mul_6229) goto loc_413F9B;
// fld var_3C
// fcomp fm
// fnstsw ax
// test ah, 1
// jz loc_413F9B
if(var_3C>fm) 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;
}