; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.21022.08 

	TITLE	c:\Develop\DScaler423a\DScaler\HardwareDriver.cpp
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB OLDNAMES

PUBLIC	?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::reserve
PUBLIC	??B?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QBEHXZ ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::operator int
PUBLIC	??0?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QAE@PB_WPBD@Z ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>
PUBLIC	??0?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QAE@PB_WPBD@Z ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>
PUBLIC	??R?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QBEKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::operator()
PUBLIC	??_C@_1O@OGKCMGDD@?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CO@FMLBDJLB@?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AAO?$AAR?$AA_?$AAA?$AAR?$AAC?$AAH?$AAI?$AAT?$AAE?$AAW?$AA6?$AA4?$AA3?$AA2?$AA?$AA@ ; `string'
PUBLIC	??_C@_17LAEGLCDO@?$AAn?$AAt?$AA4?$AA?$AA@	; `string'
PUBLIC	??_C@_1EO@BLGMCOII@?$AAO?$AAp?$AAe?$AAn?$AAS?$AAC?$AAM?$AAa?$AAn?$AAa?$AAg?$AAe?$AAr?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@ ; `string'
PUBLIC	??_C@_1EG@ONLNGDEH@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@ ; `string'
PUBLIC	??_C@_1DK@FEBLJAHA@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FC@PKPNJGGN@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAo?$AAp?$AAe?$AAn?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi@ ; `string'
PUBLIC	??_C@_1II@LDEFFFMP@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAc?$AAl?$AAo?$AAs?$AAe?$AA?5?$AAh?$AAa?$AAn?$AAd@ ; `string'
PUBLIC	??_C@_1GE@EGNENGKM@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAc?$AAa?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAi?$AAn?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAr?$AAe?$AAg?$AAi?$AAs?$AAt?$AAr?$AAy?$AA?5@ ; `string'
PUBLIC	??_C@_1EA@PBBOGGGC@?$AAP?$AAl?$AAe?$AAa?$AAs?$AAe?$AA?5?$AAe?$AAx?$AAi?$AAt?$AA?5?$AAa?$AAn?$AAd?$AA?5?$AAr?$AAe?$AAs?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CK@EONPLDMJ@?$AA?4?$AA?2?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DA@HDJBKLIJ@?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAa?$AAl?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?5?$AAs?$AAt?$AAa?$AAr?$AAt?$AAe?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DG@OCFDDLPP@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BG@DEHDFFFP@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BO@BCIKMKIB@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?4?$AAV?$AAX?$AAD?$AA?$AA@ ; `string'
PUBLIC	??_C@_1GC@GMGHHAKN@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAe?$AAd?$AA?5?$AAo?$AAl?$AAd?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo?$AAn?$AA?0?$AA?5?$AAr?$AAe?$AAr@ ; `string'
PUBLIC	??_C@_1GA@IKLIGOIL@?$AAW?$AAe?$AA?8?$AAv?$AAe?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAu?$AAp?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAw?$AAr?$AAo?$AAn?$AAg?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo@ ; `string'
PUBLIC	??_C@_1GM@HBOKPKEG@?$AAR?$AAu?$AAn?$AAn?$AAi?$AAn?$AAg?$AA?5?$AAw?$AAi?$AAt?$AAh?$AA?5?$AAn?$AAe?$AAw?$AAe?$AAr?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AA?9?$AA?5?$AAh?$AAo?$AAp?$AAe@ ; `string'
PUBLIC	??_C@_1EC@BGABJCHE@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAF?$AAi?$AAl?$AAe?$AA?5?$AAo?$AAn?$AA?5?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@ ; `string'
PUBLIC	??_C@_1EK@IODHBMI@?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu@ ; `string'
PUBLIC	??_C@_1FA@FPBPIAIB@?$AAS?$AAE?$AAR?$AAV?$AAI?$AAC?$AAE?$AA_?$AAC?$AAO?$AAN?$AAT?$AAR?$AAO?$AAL?$AA_?$AAS?$AAT?$AAO?$AAP?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr@ ; `string'
PUBLIC	??_C@_1EM@JOJGOILO@?$AAC?$AAl?$AAo?$AAs?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAH?$AAa?$AAn?$AAd?$AAl?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr@ ; `string'
PUBLIC	??_C@_1EC@OEJKFKJE@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4@ ; `string'
PUBLIC	??_C@_1FI@KHCBNJFO@?$AAN?$AAo?$AA?5?$AAn?$AAe?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAw?$AAi?$AAt@ ; `string'
PUBLIC	??_C@_1IG@BLAAGHGI@?$AAT?$AAh?$AAe?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?5?$AAd?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAa?$AAn?$AA?8?$AAt?$AA?5@ ; `string'
PUBLIC	??_C@_19DKJJGBOC@?$AA?4?$AAs?$AAy?$AAs?$AA?$AA@	; `string'
PUBLIC	??_C@_1EC@PNJLIGGF@?$AAD?$AAe?$AAl?$AAe?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@ ; `string'
PUBLIC	??_C@_1FE@EMFLFDPD@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa?$AAi@ ; `string'
PUBLIC	??_C@_1FE@IPKHGOL@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa?$AAi@ ; `string'
PUBLIC	??_C@_1EM@JCPJBECG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr@ ; `string'
PUBLIC	??_C@_1DM@FALJPGNG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAI?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CE@LMLBDHKE@?$AAH?$AAe?$AAa?$AAp?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FG@OOJMMLNG@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa@ ; `string'
PUBLIC	??_C@_1FG@KKDNOOMO@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa@ ; `string'
PUBLIC	??_C@_1EO@EHLIDLDP@?$AAG?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd@ ; `string'
PUBLIC	??_C@_1FA@IELHKFMM@?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AAA?$AAn?$AAd?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAi?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe@ ; `string'
PUBLIC	??_C@_0BB@FCCLKLLL@SetEntriesInAclW?$AA@	; `string'
PUBLIC	??_C@_1BK@BIGILECK@?$AAA?$AAd?$AAv?$AAa?$AAp?$AAi?$AA3?$AA2?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DG@DFKOCIAC@?$AAS?$AAe?$AAt?$AAE?$AAn?$AAt?$AAr?$AAi?$AAe?$AAs?$AAI?$AAn?$AAA?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FE@IGPNIPKO@?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AA?5?$AAf?$AAa?$AAi@ ; `string'
PUBLIC	??_C@_1DE@MKIMBPJG@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DC@FFNIBLDN@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?$AA@ ; `string'
PUBLIC	??_C@_1EG@PHBLHLMB@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe@ ; `string'
PUBLIC	??_C@_1GA@PPHBGFPM@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAn?$AAe?$AAe?$AAd?$AAe?$AAd@ ; `string'
PUBLIC	??_C@_1HE@LCAEOKIA@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@ ; `string'
PUBLIC	??_C@_1DI@GLBEPKON@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DM@GJPDNNPM@?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1OA@MCCPJAAL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@ ; `string'
PUBLIC	??_C@_1HE@HCOPAMCL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@ ; `string'
EXTRN	__imp__StartServiceW@12:PROC
EXTRN	__imp__GetShortPathNameW@12:PROC
EXTRN	__imp__GetDriveTypeW@4:PROC
EXTRN	__imp__CreateServiceW@52:PROC
EXTRN	__imp__HeapAlloc@12:PROC
EXTRN	__imp__HeapFree@12:PROC
EXTRN	__imp__GetProcessHeap@0:PROC
EXTRN	__imp__AllocateAndInitializeSid@44:PROC
EXTRN	__imp__FreeSid@4:PROC
EXTRN	__imp__InitializeSecurityDescriptor@8:PROC
EXTRN	__imp__SetSecurityDescriptorDacl@16:PROC
EXTRN	__imp__GetSecurityDescriptorDacl@16:PROC
EXTRN	__imp__QueryServiceObjectSecurity@20:PROC
EXTRN	__imp__SetServiceObjectSecurity@12:PROC
EXTRN	__imp__CloseServiceHandle@4:PROC
EXTRN	__imp__ControlService@12:PROC
EXTRN	__imp__DeleteService@4:PROC
EXTRN	__imp__OpenSCManagerW@12:PROC
EXTRN	__imp__OpenServiceW@12:PROC
EXTRN	__imp__DeviceIoControl@32:PROC
;	COMDAT ??_C@_1HE@HCOPAMCL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@
CONST	SEGMENT
??_C@_1HE@HCOPAMCL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@ DB 'D'
	DB	00H, 'e', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, 'I', 00H
	DB	'o', 00H, 'C', 00H, 'o', 00H, 'n', 00H, 't', 00H, 'r', 00H, 'o'
	DB	00H, 'l', 00H, ' ', 00H, 'r', 00H, 'e', 00H, 't', 00H, 'u', 00H
	DB	'r', 00H, 'n', 00H, 'e', 00H, 'd', 00H, ' ', 00H, 'a', 00H, 'n'
	DB	00H, ' ', 00H, 'e', 00H, 'r', 00H, 'r', 00H, 'o', 00H, 'r', 00H
	DB	' ', 00H, '=', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X'
	DB	00H, ' ', 00H, 'F', 00H, 'o', 00H, 'r', 00H, ' ', 00H, 'C', 00H
	DB	'o', 00H, 'm', 00H, 'm', 00H, 'a', 00H, 'n', 00H, 'd', 00H, ' '
	DB	00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1OA@MCCPJAAL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@
CONST	SEGMENT
??_C@_1OA@MCCPJAAL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@ DB 'D'
	DB	00H, 'e', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, 'I', 00H
	DB	'o', 00H, 'C', 00H, 'o', 00H, 'n', 00H, 't', 00H, 'r', 00H, 'o'
	DB	00H, 'l', 00H, ' ', 00H, 'r', 00H, 'e', 00H, 't', 00H, 'u', 00H
	DB	'r', 00H, 'n', 00H, 'e', 00H, 'd', 00H, ' ', 00H, 'a', 00H, 'n'
	DB	00H, ' ', 00H, 'e', 00H, 'r', 00H, 'r', 00H, 'o', 00H, 'r', 00H
	DB	' ', 00H, '=', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X'
	DB	00H, ' ', 00H, 'F', 00H, 'o', 00H, 'r', 00H, ' ', 00H, 'C', 00H
	DB	'o', 00H, 'm', 00H, 'm', 00H, 'a', 00H, 'n', 00H, 'd', 00H, ' '
	DB	00H, 'i', 00H, 'o', 00H, 'c', 00H, 't', 00H, 'l', 00H, 'G', 00H
	DB	'e', 00H, 't', 00H, 'P', 00H, 'C', 00H, 'I', 00H, 'I', 00H, 'n'
	DB	00H, 'f', 00H, 'o', 00H, '.', 00H, ' ', 00H, 'T', 00H, 'h', 00H
	DB	'i', 00H, 's', 00H, ' ', 00H, 'i', 00H, 's', 00H, ' ', 00H, 'p'
	DB	00H, 'r', 00H, 'o', 00H, 'b', 00H, 'a', 00H, 'b', 00H, 'l', 00H
	DB	'y', 00H, ' ', 00H, 'b', 00H, 'y', 00H, ' ', 00H, 'd', 00H, 'e'
	DB	00H, 's', 00H, 'i', 00H, 'g', 00H, 'n', 00H, ',', 00H, ' ', 00H
	DB	'd', 00H, 'o', 00H, ' ', 00H, 'n', 00H, 'o', 00H, 't', 00H, ' '
	DB	00H, 'w', 00H, 'o', 00H, 'r', 00H, 'r', 00H, 'y', 00H, '.', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1DM@GJPDNNPM@?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@
CONST	SEGMENT
??_C@_1DM@GJPDNNPM@?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@ DB 'U'
	DB	00H, 'n', 00H, 'i', 00H, 'n', 00H, 's', 00H, 't', 00H, 'a', 00H
	DB	'l', 00H, 'l', 00H, ' ', 00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd'
	DB	00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H, ' ', 00H
	DB	'c', 00H, 'o', 00H, 'm', 00H, 'p', 00H, 'l', 00H, 'e', 00H, 't'
	DB	00H, 'e', 00H, '.', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1DI@GLBEPKON@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@
CONST	SEGMENT
??_C@_1DI@GLBEPKON@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@ DB 'F'
	DB	00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ' ', 00H
	DB	't', 00H, 'o', 00H, ' ', 00H, 'u', 00H, 'n', 00H, 'i', 00H, 'n'
	DB	00H, 's', 00H, 't', 00H, 'a', 00H, 'l', 00H, 'l', 00H, ' ', 00H
	DB	'd', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H, '.'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1HE@LCAEOKIA@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@
CONST	SEGMENT
??_C@_1HE@LCAEOKIA@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'S', 00H, 'e'
	DB	00H, 'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, ' ', 00H
	DB	'd', 00H, 'o', 00H, 'e', 00H, 's', 00H, ' ', 00H, 'n', 00H, 'o'
	DB	00H, 't', 00H, ' ', 00H, 'e', 00H, 'x', 00H, 'i', 00H, 's', 00H
	DB	't', 00H, ',', 00H, ' ', 00H, 'n', 00H, 'o', 00H, ' ', 00H, 'n'
	DB	00H, 'e', 00H, 'e', 00H, 'd', 00H, ' ', 00H, 't', 00H, 'o', 00H
	DB	' ', 00H, 'u', 00H, 'n', 00H, 'i', 00H, 'n', 00H, 's', 00H, 't'
	DB	00H, 'a', 00H, 'l', 00H, 'l', 00H, '.', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1GA@PPHBGFPM@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAn?$AAe?$AAe?$AAd?$AAe?$AAd@
CONST	SEGMENT
??_C@_1GA@PPHBGFPM@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAn?$AAe?$AAe?$AAd?$AAe?$AAd@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'U', 00H, 'n'
	DB	00H, 'i', 00H, 'n', 00H, 's', 00H, 't', 00H, 'a', 00H, 'l', 00H
	DB	'l', 00H, ' ', 00H, 'n', 00H, 'o', 00H, 't', 00H, ' ', 00H, 'n'
	DB	00H, 'e', 00H, 'e', 00H, 'd', 00H, 'e', 00H, 'd', 00H, ' ', 00H
	DB	'w', 00H, 'i', 00H, 't', 00H, 'h', 00H, ' ', 00H, 'w', 00H, 'i'
	DB	00H, 'n', 00H, '9', 00H, 'x', 00H, '/', 00H, 'M', 00H, 'E', 00H
	DB	'.', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@PHBLHLMB@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe@
CONST	SEGMENT
??_C@_1EG@PHBLHLMB@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe@ DB 'A'
	DB	00H, 't', 00H, 't', 00H, 'e', 00H, 'm', 00H, 'p', 00H, 't', 00H
	DB	'i', 00H, 'n', 00H, 'g', 00H, ' ', 00H, 't', 00H, 'o', 00H, ' '
	DB	00H, 'u', 00H, 'n', 00H, 'i', 00H, 'n', 00H, 's', 00H, 't', 00H
	DB	'a', 00H, 'l', 00H, 'l', 00H, ' ', 00H, 'N', 00H, 'T', 00H, ' '
	DB	00H, 'd', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H
	DB	'.', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1DC@FFNIBLDN@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?$AA@
CONST	SEGMENT
??_C@_1DC@FFNIBLDN@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?$AA@ DB 'S'
	DB	00H, 'e', 00H, 't', 00H, 'S', 00H, 'e', 00H, 'r', 00H, 'v', 00H
	DB	'i', 00H, 'c', 00H, 'e', 00H, 'O', 00H, 'b', 00H, 'j', 00H, 'e'
	DB	00H, 'c', 00H, 't', 00H, 'S', 00H, 'e', 00H, 'c', 00H, 'u', 00H
	DB	'r', 00H, 'i', 00H, 't', 00H, 'y', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1DE@MKIMBPJG@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?$AA@
CONST	SEGMENT
??_C@_1DE@MKIMBPJG@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?$AA@ DB 'S'
	DB	00H, 'e', 00H, 't', 00H, 'S', 00H, 'e', 00H, 'c', 00H, 'u', 00H
	DB	'r', 00H, 'i', 00H, 't', 00H, 'y', 00H, 'D', 00H, 'e', 00H, 's'
	DB	00H, 'c', 00H, 'r', 00H, 'i', 00H, 'p', 00H, 't', 00H, 'o', 00H
	DB	'r', 00H, 'D', 00H, 'a', 00H, 'c', 00H, 'l', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1FE@IGPNIPKO@?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AA?5?$AAf?$AAa?$AAi@
CONST	SEGMENT
??_C@_1FE@IGPNIPKO@?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AA?5?$AAf?$AAa?$AAi@ DB 'I'
	DB	00H, 'n', 00H, 'i', 00H, 't', 00H, 'i', 00H, 'a', 00H, 'l', 00H
	DB	'i', 00H, 'z', 00H, 'e', 00H, 'S', 00H, 'e', 00H, 'c', 00H, 'u'
	DB	00H, 'r', 00H, 'i', 00H, 't', 00H, 'y', 00H, 'D', 00H, 'e', 00H
	DB	's', 00H, 'c', 00H, 'r', 00H, 'i', 00H, 'p', 00H, 't', 00H, 'o'
	DB	00H, 'r', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H
	DB	'e', 00H, 'd', 00H, '.', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%'
	DB	00H, 'X', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1DG@DFKOCIAC@?$AAS?$AAe?$AAt?$AAE?$AAn?$AAt?$AAr?$AAi?$AAe?$AAs?$AAI?$AAn?$AAA?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DG@DFKOCIAC@?$AAS?$AAe?$AAt?$AAE?$AAn?$AAt?$AAr?$AAi?$AAe?$AAs?$AAI?$AAn?$AAA?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'S'
	DB	00H, 'e', 00H, 't', 00H, 'E', 00H, 'n', 00H, 't', 00H, 'r', 00H
	DB	'i', 00H, 'e', 00H, 's', 00H, 'I', 00H, 'n', 00H, 'A', 00H, 'c'
	DB	00H, 'l', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H
	DB	'e', 00H, 'd', 00H, '.', 00H, ' ', 00H, '%', 00H, 'd', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1BK@BIGILECK@?$AAA?$AAd?$AAv?$AAa?$AAp?$AAi?$AA3?$AA2?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@
CONST	SEGMENT
??_C@_1BK@BIGILECK@?$AAA?$AAd?$AAv?$AAa?$AAp?$AAi?$AA3?$AA2?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@ DB 'A'
	DB	00H, 'd', 00H, 'v', 00H, 'a', 00H, 'p', 00H, 'i', 00H, '3', 00H
	DB	'2', 00H, '.', 00H, 'd', 00H, 'l', 00H, 'l', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@FCCLKLLL@SetEntriesInAclW?$AA@
CONST	SEGMENT
??_C@_0BB@FCCLKLLL@SetEntriesInAclW?$AA@ DB 'SetEntriesInAclW', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1FA@IELHKFMM@?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AAA?$AAn?$AAd?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAi?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe@
CONST	SEGMENT
??_C@_1FA@IELHKFMM@?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AAA?$AAn?$AAd?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAi?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe@ DB 'A'
	DB	00H, 'l', 00H, 'l', 00H, 'o', 00H, 'c', 00H, 'a', 00H, 't', 00H
	DB	'e', 00H, 'A', 00H, 'n', 00H, 'd', 00H, 'I', 00H, 'n', 00H, 'i'
	DB	00H, 't', 00H, 'i', 00H, 'a', 00H, 'l', 00H, 'i', 00H, 'z', 00H
	DB	'e', 00H, 'S', 00H, 'i', 00H, 'd', 00H, '(', 00H, ')', 00H, ' '
	DB	00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H
	DB	'.', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1EO@EHLIDLDP@?$AAG?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd@
CONST	SEGMENT
??_C@_1EO@EHLIDLDP@?$AAG?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd@ DB 'G'
	DB	00H, 'e', 00H, 't', 00H, 'S', 00H, 'e', 00H, 'c', 00H, 'u', 00H
	DB	'r', 00H, 'i', 00H, 't', 00H, 'y', 00H, 'D', 00H, 'e', 00H, 's'
	DB	00H, 'c', 00H, 'r', 00H, 'i', 00H, 'p', 00H, 't', 00H, 'o', 00H
	DB	'r', 00H, 'D', 00H, 'a', 00H, 'c', 00H, 'l', 00H, ' ', 00H, 'f'
	DB	00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, '.', 00H
	DB	' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1FG@KKDNOOMO@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa@
CONST	SEGMENT
??_C@_1FG@KKDNOOMO@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa@ DB 'Q'
	DB	00H, 'u', 00H, 'e', 00H, 'r', 00H, 'y', 00H, 'S', 00H, 'e', 00H
	DB	'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, 'O', 00H, 'b'
	DB	00H, 'j', 00H, 'e', 00H, 'c', 00H, 't', 00H, 'S', 00H, 'e', 00H
	DB	'c', 00H, 'u', 00H, 'r', 00H, 'i', 00H, 't', 00H, 'y', 00H, ' '
	DB	00H, '#', 00H, '2', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H
	DB	'l', 00H, 'e', 00H, 'd', 00H, '.', 00H, ' ', 00H, '0', 00H, 'x'
	DB	00H, '%', 00H, 'X', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1FG@OOJMMLNG@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa@
CONST	SEGMENT
??_C@_1FG@OOJMMLNG@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa@ DB 'Q'
	DB	00H, 'u', 00H, 'e', 00H, 'r', 00H, 'y', 00H, 'S', 00H, 'e', 00H
	DB	'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, 'O', 00H, 'b'
	DB	00H, 'j', 00H, 'e', 00H, 'c', 00H, 't', 00H, 'S', 00H, 'e', 00H
	DB	'c', 00H, 'u', 00H, 'r', 00H, 'i', 00H, 't', 00H, 'y', 00H, ' '
	DB	00H, '#', 00H, '1', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H
	DB	'l', 00H, 'e', 00H, 'd', 00H, '.', 00H, ' ', 00H, '0', 00H, 'x'
	DB	00H, '%', 00H, 'X', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1CE@LMLBDHKE@?$AAH?$AAe?$AAa?$AAp?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?$AA@
CONST	SEGMENT
??_C@_1CE@LMLBDHKE@?$AAH?$AAe?$AAa?$AAp?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?$AA@ DB 'H'
	DB	00H, 'e', 00H, 'a', 00H, 'p', 00H, 'A', 00H, 'l', 00H, 'l', 00H
	DB	'o', 00H, 'c', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l'
	DB	00H, 'e', 00H, 'd', 00H, '.', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1DM@FALJPGNG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAI?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@
CONST	SEGMENT
??_C@_1DM@FALJPGNG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAI?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'I', 00H, 'n'
	DB	00H, 's', 00H, 't', 00H, 'a', 00H, 'l', 00H, 'l', 00H, ' ', 00H
	DB	'c', 00H, 'o', 00H, 'm', 00H, 'p', 00H, 'l', 00H, 'e', 00H, 't'
	DB	00H, 'e', 00H, '.', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1EM@JCPJBECG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr@
CONST	SEGMENT
??_C@_1EM@JCPJBECG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'F', 00H, 'a'
	DB	00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ' ', 00H, 't', 00H
	DB	'o', 00H, ' ', 00H, 'i', 00H, 'n', 00H, 's', 00H, 't', 00H, 'a'
	DB	00H, 'l', 00H, 'l', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, '.', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1FE@IPKHGOL@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa?$AAi@
CONST	SEGMENT
??_C@_1FE@IPKHGOL@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa?$AAi@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'C', 00H, 'r'
	DB	00H, 'e', 00H, 'a', 00H, 't', 00H, 'e', 00H, 'S', 00H, 'e', 00H
	DB	'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, ' ', 00H, '#'
	DB	00H, '1', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H
	DB	'e', 00H, 'd', 00H, '.', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%'
	DB	00H, 'X', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1FE@EMFLFDPD@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa?$AAi@
CONST	SEGMENT
??_C@_1FE@EMFLFDPD@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa?$AAi@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'C', 00H, 'r'
	DB	00H, 'e', 00H, 'a', 00H, 't', 00H, 'e', 00H, 'S', 00H, 'e', 00H
	DB	'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, ' ', 00H, '#'
	DB	00H, '2', 00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H
	DB	'e', 00H, 'd', 00H, '.', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%'
	DB	00H, 'X', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1EC@PNJLIGGF@?$AAD?$AAe?$AAl?$AAe?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@
CONST	SEGMENT
??_C@_1EC@PNJLIGGF@?$AAD?$AAe?$AAl?$AAe?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@ DB 'D'
	DB	00H, 'e', 00H, 'l', 00H, 'e', 00H, 't', 00H, 'e', 00H, 'S', 00H
	DB	'e', 00H, 'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, ' '
	DB	00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H
	DB	',', 00H, ' ', 00H, 'e', 00H, 'r', 00H, 'r', 00H, 'o', 00H, 'r'
	DB	00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_19DKJJGBOC@?$AA?4?$AAs?$AAy?$AAs?$AA?$AA@
CONST	SEGMENT
??_C@_19DKJJGBOC@?$AA?4?$AAs?$AAy?$AAs?$AA?$AA@ DB '.', 00H, 's', 00H, 'y'
	DB	00H, 's', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1IG@BLAAGHGI@?$AAT?$AAh?$AAe?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?5?$AAd?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAa?$AAn?$AA?8?$AAt?$AA?5@
CONST	SEGMENT
??_C@_1IG@BLAAGHGI@?$AAT?$AAh?$AAe?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?5?$AAd?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAa?$AAn?$AA?8?$AAt?$AA?5@ DB 'T'
	DB	00H, 'h', 00H, 'e', 00H, ' ', 00H, 'D', 00H, 'S', 00H, 'c', 00H
	DB	'a', 00H, 'l', 00H, 'e', 00H, 'r', 00H, ' ', 00H, 'd', 00H, 'e'
	DB	00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, ' ', 00H, 'd', 00H
	DB	'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H, ' ', 00H, 'c'
	DB	00H, 'a', 00H, 'n', 00H, '''', 00H, 't', 00H, ' ', 00H, 'b', 00H
	DB	'e', 00H, ' ', 00H, 'i', 00H, 'n', 00H, 's', 00H, 't', 00H, 'a'
	DB	00H, 'l', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ' ', 00H, 'f', 00H
	DB	'r', 00H, 'o', 00H, 'm', 00H, ' ', 00H, 'a', 00H, ' ', 00H, 'n'
	DB	00H, 'e', 00H, 't', 00H, 'w', 00H, 'o', 00H, 'r', 00H, 'k', 00H
	DB	' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, '.'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1FI@KHCBNJFO@?$AAN?$AAo?$AA?5?$AAn?$AAe?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAw?$AAi?$AAt@
CONST	SEGMENT
??_C@_1FI@KHCBNJFO@?$AAN?$AAo?$AA?5?$AAn?$AAe?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAw?$AAi?$AAt@ DB 'N'
	DB	00H, 'o', 00H, ' ', 00H, 'n', 00H, 'e', 00H, 'e', 00H, 'd', 00H
	DB	' ', 00H, 't', 00H, 'o', 00H, ' ', 00H, 'i', 00H, 'n', 00H, 's'
	DB	00H, 't', 00H, 'a', 00H, 'l', 00H, 'l', 00H, ' ', 00H, 'N', 00H
	DB	'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e'
	DB	00H, 'r', 00H, ' ', 00H, 'w', 00H, 'i', 00H, 't', 00H, 'h', 00H
	DB	' ', 00H, 'w', 00H, 'i', 00H, 'n', 00H, '9', 00H, 'x', 00H, '/'
	DB	00H, 'M', 00H, 'E', 00H, '.', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1EC@OEJKFKJE@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4@
CONST	SEGMENT
??_C@_1EC@OEJKFKJE@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4@ DB 'A'
	DB	00H, 't', 00H, 't', 00H, 'e', 00H, 'm', 00H, 'p', 00H, 't', 00H
	DB	'i', 00H, 'n', 00H, 'g', 00H, ' ', 00H, 't', 00H, 'o', 00H, ' '
	DB	00H, 'i', 00H, 'n', 00H, 's', 00H, 't', 00H, 'a', 00H, 'l', 00H
	DB	'l', 00H, ' ', 00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r'
	DB	00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H, '.', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1EM@JOJGOILO@?$AAC?$AAl?$AAo?$AAs?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAH?$AAa?$AAn?$AAd?$AAl?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr@
CONST	SEGMENT
??_C@_1EM@JOJGOILO@?$AAC?$AAl?$AAo?$AAs?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAH?$AAa?$AAn?$AAd?$AAl?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr@ DB 'C'
	DB	00H, 'l', 00H, 'o', 00H, 's', 00H, 'e', 00H, 'S', 00H, 'e', 00H
	DB	'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, 'H', 00H, 'a'
	DB	00H, 'n', 00H, 'd', 00H, 'l', 00H, 'e', 00H, ' ', 00H, 'f', 00H
	DB	'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ',', 00H, ' '
	DB	00H, 'e', 00H, 'r', 00H, 'r', 00H, 'o', 00H, 'r', 00H, ' ', 00H
	DB	'0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1FA@FPBPIAIB@?$AAS?$AAE?$AAR?$AAV?$AAI?$AAC?$AAE?$AA_?$AAC?$AAO?$AAN?$AAT?$AAR?$AAO?$AAL?$AA_?$AAS?$AAT?$AAO?$AAP?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr@
CONST	SEGMENT
??_C@_1FA@FPBPIAIB@?$AAS?$AAE?$AAR?$AAV?$AAI?$AAC?$AAE?$AA_?$AAC?$AAO?$AAN?$AAT?$AAR?$AAO?$AAL?$AA_?$AAS?$AAT?$AAO?$AAP?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr@ DB 'S'
	DB	00H, 'E', 00H, 'R', 00H, 'V', 00H, 'I', 00H, 'C', 00H, 'E', 00H
	DB	'_', 00H, 'C', 00H, 'O', 00H, 'N', 00H, 'T', 00H, 'R', 00H, 'O'
	DB	00H, 'L', 00H, '_', 00H, 'S', 00H, 'T', 00H, 'O', 00H, 'P', 00H
	DB	' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd'
	DB	00H, ',', 00H, ' ', 00H, 'e', 00H, 'r', 00H, 'r', 00H, 'o', 00H
	DB	'r', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1EK@IODHBMI@?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu@
CONST	SEGMENT
??_C@_1EK@IODHBMI@?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu@ DB 'H'
	DB	00H, 'a', 00H, 'r', 00H, 'd', 00H, 'w', 00H, 'a', 00H, 'r', 00H
	DB	'e', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e'
	DB	00H, 'r', 00H, ' ', 00H, 'l', 00H, 'o', 00H, 'a', 00H, 'd', 00H
	DB	'e', 00H, 'd', 00H, ' ', 00H, 's', 00H, 'u', 00H, 'c', 00H, 'c'
	DB	00H, 'e', 00H, 's', 00H, 's', 00H, 'f', 00H, 'u', 00H, 'l', 00H
	DB	'l', 00H, 'y', 00H, '.', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1EC@BGABJCHE@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAF?$AAi?$AAl?$AAe?$AA?5?$AAo?$AAn?$AA?5?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@
CONST	SEGMENT
??_C@_1EC@BGABJCHE@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAF?$AAi?$AAl?$AAe?$AA?5?$AAo?$AAn?$AA?5?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@ DB 'C'
	DB	00H, 'r', 00H, 'e', 00H, 'a', 00H, 't', 00H, 'e', 00H, 'F', 00H
	DB	'i', 00H, 'l', 00H, 'e', 00H, ' ', 00H, 'o', 00H, 'n', 00H, ' '
	DB	00H, 'D', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H
	DB	' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd'
	DB	00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1GM@HBOKPKEG@?$AAR?$AAu?$AAn?$AAn?$AAi?$AAn?$AAg?$AA?5?$AAw?$AAi?$AAt?$AAh?$AA?5?$AAn?$AAe?$AAw?$AAe?$AAr?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AA?9?$AA?5?$AAh?$AAo?$AAp?$AAe@
CONST	SEGMENT
??_C@_1GM@HBOKPKEG@?$AAR?$AAu?$AAn?$AAn?$AAi?$AAn?$AAg?$AA?5?$AAw?$AAi?$AAt?$AAh?$AA?5?$AAn?$AAe?$AAw?$AAe?$AAr?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AA?9?$AA?5?$AAh?$AAo?$AAp?$AAe@ DB 'R'
	DB	00H, 'u', 00H, 'n', 00H, 'n', 00H, 'i', 00H, 'n', 00H, 'g', 00H
	DB	' ', 00H, 'w', 00H, 'i', 00H, 't', 00H, 'h', 00H, ' ', 00H, 'n'
	DB	00H, 'e', 00H, 'w', 00H, 'e', 00H, 'r', 00H, ' ', 00H, 'd', 00H
	DB	'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H, ' ', 00H, '-'
	DB	00H, ' ', 00H, 'h', 00H, 'o', 00H, 'p', 00H, 'e', 00H, 'f', 00H
	DB	'u', 00H, 'l', 00H, 'l', 00H, 'y', 00H, ' ', 00H, 't', 00H, 'h'
	DB	00H, 'i', 00H, 's', 00H, ' ', 00H, 'w', 00H, 'i', 00H, 'l', 00H
	DB	'l', 00H, ' ', 00H, 'b', 00H, 'e', 00H, ' ', 00H, 'O', 00H, 'K'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1GA@IKLIGOIL@?$AAW?$AAe?$AA?8?$AAv?$AAe?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAu?$AAp?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAw?$AAr?$AAo?$AAn?$AAg?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo@
CONST	SEGMENT
??_C@_1GA@IKLIGOIL@?$AAW?$AAe?$AA?8?$AAv?$AAe?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAu?$AAp?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAw?$AAr?$AAo?$AAn?$AAg?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo@ DB 'W'
	DB	00H, 'e', 00H, '''', 00H, 'v', 00H, 'e', 00H, ' ', 00H, 'l', 00H
	DB	'o', 00H, 'a', 00H, 'd', 00H, 'e', 00H, 'd', 00H, ' ', 00H, 'u'
	DB	00H, 'p', 00H, ' ', 00H, 't', 00H, 'h', 00H, 'e', 00H, ' ', 00H
	DB	'w', 00H, 'r', 00H, 'o', 00H, 'n', 00H, 'g', 00H, ' ', 00H, 'v'
	DB	00H, 'e', 00H, 'r', 00H, 's', 00H, 'i', 00H, 'o', 00H, 'n', 00H
	DB	' ', 00H, 'o', 00H, 'f', 00H, ' ', 00H, 't', 00H, 'h', 00H, 'e'
	DB	00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H
	DB	'r', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1GC@GMGHHAKN@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAe?$AAd?$AA?5?$AAo?$AAl?$AAd?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo?$AAn?$AA?0?$AA?5?$AAr?$AAe?$AAr@
CONST	SEGMENT
??_C@_1GC@GMGHHAKN@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAe?$AAd?$AA?5?$AAo?$AAl?$AAd?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo?$AAn?$AA?0?$AA?5?$AAr?$AAe?$AAr@ DB 'D'
	DB	00H, 'e', 00H, 't', 00H, 'e', 00H, 'c', 00H, 't', 00H, 'e', 00H
	DB	'd', 00H, ' ', 00H, 'o', 00H, 'l', 00H, 'd', 00H, ' ', 00H, 'd'
	DB	00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H, ' ', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, 's', 00H, 'i', 00H, 'o', 00H, 'n'
	DB	00H, ',', 00H, ' ', 00H, 'r', 00H, 'e', 00H, 'r', 00H, 'u', 00H
	DB	'n', 00H, ' ', 00H, 's', 00H, 'e', 00H, 't', 00H, 'u', 00H, 'p'
	DB	00H, ' ', 00H, 'p', 00H, 'r', 00H, 'o', 00H, 'g', 00H, 'r', 00H
	DB	'a', 00H, 'm', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1BO@BCIKMKIB@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?4?$AAV?$AAX?$AAD?$AA?$AA@
CONST	SEGMENT
??_C@_1BO@BCIKMKIB@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?4?$AAV?$AAX?$AAD?$AA?$AA@ DB '\'
	DB	00H, '\', 00H, '.', 00H, '\', 00H, 'D', 00H, 'S', 00H, 'D', 00H
	DB	'r', 00H, 'v', 00H, '4', 00H, '.', 00H, 'V', 00H, 'X', 00H, 'D'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1BG@DEHDFFFP@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@
CONST	SEGMENT
??_C@_1BG@DEHDFFFP@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@ DB '\'
	DB	00H, '\', 00H, '.', 00H, '\', 00H, 'D', 00H, 'S', 00H, 'D', 00H
	DB	'r', 00H, 'v', 00H, '4', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1DG@OCFDDLPP@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX?$AA?$AA@
CONST	SEGMENT
??_C@_1DG@OCFDDLPP@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX?$AA?$AA@ DB 'S'
	DB	00H, 't', 00H, 'a', 00H, 'r', 00H, 't', 00H, 'S', 00H, 'e', 00H
	DB	'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, '(', 00H, ')'
	DB	00H, ' ', 00H, 'f', 00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H
	DB	'd', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1DA@HDJBKLIJ@?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAa?$AAl?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?5?$AAs?$AAt?$AAa?$AAr?$AAt?$AAe?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DA@HDJBKLIJ@?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAa?$AAl?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?5?$AAs?$AAt?$AAa?$AAr?$AAt?$AAe?$AAd?$AA?$AA@ DB 'S'
	DB	00H, 'e', 00H, 'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H
	DB	' ', 00H, 'a', 00H, 'l', 00H, 'r', 00H, 'e', 00H, 'a', 00H, 'd'
	DB	00H, 'y', 00H, ' ', 00H, 's', 00H, 't', 00H, 'a', 00H, 'r', 00H
	DB	't', 00H, 'e', 00H, 'd', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1CK@EONPLDMJ@?$AA?4?$AA?2?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
CONST	SEGMENT
??_C@_1CK@EONPLDMJ@?$AA?4?$AA?2?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@ DB '.'
	DB	00H, '\', 00H, 'H', 00H, 'a', 00H, 'r', 00H, 'd', 00H, 'w', 00H
	DB	'a', 00H, 'r', 00H, 'e', 00H, 'D', 00H, 'r', 00H, 'i', 00H, 'v'
	DB	00H, 'e', 00H, 'r', 00H, '.', 00H, 'c', 00H, 'p', 00H, 'p', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1EA@PBBOGGGC@?$AAP?$AAl?$AAe?$AAa?$AAs?$AAe?$AA?5?$AAe?$AAx?$AAi?$AAt?$AA?5?$AAa?$AAn?$AAd?$AA?5?$AAr?$AAe?$AAs?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?$AA@
CONST	SEGMENT
??_C@_1EA@PBBOGGGC@?$AAP?$AAl?$AAe?$AAa?$AAs?$AAe?$AA?5?$AAe?$AAx?$AAi?$AAt?$AA?5?$AAa?$AAn?$AAd?$AA?5?$AAr?$AAe?$AAs?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?$AA@ DB 'P'
	DB	00H, 'l', 00H, 'e', 00H, 'a', 00H, 's', 00H, 'e', 00H, ' ', 00H
	DB	'e', 00H, 'x', 00H, 'i', 00H, 't', 00H, ' ', 00H, 'a', 00H, 'n'
	DB	00H, 'd', 00H, ' ', 00H, 'r', 00H, 'e', 00H, 's', 00H, 't', 00H
	DB	'a', 00H, 'r', 00H, 't', 00H, ' ', 00H, 'D', 00H, 'S', 00H, 'c'
	DB	00H, 'a', 00H, 'l', 00H, 'e', 00H, 'r', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1GE@EGNENGKM@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAc?$AAa?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAi?$AAn?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAr?$AAe?$AAg?$AAi?$AAs?$AAt?$AAr?$AAy?$AA?5@
CONST	SEGMENT
??_C@_1GE@EGNENGKM@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAc?$AAa?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAi?$AAn?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAr?$AAe?$AAg?$AAi?$AAs?$AAt?$AAr?$AAy?$AA?5@ DB 'D'
	DB	00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r', 00H, ' ', 00H
	DB	'l', 00H, 'o', 00H, 'c', 00H, 'a', 00H, 't', 00H, 'i', 00H, 'o'
	DB	00H, 'n', 00H, ' ', 00H, 'i', 00H, 'n', 00H, ' ', 00H, 't', 00H
	DB	'h', 00H, 'e', 00H, ' ', 00H, 'r', 00H, 'e', 00H, 'g', 00H, 'i'
	DB	00H, 's', 00H, 't', 00H, 'r', 00H, 'y', 00H, ' ', 00H, 'i', 00H
	DB	's', 00H, ' ', 00H, 'i', 00H, 'n', 00H, 'c', 00H, 'o', 00H, 'r'
	DB	00H, 'r', 00H, 'e', 00H, 'c', 00H, 't', 00H, '.', 00H, '0', 00H
	DB	'x', 00H, '%', 00H, 'X', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1II@LDEFFFMP@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAc?$AAl?$AAo?$AAs?$AAe?$AA?5?$AAh?$AAa?$AAn?$AAd@
CONST	SEGMENT
??_C@_1II@LDEFFFMP@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAc?$AAl?$AAo?$AAs?$AAe?$AA?5?$AAh?$AAa?$AAn?$AAd@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'F', 00H, 'a'
	DB	00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ' ', 00H, 't', 00H
	DB	'o', 00H, ' ', 00H, 'c', 00H, 'l', 00H, 'o', 00H, 's', 00H, 'e'
	DB	00H, ' ', 00H, 'h', 00H, 'a', 00H, 'n', 00H, 'd', 00H, 'l', 00H
	DB	'e', 00H, ' ', 00H, 't', 00H, 'o', 00H, ' ', 00H, 's', 00H, 'e'
	DB	00H, 'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, ' ', 00H
	DB	'c', 00H, 'o', 00H, 'n', 00H, 't', 00H, 'r', 00H, 'o', 00H, 'l'
	DB	00H, ' ', 00H, 'm', 00H, 'a', 00H, 'n', 00H, 'a', 00H, 'g', 00H
	DB	'e', 00H, 'r', 00H, '.', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%'
	DB	00H, 'X', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1FC@PKPNJGGN@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAo?$AAp?$AAe?$AAn?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi@
CONST	SEGMENT
??_C@_1FC@PKPNJGGN@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAo?$AAp?$AAe?$AAn?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'U', 00H, 'n'
	DB	00H, 'a', 00H, 'b', 00H, 'l', 00H, 'e', 00H, ' ', 00H, 't', 00H
	DB	'o', 00H, ' ', 00H, 'o', 00H, 'p', 00H, 'e', 00H, 'n', 00H, ' '
	DB	00H, 's', 00H, 'e', 00H, 'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H
	DB	'e', 00H, '.', 00H, ' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1DK@FEBLJAHA@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@
CONST	SEGMENT
??_C@_1DK@FEBLJAHA@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@ DB 'F'
	DB	00H, 'a', 00H, 'i', 00H, 'l', 00H, 'e', 00H, 'd', 00H, ' ', 00H
	DB	't', 00H, 'o', 00H, ' ', 00H, 'i', 00H, 'n', 00H, 's', 00H, 't'
	DB	00H, 'a', 00H, 'l', 00H, 'l', 00H, ' ', 00H, 'N', 00H, 'T', 00H
	DB	' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H, 'v', 00H, 'e', 00H, 'r'
	DB	00H, '.', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@ONLNGDEH@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@
CONST	SEGMENT
??_C@_1EG@ONLNGDEH@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@ DB '('
	DB	00H, 'N', 00H, 'T', 00H, ' ', 00H, 'd', 00H, 'r', 00H, 'i', 00H
	DB	'v', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, 'S', 00H, 'e'
	DB	00H, 'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e', 00H, ' ', 00H
	DB	'd', 00H, 'o', 00H, 'e', 00H, 's', 00H, ' ', 00H, 'n', 00H, 'o'
	DB	00H, 't', 00H, ' ', 00H, 'e', 00H, 'x', 00H, 'i', 00H, 's', 00H
	DB	't', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1EO@BLGMCOII@?$AAO?$AAp?$AAe?$AAn?$AAS?$AAC?$AAM?$AAa?$AAn?$AAa?$AAg?$AAe?$AAr?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@
CONST	SEGMENT
??_C@_1EO@BLGMCOII@?$AAO?$AAp?$AAe?$AAn?$AAS?$AAC?$AAM?$AAa?$AAn?$AAa?$AAg?$AAe?$AAr?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@ DB 'O'
	DB	00H, 'p', 00H, 'e', 00H, 'n', 00H, 'S', 00H, 'C', 00H, 'M', 00H
	DB	'a', 00H, 'n', 00H, 'a', 00H, 'g', 00H, 'e', 00H, 'r', 00H, ' '
	DB	00H, 'r', 00H, 'e', 00H, 't', 00H, 'u', 00H, 'r', 00H, 'n', 00H
	DB	'e', 00H, 'd', 00H, ' ', 00H, 'a', 00H, 'n', 00H, ' ', 00H, 'e'
	DB	00H, 'r', 00H, 'r', 00H, 'o', 00H, 'r', 00H, ' ', 00H, '=', 00H
	DB	' ', 00H, '0', 00H, 'x', 00H, '%', 00H, 'X', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_17LAEGLCDO@?$AAn?$AAt?$AA4?$AA?$AA@
CONST	SEGMENT
??_C@_17LAEGLCDO@?$AAn?$AAt?$AA4?$AA?$AA@ DB 'n', 00H, 't', 00H, '4', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1CO@FMLBDJLB@?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AAO?$AAR?$AA_?$AAA?$AAR?$AAC?$AAH?$AAI?$AAT?$AAE?$AAW?$AA6?$AA4?$AA3?$AA2?$AA?$AA@
CONST	SEGMENT
??_C@_1CO@FMLBDJLB@?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AAO?$AAR?$AA_?$AAA?$AAR?$AAC?$AAH?$AAI?$AAT?$AAE?$AAW?$AA6?$AA4?$AA3?$AA2?$AA?$AA@ DB 'P'
	DB	00H, 'R', 00H, 'O', 00H, 'C', 00H, 'E', 00H, 'S', 00H, 'S', 00H
	DB	'O', 00H, 'R', 00H, '_', 00H, 'A', 00H, 'R', 00H, 'C', 00H, 'H'
	DB	00H, 'I', 00H, 'T', 00H, 'E', 00H, 'W', 00H, '6', 00H, '4', 00H
	DB	'3', 00H, '2', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1O@OGKCMGDD@?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@
CONST	SEGMENT
??_C@_1O@OGKCMGDD@?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@ DB 'D', 00H, 'S'
	DB	00H, 'D', 00H, 'r', 00H, 'v', 00H, '4', 00H, 00H, 00H ; `string'
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\dynamicfunction.h
;	COMDAT ??B?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QBEHXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??B?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QBEHXZ PROC ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::operator int, COMDAT
; _this$ = ecx

; 39   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 40   :         return m_pFunc != 0;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	33 c9		 xor	 ecx, ecx
  0000c	83 38 00	 cmp	 DWORD PTR [eax], 0
  0000f	0f 95 c1	 setne	 cl
  00012	8b c1		 mov	 eax, ecx

; 41   :     }

  00014	8b e5		 mov	 esp, ebp
  00016	5d		 pop	 ebp
  00017	c3		 ret	 0
??B?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QBEHXZ ENDP ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::operator int
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??R?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QBEKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Param1$ = 8						; size = 4
_Param2$ = 12						; size = 4
_Param3$ = 16						; size = 4
_Param4$ = 20						; size = 4
??R?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QBEKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z PROC ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::operator(), COMDAT
; _this$ = ecx

; 138  :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 139  :         return m_pFunc(Param1, Param2, Param3, Param4);

  00007	8b 45 14	 mov	 eax, DWORD PTR _Param4$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d 10	 mov	 ecx, DWORD PTR _Param3$[ebp]
  0000e	51		 push	 ecx
  0000f	8b 55 0c	 mov	 edx, DWORD PTR _Param2$[ebp]
  00012	52		 push	 edx
  00013	8b 45 08	 mov	 eax, DWORD PTR _Param1$[ebp]
  00016	50		 push	 eax
  00017	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0001a	8b 11		 mov	 edx, DWORD PTR [ecx]
  0001c	ff d2		 call	 edx

; 140  :     }

  0001e	8b e5		 mov	 esp, ebp
  00020	5d		 pop	 ebp
  00021	c2 10 00	 ret	 16			; 00000010H
??R?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QBEKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z ENDP ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::operator()
_TEXT	ENDS
PUBLIC	__$ArrayPad$
PUBLIC	??0CHardwareDriver@@QAE@XZ			; CHardwareDriver::CHardwareDriver
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\hardwaredriver.cpp
;	COMDAT ??0CHardwareDriver@@QAE@XZ
_TEXT	SEGMENT
_this$ = -296						; size = 4
_arch64Bit$ = -292					; size = 4
_ov$ = -288						; size = 276
__$ArrayPad$ = -4					; size = 4
??0CHardwareDriver@@QAE@XZ PROC				; CHardwareDriver::CHardwareDriver, COMDAT
; _this$ = ecx

; 42   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 28 01 00
	00		 sub	 esp, 296		; 00000128H
  00009	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000e	33 c5		 xor	 eax, ebp
  00010	89 45 fc	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00013	89 8d d8 fe ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 43   :     m_hFile = INVALID_HANDLE_VALUE;

  00019	8b 85 d8 fe ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0001f	c7 40 04 ff ff
	ff ff		 mov	 DWORD PTR [eax+4], -1

; 44   :     m_hService = NULL;

  00026	8b 8d d8 fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0002c	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], 0

; 45   : 
; 46   :     OSVERSIONINFO ov;
; 47   : 
; 48   :     ov.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

  00032	c7 85 e0 fe ff
	ff 14 01 00 00	 mov	 DWORD PTR _ov$[ebp], 276 ; 00000114H

; 49   :     GetVersionEx( &ov);

  0003c	8d 95 e0 fe ff
	ff		 lea	 edx, DWORD PTR _ov$[ebp]
  00042	52		 push	 edx
  00043	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetVersionExW@4

; 50   :     m_bWindows95 = (ov.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS);

  00049	33 c0		 xor	 eax, eax
  0004b	83 bd f0 fe ff
	ff 01		 cmp	 DWORD PTR _ov$[ebp+16], 1
  00052	0f 94 c0	 sete	 al
  00055	8b 8d d8 fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0005b	89 41 08	 mov	 DWORD PTR [ecx+8], eax

; 51   :     m_WeStartedDriver = TRUE;

  0005e	8b 95 d8 fe ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00064	c7 42 0c 01 00
	00 00		 mov	 DWORD PTR [edx+12], 1

; 52   :     _tcscpy(m_NTDriverName, _T("DSDrv4"));

  0006b	68 00 00 00 00	 push	 OFFSET ??_C@_1O@OGKCMGDD@?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@
  00070	8b 85 d8 fe ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00076	83 c0 10	 add	 eax, 16			; 00000010H
  00079	50		 push	 eax
  0007a	e8 00 00 00 00	 call	 _wcscpy
  0007f	83 c4 08	 add	 esp, 8

; 53   : 
; 54   :     // we are a 32bit program possibly running on 64bit hardware
; 55   :     // if this is the case then we need to load up an arch
; 56   :     // specific driver, we just append the arch to the standard name
; 57   :     const TCHAR* arch64Bit = _tgetenv(_T("PROCESSOR_ARCHITEW6432"));

  00082	68 00 00 00 00	 push	 OFFSET ??_C@_1CO@FMLBDJLB@?$AAP?$AAR?$AAO?$AAC?$AAE?$AAS?$AAS?$AAO?$AAR?$AA_?$AAA?$AAR?$AAC?$AAH?$AAI?$AAT?$AAE?$AAW?$AA6?$AA4?$AA3?$AA2?$AA?$AA@
  00087	e8 00 00 00 00	 call	 __wgetenv
  0008c	83 c4 04	 add	 esp, 4
  0008f	89 85 dc fe ff
	ff		 mov	 DWORD PTR _arch64Bit$[ebp], eax

; 58   :     if(arch64Bit)

  00095	83 bd dc fe ff
	ff 00		 cmp	 DWORD PTR _arch64Bit$[ebp], 0
  0009c	74 1b		 je	 SHORT $LN3@CHardwareD

; 59   :     {
; 60   :         _tcscat(m_NTDriverName, arch64Bit);

  0009e	8b 8d dc fe ff
	ff		 mov	 ecx, DWORD PTR _arch64Bit$[ebp]
  000a4	51		 push	 ecx
  000a5	8b 95 d8 fe ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  000ab	83 c2 10	 add	 edx, 16			; 00000010H
  000ae	52		 push	 edx
  000af	e8 00 00 00 00	 call	 _wcscat
  000b4	83 c4 08	 add	 esp, 8
  000b7	eb 2c		 jmp	 SHORT $LN4@CHardwareD
$LN3@CHardwareD:

; 61   :     }
; 62   :     // use old driver if we're not at least xp
; 63   :     else if(!m_bWindows95 && ov.dwMajorVersion < 5)

  000b9	8b 85 d8 fe ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  000bf	83 78 08 00	 cmp	 DWORD PTR [eax+8], 0
  000c3	75 20		 jne	 SHORT $LN4@CHardwareD
  000c5	83 bd e4 fe ff
	ff 05		 cmp	 DWORD PTR _ov$[ebp+4], 5
  000cc	73 17		 jae	 SHORT $LN4@CHardwareD

; 64   :     {
; 65   :         _tcscat(m_NTDriverName, _T("nt4"));

  000ce	68 00 00 00 00	 push	 OFFSET ??_C@_17LAEGLCDO@?$AAn?$AAt?$AA4?$AA?$AA@
  000d3	8b 8d d8 fe ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  000d9	83 c1 10	 add	 ecx, 16			; 00000010H
  000dc	51		 push	 ecx
  000dd	e8 00 00 00 00	 call	 _wcscat
  000e2	83 c4 08	 add	 esp, 8
$LN4@CHardwareD:

; 66   :     }
; 67   : }

  000e5	8b 85 d8 fe ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  000eb	8b 4d fc	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  000ee	33 cd		 xor	 ecx, ebp
  000f0	e8 00 00 00 00	 call	 @__security_check_cookie@4
  000f5	8b e5		 mov	 esp, ebp
  000f7	5d		 pop	 ebp
  000f8	c3		 ret	 0
??0CHardwareDriver@@QAE@XZ ENDP				; CHardwareDriver::CHardwareDriver
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
;	COMDAT ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
__Size$142962 = -4					; size = 4
__Newcap$ = 8						; size = 4
?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::reserve, COMDAT
; _this$ = ecx

; 1694 : 		{	// determine new minimum length of allocated storage

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx

; 1695 : 		if (_Mysize <= _Newcap && _Myres != _Newcap)

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  0000f	3b 4d 08	 cmp	 ecx, DWORD PTR __Newcap$[ebp]
  00012	77 35		 ja	 SHORT $LN3@reserve@2
  00014	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00017	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  0001a	3b 45 08	 cmp	 eax, DWORD PTR __Newcap$[ebp]
  0001d	74 2a		 je	 SHORT $LN3@reserve@2

; 1696 : 			{	// change reservation
; 1697 : 			size_type _Size = _Mysize;

  0001f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00022	8b 51 14	 mov	 edx, DWORD PTR [ecx+20]
  00025	89 55 fc	 mov	 DWORD PTR __Size$142962[ebp], edx

; 1698 : 			if (_Grow(_Newcap, true))

  00028	6a 01		 push	 1
  0002a	8b 45 08	 mov	 eax, DWORD PTR __Newcap$[ebp]
  0002d	50		 push	 eax
  0002e	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00031	e8 00 00 00 00	 call	 ?_Grow@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAE_NI_N@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Grow
  00036	0f b6 c8	 movzx	 ecx, al
  00039	85 c9		 test	 ecx, ecx
  0003b	74 0c		 je	 SHORT $LN3@reserve@2

; 1699 : 				_Eos(_Size);

  0003d	8b 55 fc	 mov	 edx, DWORD PTR __Size$142962[ebp]
  00040	52		 push	 edx
  00041	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00044	e8 00 00 00 00	 call	 ?_Eos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXI@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Eos
$LN3@reserve@2:

; 1700 : 			}
; 1701 : 		}

  00049	8b e5		 mov	 esp, ebp
  0004b	5d		 pop	 ebp
  0004c	c2 04 00	 ret	 4
?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::reserve
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\dynamicfunction.h
;	COMDAT ??0?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QAE@PB_WPBD@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_LibraryModule$ = -4					; size = 4
_LibraryName$ = 8					; size = 4
_FunctionName$ = 12					; size = 4
??0?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QAE@PB_WPBD@Z PROC ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>, COMDAT
; _this$ = ecx

; 30   :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx
  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], 0

; 31   :         HMODULE LibraryModule = LibraryCache::GetLibraryHandle(LibraryName);

  00012	8b 4d 08	 mov	 ecx, DWORD PTR _LibraryName$[ebp]
  00015	51		 push	 ecx
  00016	e8 00 00 00 00	 call	 ?GetLibraryHandle@LibraryCache@@SAPAUHINSTANCE__@@PB_W@Z ; LibraryCache::GetLibraryHandle
  0001b	83 c4 04	 add	 esp, 4
  0001e	89 45 fc	 mov	 DWORD PTR _LibraryModule$[ebp], eax

; 32   :         if(LibraryModule)

  00021	83 7d fc 00	 cmp	 DWORD PTR _LibraryModule$[ebp], 0
  00025	74 13		 je	 SHORT $LN2@DynamicFun

; 33   :         {
; 34   :             m_pFunc = (FUNCTYPE)GetProcAddress(LibraryModule,FunctionName);

  00027	8b 55 0c	 mov	 edx, DWORD PTR _FunctionName$[ebp]
  0002a	52		 push	 edx
  0002b	8b 45 fc	 mov	 eax, DWORD PTR _LibraryModule$[ebp]
  0002e	50		 push	 eax
  0002f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetProcAddress@8
  00035	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00038	89 01		 mov	 DWORD PTR [ecx], eax
$LN2@DynamicFun:

; 35   :         }
; 36   :     }

  0003a	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0003d	8b e5		 mov	 esp, ebp
  0003f	5d		 pop	 ebp
  00040	c2 08 00	 ret	 8
??0?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QAE@PB_WPBD@Z ENDP ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??0?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QAE@PB_WPBD@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_LibraryName$ = 8					; size = 4
_FunctionName$ = 12					; size = 4
??0?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QAE@PB_WPBD@Z PROC ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>, COMDAT
; _this$ = ecx

; 134  :     {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx
  00007	8b 45 0c	 mov	 eax, DWORD PTR _FunctionName$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d 08	 mov	 ecx, DWORD PTR _LibraryName$[ebp]
  0000e	51		 push	 ecx
  0000f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00012	e8 00 00 00 00	 call	 ??0?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QAE@PB_WPBD@Z ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>

; 135  :     }

  00017	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0001a	8b e5		 mov	 esp, ebp
  0001c	5d		 pop	 ebp
  0001d	c2 08 00	 ret	 8
??0?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QAE@PB_WPBD@Z ENDP ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>
PUBLIC	?SendCommand@CHardwareDriver@@QAEKKPAXK@Z	; CHardwareDriver::SendCommand
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\hardwaredriver.cpp
;	COMDAT ?SendCommand@CHardwareDriver@@QAEKKPAXK@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_dwDummy$ = -4						; size = 4
_dwIOCommand$ = 8					; size = 4
_pvInput$ = 12						; size = 4
_dwInputLength$ = 16					; size = 4
?SendCommand@CHardwareDriver@@QAEKKPAXK@Z PROC		; CHardwareDriver::SendCommand, COMDAT
; _this$ = ecx

; 719  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx

; 720  :     DWORD dwDummy;
; 721  : 
; 722  :     if(DeviceIoControl(
; 723  :                         m_hFile,
; 724  :                         dwIOCommand,
; 725  :                         pvInput,
; 726  :                         dwInputLength,
; 727  :                         NULL,
; 728  :                         0,
; 729  :                         &dwDummy,
; 730  :                         NULL
; 731  :                       ))

  00009	6a 00		 push	 0
  0000b	8d 45 fc	 lea	 eax, DWORD PTR _dwDummy$[ebp]
  0000e	50		 push	 eax
  0000f	6a 00		 push	 0
  00011	6a 00		 push	 0
  00013	8b 4d 10	 mov	 ecx, DWORD PTR _dwInputLength$[ebp]
  00016	51		 push	 ecx
  00017	8b 55 0c	 mov	 edx, DWORD PTR _pvInput$[ebp]
  0001a	52		 push	 edx
  0001b	8b 45 08	 mov	 eax, DWORD PTR _dwIOCommand$[ebp]
  0001e	50		 push	 eax
  0001f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00022	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00025	52		 push	 edx
  00026	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DeviceIoControl@32
  0002c	85 c0		 test	 eax, eax
  0002e	74 06		 je	 SHORT $LN2@SendComman

; 732  :     {
; 733  :         return 0;

  00030	33 c0		 xor	 eax, eax
  00032	eb 22		 jmp	 SHORT $LN3@SendComman

; 734  :     }
; 735  :     else

  00034	eb 20		 jmp	 SHORT $LN3@SendComman
$LN2@SendComman:

; 736  :     {
; 737  :         LOG(1, _T("DeviceIoControl returned an error = 0x%X For Command 0x%X"), GetLastError(), dwIOCommand);

  00036	8b 45 08	 mov	 eax, DWORD PTR _dwIOCommand$[ebp]
  00039	50		 push	 eax
  0003a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00040	50		 push	 eax
  00041	68 00 00 00 00	 push	 OFFSET ??_C@_1HE@HCOPAMCL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@
  00046	6a 01		 push	 1
  00048	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0004d	83 c4 10	 add	 esp, 16			; 00000010H

; 738  :         return GetLastError();

  00050	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
$LN3@SendComman:

; 739  :     }
; 740  : }

  00056	8b e5		 mov	 esp, ebp
  00058	5d		 pop	 ebp
  00059	c2 0c 00	 ret	 12			; 0000000cH
?SendCommand@CHardwareDriver@@QAEKKPAXK@Z ENDP		; CHardwareDriver::SendCommand
_TEXT	ENDS
PUBLIC	?SendCommand@CHardwareDriver@@QAEKKPAXK0KPAK@Z	; CHardwareDriver::SendCommand
; Function compile flags: /Odtp
;	COMDAT ?SendCommand@CHardwareDriver@@QAEKKPAXK0KPAK@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_dwIOCommand$ = 8					; size = 4
_pvInput$ = 12						; size = 4
_dwInputLength$ = 16					; size = 4
_pvOutput$ = 20						; size = 4
_dwOutputLength$ = 24					; size = 4
_pdwReturnedLength$ = 28				; size = 4
?SendCommand@CHardwareDriver@@QAEKKPAXK0KPAK@Z PROC	; CHardwareDriver::SendCommand, COMDAT
; _this$ = ecx

; 685  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 686  :     if(DeviceIoControl(
; 687  :                         m_hFile,
; 688  :                         dwIOCommand,
; 689  :                         pvInput,
; 690  :                         dwInputLength,
; 691  :                         pvOutput,
; 692  :                         dwOutputLength,
; 693  :                         pdwReturnedLength,
; 694  :                         NULL
; 695  :                       ))

  00007	6a 00		 push	 0
  00009	8b 45 1c	 mov	 eax, DWORD PTR _pdwReturnedLength$[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d 18	 mov	 ecx, DWORD PTR _dwOutputLength$[ebp]
  00010	51		 push	 ecx
  00011	8b 55 14	 mov	 edx, DWORD PTR _pvOutput$[ebp]
  00014	52		 push	 edx
  00015	8b 45 10	 mov	 eax, DWORD PTR _dwInputLength$[ebp]
  00018	50		 push	 eax
  00019	8b 4d 0c	 mov	 ecx, DWORD PTR _pvInput$[ebp]
  0001c	51		 push	 ecx
  0001d	8b 55 08	 mov	 edx, DWORD PTR _dwIOCommand$[ebp]
  00020	52		 push	 edx
  00021	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00024	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00027	51		 push	 ecx
  00028	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DeviceIoControl@32
  0002e	85 c0		 test	 eax, eax
  00030	74 06		 je	 SHORT $LN4@SendComman@2

; 696  :     {
; 697  :         return 0;

  00032	33 c0		 xor	 eax, eax
  00034	eb 43		 jmp	 SHORT $LN5@SendComman@2

; 698  :     }
; 699  :     else

  00036	eb 41		 jmp	 SHORT $LN5@SendComman@2
$LN4@SendComman@2:

; 700  :     {
; 701  :         // Suppress the error when DoesThisPCICardExist() probes for a non-existing card
; 702  :         if(dwIOCommand == IOCTL_DSDRV_GETPCIINFO)

  00038	81 7d 08 26 28
	00 8d		 cmp	 DWORD PTR _dwIOCommand$[ebp], -1929369562 ; 8d002826H
  0003f	75 18		 jne	 SHORT $LN2@SendComman@2

; 703  :         {
; 704  :             LOG(2, _T("DeviceIoControl returned an error = 0x%X For Command ioctlGetPCIInfo. This is probably by design, do not worry."), GetLastError());

  00041	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00047	50		 push	 eax
  00048	68 00 00 00 00	 push	 OFFSET ??_C@_1OA@MCCPJAAL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@
  0004d	6a 02		 push	 2
  0004f	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00054	83 c4 0c	 add	 esp, 12			; 0000000cH

; 705  :         }
; 706  :         else

  00057	eb 1a		 jmp	 SHORT $LN1@SendComman@2
$LN2@SendComman@2:

; 707  :         {
; 708  :             LOG(1, _T("DeviceIoControl returned an error = 0x%X For Command 0x%X"), GetLastError(), dwIOCommand);

  00059	8b 55 08	 mov	 edx, DWORD PTR _dwIOCommand$[ebp]
  0005c	52		 push	 edx
  0005d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00063	50		 push	 eax
  00064	68 00 00 00 00	 push	 OFFSET ??_C@_1HE@HCOPAMCL@?$AAD?$AAe?$AAv?$AAi?$AAc?$AAe?$AAI?$AAo?$AAC?$AAo?$AAn?$AAt?$AAr?$AAo?$AAl?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo@
  00069	6a 01		 push	 1
  0006b	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00070	83 c4 10	 add	 esp, 16			; 00000010H
$LN1@SendComman@2:

; 709  :         }
; 710  :         return GetLastError();

  00073	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
$LN5@SendComman@2:

; 711  :     }
; 712  : }

  00079	8b e5		 mov	 esp, ebp
  0007b	5d		 pop	 ebp
  0007c	c2 18 00	 ret	 24			; 00000018H
?SendCommand@CHardwareDriver@@QAEKKPAXK0KPAK@Z ENDP	; CHardwareDriver::SendCommand
_TEXT	ENDS
PUBLIC	__$ArrayPad$
PUBLIC	?AdjustAccessRights@CHardwareDriver@@AAEHXZ	; CHardwareDriver::AdjustAccessRights
; Function compile flags: /Odtp
;	COMDAT ?AdjustAccessRights@CHardwareDriver@@AAEHXZ
_TEXT	SEGMENT
_this$ = -108						; size = 4
_fnSetEntriesInAcl$142868 = -104			; size = 4
_pSIDEveryone$142823 = -100				; size = 4
_SIDAuthWorld$142822 = -96				; size = 6
__$ArrayPad$ = -88					; size = 4
_psd$ = -84						; size = 4
_dwError$ = -80						; size = 4
_pacl$ = -76						; size = 4
_bDaclDefaulted$ = -72					; size = 4
_ea$ = -68						; size = 32
_bDaclPresent$ = -36					; size = 4
_bError$ = -32						; size = 4
_sd$ = -28						; size = 20
_pNewAcl$ = -8						; size = 4
_dwSize$ = -4						; size = 4
?AdjustAccessRights@CHardwareDriver@@AAEHXZ PROC	; CHardwareDriver::AdjustAccessRights, COMDAT
; _this$ = ecx

; 441  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 6c	 sub	 esp, 108		; 0000006cH
  00006	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000b	33 c5		 xor	 eax, ebp
  0000d	89 45 a8	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00010	89 4d 94	 mov	 DWORD PTR _this$[ebp], ecx

; 442  :     PSECURITY_DESCRIPTOR    psd = NULL;

  00013	c7 45 ac 00 00
	00 00		 mov	 DWORD PTR _psd$[ebp], 0

; 443  :     SECURITY_DESCRIPTOR     sd;
; 444  :     DWORD                   dwSize = 0;

  0001a	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _dwSize$[ebp], 0

; 445  :     DWORD                   dwError = 0;

  00021	c7 45 b0 00 00
	00 00		 mov	 DWORD PTR _dwError$[ebp], 0

; 446  :     BOOL                    bError = FALSE;

  00028	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0

; 447  :     BOOL                    bDaclPresent = FALSE;

  0002f	c7 45 dc 00 00
	00 00		 mov	 DWORD PTR _bDaclPresent$[ebp], 0

; 448  :     BOOL                    bDaclDefaulted = FALSE;

  00036	c7 45 b8 00 00
	00 00		 mov	 DWORD PTR _bDaclDefaulted$[ebp], 0

; 449  :     PACL                    pNewAcl = NULL;

  0003d	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _pNewAcl$[ebp], 0

; 450  :     PACL                    pacl = NULL;

  00044	c7 45 b4 00 00
	00 00		 mov	 DWORD PTR _pacl$[ebp], 0

; 451  :     EXPLICIT_ACCESS         ea;
; 452  : 
; 453  :     if(m_bWindows95)

  0004b	8b 45 94	 mov	 eax, DWORD PTR _this$[ebp]
  0004e	83 78 08 00	 cmp	 DWORD PTR [eax+8], 0
  00052	74 0a		 je	 SHORT $LN22@AdjustAcce

; 454  :     {
; 455  :         return TRUE;

  00054	b8 01 00 00 00	 mov	 eax, 1
  00059	e9 d6 02 00 00	 jmp	 $LN23@AdjustAcce
$LN22@AdjustAcce:

; 456  :     }
; 457  :     if(m_hService == NULL)

  0005e	8b 4d 94	 mov	 ecx, DWORD PTR _this$[ebp]
  00061	83 39 00	 cmp	 DWORD PTR [ecx], 0
  00064	75 07		 jne	 SHORT $LN21@AdjustAcce

; 458  :     {
; 459  :         return FALSE;

  00066	33 c0		 xor	 eax, eax
  00068	e9 c7 02 00 00	 jmp	 $LN23@AdjustAcce
$LN21@AdjustAcce:

; 460  :     }
; 461  : 
; 462  :     // Find out how much memory to allocate for psd.
; 463  :     // psd can't be NULL so we let it point to itself.
; 464  : 
; 465  :     psd = (PSECURITY_DESCRIPTOR)&psd;

  0006d	8d 55 ac	 lea	 edx, DWORD PTR _psd$[ebp]
  00070	89 55 ac	 mov	 DWORD PTR _psd$[ebp], edx

; 466  : 
; 467  :     if(!QueryServiceObjectSecurity(m_hService, DACL_SECURITY_INFORMATION, psd, 0, &dwSize))

  00073	8d 45 fc	 lea	 eax, DWORD PTR _dwSize$[ebp]
  00076	50		 push	 eax
  00077	6a 00		 push	 0
  00079	8b 4d ac	 mov	 ecx, DWORD PTR _psd$[ebp]
  0007c	51		 push	 ecx
  0007d	6a 04		 push	 4
  0007f	8b 55 94	 mov	 edx, DWORD PTR _this$[ebp]
  00082	8b 02		 mov	 eax, DWORD PTR [edx]
  00084	50		 push	 eax
  00085	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__QueryServiceObjectSecurity@20
  0008b	85 c0		 test	 eax, eax
  0008d	75 5c		 jne	 SHORT $LN20@AdjustAcce

; 468  :     {
; 469  :         if(GetLastError() == ERROR_INSUFFICIENT_BUFFER)

  0008f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00095	83 f8 7a	 cmp	 eax, 122		; 0000007aH
  00098	75 34		 jne	 SHORT $LN19@AdjustAcce

; 470  :         {
; 471  :             psd = (PSECURITY_DESCRIPTOR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);

  0009a	8b 4d fc	 mov	 ecx, DWORD PTR _dwSize$[ebp]
  0009d	51		 push	 ecx
  0009e	6a 08		 push	 8
  000a0	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetProcessHeap@0
  000a6	50		 push	 eax
  000a7	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__HeapAlloc@12
  000ad	89 45 ac	 mov	 DWORD PTR _psd$[ebp], eax

; 472  :             if(psd == NULL)

  000b0	83 7d ac 00	 cmp	 DWORD PTR _psd$[ebp], 0
  000b4	75 16		 jne	 SHORT $LN18@AdjustAcce

; 473  :             {
; 474  :                 LOG(0, _T("HeapAlloc failed."));

  000b6	68 00 00 00 00	 push	 OFFSET ??_C@_1CE@LMLBDHKE@?$AAH?$AAe?$AAa?$AAp?$AAA?$AAl?$AAl?$AAo?$AAc?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?$AA@
  000bb	6a 00		 push	 0
  000bd	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000c2	83 c4 08	 add	 esp, 8

; 475  :                 // note: HeapAlloc does not support GetLastError()
; 476  :                 bError = TRUE;

  000c5	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN18@AdjustAcce:

; 477  :             }
; 478  :         }
; 479  :         else

  000cc	eb 1d		 jmp	 SHORT $LN20@AdjustAcce
$LN19@AdjustAcce:

; 480  :         {
; 481  :             LOG(0,_T("QueryServiceObjectSecurity #1 failed. 0x%X"), GetLastError());

  000ce	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  000d4	50		 push	 eax
  000d5	68 00 00 00 00	 push	 OFFSET ??_C@_1FG@OOJMMLNG@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa@
  000da	6a 00		 push	 0
  000dc	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000e1	83 c4 0c	 add	 esp, 12			; 0000000cH

; 482  :             bError = TRUE;

  000e4	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN20@AdjustAcce:

; 483  :         }
; 484  :     }
; 485  : 
; 486  :     // Get the current security descriptor.
; 487  :     if(!bError)

  000eb	83 7d e0 00	 cmp	 DWORD PTR _bError$[ebp], 0
  000ef	75 3b		 jne	 SHORT $LN16@AdjustAcce

; 488  :     {
; 489  :         if(!QueryServiceObjectSecurity(m_hService, DACL_SECURITY_INFORMATION, psd,dwSize, &dwSize))

  000f1	8d 55 fc	 lea	 edx, DWORD PTR _dwSize$[ebp]
  000f4	52		 push	 edx
  000f5	8b 45 fc	 mov	 eax, DWORD PTR _dwSize$[ebp]
  000f8	50		 push	 eax
  000f9	8b 4d ac	 mov	 ecx, DWORD PTR _psd$[ebp]
  000fc	51		 push	 ecx
  000fd	6a 04		 push	 4
  000ff	8b 55 94	 mov	 edx, DWORD PTR _this$[ebp]
  00102	8b 02		 mov	 eax, DWORD PTR [edx]
  00104	50		 push	 eax
  00105	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__QueryServiceObjectSecurity@20
  0010b	85 c0		 test	 eax, eax
  0010d	75 1d		 jne	 SHORT $LN16@AdjustAcce

; 490  :         {
; 491  :             LOG(0,_T("QueryServiceObjectSecurity #2 failed. 0x%X"),GetLastError());

  0010f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00115	50		 push	 eax
  00116	68 00 00 00 00	 push	 OFFSET ??_C@_1FG@KKDNOOMO@?$AAQ?$AAu?$AAe?$AAr?$AAy?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa@
  0011b	6a 00		 push	 0
  0011d	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00122	83 c4 0c	 add	 esp, 12			; 0000000cH

; 492  :             bError = TRUE;

  00125	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN16@AdjustAcce:

; 493  :         }
; 494  :     }
; 495  : 
; 496  :     // Get the DACL.
; 497  :     if(!bError)

  0012c	83 7d e0 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00130	75 37		 jne	 SHORT $LN14@AdjustAcce

; 498  :     {
; 499  :         if(!GetSecurityDescriptorDacl(psd, &bDaclPresent, &pacl, &bDaclDefaulted))

  00132	8d 4d b8	 lea	 ecx, DWORD PTR _bDaclDefaulted$[ebp]
  00135	51		 push	 ecx
  00136	8d 55 b4	 lea	 edx, DWORD PTR _pacl$[ebp]
  00139	52		 push	 edx
  0013a	8d 45 dc	 lea	 eax, DWORD PTR _bDaclPresent$[ebp]
  0013d	50		 push	 eax
  0013e	8b 4d ac	 mov	 ecx, DWORD PTR _psd$[ebp]
  00141	51		 push	 ecx
  00142	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetSecurityDescriptorDacl@16
  00148	85 c0		 test	 eax, eax
  0014a	75 1d		 jne	 SHORT $LN14@AdjustAcce

; 500  :         {
; 501  :             LOG(0,_T("GetSecurityDescriptorDacl failed. 0x%X"),GetLastError());

  0014c	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00152	50		 push	 eax
  00153	68 00 00 00 00	 push	 OFFSET ??_C@_1EO@EHLIDLDP@?$AAG?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd@
  00158	6a 00		 push	 0
  0015a	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0015f	83 c4 0c	 add	 esp, 12			; 0000000cH

; 502  :             bError = TRUE;

  00162	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN14@AdjustAcce:

; 503  :         }
; 504  :     }
; 505  : 
; 506  :     // Build the ACE.
; 507  :     if(!bError)

  00169	83 7d e0 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0016d	0f 85 f6 00 00
	00		 jne	 $LN12@AdjustAcce

; 508  :     {
; 509  :         SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY;

  00173	c6 45 a0 00	 mov	 BYTE PTR _SIDAuthWorld$142822[ebp], 0
  00177	c6 45 a1 00	 mov	 BYTE PTR _SIDAuthWorld$142822[ebp+1], 0
  0017b	c6 45 a2 00	 mov	 BYTE PTR _SIDAuthWorld$142822[ebp+2], 0
  0017f	c6 45 a3 00	 mov	 BYTE PTR _SIDAuthWorld$142822[ebp+3], 0
  00183	c6 45 a4 00	 mov	 BYTE PTR _SIDAuthWorld$142822[ebp+4], 0
  00187	c6 45 a5 01	 mov	 BYTE PTR _SIDAuthWorld$142822[ebp+5], 1

; 510  :         PSID pSIDEveryone;
; 511  : 
; 512  :         // Create a SID for the Everyone group.
; 513  :         if (!AllocateAndInitializeSid(&SIDAuthWorld, 1,
; 514  :                      SECURITY_WORLD_RID,
; 515  :                      0,
; 516  :                      0, 0, 0, 0, 0, 0,
; 517  :                      &pSIDEveryone))

  0018b	8d 55 9c	 lea	 edx, DWORD PTR _pSIDEveryone$142823[ebp]
  0018e	52		 push	 edx
  0018f	6a 00		 push	 0
  00191	6a 00		 push	 0
  00193	6a 00		 push	 0
  00195	6a 00		 push	 0
  00197	6a 00		 push	 0
  00199	6a 00		 push	 0
  0019b	6a 00		 push	 0
  0019d	6a 00		 push	 0
  0019f	6a 01		 push	 1
  001a1	8d 45 a0	 lea	 eax, DWORD PTR _SIDAuthWorld$142822[ebp]
  001a4	50		 push	 eax
  001a5	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__AllocateAndInitializeSid@44
  001ab	85 c0		 test	 eax, eax
  001ad	75 22		 jne	 SHORT $LN11@AdjustAcce

; 518  :         {
; 519  :             LOG(0,_T("AllocateAndInitializeSid() failed. 0x%X"),GetLastError());

  001af	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  001b5	50		 push	 eax
  001b6	68 00 00 00 00	 push	 OFFSET ??_C@_1FA@IELHKFMM@?$AAA?$AAl?$AAl?$AAo?$AAc?$AAa?$AAt?$AAe?$AAA?$AAn?$AAd?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAi?$AAd?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe@
  001bb	6a 00		 push	 0
  001bd	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001c2	83 c4 0c	 add	 esp, 12			; 0000000cH

; 520  :             bError = TRUE;

  001c5	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1

; 521  :         }
; 522  :         else

  001cc	e9 8e 00 00 00	 jmp	 $LN10@AdjustAcce
$LN11@AdjustAcce:

; 523  :         {
; 524  :             DynamicFunctionS4<DWORD, ULONG, PEXPLICIT_ACCESS, PACL, PACL*> fnSetEntriesInAcl(_T("Advapi32.dll"), ADD_API_LETTER(SetEntriesInAcl));

  001d1	68 00 00 00 00	 push	 OFFSET ??_C@_0BB@FCCLKLLL@SetEntriesInAclW?$AA@
  001d6	68 00 00 00 00	 push	 OFFSET ??_C@_1BK@BIGILECK@?$AAA?$AAd?$AAv?$AAa?$AAp?$AAi?$AA3?$AA2?$AA?4?$AAd?$AAl?$AAl?$AA?$AA@
  001db	8d 4d 98	 lea	 ecx, DWORD PTR _fnSetEntriesInAcl$142868[ebp]
  001de	e8 00 00 00 00	 call	 ??0?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QAE@PB_WPBD@Z ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>

; 525  :             if(fnSetEntriesInAcl)

  001e3	8d 4d 98	 lea	 ecx, DWORD PTR _fnSetEntriesInAcl$142868[ebp]
  001e6	e8 00 00 00 00	 call	 ??B?$DynamicFunctionParent@P6GKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z@@QBEHXZ ; DynamicFunctionParent<unsigned long (__stdcall*)(unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *)>::operator int
  001eb	85 c0		 test	 eax, eax
  001ed	74 70		 je	 SHORT $LN10@AdjustAcce

; 526  :             {
; 527  :                 ea.grfAccessMode = SET_ACCESS;

  001ef	c7 45 c0 02 00
	00 00		 mov	 DWORD PTR _ea$[ebp+4], 2

; 528  :                 ea.grfAccessPermissions = DRIVER_ACCESS_RIGHTS;

  001f6	c7 45 bc 30 00
	00 00		 mov	 DWORD PTR _ea$[ebp], 48	; 00000030H

; 529  :                 ea.grfInheritance = NO_INHERITANCE;

  001fd	c7 45 c4 00 00
	00 00		 mov	 DWORD PTR _ea$[ebp+8], 0

; 530  :                 ea.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;

  00204	c7 45 cc 00 00
	00 00		 mov	 DWORD PTR _ea$[ebp+16], 0

; 531  :                 ea.Trustee.pMultipleTrustee = NULL;

  0020b	c7 45 c8 00 00
	00 00		 mov	 DWORD PTR _ea$[ebp+12], 0

; 532  :                 ea.Trustee.TrusteeForm = TRUSTEE_IS_SID;

  00212	c7 45 d0 00 00
	00 00		 mov	 DWORD PTR _ea$[ebp+20], 0

; 533  :                 ea.Trustee.TrusteeType = TRUSTEE_IS_GROUP;

  00219	c7 45 d4 02 00
	00 00		 mov	 DWORD PTR _ea$[ebp+24], 2

; 534  :                 ea.Trustee.ptstrName = (TCHAR* )pSIDEveryone;

  00220	8b 4d 9c	 mov	 ecx, DWORD PTR _pSIDEveryone$142823[ebp]
  00223	89 4d d8	 mov	 DWORD PTR _ea$[ebp+28], ecx

; 535  : 
; 536  :                 dwError = fnSetEntriesInAcl(1, &ea, pacl, &pNewAcl);

  00226	8d 55 f8	 lea	 edx, DWORD PTR _pNewAcl$[ebp]
  00229	52		 push	 edx
  0022a	8b 45 b4	 mov	 eax, DWORD PTR _pacl$[ebp]
  0022d	50		 push	 eax
  0022e	8d 4d bc	 lea	 ecx, DWORD PTR _ea$[ebp]
  00231	51		 push	 ecx
  00232	6a 01		 push	 1
  00234	8d 4d 98	 lea	 ecx, DWORD PTR _fnSetEntriesInAcl$142868[ebp]
  00237	e8 00 00 00 00	 call	 ??R?$DynamicFunctionS4@KKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@@QBEKKPAU_EXPLICIT_ACCESS_W@@PAU_ACL@@PAPAU2@@Z ; DynamicFunctionS4<unsigned long,unsigned long,_EXPLICIT_ACCESS_W *,_ACL *,_ACL * *>::operator()
  0023c	89 45 b0	 mov	 DWORD PTR _dwError$[ebp], eax

; 537  :                 if(dwError != ERROR_SUCCESS)

  0023f	83 7d b0 00	 cmp	 DWORD PTR _dwError$[ebp], 0
  00243	74 1a		 je	 SHORT $LN10@AdjustAcce

; 538  :                 {
; 539  :                     LOG(0,_T("SetEntriesInAcl failed. %d"), dwError);

  00245	8b 55 b0	 mov	 edx, DWORD PTR _dwError$[ebp]
  00248	52		 push	 edx
  00249	68 00 00 00 00	 push	 OFFSET ??_C@_1DG@DFKOCIAC@?$AAS?$AAe?$AAt?$AAE?$AAn?$AAt?$AAr?$AAi?$AAe?$AAs?$AAI?$AAn?$AAA?$AAc?$AAl?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?4?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  0024e	6a 00		 push	 0
  00250	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00255	83 c4 0c	 add	 esp, 12			; 0000000cH

; 540  :                     bError = TRUE;

  00258	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN10@AdjustAcce:

; 541  :                 }
; 542  :             }
; 543  :             else
; 544  :             {
; 545  :                 // ignore lack of this function on NT4??
; 546  :             }
; 547  :         }
; 548  :         FreeSid(pSIDEveryone);

  0025f	8b 45 9c	 mov	 eax, DWORD PTR _pSIDEveryone$142823[ebp]
  00262	50		 push	 eax
  00263	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__FreeSid@4
$LN12@AdjustAcce:

; 549  :     }
; 550  : 
; 551  :     // Initialize a new Security Descriptor.
; 552  :     if(!bError)

  00269	83 7d e0 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0026d	75 2d		 jne	 SHORT $LN6@AdjustAcce

; 553  :     {
; 554  :         if(!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION))

  0026f	6a 01		 push	 1
  00271	8d 4d e4	 lea	 ecx, DWORD PTR _sd$[ebp]
  00274	51		 push	 ecx
  00275	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InitializeSecurityDescriptor@8
  0027b	85 c0		 test	 eax, eax
  0027d	75 1d		 jne	 SHORT $LN6@AdjustAcce

; 555  :         {
; 556  :             LOG(0,_T("InitializeSecurityDescriptor failed. 0x%X"),GetLastError());

  0027f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00285	50		 push	 eax
  00286	68 00 00 00 00	 push	 OFFSET ??_C@_1FE@IGPNIPKO@?$AAI?$AAn?$AAi?$AAt?$AAi?$AAa?$AAl?$AAi?$AAz?$AAe?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AA?5?$AAf?$AAa?$AAi@
  0028b	6a 00		 push	 0
  0028d	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00292	83 c4 0c	 add	 esp, 12			; 0000000cH

; 557  :             bError = TRUE;

  00295	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN6@AdjustAcce:

; 558  :         }
; 559  :     }
; 560  : 
; 561  :     // Set the new DACL in the Security Descriptor.
; 562  :     if(!bError)

  0029c	83 7d e0 00	 cmp	 DWORD PTR _bError$[ebp], 0
  002a0	75 33		 jne	 SHORT $LN4@AdjustAcce

; 563  :     {
; 564  :         if(!SetSecurityDescriptorDacl(&sd, TRUE, pNewAcl, FALSE))

  002a2	6a 00		 push	 0
  002a4	8b 55 f8	 mov	 edx, DWORD PTR _pNewAcl$[ebp]
  002a7	52		 push	 edx
  002a8	6a 01		 push	 1
  002aa	8d 45 e4	 lea	 eax, DWORD PTR _sd$[ebp]
  002ad	50		 push	 eax
  002ae	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetSecurityDescriptorDacl@16
  002b4	85 c0		 test	 eax, eax
  002b6	75 1d		 jne	 SHORT $LN4@AdjustAcce

; 565  :         {
; 566  :             LOG(0, _T("SetSecurityDescriptorDacl"), GetLastError());

  002b8	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  002be	50		 push	 eax
  002bf	68 00 00 00 00	 push	 OFFSET ??_C@_1DE@MKIMBPJG@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AAD?$AAe?$AAs?$AAc?$AAr?$AAi?$AAp?$AAt?$AAo?$AAr?$AAD?$AAa?$AAc?$AAl?$AA?$AA@
  002c4	6a 00		 push	 0
  002c6	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  002cb	83 c4 0c	 add	 esp, 12			; 0000000cH

; 567  :             bError = TRUE;

  002ce	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN4@AdjustAcce:

; 568  :         }
; 569  :     }
; 570  : 
; 571  :     // Set the new DACL for the service object.
; 572  :     if(!bError)

  002d5	83 7d e0 00	 cmp	 DWORD PTR _bError$[ebp], 0
  002d9	75 33		 jne	 SHORT $LN2@AdjustAcce

; 573  :     {
; 574  :         if (!SetServiceObjectSecurity(m_hService, DACL_SECURITY_INFORMATION, &sd))

  002db	8d 4d e4	 lea	 ecx, DWORD PTR _sd$[ebp]
  002de	51		 push	 ecx
  002df	6a 04		 push	 4
  002e1	8b 55 94	 mov	 edx, DWORD PTR _this$[ebp]
  002e4	8b 02		 mov	 eax, DWORD PTR [edx]
  002e6	50		 push	 eax
  002e7	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetServiceObjectSecurity@12
  002ed	85 c0		 test	 eax, eax
  002ef	75 1d		 jne	 SHORT $LN2@AdjustAcce

; 575  :         {
; 576  :             LOG(0, _T("SetServiceObjectSecurity"), GetLastError());

  002f1	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  002f7	50		 push	 eax
  002f8	68 00 00 00 00	 push	 OFFSET ??_C@_1DC@FFNIBLDN@?$AAS?$AAe?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAO?$AAb?$AAj?$AAe?$AAc?$AAt?$AAS?$AAe?$AAc?$AAu?$AAr?$AAi?$AAt?$AAy?$AA?$AA@
  002fd	6a 00		 push	 0
  002ff	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00304	83 c4 0c	 add	 esp, 12			; 0000000cH

; 577  :             bError = TRUE;

  00307	c7 45 e0 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN2@AdjustAcce:

; 578  :         }
; 579  :     }
; 580  : 
; 581  :     // Free buffers.
; 582  :     LocalFree((HLOCAL)pNewAcl);

  0030e	8b 4d f8	 mov	 ecx, DWORD PTR _pNewAcl$[ebp]
  00311	51		 push	 ecx
  00312	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LocalFree@4

; 583  :     HeapFree(GetProcessHeap(), 0, (LPVOID)psd);

  00318	8b 55 ac	 mov	 edx, DWORD PTR _psd$[ebp]
  0031b	52		 push	 edx
  0031c	6a 00		 push	 0
  0031e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetProcessHeap@0
  00324	50		 push	 eax
  00325	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__HeapFree@12

; 584  : 
; 585  :     return !bError;

  0032b	33 c0		 xor	 eax, eax
  0032d	83 7d e0 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00331	0f 94 c0	 sete	 al
$LN23@AdjustAcce:

; 586  : }

  00334	8b 4d a8	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  00337	33 cd		 xor	 ecx, ebp
  00339	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0033e	8b e5		 mov	 esp, ebp
  00340	5d		 pop	 ebp
  00341	c3		 ret	 0
?AdjustAccessRights@CHardwareDriver@@AAEHXZ ENDP	; CHardwareDriver::AdjustAccessRights
_TEXT	ENDS
PUBLIC	?UnloadDriver@CHardwareDriver@@QAEXXZ		; CHardwareDriver::UnloadDriver
; Function compile flags: /Odtp
;	COMDAT ?UnloadDriver@CHardwareDriver@@QAEXXZ
_TEXT	SEGMENT
_this$ = -32						; size = 4
_ServiceStatus$142745 = -28				; size = 28
?UnloadDriver@CHardwareDriver@@QAEXXZ PROC		; CHardwareDriver::UnloadDriver, COMDAT
; _this$ = ecx

; 265  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 20	 sub	 esp, 32			; 00000020H
  00006	89 4d e0	 mov	 DWORD PTR _this$[ebp], ecx

; 266  :     if(m_hFile != INVALID_HANDLE_VALUE)

  00009	8b 45 e0	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 78 04 ff	 cmp	 DWORD PTR [eax+4], -1
  00010	74 17		 je	 SHORT $LN7@UnloadDriv

; 267  :     {
; 268  :         CloseHandle(m_hFile);

  00012	8b 4d e0	 mov	 ecx, DWORD PTR _this$[ebp]
  00015	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00018	52		 push	 edx
  00019	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseHandle@4

; 269  :         m_hFile = INVALID_HANDLE_VALUE;

  0001f	8b 45 e0	 mov	 eax, DWORD PTR _this$[ebp]
  00022	c7 40 04 ff ff
	ff ff		 mov	 DWORD PTR [eax+4], -1
$LN7@UnloadDriv:

; 270  :     }
; 271  : 
; 272  :     if (!m_bWindows95)

  00029	8b 4d e0	 mov	 ecx, DWORD PTR _this$[ebp]
  0002c	83 79 08 00	 cmp	 DWORD PTR [ecx+8], 0
  00030	75 74		 jne	 SHORT $LN8@UnloadDriv

; 273  :     {
; 274  :         if (m_hService != NULL)

  00032	8b 55 e0	 mov	 edx, DWORD PTR _this$[ebp]
  00035	83 3a 00	 cmp	 DWORD PTR [edx], 0
  00038	74 6c		 je	 SHORT $LN8@UnloadDriv

; 275  :         {
; 276  :             if(m_WeStartedDriver)

  0003a	8b 45 e0	 mov	 eax, DWORD PTR _this$[ebp]
  0003d	83 78 0c 00	 cmp	 DWORD PTR [eax+12], 0
  00041	74 2c		 je	 SHORT $LN4@UnloadDriv

; 277  :             {
; 278  :                 SERVICE_STATUS ServiceStatus;
; 279  :                 if(ControlService(m_hService, SERVICE_CONTROL_STOP, &ServiceStatus ) == FALSE)

  00043	8d 4d e4	 lea	 ecx, DWORD PTR _ServiceStatus$142745[ebp]
  00046	51		 push	 ecx
  00047	6a 01		 push	 1
  00049	8b 55 e0	 mov	 edx, DWORD PTR _this$[ebp]
  0004c	8b 02		 mov	 eax, DWORD PTR [edx]
  0004e	50		 push	 eax
  0004f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__ControlService@12
  00055	85 c0		 test	 eax, eax
  00057	75 16		 jne	 SHORT $LN4@UnloadDriv

; 280  :                 {
; 281  :                     LOG(0,_T("SERVICE_CONTROL_STOP failed, error 0x%X"), GetLastError());

  00059	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  0005f	50		 push	 eax
  00060	68 00 00 00 00	 push	 OFFSET ??_C@_1FA@FPBPIAIB@?$AAS?$AAE?$AAR?$AAV?$AAI?$AAC?$AAE?$AA_?$AAC?$AAO?$AAN?$AAT?$AAR?$AAO?$AAL?$AA_?$AAS?$AAT?$AAO?$AAP?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr@
  00065	6a 00		 push	 0
  00067	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0006c	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN4@UnloadDriv:

; 282  :                 }
; 283  :             }
; 284  : 
; 285  :             if(m_hService != NULL)

  0006f	8b 4d e0	 mov	 ecx, DWORD PTR _this$[ebp]
  00072	83 39 00	 cmp	 DWORD PTR [ecx], 0
  00075	74 2f		 je	 SHORT $LN8@UnloadDriv

; 286  :             {
; 287  :                 if(CloseServiceHandle(m_hService) == FALSE)

  00077	8b 55 e0	 mov	 edx, DWORD PTR _this$[ebp]
  0007a	8b 02		 mov	 eax, DWORD PTR [edx]
  0007c	50		 push	 eax
  0007d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseServiceHandle@4
  00083	85 c0		 test	 eax, eax
  00085	75 16		 jne	 SHORT $LN1@UnloadDriv

; 288  :                 {
; 289  :                     LOG(0,_T("CloseServiceHandle failed, error 0x%X"), GetLastError());

  00087	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  0008d	50		 push	 eax
  0008e	68 00 00 00 00	 push	 OFFSET ??_C@_1EM@JOJGOILO@?$AAC?$AAl?$AAo?$AAs?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAH?$AAa?$AAn?$AAd?$AAl?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr@
  00093	6a 00		 push	 0
  00095	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0009a	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN1@UnloadDriv:

; 290  :                 }
; 291  :                 m_hService = NULL;

  0009d	8b 4d e0	 mov	 ecx, DWORD PTR _this$[ebp]
  000a0	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], 0
$LN8@UnloadDriv:

; 292  :             }
; 293  :         }
; 294  :     }
; 295  : }

  000a6	8b e5		 mov	 esp, ebp
  000a8	5d		 pop	 ebp
  000a9	c3		 ret	 0
?UnloadDriver@CHardwareDriver@@QAEXXZ ENDP		; CHardwareDriver::UnloadDriver
_TEXT	ENDS
PUBLIC	??1CHardwareDriver@@QAE@XZ			; CHardwareDriver::~CHardwareDriver
; Function compile flags: /Odtp
;	COMDAT ??1CHardwareDriver@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??1CHardwareDriver@@QAE@XZ PROC				; CHardwareDriver::~CHardwareDriver, COMDAT
; _this$ = ecx

; 70   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 71   :     // just in case the driver hasn't been closed properly
; 72   :     UnloadDriver();

  00007	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ?UnloadDriver@CHardwareDriver@@QAEXXZ ; CHardwareDriver::UnloadDriver

; 73   : 
; 74   : #if defined ALWAYS_UNINSTALL_NTDRIVER
; 75   :     LOG(1,_T("(NT driver) ALWAYS_UNINSTALL_NTDRIVER"));
; 76   :     UnInstallNTDriver();
; 77   : #endif
; 78   : }

  0000f	8b e5		 mov	 esp, ebp
  00011	5d		 pop	 ebp
  00012	c3		 ret	 0
??1CHardwareDriver@@QAE@XZ ENDP				; CHardwareDriver::~CHardwareDriver
PUBLIC	?DoesThisPCICardExist@CHardwareDriver@@QAEHGGHAAK@Z ; CHardwareDriver::DoesThisPCICardExist
; Function compile flags: /Odtp
;	COMDAT ?DoesThisPCICardExist@CHardwareDriver@@QAEHGGHAAK@Z
_TEXT	SEGMENT
_this$ = -44						; size = 4
_dwStatus$ = -40					; size = 4
_dwLength$ = -36					; size = 4
_PCICardInfo$ = -32					; size = 20
_hwParam$ = -12						; size = 12
_VendorID$ = 8						; size = 2
_DeviceID$ = 12						; size = 2
_DeviceIndex$ = 16					; size = 4
_SubSystemId$ = 20					; size = 4
?DoesThisPCICardExist@CHardwareDriver@@QAEHGGHAAK@Z PROC ; CHardwareDriver::DoesThisPCICardExist, COMDAT
; _this$ = ecx

; 743  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 2c	 sub	 esp, 44			; 0000002cH
  00006	89 4d d4	 mov	 DWORD PTR _this$[ebp], ecx

; 744  :     TDSDrvParam hwParam;
; 745  :     DWORD dwStatus;
; 746  :     DWORD dwLength;
; 747  :     TPCICARDINFO PCICardInfo;
; 748  : 
; 749  :     hwParam.dwAddress = VendorID;

  00009	0f b7 45 08	 movzx	 eax, WORD PTR _VendorID$[ebp]
  0000d	89 45 f4	 mov	 DWORD PTR _hwParam$[ebp], eax

; 750  :     hwParam.dwValue = DeviceID;

  00010	0f b7 4d 0c	 movzx	 ecx, WORD PTR _DeviceID$[ebp]
  00014	89 4d f8	 mov	 DWORD PTR _hwParam$[ebp+4], ecx

; 751  :     hwParam.dwFlags = DeviceIndex;

  00017	8b 55 10	 mov	 edx, DWORD PTR _DeviceIndex$[ebp]
  0001a	89 55 fc	 mov	 DWORD PTR _hwParam$[ebp+8], edx

; 752  : 
; 753  :     dwStatus = SendCommand(
; 754  :                             IOCTL_DSDRV_GETPCIINFO,
; 755  :                             &hwParam,
; 756  :                             sizeof(hwParam),
; 757  :                             &PCICardInfo,
; 758  :                             sizeof(TPCICARDINFO),
; 759  :                             &dwLength
; 760  :                           );

  0001d	8d 45 dc	 lea	 eax, DWORD PTR _dwLength$[ebp]
  00020	50		 push	 eax
  00021	6a 14		 push	 20			; 00000014H
  00023	8d 4d e0	 lea	 ecx, DWORD PTR _PCICardInfo$[ebp]
  00026	51		 push	 ecx
  00027	6a 0c		 push	 12			; 0000000cH
  00029	8d 55 f4	 lea	 edx, DWORD PTR _hwParam$[ebp]
  0002c	52		 push	 edx
  0002d	68 26 28 00 8d	 push	 -1929369562		; 8d002826H
  00032	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  00035	e8 00 00 00 00	 call	 ?SendCommand@CHardwareDriver@@QAEKKPAXK0KPAK@Z ; CHardwareDriver::SendCommand
  0003a	89 45 d8	 mov	 DWORD PTR _dwStatus$[ebp], eax

; 761  : 
; 762  :     if(dwStatus == ERROR_SUCCESS)

  0003d	83 7d d8 00	 cmp	 DWORD PTR _dwStatus$[ebp], 0
  00041	75 11		 jne	 SHORT $LN2@DoesThisPC

; 763  :     {
; 764  :         SubSystemId = PCICardInfo.dwSubSystemId;

  00043	8b 45 14	 mov	 eax, DWORD PTR _SubSystemId$[ebp]
  00046	8b 4d e8	 mov	 ecx, DWORD PTR _PCICardInfo$[ebp+8]
  00049	89 08		 mov	 DWORD PTR [eax], ecx

; 765  :         return TRUE;

  0004b	b8 01 00 00 00	 mov	 eax, 1
  00050	eb 0d		 jmp	 SHORT $LN3@DoesThisPC

; 766  :     }
; 767  :     else

  00052	eb 0b		 jmp	 SHORT $LN3@DoesThisPC
$LN2@DoesThisPC:

; 768  :     {
; 769  :         SubSystemId = 0;

  00054	8b 55 14	 mov	 edx, DWORD PTR _SubSystemId$[ebp]
  00057	c7 02 00 00 00
	00		 mov	 DWORD PTR [edx], 0

; 770  :         return FALSE;

  0005d	33 c0		 xor	 eax, eax
$LN3@DoesThisPC:

; 771  :     }
; 772  : }

  0005f	8b e5		 mov	 esp, ebp
  00061	5d		 pop	 ebp
  00062	c2 10 00	 ret	 16			; 00000010H
?DoesThisPCICardExist@CHardwareDriver@@QAEHGGHAAK@Z ENDP ; CHardwareDriver::DoesThisPCICardExist
_TEXT	ENDS
PUBLIC	?UnInstallNTDriver@CHardwareDriver@@QAEHXZ	; CHardwareDriver::UnInstallNTDriver
; Function compile flags: /Odtp
;	COMDAT ?UnInstallNTDriver@CHardwareDriver@@QAEHXZ
_TEXT	SEGMENT
_this$ = -40						; size = 4
_ServiceStatus$142904 = -36				; size = 28
_bError$ = -8						; size = 4
_hSCManager$ = -4					; size = 4
?UnInstallNTDriver@CHardwareDriver@@QAEHXZ PROC		; CHardwareDriver::UnInstallNTDriver, COMDAT
; _this$ = ecx

; 589  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 28	 sub	 esp, 40			; 00000028H
  00006	89 4d d8	 mov	 DWORD PTR _this$[ebp], ecx

; 590  :     SC_HANDLE hSCManager = NULL;

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _hSCManager$[ebp], 0

; 591  :     BOOL      bError = FALSE;

  00010	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0

; 592  : 
; 593  :     LOG(1, _T("Attempting to uninstall NT driver."));

  00017	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@PHBLHLMB@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe@
  0001c	6a 01		 push	 1
  0001e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00023	83 c4 08	 add	 esp, 8

; 594  : 
; 595  :     if (m_bWindows95)

  00026	8b 45 d8	 mov	 eax, DWORD PTR _this$[ebp]
  00029	83 78 08 00	 cmp	 DWORD PTR [eax+8], 0
  0002d	74 14		 je	 SHORT $LN15@UnInstallN

; 596  :     {
; 597  :         LOG(1,_T("(NT driver) Uninstall not needed with win9x/ME."));

  0002f	68 00 00 00 00	 push	 OFFSET ??_C@_1GA@PPHBGFPM@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAn?$AAe?$AAe?$AAd?$AAe?$AAd@
  00034	6a 01		 push	 1
  00036	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0003b	83 c4 08	 add	 esp, 8

; 598  :     }
; 599  :     else

  0003e	e9 b1 01 00 00	 jmp	 $LN14@UnInstallN
$LN15@UnInstallN:

; 600  :     {
; 601  :         UnloadDriver();

  00043	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  00046	e8 00 00 00 00	 call	 ?UnloadDriver@CHardwareDriver@@QAEXXZ ; CHardwareDriver::UnloadDriver

; 602  : 
; 603  :         // get handle of the Service Control Manager
; 604  :         hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

  0004b	68 3f 00 0f 00	 push	 983103			; 000f003fH
  00050	6a 00		 push	 0
  00052	6a 00		 push	 0
  00054	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__OpenSCManagerW@12
  0005a	89 45 fc	 mov	 DWORD PTR _hSCManager$[ebp], eax

; 605  :         if(hSCManager == NULL)

  0005d	83 7d fc 00	 cmp	 DWORD PTR _hSCManager$[ebp], 0
  00061	75 1d		 jne	 SHORT $LN13@UnInstallN

; 606  :         {
; 607  :             LOG(0, _T("OpenSCManager returned an error = 0x%X"), GetLastError());

  00063	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00069	50		 push	 eax
  0006a	68 00 00 00 00	 push	 OFFSET ??_C@_1EO@BLGMCOII@?$AAO?$AAp?$AAe?$AAn?$AAS?$AAC?$AAM?$AAa?$AAn?$AAa?$AAg?$AAe?$AAr?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@
  0006f	6a 00		 push	 0
  00071	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00076	83 c4 0c	 add	 esp, 12			; 0000000cH

; 608  :             bError = TRUE;

  00079	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN13@UnInstallN:

; 609  :         }
; 610  : 
; 611  :         if(!bError)

  00080	83 7d f8 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00084	75 7d		 jne	 SHORT $LN12@UnInstallN

; 612  :         {
; 613  :             m_hService = OpenService(hSCManager, m_NTDriverName, SERVICE_ALL_ACCESS);

  00086	68 ff 01 0f 00	 push	 983551			; 000f01ffH
  0008b	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  0008e	83 c1 10	 add	 ecx, 16			; 00000010H
  00091	51		 push	 ecx
  00092	8b 55 fc	 mov	 edx, DWORD PTR _hSCManager$[ebp]
  00095	52		 push	 edx
  00096	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__OpenServiceW@12
  0009c	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  0009f	89 01		 mov	 DWORD PTR [ecx], eax

; 614  :             if(m_hService == NULL)

  000a1	8b 55 d8	 mov	 edx, DWORD PTR _this$[ebp]
  000a4	83 3a 00	 cmp	 DWORD PTR [edx], 0
  000a7	75 5a		 jne	 SHORT $LN12@UnInstallN

; 615  :             {
; 616  :                 if(GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST)

  000a9	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  000af	3d 24 04 00 00	 cmp	 eax, 1060		; 00000424H
  000b4	75 30		 jne	 SHORT $LN10@UnInstallN

; 617  :                 {
; 618  :                     LOG(0,_T("(NT driver) Service does not exist, no need to uninstall."));

  000b6	68 00 00 00 00	 push	 OFFSET ??_C@_1HE@LCAEOKIA@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@
  000bb	6a 00		 push	 0
  000bd	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000c2	83 c4 08	 add	 esp, 8

; 619  :                     CloseServiceHandle(m_hService);

  000c5	8b 45 d8	 mov	 eax, DWORD PTR _this$[ebp]
  000c8	8b 08		 mov	 ecx, DWORD PTR [eax]
  000ca	51		 push	 ecx
  000cb	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseServiceHandle@4

; 620  :                     m_hService = NULL;

  000d1	8b 55 d8	 mov	 edx, DWORD PTR _this$[ebp]
  000d4	c7 02 00 00 00
	00		 mov	 DWORD PTR [edx], 0

; 621  :                     return TRUE;

  000da	b8 01 00 00 00	 mov	 eax, 1
  000df	e9 15 01 00 00	 jmp	 $LN16@UnInstallN

; 622  :                 }
; 623  :                 else

  000e4	eb 1d		 jmp	 SHORT $LN12@UnInstallN
$LN10@UnInstallN:

; 624  :                 {
; 625  :                     LOG(0,_T("(NT driver) Unable to open service. 0x%X"),GetLastError());

  000e6	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  000ec	50		 push	 eax
  000ed	68 00 00 00 00	 push	 OFFSET ??_C@_1FC@PKPNJGGN@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAo?$AAp?$AAe?$AAn?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi@
  000f2	6a 00		 push	 0
  000f4	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000f9	83 c4 0c	 add	 esp, 12			; 0000000cH

; 626  :                     bError = TRUE;

  000fc	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN12@UnInstallN:

; 627  :                 }
; 628  :             }
; 629  :         }
; 630  : 
; 631  :         if(!bError)

  00103	83 7d f8 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00107	75 12		 jne	 SHORT $LN8@UnInstallN

; 632  :         {
; 633  :             SERVICE_STATUS ServiceStatus;
; 634  :             ControlService(m_hService, SERVICE_CONTROL_STOP, &ServiceStatus );

  00109	8d 45 dc	 lea	 eax, DWORD PTR _ServiceStatus$142904[ebp]
  0010c	50		 push	 eax
  0010d	6a 01		 push	 1
  0010f	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  00112	8b 11		 mov	 edx, DWORD PTR [ecx]
  00114	52		 push	 edx
  00115	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__ControlService@12
$LN8@UnInstallN:

; 635  :         }
; 636  : 
; 637  :         if(hSCManager != NULL)

  0011b	83 7d fc 00	 cmp	 DWORD PTR _hSCManager$[ebp], 0
  0011f	74 32		 je	 SHORT $LN7@UnInstallN

; 638  :         {
; 639  :             if(!CloseServiceHandle(hSCManager))

  00121	8b 45 fc	 mov	 eax, DWORD PTR _hSCManager$[ebp]
  00124	50		 push	 eax
  00125	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseServiceHandle@4
  0012b	85 c0		 test	 eax, eax
  0012d	75 1d		 jne	 SHORT $LN6@UnInstallN

; 640  :             {
; 641  :                 LOG(0,_T("(NT driver) Failed to close handle to service control manager. 0x%X"),GetLastError());

  0012f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00135	50		 push	 eax
  00136	68 00 00 00 00	 push	 OFFSET ??_C@_1II@LDEFFFMP@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAc?$AAl?$AAo?$AAs?$AAe?$AA?5?$AAh?$AAa?$AAn?$AAd@
  0013b	6a 00		 push	 0
  0013d	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00142	83 c4 0c	 add	 esp, 12			; 0000000cH

; 642  :                 bError = TRUE;

  00145	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN6@UnInstallN:

; 643  :             }
; 644  :             hSCManager = NULL;

  0014c	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _hSCManager$[ebp], 0
$LN7@UnInstallN:

; 645  :         }
; 646  : 
; 647  :         if(!bError)

  00153	83 7d f8 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00157	75 2d		 jne	 SHORT $LN5@UnInstallN

; 648  :         {
; 649  :             if (DeleteService(m_hService) == FALSE)

  00159	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  0015c	8b 11		 mov	 edx, DWORD PTR [ecx]
  0015e	52		 push	 edx
  0015f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DeleteService@4
  00165	85 c0		 test	 eax, eax
  00167	75 1d		 jne	 SHORT $LN5@UnInstallN

; 650  :             {
; 651  :                 LOG(0,_T("DeleteService failed, error 0x%X"), GetLastError());

  00169	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  0016f	50		 push	 eax
  00170	68 00 00 00 00	 push	 OFFSET ??_C@_1EC@PNJLIGGF@?$AAD?$AAe?$AAl?$AAe?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@
  00175	6a 00		 push	 0
  00177	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0017c	83 c4 0c	 add	 esp, 12			; 0000000cH

; 652  :                 bError = TRUE;

  0017f	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN5@UnInstallN:

; 653  :             }
; 654  :         }
; 655  : 
; 656  :         if(m_hService != NULL)

  00186	8b 45 d8	 mov	 eax, DWORD PTR _this$[ebp]
  00189	83 38 00	 cmp	 DWORD PTR [eax], 0
  0018c	74 36		 je	 SHORT $LN3@UnInstallN

; 657  :         {
; 658  :             if(CloseServiceHandle(m_hService) == FALSE)

  0018e	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  00191	8b 11		 mov	 edx, DWORD PTR [ecx]
  00193	52		 push	 edx
  00194	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseServiceHandle@4
  0019a	85 c0		 test	 eax, eax
  0019c	75 1d		 jne	 SHORT $LN2@UnInstallN

; 659  :             {
; 660  :                 LOG(0,_T("CloseServiceHandle failed, error 0x%X"), GetLastError());

  0019e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  001a4	50		 push	 eax
  001a5	68 00 00 00 00	 push	 OFFSET ??_C@_1EM@JOJGOILO@?$AAC?$AAl?$AAo?$AAs?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AAH?$AAa?$AAn?$AAd?$AAl?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr@
  001aa	6a 00		 push	 0
  001ac	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001b1	83 c4 0c	 add	 esp, 12			; 0000000cH

; 661  :                 bError = TRUE;

  001b4	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN2@UnInstallN:

; 662  :             }
; 663  :             m_hService = NULL;

  001bb	8b 45 d8	 mov	 eax, DWORD PTR _this$[ebp]
  001be	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], 0
$LN3@UnInstallN:

; 664  :         }
; 665  : 
; 666  :         if(bError)

  001c4	83 7d f8 00	 cmp	 DWORD PTR _bError$[ebp], 0
  001c8	74 1b		 je	 SHORT $LN1@UnInstallN

; 667  :         {
; 668  :             UnloadDriver();

  001ca	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  001cd	e8 00 00 00 00	 call	 ?UnloadDriver@CHardwareDriver@@QAEXXZ ; CHardwareDriver::UnloadDriver

; 669  :             LOG(1, _T("Failed to uninstall driver."));

  001d2	68 00 00 00 00	 push	 OFFSET ??_C@_1DI@GLBEPKON@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAu?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@
  001d7	6a 01		 push	 1
  001d9	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001de	83 c4 08	 add	 esp, 8

; 670  :             return FALSE;

  001e1	33 c0		 xor	 eax, eax
  001e3	eb 14		 jmp	 SHORT $LN16@UnInstallN
$LN1@UnInstallN:

; 671  :         }
; 672  :         LOG(1, _T("Uninstall NT driver complete."));

  001e5	68 00 00 00 00	 push	 OFFSET ??_C@_1DM@GJPDNNPM@?$AAU?$AAn?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@
  001ea	6a 01		 push	 1
  001ec	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001f1	83 c4 08	 add	 esp, 8
$LN14@UnInstallN:

; 673  :     }
; 674  :     return TRUE;

  001f4	b8 01 00 00 00	 mov	 eax, 1
$LN16@UnInstallN:

; 675  : }

  001f9	8b e5		 mov	 esp, ebp
  001fb	5d		 pop	 ebp
  001fc	c3		 ret	 0
?UnInstallNTDriver@CHardwareDriver@@QAEHXZ ENDP		; CHardwareDriver::UnInstallNTDriver
PUBLIC	__$ArrayPad$
PUBLIC	?InstallNTDriver@CHardwareDriver@@QAEHXZ	; CHardwareDriver::InstallNTDriver
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?InstallNTDriver@CHardwareDriver@@QAEHXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?InstallNTDriver@CHardwareDriver@@QAEHXZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$?InstallNTDriver@CHardwareDriver@@QAEHXZ$1
__ehfuncinfo$?InstallNTDriver@CHardwareDriver@@QAEHXZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?InstallNTDriver@CHardwareDriver@@QAEHXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?InstallNTDriver@CHardwareDriver@@QAEHXZ
_TEXT	SEGMENT
_this$ = -96						; size = 4
$T355259 = -92						; size = 4
$T355258 = -88						; size = 4
$T355257 = -84						; size = 28
$T355256 = -56						; size = 4
_szDriverPath$ = -52					; size = 28
__$ArrayPad$ = -24					; size = 4
_bError$ = -20						; size = 4
_hSCManager$ = -16					; size = 4
__$EHRec$ = -12						; size = 12
?InstallNTDriver@CHardwareDriver@@QAEHXZ PROC		; CHardwareDriver::InstallNTDriver, COMDAT
; _this$ = ecx

; 299  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?InstallNTDriver@CHardwareDriver@@QAEHXZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 54	 sub	 esp, 84			; 00000054H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	89 45 e8	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  0001e	50		 push	 eax
  0001f	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  00022	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00028	89 4d a0	 mov	 DWORD PTR _this$[ebp], ecx

; 300  :     tstring      szDriverPath(GetInstallationPath());

  0002b	8d 45 cc	 lea	 eax, DWORD PTR _szDriverPath$[ebp]
  0002e	50		 push	 eax
  0002f	e8 00 00 00 00	 call	 ?GetInstallationPath@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ ; GetInstallationPath
  00034	83 c4 04	 add	 esp, 4
  00037	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 301  :     SC_HANDLE   hSCManager = NULL;

  0003e	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _hSCManager$[ebp], 0

; 302  :     BOOL        bError = FALSE;

  00045	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0

; 303  : 
; 304  :     LOG(1, _T("Attempting to install NT driver."));

  0004c	68 00 00 00 00	 push	 OFFSET ??_C@_1EC@OEJKFKJE@?$AAA?$AAt?$AAt?$AAe?$AAm?$AAp?$AAt?$AAi?$AAn?$AAg?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4@
  00051	6a 01		 push	 1
  00053	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00058	83 c4 08	 add	 esp, 8

; 305  : 
; 306  :     UnloadDriver();

  0005b	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  0005e	e8 00 00 00 00	 call	 ?UnloadDriver@CHardwareDriver@@QAEXXZ ; CHardwareDriver::UnloadDriver

; 307  : 
; 308  :     if (m_bWindows95)

  00063	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  00066	83 79 08 00	 cmp	 DWORD PTR [ecx+8], 0
  0006a	74 2d		 je	 SHORT $LN19@InstallNTD

; 309  :     {
; 310  :         LOG(1, _T("No need to install NT driver with win9x/ME."));

  0006c	68 00 00 00 00	 push	 OFFSET ??_C@_1FI@KHCBNJFO@?$AAN?$AAo?$AA?5?$AAn?$AAe?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAw?$AAi?$AAt@
  00071	6a 01		 push	 1
  00073	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00078	83 c4 08	 add	 esp, 8

; 311  :         return TRUE;

  0007b	c7 45 c8 01 00
	00 00		 mov	 DWORD PTR $T355256[ebp], 1
  00082	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00089	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  0008c	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00091	8b 45 c8	 mov	 eax, DWORD PTR $T355256[ebp]
  00094	e9 f4 02 00 00	 jmp	 $LN20@InstallNTD
$LN19@InstallNTD:

; 312  :     }
; 313  : 
; 314  :     if(!bError)

  00099	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0009d	75 50		 jne	 SHORT $LN18@InstallNTD

; 315  :     {
; 316  :         if(GetDriveType(szDriverPath.c_str()) == DRIVE_REMOTE)

  0009f	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  000a2	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  000a7	50		 push	 eax
  000a8	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetDriveTypeW@4
  000ae	83 f8 04	 cmp	 eax, 4
  000b1	75 3c		 jne	 SHORT $LN18@InstallNTD

; 317  :         {
; 318  :             ErrorBox(_T("The DScaler device driver can't be installed from a network drive."));

  000b3	68 00 00 00 00	 push	 OFFSET ??_C@_1IG@BLAAGHGI@?$AAT?$AAh?$AAe?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?5?$AAd?$AAe?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAc?$AAa?$AAn?$AA?8?$AAt?$AA?5@
  000b8	8d 4d ac	 lea	 ecx, DWORD PTR $T355257[ebp]
  000bb	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  000c0	c6 45 fc 01	 mov	 BYTE PTR __$EHRec$[ebp+8], 1
  000c4	8d 55 ac	 lea	 edx, DWORD PTR $T355257[ebp]
  000c7	52		 push	 edx
  000c8	68 3e 01 00 00	 push	 318			; 0000013eH
  000cd	68 00 00 00 00	 push	 OFFSET ??_C@_1CK@EONPLDMJ@?$AA?4?$AA?2?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  000d2	6a 00		 push	 0
  000d4	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  000d9	83 c4 10	 add	 esp, 16			; 00000010H
  000dc	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  000e0	8d 4d ac	 lea	 ecx, DWORD PTR $T355257[ebp]
  000e3	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 319  :             bError = TRUE;

  000e8	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN18@InstallNTD:

; 320  :         }
; 321  :     }
; 322  : 
; 323  :     if(!bError)

  000ef	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  000f3	75 5e		 jne	 SHORT $LN16@InstallNTD

; 324  :     {
; 325  :         szDriverPath +=  _T("\\");

  000f5	68 00 00 00 00	 push	 OFFSET ??_C@_13FPGAJAPJ@?$AA?2?$AA?$AA@
  000fa	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  000fd	e8 00 00 00 00	 call	 ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator+=

; 326  :         szDriverPath += m_NTDriverName;

  00102	8b 45 a0	 mov	 eax, DWORD PTR _this$[ebp]
  00105	83 c0 10	 add	 eax, 16			; 00000010H
  00108	50		 push	 eax
  00109	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  0010c	e8 00 00 00 00	 call	 ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator+=

; 327  :         szDriverPath += _T(".sys");

  00111	68 00 00 00 00	 push	 OFFSET ??_C@_19DKJJGBOC@?$AA?4?$AAs?$AAy?$AAs?$AA?$AA@
  00116	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00119	e8 00 00 00 00	 call	 ??Y?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator+=

; 328  : 
; 329  :         hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

  0011e	68 3f 00 0f 00	 push	 983103			; 000f003fH
  00123	6a 00		 push	 0
  00125	6a 00		 push	 0
  00127	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__OpenSCManagerW@12
  0012d	89 45 f0	 mov	 DWORD PTR _hSCManager$[ebp], eax

; 330  :         if(hSCManager == NULL)

  00130	83 7d f0 00	 cmp	 DWORD PTR _hSCManager$[ebp], 0
  00134	75 1d		 jne	 SHORT $LN16@InstallNTD

; 331  :         {
; 332  :             LOG(0, _T("OpenSCManager returned an error = 0x%X"), GetLastError());

  00136	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  0013c	50		 push	 eax
  0013d	68 00 00 00 00	 push	 OFFSET ??_C@_1EO@BLGMCOII@?$AAO?$AAp?$AAe?$AAn?$AAS?$AAC?$AAM?$AAa?$AAn?$AAa?$AAg?$AAe?$AAr?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@
  00142	6a 00		 push	 0
  00144	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00149	83 c4 0c	 add	 esp, 12			; 0000000cH

; 333  :             bError = TRUE;

  0014c	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN16@InstallNTD:

; 334  :         }
; 335  :     }
; 336  : 
; 337  :     if(!bError)

  00153	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00157	0f 85 6c 01 00
	00		 jne	 $LN14@InstallNTD

; 338  :     {
; 339  :         // Make sure no spaces exist in the path since CreateService() does not like spaces.
; 340  :         szDriverPath.reserve(MAX_PATH);

  0015d	68 04 01 00 00	 push	 260			; 00000104H
  00162	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00165	e8 00 00 00 00	 call	 ?reserve@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXI@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::reserve

; 341  :         GetShortPathName(szDriverPath.c_str(), (LPTSTR)szDriverPath.c_str(), MAX_PATH);

  0016a	68 04 01 00 00	 push	 260			; 00000104H
  0016f	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00172	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  00177	50		 push	 eax
  00178	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  0017b	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  00180	50		 push	 eax
  00181	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetShortPathNameW@12

; 342  : 
; 343  :         m_hService = CreateService(
; 344  :             hSCManager,            // SCManager database
; 345  :             m_NTDriverName,        // name of service
; 346  :             m_NTDriverName,        // name to display
; 347  :             SERVICE_ALL_ACCESS,    // desired access
; 348  :             SERVICE_KERNEL_DRIVER, // service type
; 349  :             SERVICE_DEMAND_START,  // start type
; 350  :             SERVICE_ERROR_NORMAL,  // error control type
; 351  :             szDriverPath.c_str(),  // service's binary
; 352  :             NULL,                  // no load ordering group
; 353  :             NULL,                  // no tag identifier
; 354  :             NULL,                  // no dependencies
; 355  :             NULL,                  // LocalSystem account
; 356  :             NULL                   // no password
; 357  :             );

  00187	6a 00		 push	 0
  00189	6a 00		 push	 0
  0018b	6a 00		 push	 0
  0018d	6a 00		 push	 0
  0018f	6a 00		 push	 0
  00191	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00194	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  00199	50		 push	 eax
  0019a	6a 01		 push	 1
  0019c	6a 03		 push	 3
  0019e	6a 01		 push	 1
  001a0	68 ff 01 0f 00	 push	 983551			; 000f01ffH
  001a5	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  001a8	83 c1 10	 add	 ecx, 16			; 00000010H
  001ab	51		 push	 ecx
  001ac	8b 55 a0	 mov	 edx, DWORD PTR _this$[ebp]
  001af	83 c2 10	 add	 edx, 16			; 00000010H
  001b2	52		 push	 edx
  001b3	8b 45 f0	 mov	 eax, DWORD PTR _hSCManager$[ebp]
  001b6	50		 push	 eax
  001b7	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateServiceW@52
  001bd	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  001c0	89 01		 mov	 DWORD PTR [ecx], eax

; 358  : 
; 359  :         if(m_hService == NULL)

  001c2	8b 55 a0	 mov	 edx, DWORD PTR _this$[ebp]
  001c5	83 3a 00	 cmp	 DWORD PTR [edx], 0
  001c8	0f 85 fb 00 00
	00		 jne	 $LN14@InstallNTD

; 360  :         {
; 361  :             // if the service already exists delete it and create it again.
; 362  :             // this might prevent problems when the existing service points to another driver.
; 363  :             if(GetLastError() == ERROR_SERVICE_EXISTS)

  001ce	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  001d4	3d 31 04 00 00	 cmp	 eax, 1073		; 00000431H
  001d9	0f 85 cd 00 00
	00		 jne	 $LN12@InstallNTD

; 364  :             {
; 365  :                 m_hService = OpenService(hSCManager, m_NTDriverName, SERVICE_ALL_ACCESS);

  001df	68 ff 01 0f 00	 push	 983551			; 000f01ffH
  001e4	8b 45 a0	 mov	 eax, DWORD PTR _this$[ebp]
  001e7	83 c0 10	 add	 eax, 16			; 00000010H
  001ea	50		 push	 eax
  001eb	8b 4d f0	 mov	 ecx, DWORD PTR _hSCManager$[ebp]
  001ee	51		 push	 ecx
  001ef	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__OpenServiceW@12
  001f5	8b 55 a0	 mov	 edx, DWORD PTR _this$[ebp]
  001f8	89 02		 mov	 DWORD PTR [edx], eax

; 366  :                 if(DeleteService(m_hService) == FALSE)

  001fa	8b 45 a0	 mov	 eax, DWORD PTR _this$[ebp]
  001fd	8b 08		 mov	 ecx, DWORD PTR [eax]
  001ff	51		 push	 ecx
  00200	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DeleteService@4
  00206	85 c0		 test	 eax, eax
  00208	75 1d		 jne	 SHORT $LN11@InstallNTD

; 367  :                 {
; 368  :                     LOG(0,_T("DeleteService failed, error 0x%X"), GetLastError());

  0020a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00210	50		 push	 eax
  00211	68 00 00 00 00	 push	 OFFSET ??_C@_1EC@PNJLIGGF@?$AAD?$AAe?$AAl?$AAe?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?0?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@
  00216	6a 00		 push	 0
  00218	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0021d	83 c4 0c	 add	 esp, 12			; 0000000cH

; 369  :                     bError = TRUE;

  00220	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN11@InstallNTD:

; 370  :                 }
; 371  :                 if(m_hService != NULL)

  00227	8b 55 a0	 mov	 edx, DWORD PTR _this$[ebp]
  0022a	83 3a 00	 cmp	 DWORD PTR [edx], 0
  0022d	74 15		 je	 SHORT $LN10@InstallNTD

; 372  :                 {
; 373  :                     CloseServiceHandle(m_hService);

  0022f	8b 45 a0	 mov	 eax, DWORD PTR _this$[ebp]
  00232	8b 08		 mov	 ecx, DWORD PTR [eax]
  00234	51		 push	 ecx
  00235	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseServiceHandle@4

; 374  :                     m_hService = NULL;

  0023b	8b 55 a0	 mov	 edx, DWORD PTR _this$[ebp]
  0023e	c7 02 00 00 00
	00		 mov	 DWORD PTR [edx], 0
$LN10@InstallNTD:

; 375  :                 }
; 376  :                 if(!bError)

  00244	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00248	75 60		 jne	 SHORT $LN9@InstallNTD

; 377  :                 {
; 378  :                     m_hService = CreateService(
; 379  :                         hSCManager,            // SCManager database
; 380  :                         m_NTDriverName,        // name of service
; 381  :                         m_NTDriverName,        // name to display
; 382  :                         SERVICE_ALL_ACCESS,    // desired access
; 383  :                         SERVICE_KERNEL_DRIVER, // service type
; 384  :                         SERVICE_DEMAND_START,  // start type
; 385  :                         SERVICE_ERROR_NORMAL,  // error control type
; 386  :                         szDriverPath.c_str(),  // service's binary
; 387  :                         NULL,                  // no load ordering group
; 388  :                         NULL,                  // no tag identifier
; 389  :                         NULL,                  // no dependencies
; 390  :                         NULL,                  // LocalSystem account
; 391  :                         NULL                   // no password
; 392  :                         );

  0024a	6a 00		 push	 0
  0024c	6a 00		 push	 0
  0024e	6a 00		 push	 0
  00250	6a 00		 push	 0
  00252	6a 00		 push	 0
  00254	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00257	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  0025c	50		 push	 eax
  0025d	6a 01		 push	 1
  0025f	6a 03		 push	 3
  00261	6a 01		 push	 1
  00263	68 ff 01 0f 00	 push	 983551			; 000f01ffH
  00268	8b 45 a0	 mov	 eax, DWORD PTR _this$[ebp]
  0026b	83 c0 10	 add	 eax, 16			; 00000010H
  0026e	50		 push	 eax
  0026f	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  00272	83 c1 10	 add	 ecx, 16			; 00000010H
  00275	51		 push	 ecx
  00276	8b 55 f0	 mov	 edx, DWORD PTR _hSCManager$[ebp]
  00279	52		 push	 edx
  0027a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateServiceW@52
  00280	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  00283	89 01		 mov	 DWORD PTR [ecx], eax

; 393  :                     if(m_hService == NULL)

  00285	8b 55 a0	 mov	 edx, DWORD PTR _this$[ebp]
  00288	83 3a 00	 cmp	 DWORD PTR [edx], 0
  0028b	75 1d		 jne	 SHORT $LN9@InstallNTD

; 394  :                     {
; 395  :                         LOG(0,_T("(NT driver) CreateService #2 failed. 0x%X"), GetLastError());

  0028d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00293	50		 push	 eax
  00294	68 00 00 00 00	 push	 OFFSET ??_C@_1FE@EMFLFDPD@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA2?$AA?5?$AAf?$AAa?$AAi@
  00299	6a 00		 push	 0
  0029b	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  002a0	83 c4 0c	 add	 esp, 12			; 0000000cH

; 396  :                         bError = TRUE;

  002a3	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN9@InstallNTD:

; 397  :                     }
; 398  :                 }
; 399  :             }
; 400  :             else

  002aa	eb 1d		 jmp	 SHORT $LN14@InstallNTD
$LN12@InstallNTD:

; 401  :             {
; 402  :                 LOG(0,_T("(NT driver) CreateService #1 failed. 0x%X"), GetLastError());

  002ac	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  002b2	50		 push	 eax
  002b3	68 00 00 00 00	 push	 OFFSET ??_C@_1FE@IPKHGOL@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AA?$CD?$AA1?$AA?5?$AAf?$AAa?$AAi@
  002b8	6a 00		 push	 0
  002ba	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  002bf	83 c4 0c	 add	 esp, 12			; 0000000cH

; 403  :                 bError = TRUE;

  002c2	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN14@InstallNTD:

; 404  :             }
; 405  :         }
; 406  :     }
; 407  : 
; 408  :     if(!bError)

  002c9	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  002cd	75 13		 jne	 SHORT $LN6@InstallNTD

; 409  :     {
; 410  :         if(!AdjustAccessRights())

  002cf	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  002d2	e8 00 00 00 00	 call	 ?AdjustAccessRights@CHardwareDriver@@AAEHXZ ; CHardwareDriver::AdjustAccessRights
  002d7	85 c0		 test	 eax, eax
  002d9	75 07		 jne	 SHORT $LN6@InstallNTD

; 411  :         {
; 412  :             bError = TRUE;

  002db	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN6@InstallNTD:

; 413  :         }
; 414  :     }
; 415  : 
; 416  :     if(hSCManager != NULL)

  002e2	83 7d f0 00	 cmp	 DWORD PTR _hSCManager$[ebp], 0
  002e6	74 32		 je	 SHORT $LN4@InstallNTD

; 417  :     {
; 418  :         if(!CloseServiceHandle(hSCManager))

  002e8	8b 45 f0	 mov	 eax, DWORD PTR _hSCManager$[ebp]
  002eb	50		 push	 eax
  002ec	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseServiceHandle@4
  002f2	85 c0		 test	 eax, eax
  002f4	75 1d		 jne	 SHORT $LN3@InstallNTD

; 419  :         {
; 420  :             LOG(0, _T("(NT driver) Failed to close handle to service control manager. 0x%X"),GetLastError());

  002f6	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  002fc	50		 push	 eax
  002fd	68 00 00 00 00	 push	 OFFSET ??_C@_1II@LDEFFFMP@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAc?$AAl?$AAo?$AAs?$AAe?$AA?5?$AAh?$AAa?$AAn?$AAd@
  00302	6a 00		 push	 0
  00304	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00309	83 c4 0c	 add	 esp, 12			; 0000000cH

; 421  :             bError = TRUE;

  0030c	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN3@InstallNTD:

; 422  :         }
; 423  :         hSCManager = NULL;

  00313	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _hSCManager$[ebp], 0
$LN4@InstallNTD:

; 424  :     }
; 425  : 
; 426  :     if(bError)

  0031a	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0031e	74 34		 je	 SHORT $LN2@InstallNTD

; 427  :     {
; 428  :         LOG(1, _T("(NT driver) Failed to install driver."));

  00320	68 00 00 00 00	 push	 OFFSET ??_C@_1EM@JCPJBECG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAd?$AAr@
  00325	6a 01		 push	 1
  00327	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0032c	83 c4 08	 add	 esp, 8

; 429  :         UnloadDriver();

  0032f	8b 4d a0	 mov	 ecx, DWORD PTR _this$[ebp]
  00332	e8 00 00 00 00	 call	 ?UnloadDriver@CHardwareDriver@@QAEXXZ ; CHardwareDriver::UnloadDriver

; 430  :         return FALSE;

  00337	c7 45 a8 00 00
	00 00		 mov	 DWORD PTR $T355258[ebp], 0
  0033e	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00345	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00348	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  0034d	8b 45 a8	 mov	 eax, DWORD PTR $T355258[ebp]
  00350	eb 3b		 jmp	 SHORT $LN20@InstallNTD

; 431  :     }
; 432  :     else

  00352	eb 2a		 jmp	 SHORT $LN1@InstallNTD
$LN2@InstallNTD:

; 433  :     {
; 434  :         LOG(1, _T("(NT driver) Install complete."));

  00354	68 00 00 00 00	 push	 OFFSET ??_C@_1DM@FALJPGNG@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAI?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAc?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?4?$AA?$AA@
  00359	6a 01		 push	 1
  0035b	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00360	83 c4 08	 add	 esp, 8

; 435  :         return TRUE;

  00363	c7 45 a4 01 00
	00 00		 mov	 DWORD PTR $T355259[ebp], 1
  0036a	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00371	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00374	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00379	8b 45 a4	 mov	 eax, DWORD PTR $T355259[ebp]
  0037c	eb 0f		 jmp	 SHORT $LN20@InstallNTD
$LN1@InstallNTD:

; 436  :     }
; 437  : }

  0037e	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00385	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00388	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
$LN20@InstallNTD:
  0038d	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00390	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00397	59		 pop	 ecx
  00398	8b 4d e8	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  0039b	33 cd		 xor	 ecx, ebp
  0039d	e8 00 00 00 00	 call	 @__security_check_cookie@4
  003a2	8b e5		 mov	 esp, ebp
  003a4	5d		 pop	 ebp
  003a5	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?InstallNTDriver@CHardwareDriver@@QAEHXZ$0:
  00000	8d 4d cc	 lea	 ecx, DWORD PTR _szDriverPath$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?InstallNTDriver@CHardwareDriver@@QAEHXZ$1:
  00008	8d 4d ac	 lea	 ecx, DWORD PTR $T355257[ebp]
  0000b	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__ehhandler$?InstallNTDriver@CHardwareDriver@@QAEHXZ:
  00010	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00014	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00017	8b 4a a8	 mov	 ecx, DWORD PTR [edx-88]
  0001a	33 c8		 xor	 ecx, eax
  0001c	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00021	8b 4a f4	 mov	 ecx, DWORD PTR [edx-12]
  00024	33 c8		 xor	 ecx, eax
  00026	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0002b	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?InstallNTDriver@CHardwareDriver@@QAEHXZ
  00030	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?InstallNTDriver@CHardwareDriver@@QAEHXZ ENDP		; CHardwareDriver::InstallNTDriver
PUBLIC	?LoadDriver@CHardwareDriver@@QAEHXZ		; CHardwareDriver::LoadDriver
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?LoadDriver@CHardwareDriver@@QAEHXZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?LoadDriver@CHardwareDriver@@QAEHXZ$0
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?LoadDriver@CHardwareDriver@@QAEHXZ$1
__ehfuncinfo$?LoadDriver@CHardwareDriver@@QAEHXZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?LoadDriver@CHardwareDriver@@QAEHXZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?LoadDriver@CHardwareDriver@@QAEHXZ
_TEXT	SEGMENT
_this$ = -92						; size = 4
$T355271 = -88						; size = 28
$T355270 = -60						; size = 28
_dwReturnedLength$142721 = -32				; size = 4
_dwVersion$142722 = -28					; size = 4
_Err$142699 = -24					; size = 4
_bError$ = -20						; size = 4
_hSCManager$ = -16					; size = 4
__$EHRec$ = -12						; size = 12
?LoadDriver@CHardwareDriver@@QAEHXZ PROC		; CHardwareDriver::LoadDriver, COMDAT
; _this$ = ecx

; 81   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?LoadDriver@CHardwareDriver@@QAEHXZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 50	 sub	 esp, 80			; 00000050H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	50		 push	 eax
  0001c	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001f	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00025	89 4d a4	 mov	 DWORD PTR _this$[ebp], ecx

; 82   :     SC_HANDLE hSCManager = NULL;

  00028	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _hSCManager$[ebp], 0

; 83   :     BOOL      bError = FALSE;

  0002f	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0

; 84   : 
; 85   :     // make sure we start with nothing open
; 86   :     UnloadDriver();

  00036	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  00039	e8 00 00 00 00	 call	 ?UnloadDriver@CHardwareDriver@@QAEXXZ ; CHardwareDriver::UnloadDriver

; 87   : 
; 88   :     if (!m_bWindows95)

  0003e	8b 45 a4	 mov	 eax, DWORD PTR _this$[ebp]
  00041	83 78 08 00	 cmp	 DWORD PTR [eax+8], 0
  00045	0f 85 e9 01 00
	00		 jne	 $LN25@LoadDriver

; 89   :     {
; 90   :         // get handle of the Service Control Manager
; 91   : 
; 92   :         // This function fails on WinXP when not logged on as an administrator.
; 93   :         // The following note comes from the updated Platform SDK documentation:
; 94   : 
; 95   :         // Windows 2000 and earlier: All processes are granted SC_MANAGER_CONNECT,
; 96   :         // SC_MANAGER_ENUMERATE_SERVICE, and SC_MANAGER_QUERY_LOCK_STATUS access to all service control
; 97   :         // manager databases. This enables any process to open a service control manager database handle
; 98   :         // that it can use in the OpenService, EnumServicesStatus, and QueryServiceLockStatus functions.
; 99   :         //
; 100  :         // Windows XP: Only authenticated users are granted SC_MANAGER_CONNECT,
; 101  :         // SC_MANAGER_ENUMERATE_SERVICE, and SC_MANAGER_QUERY_LOCK_STATUS access to all service control
; 102  :         // manager databases.
; 103  : 
; 104  :         hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);

  0004b	6a 01		 push	 1
  0004d	6a 00		 push	 0
  0004f	6a 00		 push	 0
  00051	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__OpenSCManagerW@12
  00057	89 45 f0	 mov	 DWORD PTR _hSCManager$[ebp], eax

; 105  :         if(hSCManager == NULL)

  0005a	83 7d f0 00	 cmp	 DWORD PTR _hSCManager$[ebp], 0
  0005e	75 1d		 jne	 SHORT $LN24@LoadDriver

; 106  :         {
; 107  :             LOG(0, _T("OpenSCManager returned an error = 0x%X"), GetLastError());

  00060	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00066	50		 push	 eax
  00067	68 00 00 00 00	 push	 OFFSET ??_C@_1EO@BLGMCOII@?$AAO?$AAp?$AAe?$AAn?$AAS?$AAC?$AAM?$AAa?$AAn?$AAa?$AAg?$AAe?$AAr?$AA?5?$AAr?$AAe?$AAt?$AAu?$AAr?$AAn?$AAe?$AAd?$AA?5?$AAa?$AAn?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@
  0006c	6a 00		 push	 0
  0006e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00073	83 c4 0c	 add	 esp, 12			; 0000000cH

; 108  :             bError = TRUE;

  00076	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN24@LoadDriver:

; 109  :         }
; 110  : 
; 111  :         if(!bError)

  0007d	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00081	75 7d		 jne	 SHORT $LN23@LoadDriver

; 112  :         {
; 113  :             m_hService = OpenService(hSCManager, m_NTDriverName, DRIVER_ACCESS_RIGHTS);

  00083	6a 30		 push	 48			; 00000030H
  00085	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  00088	83 c1 10	 add	 ecx, 16			; 00000010H
  0008b	51		 push	 ecx
  0008c	8b 55 f0	 mov	 edx, DWORD PTR _hSCManager$[ebp]
  0008f	52		 push	 edx
  00090	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__OpenServiceW@12
  00096	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  00099	89 01		 mov	 DWORD PTR [ecx], eax

; 114  : 
; 115  :             if(m_hService == NULL)

  0009b	8b 55 a4	 mov	 edx, DWORD PTR _this$[ebp]
  0009e	83 3a 00	 cmp	 DWORD PTR [edx], 0
  000a1	75 5d		 jne	 SHORT $LN23@LoadDriver

; 116  :             {
; 117  :                 if(GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST)

  000a3	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  000a9	3d 24 04 00 00	 cmp	 eax, 1060		; 00000424H
  000ae	75 33		 jne	 SHORT $LN21@LoadDriver

; 118  :                 {
; 119  :                     LOG(1,_T("(NT driver) Service does not exist"));

  000b0	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@ONLNGDEH@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAd?$AAo?$AAe?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAe?$AAx?$AAi@
  000b5	6a 01		 push	 1
  000b7	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000bc	83 c4 08	 add	 esp, 8

; 120  :                     if(!InstallNTDriver())

  000bf	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  000c2	e8 00 00 00 00	 call	 ?InstallNTDriver@CHardwareDriver@@QAEHXZ ; CHardwareDriver::InstallNTDriver
  000c7	85 c0		 test	 eax, eax
  000c9	75 16		 jne	 SHORT $LN20@LoadDriver

; 121  :                     {
; 122  :                         LOG(1,_T("Failed to install NT driver."));

  000cb	68 00 00 00 00	 push	 OFFSET ??_C@_1DK@FEBLJAHA@?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAi?$AAn?$AAs?$AAt?$AAa?$AAl?$AAl?$AA?5?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AA?$AA@
  000d0	6a 01		 push	 1
  000d2	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000d7	83 c4 08	 add	 esp, 8

; 123  :                         bError = TRUE;

  000da	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN20@LoadDriver:

; 124  :                     }
; 125  :                 }
; 126  :                 else

  000e1	eb 1d		 jmp	 SHORT $LN23@LoadDriver
$LN21@LoadDriver:

; 127  :                 {
; 128  :                     LOG(0,_T("(NT driver) Unable to open service. 0x%X"),GetLastError());

  000e3	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  000e9	50		 push	 eax
  000ea	68 00 00 00 00	 push	 OFFSET ??_C@_1FC@PKPNJGGN@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAU?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAo?$AAp?$AAe?$AAn?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi@
  000ef	6a 00		 push	 0
  000f1	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  000f6	83 c4 0c	 add	 esp, 12			; 0000000cH

; 129  :                     bError = TRUE;

  000f9	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN23@LoadDriver:

; 130  :                 }
; 131  :             }
; 132  :         }
; 133  : 
; 134  :         if(hSCManager != NULL)

  00100	83 7d f0 00	 cmp	 DWORD PTR _hSCManager$[ebp], 0
  00104	74 32		 je	 SHORT $LN18@LoadDriver

; 135  :         {
; 136  :             if(!CloseServiceHandle(hSCManager))

  00106	8b 45 f0	 mov	 eax, DWORD PTR _hSCManager$[ebp]
  00109	50		 push	 eax
  0010a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CloseServiceHandle@4
  00110	85 c0		 test	 eax, eax
  00112	75 1d		 jne	 SHORT $LN17@LoadDriver

; 137  :             {
; 138  :                 LOG(0,_T("(NT driver) Failed to close handle to service control manager. 0x%X"),GetLastError());

  00114	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  0011a	50		 push	 eax
  0011b	68 00 00 00 00	 push	 OFFSET ??_C@_1II@LDEFFFMP@?$AA?$CI?$AAN?$AAT?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?$CJ?$AA?5?$AAF?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AAt?$AAo?$AA?5?$AAc?$AAl?$AAo?$AAs?$AAe?$AA?5?$AAh?$AAa?$AAn?$AAd@
  00120	6a 00		 push	 0
  00122	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00127	83 c4 0c	 add	 esp, 12			; 0000000cH

; 139  :                 bError = TRUE;

  0012a	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN17@LoadDriver:

; 140  :             }
; 141  :             hSCManager = NULL;

  00131	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _hSCManager$[ebp], 0
$LN18@LoadDriver:

; 142  :         }
; 143  : 
; 144  :         // try to start service
; 145  :         if(!bError)

  00138	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0013c	0f 85 f0 00 00
	00		 jne	 $LN16@LoadDriver

; 146  :         {
; 147  :             if(StartService(m_hService, 0, NULL) == FALSE)

  00142	6a 00		 push	 0
  00144	6a 00		 push	 0
  00146	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  00149	8b 11		 mov	 edx, DWORD PTR [ecx]
  0014b	52		 push	 edx
  0014c	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__StartServiceW@12
  00152	85 c0		 test	 eax, eax
  00154	0f 85 b2 00 00
	00		 jne	 $LN15@LoadDriver

; 148  :             {
; 149  :                 DWORD Err = GetLastError();

  0015a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  00160	89 45 e8	 mov	 DWORD PTR _Err$142699[ebp], eax

; 150  : 
; 151  :                 // uninstall the driver if the driver location in the registry is incorrect.
; 152  :                 if(Err == ERROR_PATH_NOT_FOUND || Err == ERROR_FILE_NOT_FOUND)

  00163	83 7d e8 03	 cmp	 DWORD PTR _Err$142699[ebp], 3
  00167	74 06		 je	 SHORT $LN13@LoadDriver
  00169	83 7d e8 02	 cmp	 DWORD PTR _Err$142699[ebp], 2
  0016d	75 5f		 jne	 SHORT $LN14@LoadDriver
$LN13@LoadDriver:

; 153  :                 {
; 154  :                     LOG(0, _T("Driver location in the registry is incorrect.0x%X"), Err);

  0016f	8b 45 e8	 mov	 eax, DWORD PTR _Err$142699[ebp]
  00172	50		 push	 eax
  00173	68 00 00 00 00	 push	 OFFSET ??_C@_1GE@EGNENGKM@?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAc?$AAa?$AAt?$AAi?$AAo?$AAn?$AA?5?$AAi?$AAn?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAr?$AAe?$AAg?$AAi?$AAs?$AAt?$AAr?$AAy?$AA?5@
  00178	6a 00		 push	 0
  0017a	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0017f	83 c4 0c	 add	 esp, 12			; 0000000cH

; 155  : 
; 156  :                     ErrorBox(_T("Please exit and restart DScaler"));

  00182	68 00 00 00 00	 push	 OFFSET ??_C@_1EA@PBBOGGGC@?$AAP?$AAl?$AAe?$AAa?$AAs?$AAe?$AA?5?$AAe?$AAx?$AAi?$AAt?$AA?5?$AAa?$AAn?$AAd?$AA?5?$AAr?$AAe?$AAs?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAD?$AAS?$AAc?$AAa?$AAl?$AAe?$AAr?$AA?$AA@
  00187	8d 4d c4	 lea	 ecx, DWORD PTR $T355270[ebp]
  0018a	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  0018f	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00196	8d 4d c4	 lea	 ecx, DWORD PTR $T355270[ebp]
  00199	51		 push	 ecx
  0019a	68 9c 00 00 00	 push	 156			; 0000009cH
  0019f	68 00 00 00 00	 push	 OFFSET ??_C@_1CK@EONPLDMJ@?$AA?4?$AA?2?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  001a4	6a 00		 push	 0
  001a6	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  001ab	83 c4 10	 add	 esp, 16			; 00000010H
  001ae	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  001b5	8d 4d c4	 lea	 ecx, DWORD PTR $T355270[ebp]
  001b8	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 157  : 
; 158  :                     UnInstallNTDriver();

  001bd	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  001c0	e8 00 00 00 00	 call	 ?UnInstallNTDriver@CHardwareDriver@@QAEHXZ ; CHardwareDriver::UnInstallNTDriver

; 159  :                     bError = TRUE;

  001c5	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
  001cc	eb 3e		 jmp	 SHORT $LN15@LoadDriver
$LN14@LoadDriver:

; 160  :                 }
; 161  :                 else if(Err == ERROR_SERVICE_ALREADY_RUNNING)

  001ce	81 7d e8 20 04
	00 00		 cmp	 DWORD PTR _Err$142699[ebp], 1056 ; 00000420H
  001d5	75 1b		 jne	 SHORT $LN11@LoadDriver

; 162  :                 {
; 163  :                     LOG(1, _T("Service already started"));

  001d7	68 00 00 00 00	 push	 OFFSET ??_C@_1DA@HDJBKLIJ@?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?5?$AAa?$AAl?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?5?$AAs?$AAt?$AAa?$AAr?$AAt?$AAe?$AAd?$AA?$AA@
  001dc	6a 01		 push	 1
  001de	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001e3	83 c4 08	 add	 esp, 8

; 164  :                     m_WeStartedDriver = FALSE;

  001e6	8b 55 a4	 mov	 edx, DWORD PTR _this$[ebp]
  001e9	c7 42 0c 00 00
	00 00		 mov	 DWORD PTR [edx+12], 0

; 165  :                 }
; 166  :                 else

  001f0	eb 1a		 jmp	 SHORT $LN15@LoadDriver
$LN11@LoadDriver:

; 167  :                 {
; 168  :                     LOG(0, _T("StartService() failed 0x%X"), Err);

  001f2	8b 45 e8	 mov	 eax, DWORD PTR _Err$142699[ebp]
  001f5	50		 push	 eax
  001f6	68 00 00 00 00	 push	 OFFSET ??_C@_1DG@OCFDDLPP@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAS?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$CI?$AA?$CJ?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX?$AA?$AA@
  001fb	6a 00		 push	 0
  001fd	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00202	83 c4 0c	 add	 esp, 12			; 0000000cH

; 169  :                     bError = TRUE;

  00205	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN15@LoadDriver:

; 170  :                 }
; 171  :             }
; 172  :             if(!bError)

  0020c	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00210	75 20		 jne	 SHORT $LN16@LoadDriver

; 173  :             {
; 174  :                 m_hFile = CreateFile(
; 175  :                                      _T("\\\\.\\DSDrv4"),
; 176  :                                      GENERIC_READ | GENERIC_WRITE,
; 177  :                                      FILE_SHARE_READ | FILE_SHARE_WRITE,
; 178  :                                      NULL,
; 179  :                                      OPEN_EXISTING,
; 180  :                                      0,
; 181  :                                      INVALID_HANDLE_VALUE
; 182  :                                     );

  00212	6a ff		 push	 -1
  00214	6a 00		 push	 0
  00216	6a 03		 push	 3
  00218	6a 00		 push	 0
  0021a	6a 03		 push	 3
  0021c	68 00 00 00 c0	 push	 -1073741824		; c0000000H
  00221	68 00 00 00 00	 push	 OFFSET ??_C@_1BG@DEHDFFFP@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?$AA@
  00226	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateFileW@28
  0022c	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  0022f	89 41 04	 mov	 DWORD PTR [ecx+4], eax
$LN16@LoadDriver:

; 183  :             }
; 184  : 
; 185  :         }
; 186  : 
; 187  :     }
; 188  :     else

  00232	eb 20		 jmp	 SHORT $LN8@LoadDriver
$LN25@LoadDriver:

; 189  :     {
; 190  :         // it's much easier in windows 95, 98 and me
; 191  :         m_hFile = CreateFile(
; 192  :                                 _T("\\\\.\\DSDrv4.VXD"),
; 193  :                                 0,
; 194  :                                 0,
; 195  :                                 NULL,
; 196  :                                 0,
; 197  :                                 FILE_FLAG_OVERLAPPED | FILE_FLAG_DELETE_ON_CLOSE,
; 198  :                                 NULL
; 199  :                             );

  00234	6a 00		 push	 0
  00236	68 00 00 00 44	 push	 1140850688		; 44000000H
  0023b	6a 00		 push	 0
  0023d	6a 00		 push	 0
  0023f	6a 00		 push	 0
  00241	6a 00		 push	 0
  00243	68 00 00 00 00	 push	 OFFSET ??_C@_1BO@BCIKMKIB@?$AA?2?$AA?2?$AA?4?$AA?2?$AAD?$AAS?$AAD?$AAr?$AAv?$AA4?$AA?4?$AAV?$AAX?$AAD?$AA?$AA@
  00248	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateFileW@28
  0024e	8b 55 a4	 mov	 edx, DWORD PTR _this$[ebp]
  00251	89 42 04	 mov	 DWORD PTR [edx+4], eax
$LN8@LoadDriver:

; 200  :     }
; 201  : 
; 202  :     if(!bError)

  00254	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00258	0f 85 c8 00 00
	00		 jne	 $LN7@LoadDriver

; 203  :     {
; 204  :         if(m_hFile != INVALID_HANDLE_VALUE)

  0025e	8b 45 a4	 mov	 eax, DWORD PTR _this$[ebp]
  00261	83 78 04 ff	 cmp	 DWORD PTR [eax+4], -1
  00265	0f 84 9e 00 00
	00		 je	 $LN6@LoadDriver

; 205  :         {
; 206  :             // OK so we've loaded the driver
; 207  :             // we had better check that it's the same version as we are
; 208  :             // otherwise all sorts of nasty things could happen
; 209  :             // n.b. note that if someone else has already loaded our driver this may
; 210  :             // happen.
; 211  : 
; 212  :             DWORD dwReturnedLength;
; 213  :             DWORD dwVersion(0);

  0026b	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR _dwVersion$142722[ebp], 0

; 214  : 
; 215  :             SendCommand(
; 216  :                         IOCTL_DSDRV_GETVERSION,
; 217  :                         NULL,
; 218  :                         0,
; 219  :                         &dwVersion,
; 220  :                         sizeof(dwVersion),
; 221  :                         &dwReturnedLength
; 222  :                        );

  00272	8d 4d e0	 lea	 ecx, DWORD PTR _dwReturnedLength$142721[ebp]
  00275	51		 push	 ecx
  00276	6a 04		 push	 4
  00278	8d 55 e4	 lea	 edx, DWORD PTR _dwVersion$142722[ebp]
  0027b	52		 push	 edx
  0027c	6a 00		 push	 0
  0027e	6a 00		 push	 0
  00280	68 4a 28 00 8d	 push	 -1929369526		; 8d00284aH
  00285	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  00288	e8 00 00 00 00	 call	 ?SendCommand@CHardwareDriver@@QAEKKPAXK0KPAK@Z ; CHardwareDriver::SendCommand

; 223  : 
; 224  :             // we should try and force the user to have the
; 225  :             // latest possible driver installed
; 226  :             if(dwVersion < DSDRV_VERSION)

  0028d	81 7d e4 04 40
	00 00		 cmp	 DWORD PTR _dwVersion$142722[ebp], 16388 ; 00004004H
  00294	73 59		 jae	 SHORT $LN5@LoadDriver

; 227  :             {
; 228  :                 ErrorBox(_T("Detected old driver version, rerun setup program"));

  00296	68 00 00 00 00	 push	 OFFSET ??_C@_1GC@GMGHHAKN@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAe?$AAd?$AA?5?$AAo?$AAl?$AAd?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo?$AAn?$AA?0?$AA?5?$AAr?$AAe?$AAr@
  0029b	8d 4d a8	 lea	 ecx, DWORD PTR $T355271[ebp]
  0029e	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  002a3	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1
  002aa	8d 45 a8	 lea	 eax, DWORD PTR $T355271[ebp]
  002ad	50		 push	 eax
  002ae	68 e4 00 00 00	 push	 228			; 000000e4H
  002b3	68 00 00 00 00	 push	 OFFSET ??_C@_1CK@EONPLDMJ@?$AA?4?$AA?2?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?4?$AAc?$AAp?$AAp?$AA?$AA@
  002b8	6a 00		 push	 0
  002ba	e8 00 00 00 00	 call	 ?_ErrorBox@@YAXPAUHWND__@@PB_WHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; _ErrorBox
  002bf	83 c4 10	 add	 esp, 16			; 00000010H
  002c2	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  002c9	8d 4d a8	 lea	 ecx, DWORD PTR $T355271[ebp]
  002cc	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 229  :                 LOG(0, _T("We've loaded up the wrong version of the driver"));

  002d1	68 00 00 00 00	 push	 OFFSET ??_C@_1GA@IKLIGOIL@?$AAW?$AAe?$AA?8?$AAv?$AAe?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAu?$AAp?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAw?$AAr?$AAo?$AAn?$AAg?$AA?5?$AAv?$AAe?$AAr?$AAs?$AAi?$AAo@
  002d6	6a 00		 push	 0
  002d8	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  002dd	83 c4 08	 add	 esp, 8

; 230  :                 bError = TRUE;

  002e0	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1

; 231  : 
; 232  :                 // Maybe another driver from an old DScaler version is still installed.
; 233  :                 // Try to uninstall it.
; 234  :                 UnInstallNTDriver();

  002e7	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  002ea	e8 00 00 00 00	 call	 ?UnInstallNTDriver@CHardwareDriver@@QAEHXZ ; CHardwareDriver::UnInstallNTDriver
$LN5@LoadDriver:

; 235  :             }
; 236  : 
; 237  :             // if we create any incomaptibilities
; 238  :             // in the driver may need to have more checks here
; 239  :             if(dwVersion > DSDRV_VERSION)

  002ef	81 7d e4 04 40
	00 00		 cmp	 DWORD PTR _dwVersion$142722[ebp], 16388 ; 00004004H
  002f6	76 0f		 jbe	 SHORT $LN4@LoadDriver

; 240  :             {
; 241  :                 LOG(0, _T("Running with newer driver - hopefully this will be OK"));

  002f8	68 00 00 00 00	 push	 OFFSET ??_C@_1GM@HBOKPKEG@?$AAR?$AAu?$AAn?$AAn?$AAi?$AAn?$AAg?$AA?5?$AAw?$AAi?$AAt?$AAh?$AA?5?$AAn?$AAe?$AAw?$AAe?$AAr?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AA?9?$AA?5?$AAh?$AAo?$AAp?$AAe@
  002fd	6a 00		 push	 0
  002ff	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00304	83 c4 08	 add	 esp, 8
$LN4@LoadDriver:

; 242  :             }
; 243  :         }
; 244  :         else

  00307	eb 1d		 jmp	 SHORT $LN7@LoadDriver
$LN6@LoadDriver:

; 245  :         {
; 246  :             LOG(0, _T("CreateFile on Driver failed 0x%X"), GetLastError());

  00309	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetLastError@0
  0030f	50		 push	 eax
  00310	68 00 00 00 00	 push	 OFFSET ??_C@_1EC@BGABJCHE@?$AAC?$AAr?$AAe?$AAa?$AAt?$AAe?$AAF?$AAi?$AAl?$AAe?$AA?5?$AAo?$AAn?$AA?5?$AAD?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5?$AA0?$AAx?$AA?$CF?$AAX@
  00315	6a 00		 push	 0
  00317	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0031c	83 c4 0c	 add	 esp, 12			; 0000000cH

; 247  :             bError = TRUE;

  0031f	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 1
$LN7@LoadDriver:

; 248  :         }
; 249  :     }
; 250  : 
; 251  :     if(bError)

  00326	83 7d ec 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0032a	74 0e		 je	 SHORT $LN2@LoadDriver

; 252  :     {
; 253  :         UnloadDriver();

  0032c	8b 4d a4	 mov	 ecx, DWORD PTR _this$[ebp]
  0032f	e8 00 00 00 00	 call	 ?UnloadDriver@CHardwareDriver@@QAEXXZ ; CHardwareDriver::UnloadDriver

; 254  :         return FALSE;

  00334	33 c0		 xor	 eax, eax
  00336	eb 16		 jmp	 SHORT $LN26@LoadDriver

; 255  :     }
; 256  :     else

  00338	eb 14		 jmp	 SHORT $LN26@LoadDriver
$LN2@LoadDriver:

; 257  :     {
; 258  :         LOG(1, _T("Hardware driver loaded successfully."));

  0033a	68 00 00 00 00	 push	 OFFSET ??_C@_1EK@IODHBMI@?$AAH?$AAa?$AAr?$AAd?$AAw?$AAa?$AAr?$AAe?$AA?5?$AAd?$AAr?$AAi?$AAv?$AAe?$AAr?$AA?5?$AAl?$AAo?$AAa?$AAd?$AAe?$AAd?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu@
  0033f	6a 01		 push	 1
  00341	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00346	83 c4 08	 add	 esp, 8

; 259  :         return TRUE;

  00349	b8 01 00 00 00	 mov	 eax, 1
$LN26@LoadDriver:

; 260  :     }
; 261  : }

  0034e	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00351	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00358	59		 pop	 ecx
  00359	8b e5		 mov	 esp, ebp
  0035b	5d		 pop	 ebp
  0035c	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?LoadDriver@CHardwareDriver@@QAEHXZ$0:
  00000	8d 4d c4	 lea	 ecx, DWORD PTR $T355270[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?LoadDriver@CHardwareDriver@@QAEHXZ$1:
  00008	8d 4d a8	 lea	 ecx, DWORD PTR $T355271[ebp]
  0000b	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__ehhandler$?LoadDriver@CHardwareDriver@@QAEHXZ:
  00010	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00014	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00017	8b 4a ac	 mov	 ecx, DWORD PTR [edx-84]
  0001a	33 c8		 xor	 ecx, eax
  0001c	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00021	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?LoadDriver@CHardwareDriver@@QAEHXZ
  00026	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?LoadDriver@CHardwareDriver@@QAEHXZ ENDP		; CHardwareDriver::LoadDriver
END
