Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; mark_description "Intel(R) C++ Compiler XE for applications running on IA-32, Version 12.1.5.344 Build 20120612";
- ; mark_description "-Fatmul2.asm -O3";
- .686P
- .387
- OPTION DOTNAME
- ASSUME CS:FLAT,DS:FLAT,SS:FLAT
- ;ident "-defaultlib:uuid.lib"
- ;ident "-defaultlib:uuid.lib"
- _TEXT SEGMENT PARA PUBLIC FLAT 'CODE'
- ; COMDAT _main
- TXTST0:
- ; -- Begin _main
- ; mark_begin;
- IF @Version GE 800
- .MMX
- ELSEIF @Version GE 612
- .MMX
- MMWORD TEXTEQU <QWORD>
- ENDIF
- IF @Version GE 800
- .XMM
- ELSEIF @Version GE 614
- .XMM
- XMMWORD TEXTEQU <OWORD>
- ENDIF
- ALIGN 16
- PUBLIC _main
- _main PROC NEAR
- .B1.1: ; Preds .B1.0
- push ebp ;62.1
- mov ebp, esp ;62.1
- and esp, -128 ;62.1
- push esi ;62.1
- push edi ;62.1
- push ebx ;62.1
- sub esp, 372 ;62.1
- push 3 ;62.1
- call ___intel_new_proc_init ;62.1
- ; LOE
- .B1.22: ; Preds .B1.1
- stmxcsr DWORD PTR [132+esp] ;62.1
- mov DWORD PTR [212+esp], -677098943 ;67.28
- or DWORD PTR [132+esp], 32768 ;62.1
- ldmxcsr DWORD PTR [132+esp] ;62.1
- mov DWORD PTR [216+esp], -152794788 ;67.28
- mov DWORD PTR [220+esp], 371509368 ;67.28
- mov DWORD PTR [224+esp], 895813525 ;67.28
- mov DWORD PTR [228+esp], -1520651729 ;67.28
- mov DWORD PTR [232+esp], -2044955885 ;67.28
- mov DWORD PTR [236+esp], 1725707255 ;67.28
- mov DWORD PTR [240+esp], 1201403099 ;67.28
- push OFFSET FLAT: ??_C@_02A@wb?$AA@ ;72.5
- push OFFSET FLAT: ??_C@_07A@tmp?4$$$?$AA@ ;72.5
- call _fopen ;72.5
- ; LOE eax
- .B1.21: ; Preds .B1.22
- mov ebx, eax ;72.5
- ; LOE ebx
- .B1.2: ; Preds .B1.21
- mov DWORD PTR [204+esp], OFFSET FLAT: ?Mul@@YAXPAI00@Z ;72.5
- lea eax, DWORD PTR [204+esp] ;72.5
- push ebx ;72.5
- push 4 ;72.5
- push 1 ;72.5
- push eax ;72.5
- call _fwrite ;72.5
- ; LOE ebx
- .B1.3: ; Preds .B1.2
- push ebx ;72.5
- call _fclose ;72.5
- ; LOE
- .B1.4: ; Preds .B1.3
- push OFFSET FLAT: ??_C@_02A@rb?$AA@ ;73.11
- push OFFSET FLAT: ??_C@_07A@tmp?4$$$?$AA@ ;73.11
- call _fopen ;73.11
- ; LOE eax
- .B1.23: ; Preds .B1.4
- mov ebx, eax ;73.11
- ; LOE ebx
- .B1.5: ; Preds .B1.23
- mov DWORD PTR [236+esp], 0 ;73.11
- lea eax, DWORD PTR [236+esp] ;73.11
- push ebx ;73.11
- push 4 ;73.11
- push 1 ;73.11
- push eax ;73.11
- call _fread ;73.11
- ; LOE ebx
- .B1.6: ; Preds .B1.5
- push ebx ;73.11
- call _fclose ;73.11
- ; LOE
- .B1.24: ; Preds .B1.6
- add esp, 60 ;73.11
- ; LOE
- .B1.7: ; Preds .B1.24
- mov eax, -2023406815 ;77.23
- lea edx, DWORD PTR [176+esp] ;80.5
- mov edi, DWORD PTR [196+esp] ;73.11
- movd xmm0, eax ;77.23
- pshufd xmm1, xmm0, 0 ;77.23
- movdqa XMMWORD PTR [240+esp], xmm1 ;77.16
- movdqa XMMWORD PTR [256+esp], xmm1 ;77.9
- push edx ;80.5
- call DWORD PTR [__imp__QueryPerformanceFrequency@4] ;80.5
- ; LOE edi
- .B1.8: ; Preds .B1.7
- lea eax, DWORD PTR [184+esp] ;81.5
- push eax ;81.5
- call DWORD PTR [__imp__QueryPerformanceCounter@4] ;81.5
- ; LOE edi
- .B1.9: ; Preds .B1.8
- xor eax, eax ;82.5
- lea esi, DWORD PTR [128+esp] ;82.5
- mov DWORD PTR [164+esp], edi ;82.5
- mov edi, eax ;82.5
- lea ebx, DWORD PTR [208+esp] ;82.5
- ; LOE ebx esi edi
- .B1.10: ; Preds .B1.15 .B1.9
- xor eax, eax ;84.9
- mov DWORD PTR [160+esp], edi ;84.9
- mov edi, eax ;84.9
- mov ebx, DWORD PTR [164+esp] ;84.9
- ; LOE ebx esi edi
- .B1.11: ; Preds .B1.12 .B1.10
- lea edx, DWORD PTR [240+esp] ;86.13
- push edx ;86.13
- lea ecx, DWORD PTR [260+esp] ;86.13
- push ecx ;86.13
- push esi ;86.13
- call ebx ;86.13
- ; LOE ebx esi edi
- .B1.25: ; Preds .B1.11
- add esp, 12 ;86.13
- ; LOE ebx esi edi
- .B1.12: ; Preds .B1.25
- inc edi ;84.9
- cmp edi, 1000000 ;84.9
- jb .B1.11 ; Prob 99% ;84.9
- ; LOE ebx esi edi
- .B1.13: ; Preds .B1.12
- mov edi, DWORD PTR [160+esp] ;
- lea ebx, DWORD PTR [208+esp] ;
- push 32 ;88.13
- push esi ;88.13
- push ebx ;88.13
- call __intel_fast_memcmp ;88.13
- ; LOE eax ebx esi edi
- .B1.26: ; Preds .B1.13
- add esp, 12 ;88.13
- test eax, eax ;88.42
- je .B1.15 ; Prob 78% ;88.42
- ; LOE ebx esi edi
- .B1.14: ; Preds .B1.26
- push OFFSET FLAT: ??_C@_0BC@A@Something?5wrong?$CB?6?$AA@ ;90.13
- call _printf ;90.13
- ; LOE ebx esi edi
- .B1.27: ; Preds .B1.14
- add esp, 4 ;90.13
- ; LOE ebx esi edi
- .B1.15: ; Preds .B1.27 .B1.26
- inc edi ;82.5
- cmp edi, 1000 ;82.5
- jb .B1.10 ; Prob 96% ;82.5
- ; LOE ebx esi edi
- .B1.16: ; Preds .B1.15
- lea eax, DWORD PTR [160+esp] ;93.5
- push eax ;93.5
- call DWORD PTR [__imp__QueryPerformanceCounter@4] ;93.5
- ; LOE
- .B1.17: ; Preds .B1.16
- fild QWORD PTR [176+esp] ;95.5
- mov eax, DWORD PTR [160+esp] ;95.5
- sub eax, DWORD PTR [184+esp] ;95.5
- mov edx, DWORD PTR [164+esp] ;95.5
- sbb edx, DWORD PTR [188+esp] ;95.5
- mov DWORD PTR [esp], OFFSET FLAT: ??_C@_0P@A@Time?5?$DN?5?$CFg?5sec?6?$AA@ ;95.5
- mov DWORD PTR [168+esp], eax ;95.5
- mov DWORD PTR [172+esp], edx ;95.5
- fild QWORD PTR [168+esp] ;95.5
- fdivrp st(1), st ;95.5
- fstp QWORD PTR [4+esp] ;95.5
- call _printf ;95.5
- ; LOE
- .B1.18: ; Preds .B1.17
- xor eax, eax ;96.1
- add esp, 372 ;96.1
- pop ebx ;96.1
- pop edi ;96.1
- pop esi ;96.1
- mov esp, ebp ;96.1
- pop ebp ;96.1
- ret ;96.1
- ALIGN 16
- ; LOE
- ; mark_end;
- _main ENDP
- ;_main ENDS
- _TEXT ENDS
- _DATA SEGMENT DWORD PUBLIC FLAT 'DATA'
- _DATA ENDS
- ; -- End _main
- _TEXT SEGMENT PARA PUBLIC FLAT 'CODE'
- ; COMDAT ?Mul@@YAXPAI00@Z
- TXTST1:
- ; -- Begin ?Mul@@YAXPAI00@Z
- ; mark_begin;
- ALIGN 16
- PUBLIC ?Mul@@YAXPAI00@Z
- ?Mul@@YAXPAI00@Z PROC NEAR
- ; parameter 1: 24 + esp
- ; parameter 2: 28 + esp
- ; parameter 3: 32 + esp
- .B2.1: ; Preds .B2.0
- push esi ;10.1
- push edi ;10.1
- push ebx ;10.1
- push ebp ;10.1
- push esi ;10.1
- mov edx, DWORD PTR [32+esp] ;9.6
- mov edi, DWORD PTR [28+esp] ;9.6
- mov ecx, DWORD PTR [24+esp] ;9.6
- mov ebx, DWORD PTR [edx] ;12.20
- mov eax, ebx ;20.36
- mul DWORD PTR [edi] ;20.36
- mov DWORD PTR [ecx], eax ;21.10
- mov eax, ebx ;20.36
- mov ebp, edx ;20.36
- mul DWORD PTR [4+edi] ;20.36
- add ebp, eax ;20.40
- mov eax, ebx ;20.36
- mov DWORD PTR [4+ecx], ebp ;21.10
- mov esi, edx ;20.36
- adc esi, 0 ;20.40
- mul DWORD PTR [8+edi] ;20.36
- add esi, eax ;20.40
- mov eax, ebx ;20.36
- mov DWORD PTR [8+ecx], esi ;21.10
- mov ebp, edx ;20.36
- adc ebp, 0 ;20.40
- lea ebx, DWORD PTR [16+edi] ;20.29
- mul DWORD PTR [12+edi] ;20.36
- add ebp, eax ;20.40
- mov DWORD PTR [12+ecx], ebp ;21.10
- lea ebp, DWORD PTR [16+ecx] ;21.10
- adc edx, 0 ;20.40
- xor ecx, ecx ;25.5
- mov DWORD PTR [ebp], edx ;24.6
- ALIGN 16
- ; LOE ecx ebx ebp
- .B2.2: ; Preds .B2.2 .B2.1
- mov edx, DWORD PTR [32+esp] ;28.15
- mov eax, DWORD PTR [4+edx+ecx*4] ;28.15
- inc ecx ;25.5
- mov DWORD PTR [esp], eax ;28.15
- mul DWORD PTR [-16+ebx] ;33.40
- add DWORD PTR [-12+ebp], eax ;33.49
- mov edi, edx ;33.40
- mov eax, DWORD PTR [esp] ;33.40
- adc edi, 0 ;33.49
- mul DWORD PTR [-12+ebx] ;33.40
- add edi, eax ;33.45
- mov esi, edx ;33.40
- mov eax, DWORD PTR [esp] ;33.40
- adc esi, 0 ;33.45
- add DWORD PTR [-8+ebp], edi ;33.49
- adc esi, 0 ;33.49
- mul DWORD PTR [-8+ebx] ;33.40
- add esi, eax ;33.45
- mov edi, edx ;33.40
- mov eax, DWORD PTR [esp] ;33.40
- adc edi, 0 ;33.45
- add DWORD PTR [-4+ebp], esi ;33.49
- adc edi, 0 ;33.49
- mul DWORD PTR [-4+ebx] ;33.40
- add edi, eax ;33.45
- adc edx, 0 ;33.45
- add DWORD PTR [ebp], edi ;33.49
- adc edx, 0 ;33.49
- add ebp, 4 ;34.14
- cmp ecx, 3 ;25.5
- mov DWORD PTR [ebp], edx ;37.10
- jb .B2.2 ; Prob 66% ;25.5
- ; LOE ecx ebx ebp
- .B2.3: ; Preds .B2.2
- pop ecx ;39.1
- pop ebp ;39.1
- pop ebx ;39.1
- pop edi ;39.1
- pop esi ;39.1
- ret ;39.1
- ALIGN 16
- ; LOE
- ; mark_end;
- ?Mul@@YAXPAI00@Z ENDP
- ;?Mul@@YAXPAI00@Z ENDS
- _TEXT ENDS
- _DATA SEGMENT DWORD PUBLIC FLAT 'DATA'
- _DATA ENDS
- ; -- End ?Mul@@YAXPAI00@Z
- _TEXT SEGMENT PARA PUBLIC FLAT 'CODE'
- ; COMDAT ?put_addr@@YAXXZ
- TXTST2:
- ; -- Begin ?put_addr@@YAXXZ
- ; mark_begin;
- ALIGN 16
- PUBLIC ?put_addr@@YAXXZ
- ?put_addr@@YAXXZ PROC NEAR
- .B3.1: ; Preds .B3.0
- push ebp ;44.1
- push esi ;44.1
- push OFFSET FLAT: ??_C@_02A@wb?$AA@ ;45.10
- push OFFSET FLAT: ??_C@_07A@tmp?4$$$?$AA@ ;45.10
- call _fopen ;45.10
- ; LOE eax ebx esi edi
- .B3.7: ; Preds .B3.1
- mov ebp, eax ;45.10
- ; LOE ebx ebp esi edi
- .B3.2: ; Preds .B3.7
- mov DWORD PTR [8+esp], OFFSET FLAT: ?Mul@@YAXPAI00@Z ;46.15
- lea eax, DWORD PTR [8+esp] ;47.2
- push ebp ;47.2
- push 4 ;47.2
- push 1 ;47.2
- push eax ;47.2
- call _fwrite ;47.2
- ; LOE ebx ebp esi edi
- .B3.3: ; Preds .B3.2
- push ebp ;48.2
- call _fclose ;48.2
- ; LOE ebx esi edi
- .B3.4: ; Preds .B3.3
- add esp, 32 ;49.1
- pop ebp ;49.1
- ret ;49.1
- ALIGN 16
- ; LOE
- ; mark_end;
- ?put_addr@@YAXXZ ENDP
- ;?put_addr@@YAXXZ ENDS
- _TEXT ENDS
- _DATA SEGMENT DWORD PUBLIC FLAT 'DATA'
- _DATA ENDS
- ; -- End ?put_addr@@YAXXZ
- _TEXT SEGMENT PARA PUBLIC FLAT 'CODE'
- ; COMDAT ?get_addr@@YAP6AXPAI00@ZXZ
- TXTST3:
- ; -- Begin ?get_addr@@YAP6AXPAI00@ZXZ
- ; mark_begin;
- ALIGN 16
- PUBLIC ?get_addr@@YAP6AXPAI00@ZXZ
- ?get_addr@@YAP6AXPAI00@ZXZ PROC NEAR
- .B4.1: ; Preds .B4.0
- push ebx ;52.1
- push esi ;52.1
- push OFFSET FLAT: ??_C@_02A@rb?$AA@ ;53.10
- push OFFSET FLAT: ??_C@_07A@tmp?4$$$?$AA@ ;53.10
- call _fopen ;53.10
- ; LOE eax ebp esi edi
- .B4.7: ; Preds .B4.1
- mov ebx, eax ;53.10
- ; LOE ebx ebp esi edi
- .B4.2: ; Preds .B4.7
- mov DWORD PTR [8+esp], 0 ;54.15
- lea eax, DWORD PTR [8+esp] ;55.2
- push ebx ;55.2
- push 4 ;55.2
- push 1 ;55.2
- push eax ;55.2
- call _fread ;55.2
- ; LOE ebx ebp esi edi
- .B4.3: ; Preds .B4.2
- push ebx ;56.2
- call _fclose ;56.2
- ; LOE ebp esi edi
- .B4.8: ; Preds .B4.3
- add esp, 28 ;56.2
- ; LOE ebp esi edi
- .B4.4: ; Preds .B4.8
- mov eax, DWORD PTR [esp] ;57.9
- pop ecx ;57.9
- pop ebx ;57.9
- ret ;57.9
- ALIGN 16
- ; LOE
- ; mark_end;
- ?get_addr@@YAP6AXPAI00@ZXZ ENDP
- ;?get_addr@@YAP6AXPAI00@ZXZ ENDS
- _TEXT ENDS
- _DATA SEGMENT DWORD PUBLIC FLAT 'DATA'
- _DATA ENDS
- ; -- End ?get_addr@@YAP6AXPAI00@ZXZ
- ; COMDAT ??_C@_07A@tmp?4$$$?$AA@
- _RDATA SEGMENT READONLY DWORD PUBLIC FLAT 'DATA'
- ; COMDAT ??_C@_07A@tmp?4$$$?$AA@
- ??_C@_07A@tmp?4$$$?$AA@ DB 116
- DB 109
- DB 112
- DB 46
- DB 36
- DB 36
- DB 36
- DB 0
- ;??_C@_07A@tmp?4$$$?$AA@ ENDS
- _RDATA ENDS
- ; COMDAT ??_C@_02A@wb?$AA@
- _RDATA SEGMENT READONLY DWORD PUBLIC FLAT 'DATA'
- ; COMDAT ??_C@_02A@wb?$AA@
- ??_C@_02A@wb?$AA@ DB 119
- DB 98
- DB 0
- ;??_C@_02A@wb?$AA@ ENDS
- _RDATA ENDS
- ; COMDAT ??_C@_02A@rb?$AA@
- _RDATA SEGMENT READONLY DWORD PUBLIC FLAT 'DATA'
- ; COMDAT ??_C@_02A@rb?$AA@
- ??_C@_02A@rb?$AA@ DB 114
- DB 98
- DB 0
- ;??_C@_02A@rb?$AA@ ENDS
- _RDATA ENDS
- ; COMDAT ??_C@_0BC@A@Something?5wrong?$CB?6?$AA@
- _RDATA SEGMENT READONLY DWORD PUBLIC FLAT 'DATA'
- ; COMDAT ??_C@_0BC@A@Something?5wrong?$CB?6?$AA@
- ??_C@_0BC@A@Something?5wrong?$CB?6?$AA@ DB 83
- DB 111
- DB 109
- DB 101
- DB 116
- DB 104
- DB 105
- DB 110
- DB 103
- DB 32
- DB 119
- DB 114
- DB 111
- DB 110
- DB 103
- DB 33
- DB 10
- DB 0
- ;??_C@_0BC@A@Something?5wrong?$CB?6?$AA@ ENDS
- _RDATA ENDS
- ; COMDAT ??_C@_0P@A@Time?5?$DN?5?$CFg?5sec?6?$AA@
- _RDATA SEGMENT READONLY DWORD PUBLIC FLAT 'DATA'
- ; COMDAT ??_C@_0P@A@Time?5?$DN?5?$CFg?5sec?6?$AA@
- ??_C@_0P@A@Time?5?$DN?5?$CFg?5sec?6?$AA@ DB 84
- DB 105
- DB 109
- DB 101
- DB 32
- DB 61
- DB 32
- DB 37
- DB 103
- DB 32
- DB 115
- DB 101
- DB 99
- DB 10
- DB 0
- ;??_C@_0P@A@Time?5?$DN?5?$CFg?5sec?6?$AA@ ENDS
- _RDATA ENDS
- _DATA SEGMENT DWORD PUBLIC FLAT 'DATA'
- EXTRN __imp__QueryPerformanceFrequency@4:BYTE
- EXTRN __imp__QueryPerformanceCounter@4:BYTE
- _DATA ENDS
- ; mark_proc_addr_taken ?Mul@@YAXPAI00@Z;
- EXTRN _printf:PROC
- EXTRN _fwrite:PROC
- EXTRN _fread:PROC
- EXTRN _fopen:PROC
- EXTRN _fclose:PROC
- EXTRN ___intel_new_proc_init:PROC
- EXTRN __intel_fast_memcmp:PROC
- EXTRN __fltused:BYTE
- INCLUDELIB <libmmt>
- INCLUDELIB <LIBCMT>
- INCLUDELIB <libirc>
- INCLUDELIB <svml_dispmt>
- INCLUDELIB <OLDNAMES>
- INCLUDELIB <libdecimal>
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement