Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. static void BuildMtab(unsigned long *pMtab, unsigned long factor, void *table){
  2. __asm {
  3. mov eax,factor
  4. movzx ebx,ah
  5. movzx eax,al
  6. shl ebx,8
  7. shl eax,8
  8. mov edx,table
  9. lea esi,[edx+eax*2] ;LL
  10. lea ecx,[edx+ebx*2+(1*256*256)*2] ;HL
  11. lea edi,[edx+eax*2+(1*256*256)*2] ;LH
  12. lea edx,[edx+ebx*2+(2*256*256)*2] ;HH
  13.  
  14. xor ebx,ebx
  15. pxor mm7,mm7
  16. mov eax,pMtab
  17.  
  18. LHmxlp:
  19. movq mm0,[esi+ebx]
  20. pxor mm0,[ecx+ebx] ;L3,L2,L1,L0
  21. movq mm1,mm0
  22. punpcklwd mm0,mm7
  23. punpckhwd mm1,mm7
  24. movq [eax+ebx*2],mm0
  25. movq [eax+ebx*2+8],mm1
  26.  
  27. movq mm2,[edi+ebx]
  28. pxor mm2,[edx+ebx] ;H3,H2,H1,H0
  29. movq mm3,mm2
  30. punpcklwd mm2,mm7
  31. punpckhwd mm3,mm7
  32. movq [eax+400h+ebx*2],mm2
  33. movq [eax+400h+ebx*2+8],mm3
  34.  
  35. add ebx,8
  36. cmp ebx,512
  37. jne LHmxlp
  38. EMMS
  39. }
  40. }
  41.  
  42.  
  43. --------------------------------------------------------------------------
  44.  
  45.  
  46. int __cdecl BuildMtab(int a1, __int16 a2, int a3)
  47. {
  48. _ESI = a3 + ((unsigned __int8)a2 << 9);
  49. _ECX = a3 + (HIBYTE(a2) << 9) + 131072;
  50. _EDI = a3 + ((unsigned __int8)a2 << 9) + 131072;
  51. _EDX = a3 + (HIBYTE(a2) << 9) + 262144;
  52. _EBX = 0;
  53. __asm { pxor mm7, mm7 }
  54. _EAX = a1;
  55. do
  56. {
  57. __asm
  58. {
  59. movq mm0, qword ptr [esi+ebx]
  60. pxor mm0, qword ptr [ecx+ebx]
  61. movq mm1, mm0
  62. punpcklwd mm0, mm7
  63. punpckhwd mm1, mm7
  64. movq qword ptr [eax+ebx*2], mm0
  65. movq qword ptr [eax+ebx*2+8], mm1
  66. movq mm2, qword ptr [edi+ebx]
  67. pxor mm2, qword ptr [edx+ebx]
  68. movq mm3, mm2
  69. punpcklwd mm2, mm7
  70. punpckhwd mm3, mm7
  71. movq qword ptr [eax+ebx*2+400h], mm2
  72. movq qword ptr [eax+ebx*2+408h], mm3
  73. }
  74. _EBX += 8;
  75. }
  76. while ( _EBX != 512 );
  77. __asm { emms }
  78. return RTC_CheckEsp(1, a1);
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement