Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void BuildMtab(unsigned long *pMtab, unsigned long factor, void *table){
- __asm {
- mov eax,factor
- movzx ebx,ah
- movzx eax,al
- shl ebx,8
- shl eax,8
- mov edx,table
- lea esi,[edx+eax*2] ;LL
- lea ecx,[edx+ebx*2+(1*256*256)*2] ;HL
- lea edi,[edx+eax*2+(1*256*256)*2] ;LH
- lea edx,[edx+ebx*2+(2*256*256)*2] ;HH
- xor ebx,ebx
- pxor mm7,mm7
- mov eax,pMtab
- LHmxlp:
- movq mm0,[esi+ebx]
- pxor mm0,[ecx+ebx] ;L3,L2,L1,L0
- movq mm1,mm0
- punpcklwd mm0,mm7
- punpckhwd mm1,mm7
- movq [eax+ebx*2],mm0
- movq [eax+ebx*2+8],mm1
- movq mm2,[edi+ebx]
- pxor mm2,[edx+ebx] ;H3,H2,H1,H0
- movq mm3,mm2
- punpcklwd mm2,mm7
- punpckhwd mm3,mm7
- movq [eax+400h+ebx*2],mm2
- movq [eax+400h+ebx*2+8],mm3
- add ebx,8
- cmp ebx,512
- jne LHmxlp
- EMMS
- }
- }
- --------------------------------------------------------------------------
- int __cdecl BuildMtab(int a1, __int16 a2, int a3)
- {
- _ESI = a3 + ((unsigned __int8)a2 << 9);
- _ECX = a3 + (HIBYTE(a2) << 9) + 131072;
- _EDI = a3 + ((unsigned __int8)a2 << 9) + 131072;
- _EDX = a3 + (HIBYTE(a2) << 9) + 262144;
- _EBX = 0;
- __asm { pxor mm7, mm7 }
- _EAX = a1;
- do
- {
- __asm
- {
- movq mm0, qword ptr [esi+ebx]
- pxor mm0, qword ptr [ecx+ebx]
- movq mm1, mm0
- punpcklwd mm0, mm7
- punpckhwd mm1, mm7
- movq qword ptr [eax+ebx*2], mm0
- movq qword ptr [eax+ebx*2+8], mm1
- movq mm2, qword ptr [edi+ebx]
- pxor mm2, qword ptr [edx+ebx]
- movq mm3, mm2
- punpcklwd mm2, mm7
- punpckhwd mm3, mm7
- movq qword ptr [eax+ebx*2+400h], mm2
- movq qword ptr [eax+ebx*2+408h], mm3
- }
- _EBX += 8;
- }
- while ( _EBX != 512 );
- __asm { emms }
- return RTC_CheckEsp(1, a1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement