logplus/BaseFun/src/wvst.cpp
2025-10-29 17:23:30 +08:00

4679 lines
104 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "math.h"
#include "float.h"//for _isnan
#include "BaseFun.h"
#include "wvst.h"
int __cdecl fir(double *in_buffer,int array_num,int wave_len,double mfl,double fl,double fh);
int Index_table[16]={
-1,
-1,
-1,
-1,
0x02,
0x04,
0x06,
0x08,
-1,
-1,
-1,
-1,
0x02,
0x04,
0x06,
0x08
};
DWORD value_table[90]={
7,
8,
9,
0xA,
0xB,
0xC,
0xD,
0xE,
0x10,
0x11,
0x13,
0x15,
0x17,
0x19,
0x1C,
0x1F,
0x22,
0x25,
0x29,
0x2D,
0x32,
0x37,
0x3C,
0x42,
0x49,
0x50,
0x58,
0x61,
0x6B,
0x76,
0x82,
0x8F,
0x9D,
0xAD,
0xBE,
0xD1,
0xE6,
0xFD,
0x117,
0x133,
0x151,
0x173,
0x198,
0x1C1,
0x1EE,
0x220,
0x256,
0x292,
0x2D4,
0x31C,
0x36C,
0x3C3,
0x424,
0x48E,
0x502,
0x583,
0x610,
0x6AB,
0x756,
0x812,
0x8E0,
0x9C3,
0xABD,
0xBD0,
0xCFF,
0xE4C,
0xFBA,
0x114C,
0x1307,
0x14EE,
0x1706,
0x1954,
0x1BDC,
0x1EA5,
0x21B6,
0x2515,
0x28CA,
0x2CDF,
0x315B,
0x364B,
0x3BB9,
0x41B2,
0x4844,
0x4F7E,
0x5771,
0x602F,
0x69CE,
0x7462,
0x7FFF
};
int MFL=19,MFH=20,DFL=21,DFH=22;
int par[]={
0,0,//1
0,0,//2
0,0x3f000000,//3
0,1,//4
0,8,//5
0,0x190,//6
0x205BC01A,0x40345141,//7
0,0,//8
0x548A9BD0,0x40247B18,//9
0x205BC01A,0x40445141,//10
0,0,//11
0x0C6A7EF9E,0x4022774B,//12
0,0x3FE00000,//13=1
0,0,//14
0,2,//15
0,0x3FF00000,//16=1
0,0x40000000,//17=2
0,0,//18
0,0,//19
0,0,//20 //MFL
0xCCCCCCCD,0x3FDCCCCC,//21 //MFH=0.45
0,0,//22 //DFL
0xCCCCCCCD,0x3FDCCCCC,//23 //DFH=0.45
0,0x3FF00000,//24=1
0,0x3FF00000,//28
0,0x3FF00000,//29
0,0x3FF00000,//30
0,0x3FF00000,//31
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000,
0,0x3FF00000//58
};
void polishing_head_data(double *in_buffer,int array_num,int wave_len,int flag)
{
for(int i=0;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;
// mov eax, wave_len
// sub eax, 4
// mov wave_len, eax ; //arg_4-=4;
// wave_len-=4;
// mov ecx, in_buffer
// sub ecx, 8
// mov in_buffer, ecx ; //arg_0-=8;
// in_buffer-=8;
// cmp array_num, 1
// jge short loc_415956
// mov eax, 1 ; //<1
// jmp return
if(array_num<1) return 1;
// mov var_20, 1
// mov var_1C, 2
var_20=1;
var_1C=2;
char p1[8]={0x54,0x41,0x17,0x44,0x40,0x19,0x21,0xFB};
char p2[8]={0x66,0x81,0x15,0x1E,0x3F,0xE6,0xA0,0x9E};
char p3[8]={0xFE,0xFA,0x39,0xEF,0x3F,0xE6,0x2E,0x42};
char p4[8]={0xFE,0xFA,0x39,0xEF,0x3F,0xF6,0x2E,0x42};
char p10[8]={0x40,0x19,0x21,0xFB,0x54,0x41,0x17,0x44};
char p20[8]={0x3F,0xE6,0xA0,0x9E,0x66,0x81,0x15,0x1E};
char p30[8]={0x3F,0xE6,0x2E,0x42,0xFE,0xFA,0x39,0xEF};
char p40[8]={0x3F,0xF6,0x2E,0x42,0xFE,0xFA,0x39,0xEF};
for(int i0=0;i0<8;i0++)
{
p1[i0]=p10[7-i0];
p2[i0]=p20[7-i0];
p3[i0]=p30[7-i0];
p4[i0]=p40[7-i0];
}
// mov dword ptr const1, 54411744h
// mov dword ptr const1+4, 401921FBh
memmove(&const1,p1,8);
// mov dword ptr const2, 6681151Eh
// mov dword ptr const2+4, 3FE6A09Eh
memmove(&const2,p2,8);
// mov dword ptr const3, 0FEFA39EFh
// mov dword ptr const3+4, 3FE62E42h
memmove(&const3,p3,8);
// mov dword ptr const4, 0FEFA39EFh
// mov dword ptr const4+4, 3FF62E42h
memmove(&const4,p4,8);
// mov var_194, 0
var_194=0;
// mov var_1FC, 0
var_1FC=0;
// mov mul_more1, 2
mul_more1=2;
// mov mul_more2_exd_1, 1
mul_more2_exd_1=1;
// mov out_cut, 0
out_cut=0;
// mov edx, array_num
var_len=array_num;
// mov var_len, edx
// mov i, 1
i=0;
// jmp short loc_4159FB
goto loc_4159FB;
loc_4159EC:;
// mov eax, i
// add eax, 1
// mov i, eax
i++;
loc_4159FB:;
// mov ecx, i
// cmp ecx, var_len
// jg loc_415ADB
if(i>var_len) goto loc_415ADB;
// mov edx, i
// mov eax, wave_len
// mov ecx, out_cut
// cmp ecx, [eax+edx*4]
// jle short loc_415A2F ; //out_buffer[i]>out_cut?
if(out_cut<=wave_len[i]) goto loc_415A2F;
// mov edx, out_cut ; //>
// mov out_val, edx ; //out_val=cut
out_val=out_cut;
goto loc_415A41;
// jmp short loc_415A41
loc_415A2F:;
// mov eax, i
// mov ecx, wave_len
// mov edx, [ecx+eax*4]
// mov out_val, edx ;
out_val=wave_len[i];
loc_415A41:;
// mov eax, out_val
// mov out_cut, eax ; //out_cut=out_val
out_cut=out_val;
// mov ecx, i
// mov edx, wave_len
// cmp dword ptr [edx+ecx*4], 0
// jg short loc_415A66 ;
if(wave_len[i]>0) goto loc_415A66 ;
// mov eax, 2
// jmp return
return 2;
loc_415A66:;
// cmp i, 1 ; //i!=1
// jnz short loc_415AA1
if(i!=0) goto loc_415AA1;
// mov eax, i
// mov ecx, wave_len
// mov edx, [ecx+eax*4]
// mov first_val, edx ; //first rec,
first_val=wave_len[i];
// mov eax, first_val
// and eax, 80000001h
// jns short loc_415A93 ; ;//not neg
short eax=first_val&0x80000001;
if(eax>=0) goto loc_415A93 ;
// dec eax
// or eax, 0FFFFFFFEh
eax--;
eax=eax|0xFFFFFFFE;
eax++;
loc_415A93:;
// test eax, eax
// jz short loc_415AA1
if(eax==0) goto loc_415AA1;
// mov eax, 3 ; //not 0 error 3
// jmp return
return 3;
loc_415AA1:;
// mov ecx, i
// mov edx, wave_len
// mov eax, mul_more1
// imul eax, [edx+ecx*4]
// mov mul_more1, eax ; //var_58*=out_buffer[i]
mul_more1=wave_len[i]*mul_more1;
// cmp i, 1
// jle short loc_415AD6 ; //<2 continue loop
if(i<=0) goto loc_415AD6 ;
// mov ecx, i
// mov edx, wave_len
// mov eax, mul_more2_exd_1
// imul eax, [edx+ecx*4]
// mov mul_more2_exd_1, eax ; //var_13c*=out_buffer[i]
mul_more2_exd_1=wave_len[i]*mul_more2_exd_1;
loc_415AD6:;
// jmp loc_4159EC
goto loc_4159EC;
loc_415ADB:;
// mov ecx, out_cut
// shl ecx, 1
// mov out_cut, ecx ; //out_cut*=2
out_cut*=2;
// mov buffer, 0
// mov edx, out_cut
// shl edx, 1
// shl edx, 3
// push edx
// call malloc
// add esp, 4
// mov buffer, eax
buffer=(double*)malloc(out_cut*2*8);
// mov var_eq_2, 2
var_eq_2=2;
// mov eax, array_num
// mov var_len, eax
var_len=array_num;
// mov i, 1
i=0;
// jmp short loc_415B3B
goto loc_415B3B;
loc_415B2C:;
// mov ecx, i
// add ecx, 1
// mov i, ecx
i++;
loc_415B3B:;
// mov edx, i
// cmp edx, var_len
// jg loc_417FA2
if(i>var_len) goto loc_417FA2;
// mov eax, i
// mov ecx, wave_len
// mov edx, [ecx+eax*4]
// mov var_264, edx
var_264=wave_len[i];
// mov eax, var_eq_2
// imul eax, var_264
// mov var_1D4, eax ; ;=out_buffer[i]*var_1b0
var_1D4=var_eq_2*var_264;
// cmp var_264, 1
// jle loc_417F79 ; //out_buffer[i]<=1
if(var_264<=1) goto loc_417F79;
// mov ecx, var_264 ; //out_buffer[i]>1
// mov var_out_val, ecx
var_out_val=var_264;
// mov edx, var_eq_2
// mov var_22C, edx
var_22C=var_eq_2;
// mov j, 1
j=1;
// mov const_1, 2
const_1=2;
// fild var_out_val
// sub esp, 8
// fstp qword ptr [esp]
// call mylog
// add esp, 8
// fdiv const3 ; // /var_280
// fadd eq2 ; //+2.0
// fst var_374
var_374=mylog(var_out_val)/const3+eq2;
// sub esp, 8
// fstp qword ptr [esp]
// call myftol
// add esp, 8
// mov varmyexp, eax
varmyexp=myftol(var_374);
// mov k, 0
k=0;
// jmp short loc_415BF1
goto loc_415BF1;
loc_415BE2:;
// mov eax, k
// add eax, 1
// mov k, eax
k++;
loc_415BF1:;
// mov ecx, k
// cmp ecx, varmyexp
// jge loc_415CA6
if(k>=varmyexp) goto loc_415CA6;
// mov eax, var_out_val
// cdq
// idiv const_1
// test edx, edx ; //%
// jnz short loc_415C74 ; //%!=0
if(var_out_val%const_1) goto loc_415C74 ;
// mov edx, var_out_val ; //能整除
// cmp edx, const_1 ; //==?
// jz short loc_415C74 ; //=
if(var_out_val==const_1) goto loc_415C74 ;
// mov eax, j ; //!=
// mov ecx, const_1
// mov [ebp+eax*4+save_const_1], ecx ; //var_30=const1
// [j+save_const_1]=const_1;
// lea edx,save_const_1
// mov [edx+eax*4], ecx ; //var_30=const1
temp[save_const_1+j]=const_1;
// mov edx, j
// add edx, 1
// mov j, edx ; //
j++;
// mov eax, var_out_val
// cdq
// idiv const_1
// mov var_out_val, eax ; //能整除,取整数部分=〉var_out_val
var_out_val/=const_1;
// cmp const_1, 2
// jnz short loc_415C72
if(const_1!=2) goto loc_415C72;
// mov eax, var_22C
// add eax, var_22C
// mov var_22C, eax ; //const_1=2时,var_22c*=2
var_22C=var_22C*2;
loc_415C72:;
// jmp short loc_415CA1
goto loc_415CA1;
loc_415C74:;
// cmp const_1, 2 ; //不能整除情况
// jnz short loc_415C92 ; //const_1=2=>const_1+=2
if(const_1!=2) goto loc_415C92;
// mov const_1, 3 ; //const_1=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;
loc_413948:
if(fl<=eq0) goto loc_413968;
// fld fh
// fcomp eq0
// fnstsw ax
// test ah, 1
// jz short loc_41396D;//>=0
if(fh>eq0) goto loc_41396D;
loc_413968:
// jmp loc_414073
goto loc_414073;
loc_41396D:
char *p=(char*)&eq1_1886;
// mov dword ptr eq1_1886, 6F0068DCh
// mov dword ptr eq1_1886+4, 3FF30481h ; //1.1886
eq1_1886=1.1886;
// memmove(p,0x6F0068DC3FF30481);
// mov dword ptr eq_6229l, 0FB15B574h
// mov dword ptr eq_6229l+4, 3FE3EECBh ; //0.6229
eq_6229l=0.6229;
// mov eax, dword ptr fl
// mov dword ptr fl_0, eax
// mov ecx, dword ptr fl+4
// mov dword ptr fl_0+4, ecx ; //backup arg_14
fl_0=fl;
// mov edx, dword ptr fh
// mov dword ptr fh_0, edx
// mov eax, dword ptr fh+4
// mov dword ptr fh_0+4, eax ; //backup arg_1C
fh_0=fh;
// fld delay
// fcomp eq0
// fnstsw ax
// test ah, 41h
// jz short loc_4139C2;//<=0 return
if(delay>eq0) goto loc_4139C2;
// jmp loc_414073
goto loc_414073;
loc_4139C2:
// fld eq0_5
// fdiv delay
// fstp delay_0
delay_0=eq0_5;
if(fl_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;
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;
}