Skip to content

Instantly share code, notes, and snippets.

@BillyONeal
Created February 7, 2017 21:20
Show Gist options
  • Save BillyONeal/d767ae2311ac16f429250f2b1a9414b6 to your computer and use it in GitHub Desktop.
Save BillyONeal/d767ae2311ac16f429250f2b1a9414b6 to your computer and use it in GitHub Desktop.
; Function compile flags: /Ogtpy
; COMDAT ?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z
_TEXT SEGMENT
__Right$ = 8 ; size = 4
?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::swap, COMDAT
; _this$ = ecx
; File c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring
; Line 1857
00000 56 push esi
00001 57 push edi
; Line 1858
00002 8b 7c 24 0c mov edi, DWORD PTR __Right$[esp+4]
00006 8b f1 mov esi, ecx
00008 3b f7 cmp esi, edi
0000a 74 1e je SHORT $LN83@swap
; Line 1862
0000c 57 push edi
0000d e8 00 00 00 00 call ?_Swap_bx@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Swap_bx
; Line 1863
00012 8b 4e 10 mov ecx, DWORD PTR [esi+16]
00015 8b 47 10 mov eax, DWORD PTR [edi+16]
00018 89 46 10 mov DWORD PTR [esi+16], eax
0001b 89 4f 10 mov DWORD PTR [edi+16], ecx
; Line 1864
0001e 8b 4e 14 mov ecx, DWORD PTR [esi+20]
00021 8b 47 14 mov eax, DWORD PTR [edi+20]
00024 89 46 14 mov DWORD PTR [esi+20], eax
00027 89 4f 14 mov DWORD PTR [edi+20], ecx
$LN83@swap:
; Line 1866
0002a 5f pop edi
0002b 5e pop esi
0002c c2 04 00 ret 4
?swap@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::swap
_TEXT ENDS
; Function compile flags: /Ogtpy
; COMDAT ?_Swap_bx@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z
_TEXT SEGMENT
__Right$ = 8 ; size = 4
?_Swap_bx@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z PROC ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Swap_bx, COMDAT
; _this$ = ecx
; File c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring
; Line 1829
00000 56 push esi
00001 8b f1 mov esi, ecx
00003 57 push edi
; Line 1830
00004 83 7e 14 10 cmp DWORD PTR [esi+20], 16 ; 00000010H
00008 72 35 jb SHORT $LN2@Swap_bx
; Line 1831
0000a 8b 7c 24 0c mov edi, DWORD PTR __Right$[esp+4]
0000e 83 7f 14 10 cmp DWORD PTR [edi+20], 16 ; 00000010H
00012 72 0d jb SHORT $LN4@Swap_bx
; Line 1832
00014 8b 16 mov edx, DWORD PTR [esi]
00016 8b 07 mov eax, DWORD PTR [edi]
00018 89 06 mov DWORD PTR [esi], eax
0001a 89 17 mov DWORD PTR [edi], edx
0001c 5f pop edi
0001d 5e pop esi
; Line 1852
0001e c2 04 00 ret 4
$LN4@Swap_bx:
; Line 1837
00021 8b 47 10 mov eax, DWORD PTR [edi+16]
00024 53 push ebx
00025 8b 1e mov ebx, DWORD PTR [esi]
00027 83 c0 01 add eax, 1
0002a 74 0b je SHORT $LN117@Swap_bx
0002c 50 push eax
0002d 57 push edi
0002e 56 push esi
0002f e8 00 00 00 00 call _memcpy
00034 83 c4 0c add esp, 12 ; 0000000cH
$LN117@Swap_bx:
; Line 1839
00037 89 1f mov DWORD PTR [edi], ebx
00039 5b pop ebx
0003a 5f pop edi
0003b 5e pop esi
; Line 1852
0003c c2 04 00 ret 4
$LN2@Swap_bx:
; Line 1842
0003f 8b 44 24 0c mov eax, DWORD PTR __Right$[esp+4]
00043 83 78 14 10 cmp DWORD PTR [eax+20], 16 ; 00000010H
00047 73 0f jae SHORT $LN6@Swap_bx
; Line 1843
00049 50 push eax
0004a 56 push esi
0004b e8 00 00 00 00 call ??$swap@D$0BA@X@std@@YAXAAY0BA@D0@Z ; std::swap<char,16,void>
00050 83 c4 08 add esp, 8
00053 5f pop edi
00054 5e pop esi
; Line 1852
00055 c2 04 00 ret 4
$LN6@Swap_bx:
; Line 1848
00058 8b 4e 10 mov ecx, DWORD PTR [esi+16]
0005b 8b 38 mov edi, DWORD PTR [eax]
0005d 83 c1 01 add ecx, 1
00060 74 0b je SHORT $LN239@Swap_bx
00062 51 push ecx
00063 56 push esi
00064 50 push eax
00065 e8 00 00 00 00 call _memcpy
0006a 83 c4 0c add esp, 12 ; 0000000cH
$LN239@Swap_bx:
; Line 1850
0006d 89 3e mov DWORD PTR [esi], edi
0006f 5f pop edi
00070 5e pop esi
; Line 1852
00071 c2 04 00 ret 4
?_Swap_bx@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXAAV12@@Z ENDP ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Swap_bx
_TEXT ENDS
; Function compile flags: /Ogtpy
; COMDAT ??$swap@D$0BA@X@std@@YAXAAY0BA@D0@Z
_TEXT SEGMENT
__Left$ = 8 ; size = 4
__Right$ = 12 ; size = 4
??$swap@D$0BA@X@std@@YAXAAY0BA@D0@Z PROC ; std::swap<char,16,void>, COMDAT
; File c:\program files (x86)\microsoft visual studio 14.0\vc\include\utility
; Line 33
00000 8b 44 24 04 mov eax, DWORD PTR __Left$[esp-4]
00004 57 push edi
00005 8b 7c 24 0c mov edi, DWORD PTR __Right$[esp]
00009 3b c7 cmp eax, edi
0000b 74 2e je SHORT $LN3@swap
; Line 36
0000d 53 push ebx
0000e 8d 48 10 lea ecx, DWORD PTR [eax+16]
00011 56 push esi
00012 33 f6 xor esi, esi
00014 3b c8 cmp ecx, eax
00016 1b db sbb ebx, ebx
00018 83 e3 f0 and ebx, -16 ; fffffff0H
0001b 83 c3 10 add ebx, 16 ; 00000010H
0001e 3b c1 cmp eax, ecx
; Line 38
00020 77 17 ja SHORT $LN25@swap
00022 2b f8 sub edi, eax
$LL4@swap:
; Line 39
00024 8a 0c 07 mov cl, BYTE PTR [edi+eax]
00027 8d 40 01 lea eax, DWORD PTR [eax+1]
0002a 8a 50 ff mov dl, BYTE PTR [eax-1]
0002d 46 inc esi
0002e 88 48 ff mov BYTE PTR [eax-1], cl
00031 88 54 07 ff mov BYTE PTR [edi+eax-1], dl
00035 3b f3 cmp esi, ebx
00037 75 eb jne SHORT $LL4@swap
$LN25@swap:
00039 5e pop esi
0003a 5b pop ebx
$LN3@swap:
0003b 5f pop edi
; Line 41
0003c c3 ret 0
??$swap@D$0BA@X@std@@YAXAAY0BA@D0@Z ENDP ; std::swap<char,16,void>
_TEXT ENDS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment