Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.40219.01
- TITLE E:\bn_64\h2\tmul.cpp
- .686P
- .XMM
- include listing.inc
- .model flat
- INCLUDELIB LIBCMT
- INCLUDELIB OLDNAMES
- PUBLIC ?Mul@@YAXPAI00@Z ; Mul
- EXTRN __allmul:PROC
- ; Function compile flags: /Ogtpy
- ; COMDAT ?Mul@@YAXPAI00@Z
- _TEXT SEGMENT
- _s$ = -16 ; size = 8
- tv417 = -8 ; size = 8
- tv408 = -8 ; size = 8
- tv399 = -8 ; size = 8
- tv377 = -8 ; size = 8
- tv364 = -8 ; size = 8
- tv355 = -8 ; size = 8
- tv334 = -8 ; size = 8
- tv325 = -8 ; size = 8
- tv244 = -8 ; size = 8
- tv216 = -8 ; size = 8
- tv198 = -8 ; size = 8
- _C$ = 8 ; size = 4
- _A$ = 12 ; size = 4
- _B$ = 16 ; size = 4
- ?Mul@@YAXPAI00@Z PROC ; Mul, COMDAT
- ; File e:\bn_64\h2\tmul.cpp
- ; Line 10
- sub esp, 16 ; 00000010H
- push ebx
- ; Line 12
- mov ebx, DWORD PTR _B$[esp+16]
- push ebp
- mov ebp, DWORD PTR [ebx]
- push esi
- push edi
- ; Line 20
- mov edi, DWORD PTR _A$[esp+28]
- mov ecx, DWORD PTR [edi]
- xor eax, eax
- push eax
- push ebp
- push eax
- push ecx
- call __allmul
- ; Line 21
- mov esi, DWORD PTR _C$[esp+28]
- mov DWORD PTR [esi], eax
- xor eax, eax
- push eax
- push ebp
- mov DWORD PTR _s$[esp+44], edx
- mov edx, DWORD PTR [edi+4]
- push eax
- push edx
- call __allmul
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+36]
- mov DWORD PTR tv198[esp+36], edx
- adc edx, ecx
- mov DWORD PTR [esi+4], eax
- mov ecx, DWORD PTR [edi+8]
- xor eax, eax
- push eax
- push ebp
- push eax
- push ecx
- mov DWORD PTR _s$[esp+52], edx
- call __allmul
- mov DWORD PTR tv216[esp+36], edx
- mov ecx, edx
- xor edx, edx
- add eax, DWORD PTR _s$[esp+36]
- adc ecx, edx
- mov DWORD PTR [esi+8], eax
- mov edx, DWORD PTR [edi+12]
- xor eax, eax
- push eax
- push ebp
- push eax
- push edx
- mov DWORD PTR _s$[esp+52], ecx
- call __allmul
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+36]
- mov DWORD PTR [esi+12], eax
- adc edx, ecx
- ; Line 33
- xor eax, eax
- mov DWORD PTR [esi+16], edx
- mov ebp, DWORD PTR [ebx+4]
- mov edx, DWORD PTR [edi]
- push eax
- push ebp
- push eax
- push edx
- call __allmul
- mov DWORD PTR tv244[esp+36], edx
- mov ecx, edx
- xor edx, edx
- add eax, DWORD PTR [esi+4]
- adc ecx, edx
- ; Line 34
- mov DWORD PTR [esi+4], eax
- mov edx, DWORD PTR [edi+4]
- xor eax, eax
- push eax
- push ebp
- push eax
- push edx
- mov DWORD PTR _s$[esp+52], ecx
- call __allmul
- mov DWORD PTR tv325[esp+36], edx
- xor edx, edx
- add eax, DWORD PTR [esi+8]
- ; Line 33
- adc DWORD PTR tv325[esp+36], edx
- mov edx, DWORD PTR tv325[esp+36]
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+36]
- adc edx, ecx
- ; Line 34
- mov DWORD PTR [esi+8], eax
- mov ecx, DWORD PTR [edi+8]
- xor eax, eax
- push eax
- push ebp
- push eax
- push ecx
- mov DWORD PTR _s$[esp+52], edx
- call __allmul
- xor ecx, ecx
- add eax, DWORD PTR [esi+12]
- mov DWORD PTR tv334[esp+36], edx
- adc DWORD PTR tv334[esp+36], ecx
- mov ecx, DWORD PTR tv334[esp+36]
- xor edx, edx
- add eax, DWORD PTR _s$[esp+36]
- adc ecx, edx
- mov DWORD PTR [esi+12], eax
- mov edx, DWORD PTR [edi+12]
- xor eax, eax
- push eax
- push ebp
- push eax
- push edx
- mov DWORD PTR _s$[esp+52], ecx
- call __allmul
- xor ebp, ebp
- add eax, DWORD PTR [esi+16]
- adc edx, ebp
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+36]
- mov DWORD PTR [esi+16], eax
- adc edx, ecx
- xor eax, eax
- ; Line 37
- mov DWORD PTR [esi+20], edx
- mov ebp, DWORD PTR [ebx+8]
- mov edx, DWORD PTR [edi]
- push eax
- push ebp
- push eax
- push edx
- call __allmul
- mov DWORD PTR tv355[esp+36], edx
- mov ecx, edx
- xor edx, edx
- add eax, DWORD PTR [esi+8]
- adc ecx, edx
- mov DWORD PTR [esi+8], eax
- mov edx, DWORD PTR [edi+4]
- xor eax, eax
- push eax
- push ebp
- push eax
- push edx
- mov DWORD PTR _s$[esp+52], ecx
- call __allmul
- mov DWORD PTR tv364[esp+36], edx
- xor edx, edx
- add eax, DWORD PTR [esi+12]
- adc DWORD PTR tv364[esp+36], edx
- mov edx, DWORD PTR tv364[esp+36]
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+36]
- adc edx, ecx
- mov DWORD PTR [esi+12], eax
- mov ecx, DWORD PTR [edi+8]
- xor eax, eax
- push eax
- push ebp
- push eax
- push ecx
- mov DWORD PTR _s$[esp+52], edx
- call __allmul
- xor ecx, ecx
- add eax, DWORD PTR [esi+16]
- mov DWORD PTR tv377[esp+36], edx
- ; Line 33
- adc DWORD PTR tv377[esp+36], ecx
- mov ecx, DWORD PTR tv377[esp+36]
- xor edx, edx
- add eax, DWORD PTR _s$[esp+36]
- adc ecx, edx
- ; Line 34
- mov DWORD PTR [esi+16], eax
- mov edx, DWORD PTR [edi+12]
- xor eax, eax
- push eax
- push ebp
- push eax
- push edx
- mov DWORD PTR _s$[esp+52], ecx
- call __allmul
- xor ebp, ebp
- add eax, DWORD PTR [esi+20]
- push ebp
- adc edx, ebp
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+40]
- adc edx, ecx
- mov DWORD PTR [esi+20], eax
- ; Line 37
- mov DWORD PTR [esi+24], edx
- mov ebx, DWORD PTR [ebx+12]
- mov edx, DWORD PTR [edi]
- push ebx
- push ecx
- push edx
- call __allmul
- mov DWORD PTR tv399[esp+36], edx
- mov ecx, edx
- xor edx, edx
- add eax, DWORD PTR [esi+12]
- push ebp
- push ebx
- adc ecx, edx
- mov DWORD PTR [esi+12], eax
- mov edx, DWORD PTR [edi+4]
- push ebp
- push edx
- mov DWORD PTR _s$[esp+52], ecx
- call __allmul
- mov DWORD PTR tv408[esp+36], edx
- xor edx, edx
- add eax, DWORD PTR [esi+16]
- push ebp
- adc DWORD PTR tv408[esp+40], edx
- mov edx, DWORD PTR tv408[esp+40]
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+40]
- push ebx
- mov DWORD PTR [esi+16], eax
- mov eax, DWORD PTR [edi+8]
- push ecx
- adc edx, ecx
- push eax
- mov DWORD PTR _s$[esp+52], edx
- call __allmul
- mov DWORD PTR tv417[esp+36], edx
- xor edx, edx
- add eax, DWORD PTR [esi+20]
- push ebp
- adc DWORD PTR tv417[esp+40], edx
- mov edx, DWORD PTR tv417[esp+40]
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+40]
- push ebx
- mov DWORD PTR [esi+20], eax
- mov eax, DWORD PTR [edi+12]
- push ecx
- adc edx, ecx
- push eax
- mov DWORD PTR _s$[esp+52], edx
- call __allmul
- xor edi, edi
- add eax, DWORD PTR [esi+24]
- adc edx, edi
- xor ecx, ecx
- add eax, DWORD PTR _s$[esp+36]
- adc edx, ecx
- mov DWORD PTR [esi+24], eax
- pop edi
- mov DWORD PTR [esi+28], edx
- pop esi
- pop ebp
- pop ebx
- ; Line 39
- add esp, 16 ; 00000010H
- ret 0
- ?Mul@@YAXPAI00@Z ENDP ; Mul
- _TEXT ENDS
- PUBLIC ?get_const_0x87654321@@YAHXZ ; get_const_0x87654321
- ; Function compile flags: /Ogtpy
- ; COMDAT ?get_const_0x87654321@@YAHXZ
- _TEXT SEGMENT
- _a$ = -4 ; size = 4
- ?get_const_0x87654321@@YAHXZ PROC ; get_const_0x87654321, COMDAT
- ; 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
- PUBLIC ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@ ; `string'
- PUBLIC ??_C@_0BC@NEGKPEGK@Something?5wrong?$CB?6?$AA@ ; `string'
- PUBLIC __$ArrayPad$
- PUBLIC _main
- EXTRN _printf:PROC
- EXTRN __imp__QueryPerformanceCounter@4:PROC
- EXTRN __imp__QueryPerformanceFrequency@4:PROC
- EXTRN ___security_cookie:DWORD
- EXTRN __fltused:DWORD
- EXTRN @__security_check_cookie@4:PROC
- ; 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'
- ; Function compile flags: /Ogtpy
- CONST ENDS
- ; COMDAT _main
- _TEXT SEGMENT
- tv248 = -244 ; size = 4
- _a$66727 = -244 ; size = 4
- tv414 = -240 ; size = 4
- tv1012 = -236 ; size = 8
- tv1022 = -228 ; size = 8
- tv1047 = -220 ; size = 8
- tv906 = -212 ; size = 8
- tv1089 = -204 ; size = 8
- tv943 = -196 ; size = 8
- tv932 = -188 ; size = 8
- tv954 = -180 ; size = 8
- tv992 = -172 ; size = 8
- tv965 = -164 ; size = 8
- tv884 = -156 ; size = 8
- tv895 = -148 ; size = 8
- tv1002 = -140 ; size = 8
- _lStart$ = -132 ; size = 8
- _lEnd$ = -124 ; size = 8
- _lFrequency$ = -116 ; size = 8
- tv872 = -108 ; size = 8
- tv1107 = -100 ; size = 8
- tv620 = -100 ; size = 8
- _A$ = -100 ; size = 16
- tv1098 = -84 ; size = 8
- _B$ = -84 ; size = 16
- _RES$ = -68 ; size = 32
- _C$ = -36 ; size = 32
- __$ArrayPad$ = -4 ; size = 4
- _main PROC ; COMDAT
- ; Line 48
- sub esp, 244 ; 000000f4H
- mov eax, DWORD PTR ___security_cookie
- xor eax, esp
- mov DWORD PTR __$ArrayPad$[esp+244], eax
- ; Line 52
- mov DWORD PTR _RES$[esp+244], -677098943 ; d7a44a41H
- mov DWORD PTR _RES$[esp+248], -152794788 ; f6e4895cH
- mov DWORD PTR _RES$[esp+252], 371509368 ; 1624c878H
- mov DWORD PTR _RES$[esp+256], 895813525 ; 35650795H
- ; Line 53
- mov DWORD PTR _RES$[esp+260], -1520651729 ; a55cb22fH
- mov DWORD PTR _RES$[esp+264], -2044955885 ; 861c7313H
- mov DWORD PTR _RES$[esp+268], 1725707255 ; 66dc33f7H
- mov DWORD PTR _RES$[esp+272], 1201403099 ; 479bf4dbH
- ; Line 55
- xor eax, eax
- mov edx, -2023406815 ; 87654321H
- $LL10@main:
- mov DWORD PTR _a$66727[esp+244], edx
- mov ecx, DWORD PTR _a$66727[esp+244]
- mov DWORD PTR _B$[esp+eax+244], ecx
- mov DWORD PTR _A$[esp+eax+244], ecx
- add eax, 4
- cmp eax, 16 ; 00000010H
- jl SHORT $LL10@main
- ; Line 57
- push ebx
- push ebp
- push esi
- push edi
- lea eax, DWORD PTR _lFrequency$[esp+260]
- push eax
- call DWORD PTR __imp__QueryPerformanceFrequency@4
- ; Line 58
- lea ecx, DWORD PTR _lStart$[esp+260]
- push ecx
- call DWORD PTR __imp__QueryPerformanceCounter@4
- ; Line 59
- mov esi, DWORD PTR _A$[esp+260]
- mov ebx, DWORD PTR _B$[esp+260]
- xor edi, edi
- push edi
- push esi
- xor eax, eax
- push eax
- push ebx
- call __allmul
- mov ecx, DWORD PTR _A$[esp+264]
- mov ebp, eax
- xor eax, eax
- push eax
- mov DWORD PTR tv872[esp+268], edx
- push ebx
- xor edx, edx
- push edx
- push ecx
- call __allmul
- mov ecx, DWORD PTR _A$[esp+268]
- mov DWORD PTR tv884[esp+260], eax
- xor eax, eax
- push eax
- mov DWORD PTR tv884[esp+268], edx
- push ebx
- xor edx, edx
- push edx
- push ecx
- call __allmul
- mov ecx, DWORD PTR _A$[esp+272]
- mov DWORD PTR tv895[esp+260], eax
- xor eax, eax
- push eax
- mov DWORD PTR tv895[esp+268], edx
- push ebx
- xor edx, edx
- push edx
- push ecx
- call __allmul
- mov ebx, DWORD PTR _B$[esp+264]
- push edi
- mov DWORD PTR tv906[esp+264], eax
- push esi
- xor eax, eax
- push eax
- push ebx
- mov DWORD PTR tv906[esp+280], edx
- call __allmul
- mov DWORD PTR tv932[esp+260], eax
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+268]
- push eax
- xor eax, eax
- push eax
- push ebx
- mov DWORD PTR tv932[esp+280], edx
- call __allmul
- mov DWORD PTR tv943[esp+260], eax
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+272]
- push eax
- xor eax, eax
- push eax
- push ebx
- mov DWORD PTR tv943[esp+280], edx
- call __allmul
- mov DWORD PTR tv954[esp+260], eax
- mov DWORD PTR tv954[esp+264], edx
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+276]
- push eax
- xor eax, eax
- push eax
- push ebx
- call __allmul
- mov ebx, DWORD PTR _B$[esp+268]
- push edi
- mov DWORD PTR tv965[esp+264], eax
- push esi
- xor eax, eax
- push eax
- push ebx
- mov DWORD PTR tv965[esp+280], edx
- call __allmul
- mov DWORD PTR tv992[esp+260], eax
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+268]
- push eax
- xor eax, eax
- push eax
- push ebx
- mov DWORD PTR tv992[esp+280], edx
- call __allmul
- mov DWORD PTR tv1002[esp+260], eax
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+272]
- push eax
- xor eax, eax
- push eax
- push ebx
- mov DWORD PTR tv1002[esp+280], edx
- call __allmul
- mov DWORD PTR tv1012[esp+260], eax
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+276]
- push eax
- xor eax, eax
- push eax
- push ebx
- mov DWORD PTR tv1012[esp+280], edx
- call __allmul
- mov ebx, DWORD PTR _B$[esp+272]
- mov DWORD PTR tv1022[esp+260], eax
- xor eax, eax
- push eax
- push ebx
- push edi
- push esi
- mov DWORD PTR tv1022[esp+280], edx
- call __allmul
- xor esi, esi
- push esi
- mov DWORD PTR tv1047[esp+264], eax
- push ebx
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+276]
- push eax
- mov DWORD PTR tv1047[esp+280], edx
- call __allmul
- push esi
- mov DWORD PTR tv1089[esp+264], eax
- push ebx
- xor eax, eax
- push eax
- mov eax, DWORD PTR _A$[esp+280]
- push eax
- mov DWORD PTR tv1089[esp+280], edx
- call __allmul
- push esi
- mov DWORD PTR tv1098[esp+264], eax
- xor eax, eax
- push ebx
- push eax
- mov eax, DWORD PTR _A$[esp+284]
- mov DWORD PTR tv1098[esp+276], edx
- push eax
- call __allmul
- mov DWORD PTR tv1107[esp+260], eax
- mov DWORD PTR tv1107[esp+264], edx
- mov DWORD PTR tv248[esp+260], 900 ; 00000384H
- npad 12
- $LL78@main:
- ; Line 61
- mov DWORD PTR tv414[esp+260], 1000000 ; 000f4240H
- npad 8
- $LL79@main:
- ; Line 63
- mov esi, DWORD PTR tv872[esp+264]
- mov eax, ebp
- mov DWORD PTR _C$[esp+260], eax
- xor eax, eax
- add esi, DWORD PTR tv884[esp+260]
- adc eax, DWORD PTR tv884[esp+264]
- xor ecx, ecx
- add eax, DWORD PTR tv895[esp+260]
- adc ecx, DWORD PTR tv895[esp+264]
- xor edx, edx
- add ecx, DWORD PTR tv906[esp+260]
- adc edx, DWORD PTR tv906[esp+264]
- xor edi, edi
- add esi, DWORD PTR tv932[esp+260]
- adc edi, DWORD PTR tv932[esp+264]
- xor ebx, ebx
- mov DWORD PTR _C$[esp+264], esi
- xor esi, esi
- add edi, eax
- adc esi, ebx
- add edi, DWORD PTR tv943[esp+260]
- adc esi, DWORD PTR tv943[esp+264]
- xor eax, eax
- add ecx, esi
- adc eax, ebx
- add ecx, DWORD PTR tv954[esp+260]
- adc eax, DWORD PTR tv954[esp+264]
- xor esi, esi
- add eax, edx
- adc esi, ebx
- add eax, DWORD PTR tv965[esp+260]
- adc esi, DWORD PTR tv965[esp+264]
- add edi, DWORD PTR tv992[esp+260]
- adc ebx, DWORD PTR tv992[esp+264]
- xor edx, edx
- mov DWORD PTR _C$[esp+268], edi
- xor edi, edi
- add ecx, ebx
- adc edx, edi
- add ecx, DWORD PTR tv1002[esp+260]
- adc edx, DWORD PTR tv1002[esp+264]
- xor ebx, ebx
- mov edi, ecx
- xor ecx, ecx
- add eax, edx
- adc ecx, ebx
- add eax, DWORD PTR tv1012[esp+260]
- adc ecx, DWORD PTR tv1012[esp+264]
- xor edx, edx
- add ecx, esi
- adc edx, ebx
- add ecx, DWORD PTR tv1022[esp+260]
- adc edx, DWORD PTR tv1022[esp+264]
- add edi, DWORD PTR tv1047[esp+260]
- adc ebx, DWORD PTR tv1047[esp+264]
- xor esi, esi
- mov DWORD PTR _C$[esp+272], edi
- xor edi, edi
- add eax, ebx
- adc esi, edi
- add eax, DWORD PTR tv1089[esp+260]
- adc esi, DWORD PTR tv1089[esp+264]
- mov DWORD PTR _C$[esp+276], eax
- xor eax, eax
- add ecx, esi
- adc eax, edi
- add ecx, DWORD PTR tv1098[esp+260]
- adc eax, DWORD PTR tv1098[esp+264]
- mov DWORD PTR _C$[esp+280], ecx
- xor ecx, ecx
- xor esi, esi
- add edx, eax
- adc ecx, esi
- add edx, DWORD PTR tv1107[esp+260]
- adc ecx, DWORD PTR tv1107[esp+264]
- dec DWORD PTR tv414[esp+260]
- mov DWORD PTR _C$[esp+284], edx
- mov DWORD PTR _C$[esp+288], ecx
- jne $LL79@main
- ; Line 65
- lea eax, DWORD PTR [edi+32]
- xor ecx, ecx
- npad 2
- $LL14@main:
- mov edx, DWORD PTR _RES$[esp+ecx+260]
- cmp edx, DWORD PTR _C$[esp+ecx+260]
- jne SHORT $LN16@main
- sub eax, 4
- add ecx, 4
- cmp eax, 4
- jae SHORT $LL14@main
- jmp SHORT $LN6@main
- $LN16@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 tv248[esp+260]
- jne $LL78@main
- ; Line 70
- lea eax, DWORD PTR _lEnd$[esp+260]
- push eax
- call DWORD PTR __imp__QueryPerformanceCounter@4
- ; Line 71
- mov ecx, DWORD PTR _lEnd$[esp+260]
- sub ecx, DWORD PTR _lStart$[esp+260]
- mov edx, DWORD PTR _lEnd$[esp+264]
- sbb edx, DWORD PTR _lStart$[esp+264]
- ; Line 72
- mov DWORD PTR tv620[esp+260], ecx
- mov DWORD PTR tv620[esp+264], edx
- fild QWORD PTR tv620[esp+260]
- fild QWORD PTR _lFrequency$[esp+260]
- sub esp, 8
- fdivp ST(1), ST(0)
- fstp QWORD PTR [esp]
- push OFFSET ??_C@_0P@JENDLDFG@Time?5?$DN?5?$CFg?5sec?6?$AA@
- call _printf
- ; Line 73
- mov ecx, DWORD PTR __$ArrayPad$[esp+272]
- add esp, 12 ; 0000000cH
- pop edi
- pop esi
- pop ebp
- pop ebx
- xor ecx, esp
- xor eax, eax
- call @__security_check_cookie@4
- add esp, 244 ; 000000f4H
- ret 0
- _main ENDP
- _TEXT ENDS
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement