Ember

Bluh

Feb 27th, 2014
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.34 KB | None | 0 0
  1. --- c:\projects\console\main.cpp -----------------------------------------------
  2.      1: #include <windows.h>
  3.      2: #include <iostream>
  4.      3: #include <time.h>
  5.      4:
  6.      5: typedef double_t Double;
  7.      6: typedef long Real;
  8.      7:
  9.      8: int main()
  10.      9: {
  11. 00E312A0 55                   push        ebp  
  12. 00E312A1 8B EC                mov         ebp,esp  
  13. 00E312A3 83 E4 C0             and         esp,0FFFFFFC0h  
  14. 00E312A6 83 EC 34             sub         esp,34h  
  15. 00E312A9 A1 00 40 E3 00       mov         eax,dword ptr ds:[00E34000h]  
  16. 00E312AE 33 C4                xor         eax,esp  
  17. 00E312B0 89 44 24 30          mov         dword ptr [esp+30h],eax  
  18.     10:     LARGE_INTEGER li;
  19.     11:     Double frequency, time;
  20.     12:     Real x;
  21.     13:     //--//
  22.     14:     const long long iterCount = pow(2, 29);
  23. 00E312B4 C5 FB 10 05 68 32 E3 00 vmovsd      xmm0,qword ptr ds:[0E33268h]  
  24. 00E312BC C5 FB 10 0D 70 32 E3 00 vmovsd      xmm1,qword ptr ds:[0E33270h]  
  25.      1: #include <windows.h>
  26.      2: #include <iostream>
  27.      3: #include <time.h>
  28.      4:
  29.      5: typedef double_t Double;
  30.      6: typedef long Real;
  31.      7:
  32.      8: int main()
  33.      9: {
  34. 00E312C4 53                   push        ebx  
  35. 00E312C5 56                   push        esi  
  36. 00E312C6 57                   push        edi  
  37.     10:     LARGE_INTEGER li;
  38.     11:     Double frequency, time;
  39.     12:     Real x;
  40.     13:     //--//
  41.     14:     const long long iterCount = pow(2, 29);
  42. 00E312C7 E8 B0 16 00 00       call        __libm_sse2_pow_precise (0E3297Ch)  
  43. 00E312CC E8 DC 14 00 00       call        _dtol3 (0E327ADh)  
  44. 00E312D1 8B F0                mov         esi,eax  
  45. 00E312D3 8B FA                mov         edi,edx  
  46.     15:     //std::cout << "size " << sizeof(Real) << " types" << std::endl << std::endl;
  47.     16:
  48.     17:     // Get the high-resolution timer frequency and set to milliseconds
  49.     18:     QueryPerformanceFrequency(&li);
  50. 00E312D5 8D 44 24 30          lea         eax,[esp+30h]  
  51. 00E312D9 50                   push        eax  
  52. 00E312DA FF 15 04 30 E3 00    call        dword ptr ds:[0E33004h]  
  53.     19:     frequency = (double)li.QuadPart / 1000.0;
  54. 00E312E0 8B 54 24 34          mov         edx,dword ptr [esp+34h]  
  55. 00E312E4 8B 4C 24 30          mov         ecx,dword ptr [esp+30h]  
  56. 00E312E8 E8 60 16 00 00       call        _ltod3 (0E3294Dh)  
  57. 00E312ED C5 FB 5E 05 78 32 E3 00 vdivsd      xmm0,xmm0,mmword ptr ds:[0E33278h]  
  58.     20:
  59.     21:     // --
  60.     22:     // ALWAYS TRUE TEST
  61.     23:     // --
  62.     24:
  63.     25:     x = 0;
  64.     26:     // Get the current time
  65.     27:     QueryPerformanceCounter(&li);
  66. 00E312F5 8D 44 24 30          lea         eax,[esp+30h]  
  67. 00E312F9 33 DB                xor         ebx,ebx  
  68. 00E312FB 50                   push        eax  
  69. 00E312FC C5 FB 11 44 24 2C    vmovsd      qword ptr [esp+2Ch],xmm0  
  70. 00E31302 FF 15 00 30 E3 00    call        dword ptr ds:[0E33000h]  
  71.     28:     time = li.QuadPart;
  72. 00E31308 8B 54 24 34          mov         edx,dword ptr [esp+34h]  
  73. 00E3130C 8B 4C 24 30          mov         ecx,dword ptr [esp+30h]  
  74. 00E31310 E8 38 16 00 00       call        _ltod3 (0E3294Dh)  
  75.     29:
  76.     30:     std::cout << time << std::endl;
  77. 00E31315 8B 0D 54 30 E3 00    mov         ecx,dword ptr ds:[0E33054h]  
  78. 00E3131B 68 00 1A E3 00       push        0E31A00h  
  79. 00E31320 83 EC 08             sub         esp,8  
  80. 00E31323 C5 FB 11 44 24 2C    vmovsd      qword ptr [esp+2Ch],xmm0  
  81.     29:
  82.     30:     std::cout << time << std::endl;
  83. 00E31329 C5 FB 11 04 24       vmovsd      qword ptr [esp],xmm0  
  84. 00E3132E FF 15 40 30 E3 00    call        dword ptr ds:[0E33040h]  
  85. 00E31334 8B C8                mov         ecx,eax  
  86. 00E31336 FF 15 48 30 E3 00    call        dword ptr ds:[0E33048h]  
  87. 00E3133C C5 F8 57 C0          vxorps      xmm0,xmm0,xmm0  
  88.     31:     for(long long i = 0; i<iterCount; ++i)
  89. 00E31340 C5 F9 13 44 24 18    vmovlpd     qword ptr [esp+18h],xmm0  
  90. 00E31346 85 FF                test        edi,edi  
  91. 00E31348 7C 29                jl          main+0D3h (0E31373h)  
  92. 00E3134A 7F 04                jg          main+0B0h (0E31350h)  
  93. 00E3134C 85 F6                test        esi,esi  
  94. 00E3134E 74 23                je          main+0D3h (0E31373h)  
  95. 00E31350 8B 4C 24 1C          mov         ecx,dword ptr [esp+1Ch]  
  96. 00E31354 8B 44 24 18          mov         eax,dword ptr [esp+18h]  
  97.     32:     {
  98.     33:         if(i > 0)
  99. 00E31358 85 C9                test        ecx,ecx  
  100. 00E3135A 7C 07                jl          main+0C3h (0E31363h)  
  101. 00E3135C 7F 04                jg          main+0C2h (0E31362h)  
  102. 00E3135E 85 C0                test        eax,eax  
  103. 00E31360 74 01                je          main+0C3h (0E31363h)  
  104.     34:         {
  105.     35:             ++x;
  106. 00E31362 43                   inc         ebx  
  107.     31:     for(long long i = 0; i<iterCount; ++i)
  108. 00E31363 83 C0 01             add         eax,1  
  109. 00E31366 83 D1 00             adc         ecx,0  
  110. 00E31369 3B CF                cmp         ecx,edi  
  111. 00E3136B 7C EB                jl          main+0B8h (0E31358h)  
  112. 00E3136D 7F 04                jg          main+0D3h (0E31373h)  
  113. 00E3136F 3B C6                cmp         eax,esi  
  114. 00E31371 72 E5                jb          main+0B8h (0E31358h)  
  115.     36:         }
  116.     37:     }
  117.     38:
  118.     39:     // Get the elapsed time and output it
  119.     40:     QueryPerformanceCounter(&li);
  120. 00E31373 8D 44 24 30          lea         eax,[esp+30h]  
  121. 00E31377 50                   push        eax  
  122. 00E31378 FF 15 00 30 E3 00    call        dword ptr ds:[0E33000h]  
  123.     41:     time = li.QuadPart - time;
  124. 00E3137E 8B 54 24 34          mov         edx,dword ptr [esp+34h]  
  125. 00E31382 8B 4C 24 30          mov         ecx,dword ptr [esp+30h]  
  126. 00E31386 E8 C2 15 00 00       call        _ltod3 (0E3294Dh)  
  127. 00E3138B C5 FB 5C 44 24 20    vsubsd      xmm0,xmm0,mmword ptr [esp+20h]  
  128.     42:     time /= frequency;
  129. 00E31391 C5 FB 5E 44 24 28    vdivsd      xmm0,xmm0,mmword ptr [esp+28h]  
  130.     43:     std::cout << time << " : " << x << std::endl;
  131. 00E31397 8B 0D 54 30 E3 00    mov         ecx,dword ptr ds:[0E33054h]  
  132. 00E3139D 68 00 1A E3 00       push        0E31A00h  
  133. 00E313A2 53                   push        ebx  
  134. 00E313A3 83 EC 08             sub         esp,8  
  135. 00E313A6 C5 FB 11 04 24       vmovsd      qword ptr [esp],xmm0  
  136. 00E313AB FF 15 40 30 E3 00    call        dword ptr ds:[0E33040h]  
  137. 00E313B1 8B C8                mov         ecx,eax  
  138. 00E313B3 E8 78 06 00 00       call        std::operator<<<std::char_traits<char> > (0E31A30h)  
  139. 00E313B8 8B C8                mov         ecx,eax  
  140. 00E313BA FF 15 44 30 E3 00    call        dword ptr ds:[0E33044h]  
  141. 00E313C0 8B C8                mov         ecx,eax  
  142. 00E313C2 FF 15 48 30 E3 00    call        dword ptr ds:[0E33048h]  
  143.     44:
  144.     45:     // --
  145.     46:     // ALWAYS FALSE TEST
  146.     47:     // --
  147.     48:
  148.     49:     x = 0;
  149.     50:     // Get the current time
  150.     51:     QueryPerformanceCounter(&li);
  151. 00E313C8 8D 44 24 30          lea         eax,[esp+30h]  
  152. 00E313CC 33 DB                xor         ebx,ebx  
  153. 00E313CE 50                   push        eax  
  154. 00E313CF FF 15 00 30 E3 00    call        dword ptr ds:[0E33000h]  
  155.     52:     time = li.QuadPart;
  156. 00E313D5 8B 54 24 34          mov         edx,dword ptr [esp+34h]  
  157. 00E313D9 8B 4C 24 30          mov         ecx,dword ptr [esp+30h]  
  158. 00E313DD E8 6B 15 00 00       call        _ltod3 (0E3294Dh)  
  159.     53:
  160.     54:     std::cout << time << std::endl;
  161. 00E313E2 8B 0D 54 30 E3 00    mov         ecx,dword ptr ds:[0E33054h]  
  162. 00E313E8 68 00 1A E3 00       push        0E31A00h  
  163. 00E313ED 83 EC 08             sub         esp,8  
  164. 00E313F0 C5 FB 11 44 24 2C    vmovsd      qword ptr [esp+2Ch],xmm0  
  165. 00E313F6 C5 FB 11 04 24       vmovsd      qword ptr [esp],xmm0  
  166. 00E313FB FF 15 40 30 E3 00    call        dword ptr ds:[0E33040h]  
  167. 00E31401 8B C8                mov         ecx,eax  
  168. 00E31403 FF 15 48 30 E3 00    call        dword ptr ds:[0E33048h]  
  169. 00E31409 C5 F8 57 C0          vxorps      xmm0,xmm0,xmm0  
  170.     55:     for(long long i = 0; i<iterCount; ++i)
  171. 00E3140D C5 F9 13 44 24 18    vmovlpd     qword ptr [esp+18h],xmm0  
  172. 00E31413 85 FF                test        edi,edi  
  173. 00E31415 7C 29                jl          main+1A0h (0E31440h)  
  174. 00E31417 7F 04                jg          main+17Dh (0E3141Dh)  
  175. 00E31419 85 F6                test        esi,esi  
  176. 00E3141B 74 23                je          main+1A0h (0E31440h)  
  177. 00E3141D 8B 4C 24 1C          mov         ecx,dword ptr [esp+1Ch]  
  178. 00E31421 8B 44 24 18          mov         eax,dword ptr [esp+18h]  
  179.     56:     {
  180.     57:         if(i < 0)
  181. 00E31425 85 C9                test        ecx,ecx  
  182. 00E31427 7F 07                jg          main+190h (0E31430h)  
  183. 00E31429 7C 04                jl          main+18Fh (0E3142Fh)  
  184. 00E3142B 85 C0                test        eax,eax  
  185. 00E3142D 73 01                jae         main+190h (0E31430h)  
  186.     58:         {
  187.     59:             ++x;
  188. 00E3142F 43                   inc         ebx  
  189.     55:     for(long long i = 0; i<iterCount; ++i)
  190. 00E31430 83 C0 01             add         eax,1  
  191. 00E31433 83 D1 00             adc         ecx,0  
  192. 00E31436 3B CF                cmp         ecx,edi  
  193. 00E31438 7C EB                jl          main+185h (0E31425h)  
  194. 00E3143A 7F 04                jg          main+1A0h (0E31440h)  
  195. 00E3143C 3B C6                cmp         eax,esi  
  196. 00E3143E 72 E5                jb          main+185h (0E31425h)  
  197.     60:         }
  198.     61:     }
  199.     62:
  200.     63:     // Get the elapsed time and output it
  201.     64:     QueryPerformanceCounter(&li);
  202. 00E31440 8D 44 24 30          lea         eax,[esp+30h]  
  203. 00E31444 50                   push        eax  
  204. 00E31445 FF 15 00 30 E3 00    call        dword ptr ds:[0E33000h]  
  205.     65:     time = li.QuadPart - time;
  206. 00E3144B 8B 54 24 34          mov         edx,dword ptr [esp+34h]  
  207. 00E3144F 8B 4C 24 30          mov         ecx,dword ptr [esp+30h]  
  208. 00E31453 E8 F5 14 00 00       call        _ltod3 (0E3294Dh)  
  209. 00E31458 C5 FB 5C 44 24 20    vsubsd      xmm0,xmm0,mmword ptr [esp+20h]  
  210.     66:     time /= frequency;
  211. 00E3145E C5 FB 5E 44 24 28    vdivsd      xmm0,xmm0,mmword ptr [esp+28h]  
  212.     67:     std::cout << time << " : " << x << std::endl;
  213. 00E31464 8B 0D 54 30 E3 00    mov         ecx,dword ptr ds:[0E33054h]  
  214. 00E3146A 68 00 1A E3 00       push        0E31A00h  
  215. 00E3146F 53                   push        ebx  
  216. 00E31470 83 EC 08             sub         esp,8  
  217. 00E31473 C5 FB 11 04 24       vmovsd      qword ptr [esp],xmm0  
  218. 00E31478 FF 15 40 30 E3 00    call        dword ptr ds:[0E33040h]  
  219. 00E3147E 8B C8                mov         ecx,eax  
  220. 00E31480 E8 AB 05 00 00       call        std::operator<<<std::char_traits<char> > (0E31A30h)  
  221. 00E31485 8B C8                mov         ecx,eax  
  222. 00E31487 FF 15 44 30 E3 00    call        dword ptr ds:[0E33044h]  
  223. 00E3148D 8B C8                mov         ecx,eax  
  224. 00E3148F FF 15 48 30 E3 00    call        dword ptr ds:[0E33048h]  
  225.     68:
  226.     69:     // --
  227.     70:     // NO TEST
  228.     71:     // --
  229.     72:
  230.     73:     x = 0;
  231.     74:     // Get the current time
  232.     75:     QueryPerformanceCounter(&li);
  233. 00E31495 8D 44 24 30          lea         eax,[esp+30h]  
  234. 00E31499 33 DB                xor         ebx,ebx  
  235. 00E3149B 50                   push        eax  
  236. 00E3149C FF 15 00 30 E3 00    call        dword ptr ds:[0E33000h]  
  237.     76:     time = li.QuadPart;
  238. 00E314A2 8B 54 24 34          mov         edx,dword ptr [esp+34h]  
  239. 00E314A6 8B 4C 24 30          mov         ecx,dword ptr [esp+30h]  
  240. 00E314AA E8 9E 14 00 00       call        _ltod3 (0E3294Dh)  
  241.     77:
  242.     78:     std::cout << time << std::endl;
  243. 00E314AF 8B 0D 54 30 E3 00    mov         ecx,dword ptr ds:[0E33054h]  
  244. 00E314B5 68 00 1A E3 00       push        0E31A00h  
  245. 00E314BA 83 EC 08             sub         esp,8  
  246. 00E314BD C5 FB 11 44 24 2C    vmovsd      qword ptr [esp+2Ch],xmm0  
  247. 00E314C3 C5 FB 11 04 24       vmovsd      qword ptr [esp],xmm0  
  248. 00E314C8 FF 15 40 30 E3 00    call        dword ptr ds:[0E33040h]  
  249. 00E314CE 8B C8                mov         ecx,eax  
  250. 00E314D0 FF 15 48 30 E3 00    call        dword ptr ds:[0E33048h]  
  251. 00E314D6 C5 F8 57 C0          vxorps      xmm0,xmm0,xmm0  
  252.     79:     for(long long i = 0; i<iterCount; ++i)
  253. 00E314DA C5 F9 13 44 24 18    vmovlpd     qword ptr [esp+18h],xmm0  
  254. 00E314E0 85 FF                test        edi,edi  
  255. 00E314E2 7C 1F                jl          main+263h (0E31503h)  
  256. 00E314E4 7F 04                jg          main+24Ah (0E314EAh)  
  257. 00E314E6 85 F6                test        esi,esi  
  258. 00E314E8 74 19                je          main+263h (0E31503h)  
  259. 00E314EA 8B 4C 24 1C          mov         ecx,dword ptr [esp+1Ch]  
  260. 00E314EE 8B 44 24 18          mov         eax,dword ptr [esp+18h]  
  261.     80:     {
  262.     81:         ++x;
  263. 00E314F2 43                   inc         ebx  
  264. 00E314F3 83 C0 01             add         eax,1  
  265. 00E314F6 83 D1 00             adc         ecx,0  
  266. 00E314F9 3B CF                cmp         ecx,edi  
  267. 00E314FB 7C F5                jl          main+252h (0E314F2h)  
  268.     79:     for(long long i = 0; i<iterCount; ++i)
  269. 00E314FD 7F 04                jg          main+263h (0E31503h)  
  270. 00E314FF 3B C6                cmp         eax,esi  
  271. 00E31501 72 EF                jb          main+252h (0E314F2h)  
  272.     82:     }
  273.     83:
  274.     84:     // Get the elapsed time and output it
  275.     85:     QueryPerformanceCounter(&li);
  276. 00E31503 8D 44 24 30          lea         eax,[esp+30h]  
  277. 00E31507 50                   push        eax  
  278. 00E31508 FF 15 00 30 E3 00    call        dword ptr ds:[0E33000h]  
  279.     86:     time = li.QuadPart - time;
  280. 00E3150E 8B 54 24 34          mov         edx,dword ptr [esp+34h]  
  281. 00E31512 8B 4C 24 30          mov         ecx,dword ptr [esp+30h]  
  282. 00E31516 E8 32 14 00 00       call        _ltod3 (0E3294Dh)  
  283. 00E3151B C5 FB 5C 44 24 20    vsubsd      xmm0,xmm0,mmword ptr [esp+20h]  
  284.     87:     time /= frequency;
  285. 00E31521 C5 FB 5E 44 24 28    vdivsd      xmm0,xmm0,mmword ptr [esp+28h]  
  286.     88:     std::cout << time << " : " << x << std::endl;
  287. 00E31527 8B 0D 54 30 E3 00    mov         ecx,dword ptr ds:[0E33054h]  
  288. 00E3152D 68 00 1A E3 00       push        0E31A00h  
  289. 00E31532 53                   push        ebx  
  290. 00E31533 83 EC 08             sub         esp,8  
  291. 00E31536 C5 FB 11 04 24       vmovsd      qword ptr [esp],xmm0  
  292. 00E3153B FF 15 40 30 E3 00    call        dword ptr ds:[0E33040h]  
  293. 00E31541 8B C8                mov         ecx,eax  
  294. 00E31543 E8 E8 04 00 00       call        std::operator<<<std::char_traits<char> > (0E31A30h)  
  295. 00E31548 8B C8                mov         ecx,eax  
  296. 00E3154A FF 15 44 30 E3 00    call        dword ptr ds:[0E33044h]  
  297. 00E31550 8B C8                mov         ecx,eax  
  298. 00E31552 FF 15 48 30 E3 00    call        dword ptr ds:[0E33048h]  
  299.     89:
  300.     90:     return 0;
  301.     91: }
  302. 00E31558 8B 4C 24 3C          mov         ecx,dword ptr [esp+3Ch]  
  303. 00E3155C 33 C0                xor         eax,eax  
  304. 00E3155E 5F                   pop         edi  
  305. 00E3155F 5E                   pop         esi  
  306. 00E31560 5B                   pop         ebx  
  307. 00E31561 33 CC                xor         ecx,esp  
  308. 00E31563 E8 DA 06 00 00       call        __security_check_cookie (0E31C42h)  
  309. 00E31568 8B E5                mov         esp,ebp  
  310. 00E3156A 5D                   pop         ebp  
  311. 00E3156B C3                   ret
Advertisement
Add Comment
Please, Sign In to add comment