Advertisement
Zageron

Swap Comparison

Apr 28th, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. XOR
  2. void Swap(int* x, int* y)
  3. {
  4. 01043CE0  push        ebp  
  5. 01043CE1  mov         ebp,esp  
  6. 01043CE3  sub         esp,0C0h  
  7. 01043CE9  push        ebx  
  8. 01043CEA  push        esi  
  9. 01043CEB  push        edi  
  10. 01043CEC  lea         edi,[ebp-0C0h]  
  11. 01043CF2  mov         ecx,30h  
  12. 01043CF7  mov         eax,0CCCCCCCCh  
  13. 01043CFC  rep stos    dword ptr es:[edi]  
  14.     if (x != y)
  15. 01043CFE  mov         eax,dword ptr [x]  
  16. 01043D01  cmp         eax,dword ptr [y]  
  17. 01043D04  je          Swap+53h (01043D33h)  
  18.     {
  19.         (*x) ^= (*y);
  20. 01043D06  mov         eax,dword ptr [x]  
  21. 01043D09  mov         ecx,dword ptr [y]  
  22. 01043D0C  mov         edx,dword ptr [eax]  
  23. 01043D0E  xor         edx,dword ptr [ecx]  
  24. 01043D10  mov         eax,dword ptr [x]  
  25. 01043D13  mov         dword ptr [eax],edx  
  26.         (*y) ^= (*x);
  27. 01043D15  mov         eax,dword ptr [y]  
  28. 01043D18  mov         ecx,dword ptr [x]  
  29. 01043D1B  mov         edx,dword ptr [eax]  
  30. 01043D1D  xor         edx,dword ptr [ecx]  
  31. 01043D1F  mov         eax,dword ptr [y]  
  32. 01043D22  mov         dword ptr [eax],edx  
  33.         (*x) ^= (*y);
  34. 01043D24  mov         eax,dword ptr [x]  
  35. 01043D27  mov         ecx,dword ptr [y]  
  36. 01043D2A  mov         edx,dword ptr [eax]  
  37. 01043D2C  xor         edx,dword ptr [ecx]  
  38. 01043D2E  mov         eax,dword ptr [x]  
  39. 01043D31  mov         dword ptr [eax],edx  
  40.     }
  41. }
  42. 01043D33  pop         edi  
  43. 01043D34  pop         esi  
  44. 01043D35  pop         ebx  
  45. 01043D36  mov         esp,ebp  
  46. 01043D38  pop         ebp  
  47. 01043D39  ret  
  48.  
  49.  
  50. ===============================================================================
  51. TEMP
  52. void Swap(int* x, int* y)
  53. {
  54. 000A3CE0  push        ebp  
  55. 000A3CE1  mov         ebp,esp  
  56. 000A3CE3  sub         esp,0CCh  
  57. 000A3CE9  push        ebx  
  58. 000A3CEA  push        esi  
  59. 000A3CEB  push        edi  
  60. 000A3CEC  lea         edi,[ebp-0CCh]  
  61. 000A3CF2  mov         ecx,33h  
  62. 000A3CF7  mov         eax,0CCCCCCCCh  
  63. 000A3CFC  rep stos    dword ptr es:[edi]  
  64.     int temp = (*x);
  65. 000A3CFE  mov         eax,dword ptr [x]  
  66. 000A3D01  mov         ecx,dword ptr [eax]  
  67. 000A3D03  mov         dword ptr [temp],ecx  
  68.     (*x) = (*y);
  69. 000A3D06  mov         eax,dword ptr [x]  
  70. 000A3D09  mov         ecx,dword ptr [y]  
  71. 000A3D0C  mov         edx,dword ptr [ecx]  
  72. 000A3D0E  mov         dword ptr [eax],edx  
  73.     (*y) = temp;
  74. 000A3D10  mov         eax,dword ptr [y]  
  75. 000A3D13  mov         ecx,dword ptr [temp]  
  76. 000A3D16  mov         dword ptr [eax],ecx  
  77. }
  78. 000A3D18  pop         edi  
  79. 000A3D19  pop         esi  
  80. 000A3D1A  pop         ebx  
  81. 000A3D1B  mov         esp,ebp  
  82. 000A3D1D  pop         ebp  
  83. 000A3D1E  ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement