Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- m(int64_t arg0, arg1, arg2) { /*RDI, RSI, RDX, RCX, R8, and R9*/
- //arg0 и arg1 - определяют начальные адреса массивов из которых
- //берутся перемножаемые элементы
- //arg2 - определяет адрес массива назначения
- int64_t mem64[],
- size_t i,j,k,n; /*r10, r8, rax, rcx*/
- double tmp0, tmp1, tmp2; /*xmm0, xmm1 and xmm2*/
- tmp2=0;
- i=0;
- while(1) {
- j=0;
- while(1) {
- n=arg1+j;
- tmp1=tmp2;
- mem64[arg2+j]=0;
- k=0;
- do {
- tmp0=(double)mem64[arg0+i+k];
- k+=8;
- n+=2400;
- tmp0*=(double)mem64[n-2400];
- /*tmp0=mem64[n]*mem64[arg0+i+k]*/
- tmp1+=tmp0;
- mem64[arg2+j]+=(int64_t)tmp1;
- } while(k!=800);
- j+=8;
- if(j==2400) break;
- }
- i+=800;
- arg2+=2400;
- if(i==160000) break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment