Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Listing generated by Microsoft (R) Optimizing Compiler Version 17.00.50522.1
- TITLE C:\bn_64\h2\tmul.cpp
- .686P
- .XMM
- include listing.inc
- .model flat
- INCLUDELIB LIBCMT
- INCLUDELIB OLDNAMES
- PUBLIC ?Mul@@YAXPAI00@Z ; Mul
- PUBLIC ?get_const_0x87654321@@YAHXZ ; get_const_0x87654321
- PUBLIC _main
- PUBLIC ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@ ; `string'
- PUBLIC ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@ ; `string'
- EXTRN _printf:PROC
- EXTRN __imp__QueryPerformanceCounter@4:PROC
- EXTRN __imp__QueryPerformanceFrequency@4:PROC
- EXTRN @__security_check_cookie@4:PROC
- EXTRN __allmul:PROC
- EXTRN ___security_cookie:DWORD
- EXTRN __fltused:DWORD
- ; COMDAT ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@
- CONST SEGMENT
- ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@ DB 'Time = %g sec', 0aH, 00H ; `string'
- CONST ENDS
- ; COMDAT ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@
- CONST SEGMENT
- ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@ DB 'Something wrong!', 0aH
- DB 00H ; `string'
- CONST ENDS
- ; Function compile flags: /Ogtpy
- ; COMDAT _main
- _TEXT SEGMENT
- $T1 = -200 ; size = 4
- tv536 = -200 ; size = 8
- tv533 = -200 ; size = 8
- tv530 = -200 ; size = 8
- tv528 = -200 ; size = 8
- $T2 = -192 ; size = 4
- tv501 = -188 ; size = 4
- _a$3 = -188 ; size = 4
- $T4 = -184 ; size = 4
- tv517 = -180 ; size = 4
- _j$1$ = -176 ; size = 4
- tv500 = -172 ; size = 4
- tv494 = -168 ; size = 4
- tv503 = -164 ; size = 4
- tv504 = -160 ; size = 4
- tv505 = -156 ; size = 4
- _s$1$ = -152 ; size = 4
- _s$9$ = -148 ; size = 4
- tv525 = -144 ; size = 8
- _s$5 = -144 ; size = 8
- tv502 = -132 ; size = 4
- _lStart$ = -128 ; size = 8
- _lEnd$ = -120 ; size = 8
- _lFrequency$ = -112 ; size = 8
- _A$ = -104 ; size = 16
- _RES$ = -84 ; size = 32
- _C$ = -52 ; size = 32
- _B$ = -20 ; size = 16
- __$ArrayPad$ = -4 ; size = 4
- _main PROC ; COMDAT
- ; File c:\bn_64\h2\tmul.cpp
- ; Line 48
- push ebp
- mov ebp, esp
- and esp, -64 ; ffffffc0H
- sub esp, 244 ; 000000f4H
- mov eax, DWORD PTR ___security_cookie
- xor eax, esp
- mov DWORD PTR __$ArrayPad$[esp+244], eax
- push ebx
- push esi
- push edi
- ; Line 52
- mov DWORD PTR _RES$[esp+256], -677098943 ; d7a44a41H
- mov DWORD PTR _RES$[esp+260], -152794788 ; f6e4895cH
- mov DWORD PTR _RES$[esp+264], 371509368 ; 1624c878H
- mov DWORD PTR _RES$[esp+268], 895813525 ; 35650795H
- ; Line 53
- mov DWORD PTR _RES$[esp+272], -1520651729 ; a55cb22fH
- mov DWORD PTR _RES$[esp+276], -2044955885 ; 861c7313H
- mov DWORD PTR _RES$[esp+280], 1725707255 ; 66dc33f7H
- mov DWORD PTR _RES$[esp+284], 1201403099 ; 479bf4dbH
- ; Line 55
- xor ecx, ecx
- npad 9
- $LL10@main:
- mov DWORD PTR _a$3[esp+256], -2023406815 ; 87654321H
- mov eax, DWORD PTR _a$3[esp+256]
- mov DWORD PTR _B$[esp+ecx+256], eax
- mov DWORD PTR _A$[esp+ecx+256], eax
- add ecx, 4
- cmp ecx, 16 ; 00000010H
- jl SHORT $LL10@main
- ; Line 57
- lea eax, DWORD PTR _lFrequency$[esp+256]
- push eax
- call DWORD PTR __imp__QueryPerformanceFrequency@4
- ; Line 58
- lea eax, DWORD PTR _lStart$[esp+256]
- push eax
- call DWORD PTR __imp__QueryPerformanceCounter@4
- mov esi, DWORD PTR _B$[esp+256]
- push 0
- push esi
- push 0
- push DWORD PTR _A$[esp+268]
- call __allmul
- push 0
- push esi
- push 0
- push DWORD PTR _A$[esp+272]
- mov DWORD PTR _s$1$[esp+272], eax
- mov DWORD PTR _s$9$[esp+272], edx
- call __allmul
- push 0
- push esi
- push 0
- push DWORD PTR _A$[esp+276]
- mov ebx, eax
- mov edi, edx
- mov DWORD PTR tv500[esp+272], ebx
- mov DWORD PTR tv501[esp+272], edi
- call __allmul
- push 0
- push esi
- push 0
- push DWORD PTR _A$[esp+280]
- mov DWORD PTR tv502[esp+272], eax
- mov DWORD PTR tv503[esp+272], edx
- call __allmul
- mov DWORD PTR tv504[esp+256], eax
- mov DWORD PTR tv505[esp+256], edx
- mov DWORD PTR tv494[esp+256], 100 ; 00000064H
- npad 8
- $LL7@main:
- ; Line 61
- mov DWORD PTR tv517[esp+256], 1000000 ; 000f4240H
- npad 8
- $LL4@main:
- ; Line 63
- mov eax, DWORD PTR _s$1$[esp+256]
- mov DWORD PTR _C$[esp+256], eax
- mov eax, DWORD PTR _s$9$[esp+256]
- xor ecx, ecx
- add eax, ebx
- adc ecx, edi
- xor edx, edx
- add ecx, DWORD PTR tv502[esp+256]
- mov DWORD PTR _C$[esp+260], eax
- adc edx, DWORD PTR tv503[esp+256]
- xor eax, eax
- add edx, DWORD PTR tv504[esp+256]
- mov DWORD PTR _C$[esp+264], ecx
- adc eax, DWORD PTR tv505[esp+256]
- lea esi, DWORD PTR _B$[esp+260]
- mov DWORD PTR _C$[esp+268], edx
- lea ecx, DWORD PTR _A$[esp+272]
- lea edi, DWORD PTR _C$[esp+272]
- mov DWORD PTR _C$[esp+272], eax
- mov DWORD PTR _j$1$[esp+256], 3
- $LL20@main:
- mov ebx, DWORD PTR [esi]
- push 0
- push ebx
- sub ecx, 16 ; 00000010H
- push 0
- push DWORD PTR [ecx]
- add esi, 4
- sub edi, 12 ; 0000000cH
- mov DWORD PTR $T2[esp+272], ecx
- mov DWORD PTR $T1[esp+272], esi
- mov DWORD PTR $T4[esp+272], edi
- call __allmul
- add DWORD PTR [edi], eax
- mov eax, DWORD PTR $T2[esp+256]
- push 0
- push ebx
- push 0
- push DWORD PTR [eax+4]
- mov esi, edx
- adc esi, 0
- call __allmul
- mov ecx, DWORD PTR $T4[esp+256]
- mov edi, edx
- add eax, DWORD PTR [ecx+4]
- push 0
- adc edi, 0
- add eax, esi
- push ebx
- mov DWORD PTR [ecx+4], eax
- mov eax, DWORD PTR $T2[esp+264]
- push 0
- push DWORD PTR [eax+8]
- adc edi, 0
- call __allmul
- mov ecx, DWORD PTR $T4[esp+256]
- mov esi, edx
- add eax, DWORD PTR [ecx+8]
- push 0
- adc esi, 0
- add eax, edi
- mov edi, ecx
- push ebx
- mov DWORD PTR [edi+8], eax
- mov eax, DWORD PTR $T2[esp+264]
- push 0
- push DWORD PTR [eax+12]
- adc esi, 0
- call __allmul
- add eax, DWORD PTR [edi+12]
- mov ecx, DWORD PTR $T2[esp+256]
- adc edx, 0
- add eax, esi
- mov esi, DWORD PTR $T1[esp+256]
- adc edx, 0
- mov DWORD PTR [edi+12], eax
- mov DWORD PTR _s$5[esp+256], eax
- mov eax, DWORD PTR _j$1$[esp+256]
- add edi, 16 ; 00000010H
- dec eax
- add ecx, 16 ; 00000010H
- mov DWORD PTR _s$5[esp+260], edx
- mov DWORD PTR [edi], edx
- mov DWORD PTR _j$1$[esp+256], eax
- test eax, eax
- jg $LL20@main
- ; Line 61
- dec DWORD PTR tv517[esp+256]
- mov ebx, DWORD PTR tv500[esp+256]
- mov edi, DWORD PTR tv501[esp+256]
- jne $LL4@main
- ; Line 65
- lea ecx, DWORD PTR _RES$[esp+256]
- lea edx, DWORD PTR _C$[esp+256]
- mov esi, 28 ; 0000001cH
- $LL56@main:
- mov eax, DWORD PTR [ecx]
- cmp eax, DWORD PTR [edx]
- jne SHORT $LN55@main
- add ecx, 4
- add edx, 4
- sub esi, 4
- jae SHORT $LL56@main
- jmp SHORT $LN6@main
- $LN55@main:
- ; Line 67
- push OFFSET ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@
- call _printf
- add esp, 4
- $LN6@main:
- ; Line 59
- dec DWORD PTR tv494[esp+256]
- jne $LL7@main
- ; Line 70
- lea eax, DWORD PTR _lEnd$[esp+256]
- push eax
- call DWORD PTR __imp__QueryPerformanceCounter@4
- ; Line 71
- mov ecx, DWORD PTR _lEnd$[esp+256]
- sub ecx, DWORD PTR _lStart$[esp+256]
- mov eax, DWORD PTR _lEnd$[esp+260]
- sbb eax, DWORD PTR _lStart$[esp+260]
- mov DWORD PTR tv536[esp+256], ecx
- mov DWORD PTR tv536[esp+260], eax
- fild QWORD PTR tv536[esp+256]
- ; Line 72
- sub esp, 8
- fstp QWORD PTR tv533[esp+264]
- fld QWORD PTR tv533[esp+264]
- fstp QWORD PTR tv530[esp+264]
- fild QWORD PTR _lFrequency$[esp+264]
- movsd xmm0, QWORD PTR tv530[esp+264]
- fstp QWORD PTR tv528[esp+264]
- fld QWORD PTR tv528[esp+264]
- fstp QWORD PTR tv525[esp+264]
- divsd xmm0, QWORD PTR tv525[esp+264]
- movsd QWORD PTR [esp], xmm0
- push OFFSET ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@
- call _printf
- ; Line 73
- mov ecx, DWORD PTR __$ArrayPad$[esp+268]
- add esp, 12 ; 0000000cH
- xor eax, eax
- pop edi
- pop esi
- pop ebx
- xor ecx, esp
- call @__security_check_cookie@4
- mov esp, ebp
- pop ebp
- ret 0
- _main ENDP
- _TEXT ENDS
- ; Function compile flags: /Ogtpy
- ; COMDAT ?get_const_0x87654321@@YAHXZ
- _TEXT SEGMENT
- _a$ = -4 ; size = 4
- ?get_const_0x87654321@@YAHXZ PROC ; get_const_0x87654321, COMDAT
- ; File c:\bn_64\h2\tmul.cpp
- ; Line 42
- push ecx
- ; Line 43
- mov DWORD PTR _a$[esp+4], -2023406815 ; 87654321H
- ; Line 44
- mov eax, DWORD PTR _a$[esp+4]
- ; Line 45
- pop ecx
- ret 0
- ?get_const_0x87654321@@YAHXZ ENDP ; get_const_0x87654321
- _TEXT ENDS
- ; Function compile flags: /Ogtpy
- ; COMDAT ?Mul@@YAXPAI00@Z
- _TEXT SEGMENT
- _j$1$ = 8 ; size = 4
- _C$ = 8 ; size = 4
- _A$ = 12 ; size = 4
- _B$ = 16 ; size = 4
- ?Mul@@YAXPAI00@Z PROC ; Mul, COMDAT
- ; File c:\bn_64\h2\tmul.cpp
- ; Line 12
- mov eax, DWORD PTR _B$[esp-4]
- push ebx
- mov ebx, DWORD PTR [eax]
- push ebp
- push esi
- push edi
- ; Line 20
- mov edi, DWORD PTR _A$[esp+12]
- push 0
- push ebx
- push 0
- push DWORD PTR [edi]
- add eax, 4
- mov DWORD PTR _B$[esp+28], eax
- call __allmul
- ; Line 21
- mov ebp, DWORD PTR _C$[esp+12]
- push 0
- push ebx
- push 0
- mov DWORD PTR [ebp], eax
- push DWORD PTR [edi+4]
- mov esi, edx
- call __allmul
- add eax, esi
- push 0
- mov DWORD PTR [ebp+4], eax
- mov eax, DWORD PTR _A$[esp+16]
- push ebx
- push 0
- push DWORD PTR [eax+8]
- mov edi, edx
- adc edi, 0
- call __allmul
- push 0
- add eax, edi
- mov edi, DWORD PTR _A$[esp+16]
- push ebx
- push 0
- mov DWORD PTR [ebp+8], eax
- push DWORD PTR [edi+12]
- mov esi, edx
- adc esi, 0
- call __allmul
- add eax, esi
- adc edx, 0
- mov DWORD PTR [ebp+12], eax
- add ebp, 16 ; 00000010H
- add edi, 16 ; 00000010H
- ; Line 24
- mov DWORD PTR [ebp], edx
- ; Line 25
- mov DWORD PTR _j$1$[esp+12], 3
- $LL6@Mul:
- ; Line 28
- mov eax, DWORD PTR _B$[esp+12]
- ; Line 33
- push 0
- mov ebx, DWORD PTR [eax]
- push ebx
- sub edi, 16 ; 00000010H
- push 0
- push DWORD PTR [edi]
- add eax, 4
- mov DWORD PTR _A$[esp+28], edi
- mov DWORD PTR _B$[esp+28], eax
- call __allmul
- add DWORD PTR [ebp-12], eax
- push 0
- push ebx
- push 0
- push DWORD PTR [edi+4]
- mov esi, edx
- adc esi, 0
- call __allmul
- add eax, DWORD PTR [ebp-8]
- mov edi, edx
- adc edi, 0
- add eax, esi
- push 0
- ; Line 34
- mov DWORD PTR [ebp-8], eax
- mov eax, DWORD PTR _A$[esp+16]
- push ebx
- push 0
- push DWORD PTR [eax+8]
- adc edi, 0
- call __allmul
- add eax, DWORD PTR [ebp-4]
- push 0
- mov esi, edx
- adc esi, 0
- add eax, edi
- mov edi, DWORD PTR _A$[esp+16]
- push ebx
- push 0
- mov DWORD PTR [ebp-4], eax
- push DWORD PTR [edi+12]
- adc esi, 0
- call __allmul
- add eax, DWORD PTR [ebp]
- lea ebp, DWORD PTR [ebp+4]
- adc edx, 0
- add eax, esi
- mov DWORD PTR [ebp-4], eax
- mov eax, DWORD PTR _j$1$[esp+12]
- adc edx, 0
- dec eax
- add edi, 16 ; 00000010H
- ; Line 37
- mov DWORD PTR [ebp], edx
- mov DWORD PTR _j$1$[esp+12], eax
- test eax, eax
- jg $LL6@Mul
- ; Line 39
- pop edi
- pop esi
- pop ebp
- pop ebx
- ret 0
- ?Mul@@YAXPAI00@Z ENDP ; Mul
- _TEXT ENDS
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement