Advertisement
Guest User

VS2012 32bit

a guest
Jul 6th, 2012
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Listing generated by Microsoft (R) Optimizing Compiler Version 17.00.50522.1
  2.  
  3.     TITLE   C:\bn_64\h2\tmul.cpp
  4.     .686P
  5.     .XMM
  6.     include listing.inc
  7.     .model  flat
  8.  
  9. INCLUDELIB LIBCMT
  10. INCLUDELIB OLDNAMES
  11.  
  12. PUBLIC  ?Mul@@YAXPAI00@Z                ; Mul
  13. PUBLIC  ?get_const_0x87654321@@YAHXZ            ; get_const_0x87654321
  14. PUBLIC  _main
  15. PUBLIC  ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@  ; `string'
  16. PUBLIC  ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@ ; `string'
  17. EXTRN   _printf:PROC
  18. EXTRN   __imp__QueryPerformanceCounter@4:PROC
  19. EXTRN   __imp__QueryPerformanceFrequency@4:PROC
  20. EXTRN   @__security_check_cookie@4:PROC
  21. EXTRN   __allmul:PROC
  22. EXTRN   ___security_cookie:DWORD
  23. EXTRN   __fltused:DWORD
  24. ;   COMDAT ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@
  25. CONST   SEGMENT
  26. ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@ DB 'Time = %g sec', 0aH, 00H ; `string'
  27. CONST   ENDS
  28. ;   COMDAT ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@
  29. CONST   SEGMENT
  30. ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@ DB 'Something wrong!', 0aH
  31.     DB  00H                     ; `string'
  32. CONST   ENDS
  33. ; Function compile flags: /Ogtpy
  34. ;   COMDAT _main
  35. _TEXT   SEGMENT
  36. $T1 = -200                      ; size = 4
  37. tv536 = -200                        ; size = 8
  38. tv533 = -200                        ; size = 8
  39. tv530 = -200                        ; size = 8
  40. tv528 = -200                        ; size = 8
  41. $T2 = -192                      ; size = 4
  42. tv501 = -188                        ; size = 4
  43. _a$3 = -188                     ; size = 4
  44. $T4 = -184                      ; size = 4
  45. tv517 = -180                        ; size = 4
  46. _j$1$ = -176                        ; size = 4
  47. tv500 = -172                        ; size = 4
  48. tv494 = -168                        ; size = 4
  49. tv503 = -164                        ; size = 4
  50. tv504 = -160                        ; size = 4
  51. tv505 = -156                        ; size = 4
  52. _s$1$ = -152                        ; size = 4
  53. _s$9$ = -148                        ; size = 4
  54. tv525 = -144                        ; size = 8
  55. _s$5 = -144                     ; size = 8
  56. tv502 = -132                        ; size = 4
  57. _lStart$ = -128                     ; size = 8
  58. _lEnd$ = -120                       ; size = 8
  59. _lFrequency$ = -112                 ; size = 8
  60. _A$ = -104                      ; size = 16
  61. _RES$ = -84                     ; size = 32
  62. _C$ = -52                       ; size = 32
  63. _B$ = -20                       ; size = 16
  64. __$ArrayPad$ = -4                   ; size = 4
  65. _main   PROC                        ; COMDAT
  66. ; File c:\bn_64\h2\tmul.cpp
  67. ; Line 48
  68.     push    ebp
  69.     mov ebp, esp
  70.     and esp, -64                ; ffffffc0H
  71.     sub esp, 244                ; 000000f4H
  72.     mov eax, DWORD PTR ___security_cookie
  73.     xor eax, esp
  74.     mov DWORD PTR __$ArrayPad$[esp+244], eax
  75.     push    ebx
  76.     push    esi
  77.     push    edi
  78. ; Line 52
  79.     mov DWORD PTR _RES$[esp+256], -677098943    ; d7a44a41H
  80.     mov DWORD PTR _RES$[esp+260], -152794788    ; f6e4895cH
  81.     mov DWORD PTR _RES$[esp+264], 371509368 ; 1624c878H
  82.     mov DWORD PTR _RES$[esp+268], 895813525 ; 35650795H
  83. ; Line 53
  84.     mov DWORD PTR _RES$[esp+272], -1520651729   ; a55cb22fH
  85.     mov DWORD PTR _RES$[esp+276], -2044955885   ; 861c7313H
  86.     mov DWORD PTR _RES$[esp+280], 1725707255    ; 66dc33f7H
  87.     mov DWORD PTR _RES$[esp+284], 1201403099    ; 479bf4dbH
  88. ; Line 55
  89.     xor ecx, ecx
  90.     npad    9
  91. $LL10@main:
  92.     mov DWORD PTR _a$3[esp+256], -2023406815    ; 87654321H
  93.     mov eax, DWORD PTR _a$3[esp+256]
  94.     mov DWORD PTR _B$[esp+ecx+256], eax
  95.     mov DWORD PTR _A$[esp+ecx+256], eax
  96.     add ecx, 4
  97.     cmp ecx, 16                 ; 00000010H
  98.     jl  SHORT $LL10@main
  99. ; Line 57
  100.     lea eax, DWORD PTR _lFrequency$[esp+256]
  101.     push    eax
  102.     call    DWORD PTR __imp__QueryPerformanceFrequency@4
  103. ; Line 58
  104.     lea eax, DWORD PTR _lStart$[esp+256]
  105.     push    eax
  106.     call    DWORD PTR __imp__QueryPerformanceCounter@4
  107.     mov esi, DWORD PTR _B$[esp+256]
  108.     push    0
  109.     push    esi
  110.     push    0
  111.     push    DWORD PTR _A$[esp+268]
  112.     call    __allmul
  113.     push    0
  114.     push    esi
  115.     push    0
  116.     push    DWORD PTR _A$[esp+272]
  117.     mov DWORD PTR _s$1$[esp+272], eax
  118.     mov DWORD PTR _s$9$[esp+272], edx
  119.     call    __allmul
  120.     push    0
  121.     push    esi
  122.     push    0
  123.     push    DWORD PTR _A$[esp+276]
  124.     mov ebx, eax
  125.     mov edi, edx
  126.     mov DWORD PTR tv500[esp+272], ebx
  127.     mov DWORD PTR tv501[esp+272], edi
  128.     call    __allmul
  129.     push    0
  130.     push    esi
  131.     push    0
  132.     push    DWORD PTR _A$[esp+280]
  133.     mov DWORD PTR tv502[esp+272], eax
  134.     mov DWORD PTR tv503[esp+272], edx
  135.     call    __allmul
  136.     mov DWORD PTR tv504[esp+256], eax
  137.     mov DWORD PTR tv505[esp+256], edx
  138.     mov DWORD PTR tv494[esp+256], 100       ; 00000064H
  139.     npad    8
  140. $LL7@main:
  141. ; Line 61
  142.     mov DWORD PTR tv517[esp+256], 1000000   ; 000f4240H
  143.     npad    8
  144. $LL4@main:
  145. ; Line 63
  146.     mov eax, DWORD PTR _s$1$[esp+256]
  147.     mov DWORD PTR _C$[esp+256], eax
  148.     mov eax, DWORD PTR _s$9$[esp+256]
  149.     xor ecx, ecx
  150.     add eax, ebx
  151.     adc ecx, edi
  152.     xor edx, edx
  153.     add ecx, DWORD PTR tv502[esp+256]
  154.     mov DWORD PTR _C$[esp+260], eax
  155.     adc edx, DWORD PTR tv503[esp+256]
  156.     xor eax, eax
  157.     add edx, DWORD PTR tv504[esp+256]
  158.     mov DWORD PTR _C$[esp+264], ecx
  159.     adc eax, DWORD PTR tv505[esp+256]
  160.     lea esi, DWORD PTR _B$[esp+260]
  161.     mov DWORD PTR _C$[esp+268], edx
  162.     lea ecx, DWORD PTR _A$[esp+272]
  163.     lea edi, DWORD PTR _C$[esp+272]
  164.     mov DWORD PTR _C$[esp+272], eax
  165.     mov DWORD PTR _j$1$[esp+256], 3
  166. $LL20@main:
  167.     mov ebx, DWORD PTR [esi]
  168.     push    0
  169.     push    ebx
  170.     sub ecx, 16                 ; 00000010H
  171.     push    0
  172.     push    DWORD PTR [ecx]
  173.     add esi, 4
  174.     sub edi, 12                 ; 0000000cH
  175.     mov DWORD PTR $T2[esp+272], ecx
  176.     mov DWORD PTR $T1[esp+272], esi
  177.     mov DWORD PTR $T4[esp+272], edi
  178.     call    __allmul
  179.     add DWORD PTR [edi], eax
  180.     mov eax, DWORD PTR $T2[esp+256]
  181.     push    0
  182.     push    ebx
  183.     push    0
  184.     push    DWORD PTR [eax+4]
  185.     mov esi, edx
  186.     adc esi, 0
  187.     call    __allmul
  188.     mov ecx, DWORD PTR $T4[esp+256]
  189.     mov edi, edx
  190.     add eax, DWORD PTR [ecx+4]
  191.     push    0
  192.     adc edi, 0
  193.     add eax, esi
  194.     push    ebx
  195.     mov DWORD PTR [ecx+4], eax
  196.     mov eax, DWORD PTR $T2[esp+264]
  197.     push    0
  198.     push    DWORD PTR [eax+8]
  199.     adc edi, 0
  200.     call    __allmul
  201.     mov ecx, DWORD PTR $T4[esp+256]
  202.     mov esi, edx
  203.     add eax, DWORD PTR [ecx+8]
  204.     push    0
  205.     adc esi, 0
  206.     add eax, edi
  207.     mov edi, ecx
  208.     push    ebx
  209.     mov DWORD PTR [edi+8], eax
  210.     mov eax, DWORD PTR $T2[esp+264]
  211.     push    0
  212.     push    DWORD PTR [eax+12]
  213.     adc esi, 0
  214.     call    __allmul
  215.     add eax, DWORD PTR [edi+12]
  216.     mov ecx, DWORD PTR $T2[esp+256]
  217.     adc edx, 0
  218.     add eax, esi
  219.     mov esi, DWORD PTR $T1[esp+256]
  220.     adc edx, 0
  221.     mov DWORD PTR [edi+12], eax
  222.     mov DWORD PTR _s$5[esp+256], eax
  223.     mov eax, DWORD PTR _j$1$[esp+256]
  224.     add edi, 16                 ; 00000010H
  225.     dec eax
  226.     add ecx, 16                 ; 00000010H
  227.     mov DWORD PTR _s$5[esp+260], edx
  228.     mov DWORD PTR [edi], edx
  229.     mov DWORD PTR _j$1$[esp+256], eax
  230.     test    eax, eax
  231.     jg  $LL20@main
  232. ; Line 61
  233.     dec DWORD PTR tv517[esp+256]
  234.     mov ebx, DWORD PTR tv500[esp+256]
  235.     mov edi, DWORD PTR tv501[esp+256]
  236.     jne $LL4@main
  237. ; Line 65
  238.     lea ecx, DWORD PTR _RES$[esp+256]
  239.     lea edx, DWORD PTR _C$[esp+256]
  240.     mov esi, 28                 ; 0000001cH
  241. $LL56@main:
  242.     mov eax, DWORD PTR [ecx]
  243.     cmp eax, DWORD PTR [edx]
  244.     jne SHORT $LN55@main
  245.     add ecx, 4
  246.     add edx, 4
  247.     sub esi, 4
  248.     jae SHORT $LL56@main
  249.     jmp SHORT $LN6@main
  250. $LN55@main:
  251. ; Line 67
  252.     push    OFFSET ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@
  253.     call    _printf
  254.     add esp, 4
  255. $LN6@main:
  256. ; Line 59
  257.     dec DWORD PTR tv494[esp+256]
  258.     jne $LL7@main
  259. ; Line 70
  260.     lea eax, DWORD PTR _lEnd$[esp+256]
  261.     push    eax
  262.     call    DWORD PTR __imp__QueryPerformanceCounter@4
  263. ; Line 71
  264.     mov ecx, DWORD PTR _lEnd$[esp+256]
  265.     sub ecx, DWORD PTR _lStart$[esp+256]
  266.     mov eax, DWORD PTR _lEnd$[esp+260]
  267.     sbb eax, DWORD PTR _lStart$[esp+260]
  268.     mov DWORD PTR tv536[esp+256], ecx
  269.     mov DWORD PTR tv536[esp+260], eax
  270.     fild    QWORD PTR tv536[esp+256]
  271. ; Line 72
  272.     sub esp, 8
  273.     fstp    QWORD PTR tv533[esp+264]
  274.     fld QWORD PTR tv533[esp+264]
  275.     fstp    QWORD PTR tv530[esp+264]
  276.     fild    QWORD PTR _lFrequency$[esp+264]
  277.     movsd   xmm0, QWORD PTR tv530[esp+264]
  278.     fstp    QWORD PTR tv528[esp+264]
  279.     fld QWORD PTR tv528[esp+264]
  280.     fstp    QWORD PTR tv525[esp+264]
  281.     divsd   xmm0, QWORD PTR tv525[esp+264]
  282.     movsd   QWORD PTR [esp], xmm0
  283.     push    OFFSET ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@
  284.     call    _printf
  285. ; Line 73
  286.     mov ecx, DWORD PTR __$ArrayPad$[esp+268]
  287.     add esp, 12                 ; 0000000cH
  288.     xor eax, eax
  289.     pop edi
  290.     pop esi
  291.     pop ebx
  292.     xor ecx, esp
  293.     call    @__security_check_cookie@4
  294.     mov esp, ebp
  295.     pop ebp
  296.     ret 0
  297. _main   ENDP
  298. _TEXT   ENDS
  299. ; Function compile flags: /Ogtpy
  300. ;   COMDAT ?get_const_0x87654321@@YAHXZ
  301. _TEXT   SEGMENT
  302. _a$ = -4                        ; size = 4
  303. ?get_const_0x87654321@@YAHXZ PROC           ; get_const_0x87654321, COMDAT
  304. ; File c:\bn_64\h2\tmul.cpp
  305. ; Line 42
  306.     push    ecx
  307. ; Line 43
  308.     mov DWORD PTR _a$[esp+4], -2023406815   ; 87654321H
  309. ; Line 44
  310.     mov eax, DWORD PTR _a$[esp+4]
  311. ; Line 45
  312.     pop ecx
  313.     ret 0
  314. ?get_const_0x87654321@@YAHXZ ENDP           ; get_const_0x87654321
  315. _TEXT   ENDS
  316. ; Function compile flags: /Ogtpy
  317. ;   COMDAT ?Mul@@YAXPAI00@Z
  318. _TEXT   SEGMENT
  319. _j$1$ = 8                       ; size = 4
  320. _C$ = 8                         ; size = 4
  321. _A$ = 12                        ; size = 4
  322. _B$ = 16                        ; size = 4
  323. ?Mul@@YAXPAI00@Z PROC                   ; Mul, COMDAT
  324. ; File c:\bn_64\h2\tmul.cpp
  325. ; Line 12
  326.     mov eax, DWORD PTR _B$[esp-4]
  327.     push    ebx
  328.     mov ebx, DWORD PTR [eax]
  329.     push    ebp
  330.     push    esi
  331.     push    edi
  332. ; Line 20
  333.     mov edi, DWORD PTR _A$[esp+12]
  334.     push    0
  335.     push    ebx
  336.     push    0
  337.     push    DWORD PTR [edi]
  338.     add eax, 4
  339.     mov DWORD PTR _B$[esp+28], eax
  340.     call    __allmul
  341. ; Line 21
  342.     mov ebp, DWORD PTR _C$[esp+12]
  343.     push    0
  344.     push    ebx
  345.     push    0
  346.     mov DWORD PTR [ebp], eax
  347.     push    DWORD PTR [edi+4]
  348.     mov esi, edx
  349.     call    __allmul
  350.     add eax, esi
  351.     push    0
  352.     mov DWORD PTR [ebp+4], eax
  353.     mov eax, DWORD PTR _A$[esp+16]
  354.     push    ebx
  355.     push    0
  356.     push    DWORD PTR [eax+8]
  357.     mov edi, edx
  358.     adc edi, 0
  359.     call    __allmul
  360.     push    0
  361.     add eax, edi
  362.     mov edi, DWORD PTR _A$[esp+16]
  363.     push    ebx
  364.     push    0
  365.     mov DWORD PTR [ebp+8], eax
  366.     push    DWORD PTR [edi+12]
  367.     mov esi, edx
  368.     adc esi, 0
  369.     call    __allmul
  370.     add eax, esi
  371.     adc edx, 0
  372.     mov DWORD PTR [ebp+12], eax
  373.     add ebp, 16                 ; 00000010H
  374.     add edi, 16                 ; 00000010H
  375. ; Line 24
  376.     mov DWORD PTR [ebp], edx
  377. ; Line 25
  378.     mov DWORD PTR _j$1$[esp+12], 3
  379. $LL6@Mul:
  380. ; Line 28
  381.     mov eax, DWORD PTR _B$[esp+12]
  382. ; Line 33
  383.     push    0
  384.     mov ebx, DWORD PTR [eax]
  385.     push    ebx
  386.     sub edi, 16                 ; 00000010H
  387.     push    0
  388.     push    DWORD PTR [edi]
  389.     add eax, 4
  390.     mov DWORD PTR _A$[esp+28], edi
  391.     mov DWORD PTR _B$[esp+28], eax
  392.     call    __allmul
  393.     add DWORD PTR [ebp-12], eax
  394.     push    0
  395.     push    ebx
  396.     push    0
  397.     push    DWORD PTR [edi+4]
  398.     mov esi, edx
  399.     adc esi, 0
  400.     call    __allmul
  401.     add eax, DWORD PTR [ebp-8]
  402.     mov edi, edx
  403.     adc edi, 0
  404.     add eax, esi
  405.     push    0
  406. ; Line 34
  407.     mov DWORD PTR [ebp-8], eax
  408.     mov eax, DWORD PTR _A$[esp+16]
  409.     push    ebx
  410.     push    0
  411.     push    DWORD PTR [eax+8]
  412.     adc edi, 0
  413.     call    __allmul
  414.     add eax, DWORD PTR [ebp-4]
  415.     push    0
  416.     mov esi, edx
  417.     adc esi, 0
  418.     add eax, edi
  419.     mov edi, DWORD PTR _A$[esp+16]
  420.     push    ebx
  421.     push    0
  422.     mov DWORD PTR [ebp-4], eax
  423.     push    DWORD PTR [edi+12]
  424.     adc esi, 0
  425.     call    __allmul
  426.     add eax, DWORD PTR [ebp]
  427.     lea ebp, DWORD PTR [ebp+4]
  428.     adc edx, 0
  429.     add eax, esi
  430.     mov DWORD PTR [ebp-4], eax
  431.     mov eax, DWORD PTR _j$1$[esp+12]
  432.     adc edx, 0
  433.     dec eax
  434.     add edi, 16                 ; 00000010H
  435. ; Line 37
  436.     mov DWORD PTR [ebp], edx
  437.     mov DWORD PTR _j$1$[esp+12], eax
  438.     test    eax, eax
  439.     jg  $LL6@Mul
  440. ; Line 39
  441.     pop edi
  442.     pop esi
  443.     pop ebp
  444.     pop ebx
  445.     ret 0
  446. ?Mul@@YAXPAI00@Z ENDP                   ; Mul
  447. _TEXT   ENDS
  448. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement