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

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

INCLUDELIB OLDNAMES

PUBLIC	?SaveSnapshot@CJpegHelper@@UAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@HHPAEJ0@Z ; CJpegHelper::SaveSnapshot
PUBLIC	?OpenMediaFile@CJpegHelper@@UAEHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ; CJpegHelper::OpenMediaFile
PUBLIC	??_R4CJpegHelper@@6B@				; CJpegHelper::`RTTI Complete Object Locator'
PUBLIC	??_R3CJpegHelper@@8				; CJpegHelper::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CJpegHelper@@8				; CJpegHelper::`RTTI Base Class Array'
PUBLIC	??_R1A@?0A@EA@CStillSourceHelper@@8		; CStillSourceHelper::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R3CStillSourceHelper@@8			; CStillSourceHelper::`RTTI Class Hierarchy Descriptor'
PUBLIC	??_R2CStillSourceHelper@@8			; CStillSourceHelper::`RTTI Base Class Array'
PUBLIC	??_R0?AVCStillSourceHelper@@@8			; CStillSourceHelper `RTTI Type Descriptor'
PUBLIC	??_R1A@?0A@EA@CJpegHelper@@8			; CJpegHelper::`RTTI Base Class Descriptor at (0,-1,0,64)'
PUBLIC	??_R0?AVCJpegHelper@@@8				; CJpegHelper `RTTI Type Descriptor'
PUBLIC	?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::end
PUBLIC	?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace
PUBLIC	?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace
PUBLIC	??0_Iterator_base_secure@std@@QAE@XZ		; std::_Iterator_base_secure::_Iterator_base_secure
PUBLIC	??0?$_Ranit_base@_WHPB_WAB_WV_Iterator_base_secure@std@@@std@@QAE@XZ ; std::_Ranit_base<wchar_t,int,wchar_t const *,wchar_t const &,std::_Iterator_base_secure>::_Ranit_base<wchar_t,int,wchar_t const *,wchar_t const &,std::_Iterator_base_secure>
PUBLIC	??0?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WPBV_Container_base_secure@1@@Z ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
PUBLIC	??0?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PA_WPBV_Container_base_secure@1@@Z ; std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
PUBLIC	?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::begin
PUBLIC	?_Same_container@_Iterator_base_secure@std@@QBE_NABV12@@Z ; std::_Iterator_base_secure::_Same_container
PUBLIC	?_Has_container@_Iterator_base_secure@std@@QBE_NXZ ; std::_Iterator_base_secure::_Has_container
PUBLIC	??G?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV01@@Z ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator-
PUBLIC	?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Pdif
PUBLIC	?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace
PUBLIC	??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z ; std::_Iter_cat<char *>
PUBLIC	??$_Distance2@PADI@std@@YAXPAD0AAIUrandom_access_iterator_tag@0@@Z ; std::_Distance2<char *,unsigned int>
PUBLIC	??$_Distance@PADI@std@@YAXPAD0AAI@Z		; std::_Distance<char *,unsigned int>
PUBLIC	??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Construct<char *>
PUBLIC	??$?0PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PAD0@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> ><char *>
PUBLIC	??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Replace<char *>
PUBLIC	??$replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace<char *>
PUBLIC	??$_Assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0Uinput_iterator_tag@1@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Assign<char *>
PUBLIC	??$assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign<char *>
PUBLIC	?msg_err@@3PADA					; msg_err
PUBLIC	??_C@_15JJPIMNBO@?$AAr?$AAb?$AA?$AA@		; `string'
PUBLIC	??_C@_0BJ@HFNEANFP@libjpeg?5fatal?5error?5?3?5?$CFs?$AA@ ; `string'
PUBLIC	??_C@_1EC@JKGNFDHN@?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5?$AA?$CF?$AAd@ ; `string'
PUBLIC	??_C@_1CE@JOOFLNGN@?$AAn?$AAu?$AAm?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CI@IFLKGAPN@?$AAj?$AAp?$AAe?$AAg?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CG@OBBPBLHK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BK@CAEJGBD@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAn?$AAu?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BO@GAEPBAIN@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAd?$AAe?$AAn?$AAo?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CA@NCKNJEAF@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAg?$AAa?$AAm?$AAm?$AAa?$AA?5?$AA?$CF?$AAf?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BE@KCNLBGPH@?$AAm?$AAa?$AAr?$AAk?$AAe?$AAr?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_07CNOAGGKG@DScaler?$AA@			; `string'
PUBLIC	??_C@_0BP@CLCPFPLB@DScaler?3Square?5Pixels?5Mode?3OFF?$AA@ ; `string'
PUBLIC	??_C@_1EG@BEDNHNAL@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5@ ; `string'
PUBLIC	??_C@_1DA@PAEMCCCK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CK@MMEHHEGK@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CK@MIPHAGHM@?$AAr?$AAe?$AAc?$AA_?$AAo?$AAu?$AAt?$AAb?$AAu?$AAf?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_15MJDFFMKN@?$AAw?$AAb?$AA?$AA@		; `string'
PUBLIC	??_C@_0BO@MMGDENBH@DScaler?3Square?5Pixels?5Mode?3ON?$AA@ ; `string'
PUBLIC	??_7CJpegHelper@@6B@				; CJpegHelper::`vftable'
EXTRN	_ferror:PROC
EXTRN	_strncmp:PROC
EXTRN	_longjmp:PROC
?msg_err@@3PADA DB 0200H DUP (?)			; msg_err
;	COMDAT ??_7CJpegHelper@@6B@
CONST	SEGMENT
??_7CJpegHelper@@6B@ DD FLAT:??_R4CJpegHelper@@6B@	; CJpegHelper::`vftable'
	DD	FLAT:?OpenMediaFile@CJpegHelper@@UAEHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z
	DD	FLAT:?SaveSnapshot@CJpegHelper@@UAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@HHPAEJ0@Z
CONST	ENDS
;	COMDAT ??_R4CJpegHelper@@6B@
rdata$r	SEGMENT
??_R4CJpegHelper@@6B@ DD 00H				; CJpegHelper::`RTTI Complete Object Locator'
	DD	00H
	DD	00H
	DD	FLAT:??_R0?AVCJpegHelper@@@8
	DD	FLAT:??_R3CJpegHelper@@8
rdata$r	ENDS
;	COMDAT ??_R3CJpegHelper@@8
rdata$r	SEGMENT
??_R3CJpegHelper@@8 DD 00H				; CJpegHelper::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	02H
	DD	FLAT:??_R2CJpegHelper@@8
rdata$r	ENDS
;	COMDAT ??_R2CJpegHelper@@8
rdata$r	SEGMENT
??_R2CJpegHelper@@8 DD FLAT:??_R1A@?0A@EA@CJpegHelper@@8 ; CJpegHelper::`RTTI Base Class Array'
	DD	FLAT:??_R1A@?0A@EA@CStillSourceHelper@@8
rdata$r	ENDS
;	COMDAT ??_R1A@?0A@EA@CStillSourceHelper@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CStillSourceHelper@@8 DD FLAT:??_R0?AVCStillSourceHelper@@@8 ; CStillSourceHelper::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	00H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CStillSourceHelper@@8
rdata$r	ENDS
;	COMDAT ??_R3CStillSourceHelper@@8
rdata$r	SEGMENT
??_R3CStillSourceHelper@@8 DD 00H			; CStillSourceHelper::`RTTI Class Hierarchy Descriptor'
	DD	00H
	DD	01H
	DD	FLAT:??_R2CStillSourceHelper@@8
rdata$r	ENDS
;	COMDAT ??_R2CStillSourceHelper@@8
rdata$r	SEGMENT
??_R2CStillSourceHelper@@8 DD FLAT:??_R1A@?0A@EA@CStillSourceHelper@@8 ; CStillSourceHelper::`RTTI Base Class Array'
rdata$r	ENDS
;	COMDAT ??_R0?AVCStillSourceHelper@@@8
_DATA	SEGMENT
??_R0?AVCStillSourceHelper@@@8 DD FLAT:??_7type_info@@6B@ ; CStillSourceHelper `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCStillSourceHelper@@', 00H
_DATA	ENDS
;	COMDAT ??_R1A@?0A@EA@CJpegHelper@@8
rdata$r	SEGMENT
??_R1A@?0A@EA@CJpegHelper@@8 DD FLAT:??_R0?AVCJpegHelper@@@8 ; CJpegHelper::`RTTI Base Class Descriptor at (0,-1,0,64)'
	DD	01H
	DD	00H
	DD	0ffffffffH
	DD	00H
	DD	040H
	DD	FLAT:??_R3CJpegHelper@@8
rdata$r	ENDS
;	COMDAT ??_R0?AVCJpegHelper@@@8
_DATA	SEGMENT
??_R0?AVCJpegHelper@@@8 DD FLAT:??_7type_info@@6B@	; CJpegHelper `RTTI Type Descriptor'
	DD	00H
	DB	'.?AVCJpegHelper@@', 00H
_DATA	ENDS
;	COMDAT ??_C@_0BO@MMGDENBH@DScaler?3Square?5Pixels?5Mode?3ON?$AA@
CONST	SEGMENT
??_C@_0BO@MMGDENBH@DScaler?3Square?5Pixels?5Mode?3ON?$AA@ DB 'DScaler:Squ'
	DB	'are Pixels Mode:ON', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_15MJDFFMKN@?$AAw?$AAb?$AA?$AA@
CONST	SEGMENT
??_C@_15MJDFFMKN@?$AAw?$AAb?$AA?$AA@ DB 'w', 00H, 'b', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1CK@MIPHAGHM@?$AAr?$AAe?$AAc?$AA_?$AAo?$AAu?$AAt?$AAb?$AAu?$AAf?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CK@MIPHAGHM@?$AAr?$AAe?$AAc?$AA_?$AAo?$AAu?$AAt?$AAb?$AAu?$AAf?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'r'
	DB	00H, 'e', 00H, 'c', 00H, '_', 00H, 'o', 00H, 'u', 00H, 't', 00H
	DB	'b', 00H, 'u', 00H, 'f', 00H, '_', 00H, 'h', 00H, 'e', 00H, 'i'
	DB	00H, 'g', 00H, 'h', 00H, 't', 00H, ' ', 00H, '%', 00H, 'd', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1CK@MMEHHEGK@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CK@MMEHHEGK@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'o'
	DB	00H, 'u', 00H, 't', 00H, 'p', 00H, 'u', 00H, 't', 00H, '_', 00H
	DB	'c', 00H, 'o', 00H, 'm', 00H, 'p', 00H, 'o', 00H, 'n', 00H, 'e'
	DB	00H, 'n', 00H, 't', 00H, 's', 00H, ' ', 00H, '%', 00H, 'd', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1DA@PAEMCCCK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DA@PAEMCCCK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'o'
	DB	00H, 'u', 00H, 't', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'l', 00H
	DB	'o', 00H, 'r', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H, 'p'
	DB	00H, 'o', 00H, 'n', 00H, 'e', 00H, 'n', 00H, 't', 00H, 's', 00H
	DB	' ', 00H, '%', 00H, 'd', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@BEDNHNAL@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5@
CONST	SEGMENT
??_C@_1EG@BEDNHNAL@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5@ DB 'o'
	DB	00H, 'u', 00H, 't', 00H, 'p', 00H, 'u', 00H, 't', 00H, '_', 00H
	DB	'h', 00H, 'e', 00H, 'i', 00H, 'g', 00H, 'h', 00H, 't', 00H, ' '
	DB	00H, '%', 00H, 'd', 00H, ' ', 00H, '-', 00H, ' ', 00H, 'o', 00H
	DB	'u', 00H, 't', 00H, 'p', 00H, 'u', 00H, 't', 00H, '_', 00H, 'w'
	DB	00H, 'i', 00H, 'd', 00H, 't', 00H, 'h', 00H, ' ', 00H, '%', 00H
	DB	'd', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_0BP@CLCPFPLB@DScaler?3Square?5Pixels?5Mode?3OFF?$AA@
CONST	SEGMENT
??_C@_0BP@CLCPFPLB@DScaler?3Square?5Pixels?5Mode?3OFF?$AA@ DB 'DScaler:Sq'
	DB	'uare Pixels Mode:OFF', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_07CNOAGGKG@DScaler?$AA@
CONST	SEGMENT
??_C@_07CNOAGGKG@DScaler?$AA@ DB 'DScaler', 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1BE@KCNLBGPH@?$AAm?$AAa?$AAr?$AAk?$AAe?$AAr?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1BE@KCNLBGPH@?$AAm?$AAa?$AAr?$AAk?$AAe?$AAr?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'm'
	DB	00H, 'a', 00H, 'r', 00H, 'k', 00H, 'e', 00H, 'r', 00H, ' ', 00H
	DB	'%', 00H, 'd', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1CA@NCKNJEAF@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAg?$AAa?$AAm?$AAm?$AAa?$AA?5?$AA?$CF?$AAf?$AA?$AA@
CONST	SEGMENT
??_C@_1CA@NCKNJEAF@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAg?$AAa?$AAm?$AAm?$AAa?$AA?5?$AA?$CF?$AAf?$AA?$AA@ DB 'o'
	DB	00H, 'u', 00H, 't', 00H, 'p', 00H, 'u', 00H, 't', 00H, '_', 00H
	DB	'g', 00H, 'a', 00H, 'm', 00H, 'm', 00H, 'a', 00H, ' ', 00H, '%'
	DB	00H, 'f', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1BO@GAEPBAIN@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAd?$AAe?$AAn?$AAo?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@
CONST	SEGMENT
??_C@_1BO@GAEPBAIN@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAd?$AAe?$AAn?$AAo?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@ DB 's'
	DB	00H, 'c', 00H, 'a', 00H, 'l', 00H, 'e', 00H, '_', 00H, 'd', 00H
	DB	'e', 00H, 'n', 00H, 'o', 00H, 'm', 00H, ' ', 00H, '%', 00H, 'u'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1BK@CAEJGBD@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAn?$AAu?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@
CONST	SEGMENT
??_C@_1BK@CAEJGBD@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAn?$AAu?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@ DB 's'
	DB	00H, 'c', 00H, 'a', 00H, 'l', 00H, 'e', 00H, '_', 00H, 'n', 00H
	DB	'u', 00H, 'm', 00H, ' ', 00H, '%', 00H, 'u', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1CG@OBBPBLHK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CG@OBBPBLHK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'o'
	DB	00H, 'u', 00H, 't', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'l', 00H
	DB	'o', 00H, 'r', 00H, '_', 00H, 's', 00H, 'p', 00H, 'a', 00H, 'c'
	DB	00H, 'e', 00H, ' ', 00H, '%', 00H, 'd', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1CI@IFLKGAPN@?$AAj?$AAp?$AAe?$AAg?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CI@IFLKGAPN@?$AAj?$AAp?$AAe?$AAg?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'j'
	DB	00H, 'p', 00H, 'e', 00H, 'g', 00H, '_', 00H, 'c', 00H, 'o', 00H
	DB	'l', 00H, 'o', 00H, 'r', 00H, '_', 00H, 's', 00H, 'p', 00H, 'a'
	DB	00H, 'c', 00H, 'e', 00H, ' ', 00H, '%', 00H, 'd', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1CE@JOOFLNGN@?$AAn?$AAu?$AAm?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CE@JOOFLNGN@?$AAn?$AAu?$AAm?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'n'
	DB	00H, 'u', 00H, 'm', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H
	DB	'p', 00H, 'o', 00H, 'n', 00H, 'e', 00H, 'n', 00H, 't', 00H, 's'
	DB	00H, ' ', 00H, '%', 00H, 'd', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1EC@JKGNFDHN@?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5?$AA?$CF?$AAd@
CONST	SEGMENT
??_C@_1EC@JKGNFDHN@?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5?$AA?$CF?$AAd@ DB 'i'
	DB	00H, 'm', 00H, 'a', 00H, 'g', 00H, 'e', 00H, '_', 00H, 'h', 00H
	DB	'e', 00H, 'i', 00H, 'g', 00H, 'h', 00H, 't', 00H, ' ', 00H, '%'
	DB	00H, 'd', 00H, ' ', 00H, '-', 00H, ' ', 00H, 'i', 00H, 'm', 00H
	DB	'a', 00H, 'g', 00H, 'e', 00H, '_', 00H, 'w', 00H, 'i', 00H, 'd'
	DB	00H, 't', 00H, 'h', 00H, ' ', 00H, '%', 00H, 'd', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BJ@HFNEANFP@libjpeg?5fatal?5error?5?3?5?$CFs?$AA@
CONST	SEGMENT
??_C@_0BJ@HFNEANFP@libjpeg?5fatal?5error?5?3?5?$CFs?$AA@ DB 'libjpeg fata'
	DB	'l error : %s', 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_15JJPIMNBO@?$AAr?$AAb?$AA?$AA@
CONST	SEGMENT
??_C@_15JJPIMNBO@?$AAr?$AAb?$AA?$AA@ DB 'r', 00H, 'b', 00H, 00H, 00H ; `string'
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility
;	COMDAT ??0_Iterator_base_secure@std@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??0_Iterator_base_secure@std@@QAE@XZ PROC		; std::_Iterator_base_secure::_Iterator_base_secure, COMDAT
; _this$ = ecx

; 567  : 		{

  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 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], 0

; 568  : 		}

  00010	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00013	8b e5		 mov	 esp, ebp
  00015	5d		 pop	 ebp
  00016	c3		 ret	 0
??0_Iterator_base_secure@std@@QAE@XZ ENDP		; std::_Iterator_base_secure::_Iterator_base_secure
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?_Has_container@_Iterator_base_secure@std@@QBE_NXZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
?_Has_container@_Iterator_base_secure@std@@QBE_NXZ PROC	; std::_Iterator_base_secure::_Has_container, COMDAT
; _this$ = ecx

; 581  : 		{	// This member function always exists when we can get a container pointer

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

; 582  : 		return _Mycont != 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	8a c1		 mov	 al, cl

; 583  : 		}

  00014	8b e5		 mov	 esp, ebp
  00016	5d		 pop	 ebp
  00017	c3		 ret	 0
?_Has_container@_Iterator_base_secure@std@@QBE_NXZ ENDP	; std::_Iterator_base_secure::_Has_container
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?_Same_container@_Iterator_base_secure@std@@QBE_NABV12@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
__Other$ = 8						; size = 4
?_Same_container@_Iterator_base_secure@std@@QBE_NABV12@@Z PROC ; std::_Iterator_base_secure::_Same_container, COMDAT
; _this$ = ecx

; 576  : 		{	// This member function always exists when we can get a container pointer

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

; 577  : 		return _Mycont == _Other._Mycont;

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	8b 4d 08	 mov	 ecx, DWORD PTR __Other$[ebp]
  0000d	8b 10		 mov	 edx, DWORD PTR [eax]
  0000f	33 c0		 xor	 eax, eax
  00011	3b 11		 cmp	 edx, DWORD PTR [ecx]
  00013	0f 94 c0	 sete	 al

; 578  : 		}

  00016	8b e5		 mov	 esp, ebp
  00018	5d		 pop	 ebp
  00019	c2 04 00	 ret	 4
?_Same_container@_Iterator_base_secure@std@@QBE_NABV12@@Z ENDP ; std::_Iterator_base_secure::_Same_container
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??$_Distance2@PADI@std@@YAXPAD0AAIUrandom_access_iterator_tag@0@@Z
_TEXT	SEGMENT
__First$ = 8						; size = 4
__Last$ = 12						; size = 4
__Off$ = 16						; size = 4
___formal$ = 20						; size = 1
??$_Distance2@PADI@std@@YAXPAD0AAIUrandom_access_iterator_tag@0@@Z PROC ; std::_Distance2<char *,unsigned int>, COMDAT

; 1840 : 	{	// add to _Off distance between random-access iterators

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 1841 : 
; 1842 :  #if _HAS_ITERATOR_DEBUGGING
; 1843 : 	if (_First != _Last)
; 1844 : 		{	// check for null pointers
; 1845 : 		_DEBUG_POINTER(_First);
; 1846 : 		_DEBUG_POINTER(_Last);
; 1847 : 		}
; 1848 :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 1849 : 
; 1850 : 	_Off += _Last - _First;

  00003	8b 45 0c	 mov	 eax, DWORD PTR __Last$[ebp]
  00006	2b 45 08	 sub	 eax, DWORD PTR __First$[ebp]
  00009	8b 4d 10	 mov	 ecx, DWORD PTR __Off$[ebp]
  0000c	03 01		 add	 eax, DWORD PTR [ecx]
  0000e	8b 55 10	 mov	 edx, DWORD PTR __Off$[ebp]
  00011	89 02		 mov	 DWORD PTR [edx], eax

; 1851 : 	}

  00013	5d		 pop	 ebp
  00014	c3		 ret	 0
??$_Distance2@PADI@std@@YAXPAD0AAIUrandom_access_iterator_tag@0@@Z ENDP ; std::_Distance2<char *,unsigned int>
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
_TEXT	ENDS
;	COMDAT ??G?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV01@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
__Right$ = 8						; size = 4
??G?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV01@@Z PROC ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator-, COMDAT
; _this$ = ecx

; 199  : 		{	// return difference of iterators

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

; 200  : 
; 201  :  #if _HAS_ITERATOR_DEBUGGING
; 202  : 		_Compat(_Right);
; 203  :  #else
; 204  : 		if (this->_Mycont != _IGNORE_MYCONT)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	83 38 fc	 cmp	 DWORD PTR [eax], -4	; fffffffcH
  0000d	74 2b		 je	 SHORT $LN6@operator@9

; 205  : 		{
; 206  : 			_SCL_SECURE_VALIDATE(this->_Has_container() && this->_Same_container(_Right));

  0000f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00012	e8 00 00 00 00	 call	 ?_Has_container@_Iterator_base_secure@std@@QBE_NXZ ; std::_Iterator_base_secure::_Has_container
  00017	0f b6 c8	 movzx	 ecx, al
  0001a	85 c9		 test	 ecx, ecx
  0001c	74 13		 je	 SHORT $LN4@operator@9
  0001e	8b 55 08	 mov	 edx, DWORD PTR __Right$[ebp]
  00021	52		 push	 edx
  00022	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00025	e8 00 00 00 00	 call	 ?_Same_container@_Iterator_base_secure@std@@QBE_NABV12@@Z ; std::_Iterator_base_secure::_Same_container
  0002a	0f b6 c0	 movzx	 eax, al
  0002d	85 c0		 test	 eax, eax
  0002f	75 05		 jne	 SHORT $LN2@operator@9
$LN4@operator@9:
  00031	e8 00 00 00 00	 call	 __invalid_parameter_noinfo
$LN2@operator@9:
  00036	33 c9		 xor	 ecx, ecx
  00038	75 fc		 jne	 SHORT $LN2@operator@9
$LN6@operator@9:

; 207  : 		}
; 208  :  #endif /* _HAS_ITERATOR_DEBUGGING */
; 209  : 
; 210  : 		return (_Myptr - _Right._Myptr);

  0003a	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0003d	8b 45 08	 mov	 eax, DWORD PTR __Right$[ebp]
  00040	8b 4a 04	 mov	 ecx, DWORD PTR [edx+4]
  00043	2b 48 04	 sub	 ecx, DWORD PTR [eax+4]
  00046	d1 f9		 sar	 ecx, 1
  00048	8b c1		 mov	 eax, ecx

; 211  : 		}

  0004a	8b e5		 mov	 esp, ebp
  0004c	5d		 pop	 ebp
  0004d	c2 04 00	 ret	 4
??G?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV01@@Z ENDP ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator-
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z
_TEXT	SEGMENT
tv68 = -4						; size = 4
__P2$ = 8						; size = 8
__P1$ = 16						; size = 8
?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Pdif, COMDAT

; 2142 : 		{	// compute safe iterator difference

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 2143 : 		return (_STR_ITER_BASE(_P2) == 0 ? 0 : _P2 - _P1);

  00004	83 7d 0c 00	 cmp	 DWORD PTR __P2$[ebp+4], 0
  00008	75 09		 jne	 SHORT $LN3@Pdif
  0000a	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR tv68[ebp], 0
  00011	eb 0f		 jmp	 SHORT $LN4@Pdif
$LN3@Pdif:
  00013	8d 45 10	 lea	 eax, DWORD PTR __P1$[ebp]
  00016	50		 push	 eax
  00017	8d 4d 08	 lea	 ecx, DWORD PTR __P2$[ebp]
  0001a	e8 00 00 00 00	 call	 ??G?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEHABV01@@Z ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator-
  0001f	89 45 fc	 mov	 DWORD PTR tv68[ebp], eax
$LN4@Pdif:
  00022	8b 45 fc	 mov	 eax, DWORD PTR tv68[ebp]

; 2144 : 		}

  00025	8b e5		 mov	 esp, ebp
  00027	5d		 pop	 ebp
  00028	c3		 ret	 0
?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Pdif
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??0?$_Ranit_base@_WHPB_WAB_WV_Iterator_base_secure@std@@@std@@QAE@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
??0?$_Ranit_base@_WHPB_WAB_WV_Iterator_base_secure@std@@@std@@QAE@XZ PROC ; std::_Ranit_base<wchar_t,int,wchar_t const *,wchar_t const &,std::_Iterator_base_secure>::_Ranit_base<wchar_t,int,wchar_t const *,wchar_t const &,std::_Iterator_base_secure>, COMDAT
; _this$ = ecx
  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 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ??0_Iterator_base_secure@std@@QAE@XZ ; std::_Iterator_base_secure::_Iterator_base_secure
  0000f	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00012	8b e5		 mov	 esp, ebp
  00014	5d		 pop	 ebp
  00015	c3		 ret	 0
??0?$_Ranit_base@_WHPB_WAB_WV_Iterator_base_secure@std@@@std@@QAE@XZ ENDP ; std::_Ranit_base<wchar_t,int,wchar_t const *,wchar_t const &,std::_Iterator_base_secure>::_Ranit_base<wchar_t,int,wchar_t const *,wchar_t const &,std::_Iterator_base_secure>
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility
_TEXT	ENDS
;	COMDAT ??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z
_TEXT	SEGMENT
___$ReturnUdt$ = 8					; size = 4
___formal$ = 12						; size = 4
??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z PROC ; std::_Iter_cat<char *>, COMDAT

; 952  : 	{	// return category from iterator argument

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 953  : 	typename iterator_traits<_Iter>::iterator_category _Cat;
; 954  : 	return (_Cat);

  00004	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 955  : 	}

  00007	8b e5		 mov	 esp, ebp
  00009	5d		 pop	 ebp
  0000a	c3		 ret	 0
??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z ENDP ; std::_Iter_cat<char *>
_TEXT	ENDS
PUBLIC	??0CJpegHelper@@QAE@PAVCStillSource@@@Z		; CJpegHelper::CJpegHelper
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\jpeghelper.cpp
;	COMDAT ??0CJpegHelper@@QAE@PAVCStillSource@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_pParent$ = 8						; size = 4
??0CJpegHelper@@QAE@PAVCStillSource@@@Z PROC		; CJpegHelper::CJpegHelper, COMDAT
; _this$ = ecx

; 405  : {

  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 08	 mov	 eax, DWORD PTR _pParent$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000e	e8 00 00 00 00	 call	 ??0CStillSourceHelper@@QAE@PAVCStillSource@@@Z ; CStillSourceHelper::CStillSourceHelper
  00013	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00016	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], OFFSET ??_7CJpegHelper@@6B@

; 406  : }

  0001c	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0001f	8b e5		 mov	 esp, ebp
  00021	5d		 pop	 ebp
  00022	c2 04 00	 ret	 4
??0CJpegHelper@@QAE@PAVCStillSource@@@Z ENDP		; CJpegHelper::CJpegHelper
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?my_emit_message@@YAXPAUjpeg_common_struct@@H@Z
_TEXT	SEGMENT
_cinfo$ = 8						; size = 4
_msg_level$ = 12					; size = 4
?my_emit_message@@YAXPAUjpeg_common_struct@@H@Z PROC	; my_emit_message, COMDAT

; 397  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 398  :     // Do nothing
; 399  : }

  00003	5d		 pop	 ebp
  00004	c3		 ret	 0
?my_emit_message@@YAXPAUjpeg_common_struct@@H@Z ENDP	; my_emit_message
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?my_output_message@@YAXPAUjpeg_common_struct@@@Z
_TEXT	SEGMENT
_cinfo$ = 8						; size = 4
?my_output_message@@YAXPAUjpeg_common_struct@@@Z PROC	; my_output_message, COMDAT

; 390  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 391  :     // Do nothing
; 392  : }

  00003	5d		 pop	 ebp
  00004	c3		 ret	 0
?my_output_message@@YAXPAUjpeg_common_struct@@@Z ENDP	; my_output_message
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?my_error_exit@@YAXPAUjpeg_common_struct@@@Z
_TEXT	SEGMENT
_cinfo$ = 8						; size = 4
?my_error_exit@@YAXPAUjpeg_common_struct@@@Z PROC	; my_error_exit, COMDAT

; 379  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 380  :     msg_err[0] = '\0';

  00003	c6 05 00 00 00
	00 00		 mov	 BYTE PTR ?msg_err@@3PADA, 0

; 381  :     (*cinfo->err->format_message)(cinfo, msg_err);

  0000a	68 00 00 00 00	 push	 OFFSET ?msg_err@@3PADA	; msg_err
  0000f	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00012	50		 push	 eax
  00013	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  00016	8b 11		 mov	 edx, DWORD PTR [ecx]
  00018	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  0001b	ff d0		 call	 eax
  0001d	83 c4 08	 add	 esp, 8

; 382  : 
; 383  :     // Return control to the setjmp point
; 384  :     longjmp(*(jmp_buf*)(cinfo->client_data), 1);

  00020	6a 01		 push	 1
  00022	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  00025	8b 51 0c	 mov	 edx, DWORD PTR [ecx+12]
  00028	52		 push	 edx
  00029	e8 00 00 00 00	 call	 _longjmp
$LN2@my_error_e:

; 385  : }

  0002e	5d		 pop	 ebp
  0002f	c3		 ret	 0
?my_error_exit@@YAXPAUjpeg_common_struct@@@Z ENDP	; my_error_exit
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?term_destination@@YAXPAUjpeg_compress_struct@@@Z
_TEXT	SEGMENT
_datacount$ = -8					; size = 4
_dest$ = -4						; size = 4
_cinfo$ = 8						; size = 4
?term_destination@@YAXPAUjpeg_compress_struct@@@Z PROC	; term_destination, COMDAT

; 324  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8

; 325  :   my_dest_ptr dest = (my_dest_ptr) cinfo->dest;

  00006	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00009	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000c	89 4d fc	 mov	 DWORD PTR _dest$[ebp], ecx

; 326  :   size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;

  0000f	8b 55 fc	 mov	 edx, DWORD PTR _dest$[ebp]
  00012	b8 00 10 00 00	 mov	 eax, 4096		; 00001000H
  00017	2b 42 04	 sub	 eax, DWORD PTR [edx+4]
  0001a	89 45 f8	 mov	 DWORD PTR _datacount$[ebp], eax

; 327  : 
; 328  :   /* Write any data remaining in the buffer */
; 329  :   if (datacount > 0)

  0001d	74 3d		 je	 SHORT $LN3@term_desti

; 330  :   {
; 331  :     if (JFWRITE(dest->outfile, dest->buffer, datacount) != datacount)

  0001f	8b 4d fc	 mov	 ecx, DWORD PTR _dest$[ebp]
  00022	8b 51 14	 mov	 edx, DWORD PTR [ecx+20]
  00025	52		 push	 edx
  00026	8b 45 f8	 mov	 eax, DWORD PTR _datacount$[ebp]
  00029	50		 push	 eax
  0002a	6a 01		 push	 1
  0002c	8b 4d fc	 mov	 ecx, DWORD PTR _dest$[ebp]
  0002f	8b 51 18	 mov	 edx, DWORD PTR [ecx+24]
  00032	52		 push	 edx
  00033	e8 00 00 00 00	 call	 _fwrite
  00038	83 c4 10	 add	 esp, 16			; 00000010H
  0003b	3b 45 f8	 cmp	 eax, DWORD PTR _datacount$[ebp]
  0003e	74 1c		 je	 SHORT $LN3@term_desti

; 332  :     {
; 333  :       ERREXIT(cinfo, JERR_FILE_WRITE);

  00040	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00043	8b 08		 mov	 ecx, DWORD PTR [eax]
  00045	c7 41 14 25 00
	00 00		 mov	 DWORD PTR [ecx+20], 37	; 00000025H
  0004c	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  0004f	52		 push	 edx
  00050	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00053	8b 08		 mov	 ecx, DWORD PTR [eax]
  00055	8b 11		 mov	 edx, DWORD PTR [ecx]
  00057	ff d2		 call	 edx
  00059	83 c4 04	 add	 esp, 4
$LN3@term_desti:

; 334  :     }
; 335  :   }
; 336  :   fflush(dest->outfile);

  0005c	8b 45 fc	 mov	 eax, DWORD PTR _dest$[ebp]
  0005f	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  00062	51		 push	 ecx
  00063	e8 00 00 00 00	 call	 _fflush
  00068	83 c4 04	 add	 esp, 4

; 337  :   /* Make sure we wrote the output file OK */
; 338  :   if (ferror(dest->outfile))

  0006b	8b 55 fc	 mov	 edx, DWORD PTR _dest$[ebp]
  0006e	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  00071	50		 push	 eax
  00072	e8 00 00 00 00	 call	 _ferror
  00077	83 c4 04	 add	 esp, 4
  0007a	85 c0		 test	 eax, eax
  0007c	74 1c		 je	 SHORT $LN4@term_desti

; 339  :   {
; 340  :     ERREXIT(cinfo, JERR_FILE_WRITE);

  0007e	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  00081	8b 11		 mov	 edx, DWORD PTR [ecx]
  00083	c7 42 14 25 00
	00 00		 mov	 DWORD PTR [edx+20], 37	; 00000025H
  0008a	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  0008d	50		 push	 eax
  0008e	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  00091	8b 11		 mov	 edx, DWORD PTR [ecx]
  00093	8b 02		 mov	 eax, DWORD PTR [edx]
  00095	ff d0		 call	 eax
  00097	83 c4 04	 add	 esp, 4
$LN4@term_desti:

; 341  :   }
; 342  : }

  0009a	8b e5		 mov	 esp, ebp
  0009c	5d		 pop	 ebp
  0009d	c3		 ret	 0
?term_destination@@YAXPAUjpeg_compress_struct@@@Z ENDP	; term_destination
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?empty_output_buffer@@YAEPAUjpeg_compress_struct@@@Z
_TEXT	SEGMENT
_dest$ = -4						; size = 4
_cinfo$ = 8						; size = 4
?empty_output_buffer@@YAEPAUjpeg_compress_struct@@@Z PROC ; empty_output_buffer, COMDAT

; 297  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 298  :   my_dest_ptr dest = (my_dest_ptr) cinfo->dest;

  00004	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00007	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000a	89 4d fc	 mov	 DWORD PTR _dest$[ebp], ecx

; 299  : 
; 300  :   if (JFWRITE(dest->outfile, dest->buffer, OUTPUT_BUF_SIZE) !=
; 301  :       (size_t) OUTPUT_BUF_SIZE)

  0000d	8b 55 fc	 mov	 edx, DWORD PTR _dest$[ebp]
  00010	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  00013	50		 push	 eax
  00014	68 00 10 00 00	 push	 4096			; 00001000H
  00019	6a 01		 push	 1
  0001b	8b 4d fc	 mov	 ecx, DWORD PTR _dest$[ebp]
  0001e	8b 51 18	 mov	 edx, DWORD PTR [ecx+24]
  00021	52		 push	 edx
  00022	e8 00 00 00 00	 call	 _fwrite
  00027	83 c4 10	 add	 esp, 16			; 00000010H
  0002a	3d 00 10 00 00	 cmp	 eax, 4096		; 00001000H
  0002f	74 1c		 je	 SHORT $LN1@empty_outp

; 302  :   {
; 303  :     ERREXIT(cinfo, JERR_FILE_WRITE);

  00031	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00034	8b 08		 mov	 ecx, DWORD PTR [eax]
  00036	c7 41 14 25 00
	00 00		 mov	 DWORD PTR [ecx+20], 37	; 00000025H
  0003d	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00040	52		 push	 edx
  00041	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00044	8b 08		 mov	 ecx, DWORD PTR [eax]
  00046	8b 11		 mov	 edx, DWORD PTR [ecx]
  00048	ff d2		 call	 edx
  0004a	83 c4 04	 add	 esp, 4
$LN1@empty_outp:

; 304  :   }
; 305  : 
; 306  :   dest->pub.next_output_byte = dest->buffer;

  0004d	8b 45 fc	 mov	 eax, DWORD PTR _dest$[ebp]
  00050	8b 4d fc	 mov	 ecx, DWORD PTR _dest$[ebp]
  00053	8b 51 18	 mov	 edx, DWORD PTR [ecx+24]
  00056	89 10		 mov	 DWORD PTR [eax], edx

; 307  :   dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;

  00058	8b 45 fc	 mov	 eax, DWORD PTR _dest$[ebp]
  0005b	c7 40 04 00 10
	00 00		 mov	 DWORD PTR [eax+4], 4096	; 00001000H

; 308  : 
; 309  :   return TRUE;

  00062	b0 01		 mov	 al, 1

; 310  : }

  00064	8b e5		 mov	 esp, ebp
  00066	5d		 pop	 ebp
  00067	c3		 ret	 0
?empty_output_buffer@@YAEPAUjpeg_compress_struct@@@Z ENDP ; empty_output_buffer
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?init_destination@@YAXPAUjpeg_compress_struct@@@Z
_TEXT	SEGMENT
_dest$ = -4						; size = 4
_cinfo$ = 8						; size = 4
?init_destination@@YAXPAUjpeg_compress_struct@@@Z PROC	; init_destination, COMDAT

; 259  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 260  :   my_dest_ptr dest = (my_dest_ptr) cinfo->dest;

  00004	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00007	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000a	89 4d fc	 mov	 DWORD PTR _dest$[ebp], ecx

; 261  : 
; 262  :   /* Allocate the output buffer --- it will be released when done with image */
; 263  :   dest->buffer = (JOCTET *)
; 264  :       (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
; 265  :                   OUTPUT_BUF_SIZE * (size_t) sizeof(JOCTET));

  0000d	68 00 10 00 00	 push	 4096			; 00001000H
  00012	6a 01		 push	 1
  00014	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00017	52		 push	 edx
  00018	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  0001b	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0001e	8b 11		 mov	 edx, DWORD PTR [ecx]
  00020	ff d2		 call	 edx
  00022	83 c4 0c	 add	 esp, 12			; 0000000cH
  00025	8b 4d fc	 mov	 ecx, DWORD PTR _dest$[ebp]
  00028	89 41 18	 mov	 DWORD PTR [ecx+24], eax

; 266  : 
; 267  :   dest->pub.next_output_byte = dest->buffer;

  0002b	8b 55 fc	 mov	 edx, DWORD PTR _dest$[ebp]
  0002e	8b 45 fc	 mov	 eax, DWORD PTR _dest$[ebp]
  00031	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  00034	89 0a		 mov	 DWORD PTR [edx], ecx

; 268  :   dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;

  00036	8b 55 fc	 mov	 edx, DWORD PTR _dest$[ebp]
  00039	c7 42 04 00 10
	00 00		 mov	 DWORD PTR [edx+4], 4096	; 00001000H

; 269  : }

  00040	8b e5		 mov	 esp, ebp
  00042	5d		 pop	 ebp
  00043	c3		 ret	 0
?init_destination@@YAXPAUjpeg_compress_struct@@@Z ENDP	; init_destination
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?term_source@@YAXPAUjpeg_decompress_struct@@@Z
_TEXT	SEGMENT
_cinfo$ = 8						; size = 4
?term_source@@YAXPAUjpeg_decompress_struct@@@Z PROC	; term_source, COMDAT

; 206  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 207  :   /* no work necessary here */
; 208  : }

  00003	5d		 pop	 ebp
  00004	c3		 ret	 0
?term_source@@YAXPAUjpeg_decompress_struct@@@Z ENDP	; term_source
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?fill_input_buffer@@YAEPAUjpeg_decompress_struct@@@Z
_TEXT	SEGMENT
_src$ = -8						; size = 4
_nbytes$ = -4						; size = 4
_cinfo$ = 8						; size = 4
?fill_input_buffer@@YAEPAUjpeg_decompress_struct@@@Z PROC ; fill_input_buffer, COMDAT

; 131  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8

; 132  :   my_src_ptr src = (my_src_ptr) cinfo->src;

  00006	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00009	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000c	89 4d f8	 mov	 DWORD PTR _src$[ebp], ecx

; 133  :   size_t nbytes;
; 134  : 
; 135  :   nbytes = JFREAD(src->infile, src->buffer, INPUT_BUF_SIZE);

  0000f	8b 55 f8	 mov	 edx, DWORD PTR _src$[ebp]
  00012	8b 42 1c	 mov	 eax, DWORD PTR [edx+28]
  00015	50		 push	 eax
  00016	68 00 10 00 00	 push	 4096			; 00001000H
  0001b	6a 01		 push	 1
  0001d	8b 4d f8	 mov	 ecx, DWORD PTR _src$[ebp]
  00020	8b 51 20	 mov	 edx, DWORD PTR [ecx+32]
  00023	52		 push	 edx
  00024	e8 00 00 00 00	 call	 _fread
  00029	83 c4 10	 add	 esp, 16			; 00000010H
  0002c	89 45 fc	 mov	 DWORD PTR _nbytes$[ebp], eax

; 136  : 
; 137  :   if (nbytes <= 0)

  0002f	83 7d fc 00	 cmp	 DWORD PTR _nbytes$[ebp], 0
  00033	77 60		 ja	 SHORT $LN2@fill_input

; 138  :   {
; 139  :     if (src->start_of_file)    /* Treat empty input file as fatal error */

  00035	8b 45 f8	 mov	 eax, DWORD PTR _src$[ebp]
  00038	0f b6 48 24	 movzx	 ecx, BYTE PTR [eax+36]
  0003c	85 c9		 test	 ecx, ecx
  0003e	74 1c		 je	 SHORT $LN1@fill_input

; 140  :     {
; 141  :       ERREXIT(cinfo, JERR_INPUT_EMPTY);

  00040	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00043	8b 02		 mov	 eax, DWORD PTR [edx]
  00045	c7 40 14 2a 00
	00 00		 mov	 DWORD PTR [eax+20], 42	; 0000002aH
  0004c	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  0004f	51		 push	 ecx
  00050	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00053	8b 02		 mov	 eax, DWORD PTR [edx]
  00055	8b 08		 mov	 ecx, DWORD PTR [eax]
  00057	ff d1		 call	 ecx
  00059	83 c4 04	 add	 esp, 4
$LN1@fill_input:

; 142  :     }
; 143  :     WARNMS(cinfo, JWRN_JPEG_EOF);

  0005c	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  0005f	8b 02		 mov	 eax, DWORD PTR [edx]
  00061	c7 40 14 78 00
	00 00		 mov	 DWORD PTR [eax+20], 120	; 00000078H
  00068	6a ff		 push	 -1
  0006a	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  0006d	51		 push	 ecx
  0006e	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00071	8b 02		 mov	 eax, DWORD PTR [edx]
  00073	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00076	ff d1		 call	 ecx
  00078	83 c4 08	 add	 esp, 8

; 144  :     /* Insert a fake EOI marker */
; 145  :     src->buffer[0] = (JOCTET) 0xFF;

  0007b	8b 55 f8	 mov	 edx, DWORD PTR _src$[ebp]
  0007e	8b 42 20	 mov	 eax, DWORD PTR [edx+32]
  00081	c6 00 ff	 mov	 BYTE PTR [eax], 255	; 000000ffH

; 146  :     src->buffer[1] = (JOCTET) JPEG_EOI;

  00084	8b 4d f8	 mov	 ecx, DWORD PTR _src$[ebp]
  00087	8b 51 20	 mov	 edx, DWORD PTR [ecx+32]
  0008a	c6 42 01 d9	 mov	 BYTE PTR [edx+1], 217	; 000000d9H

; 147  :     nbytes = 2;

  0008e	c7 45 fc 02 00
	00 00		 mov	 DWORD PTR _nbytes$[ebp], 2
$LN2@fill_input:

; 148  :   }
; 149  : 
; 150  :   src->pub.next_input_byte = src->buffer;

  00095	8b 45 f8	 mov	 eax, DWORD PTR _src$[ebp]
  00098	8b 4d f8	 mov	 ecx, DWORD PTR _src$[ebp]
  0009b	8b 51 20	 mov	 edx, DWORD PTR [ecx+32]
  0009e	89 10		 mov	 DWORD PTR [eax], edx

; 151  :   src->pub.bytes_in_buffer = nbytes;

  000a0	8b 45 f8	 mov	 eax, DWORD PTR _src$[ebp]
  000a3	8b 4d fc	 mov	 ecx, DWORD PTR _nbytes$[ebp]
  000a6	89 48 04	 mov	 DWORD PTR [eax+4], ecx

; 152  :   src->start_of_file = FALSE;

  000a9	8b 55 f8	 mov	 edx, DWORD PTR _src$[ebp]
  000ac	c6 42 24 00	 mov	 BYTE PTR [edx+36], 0

; 153  : 
; 154  :   return TRUE;

  000b0	b0 01		 mov	 al, 1

; 155  : }

  000b2	8b e5		 mov	 esp, ebp
  000b4	5d		 pop	 ebp
  000b5	c3		 ret	 0
?fill_input_buffer@@YAEPAUjpeg_decompress_struct@@@Z ENDP ; fill_input_buffer
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?init_source@@YAXPAUjpeg_decompress_struct@@@Z
_TEXT	SEGMENT
_src$ = -4						; size = 4
_cinfo$ = 8						; size = 4
?init_source@@YAXPAUjpeg_decompress_struct@@@Z PROC	; init_source, COMDAT

; 85   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 86   :   my_src_ptr src = (my_src_ptr) cinfo->src;

  00004	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00007	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000a	89 4d fc	 mov	 DWORD PTR _src$[ebp], ecx

; 87   : 
; 88   :   /* We reset the empty-input-file flag for each image,
; 89   :    * but we don't clear the input buffer.
; 90   :    * This is correct behavior for reading a series of images from one source.
; 91   :    */
; 92   :   src->start_of_file = TRUE;

  0000d	8b 55 fc	 mov	 edx, DWORD PTR _src$[ebp]
  00010	c6 42 24 01	 mov	 BYTE PTR [edx+36], 1

; 93   : }

  00014	8b e5		 mov	 esp, ebp
  00016	5d		 pop	 ebp
  00017	c3		 ret	 0
?init_source@@YAXPAUjpeg_decompress_struct@@@Z ENDP	; init_source
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility
;	COMDAT ??$_Distance@PADI@std@@YAXPAD0AAI@Z
_TEXT	SEGMENT
$T308349 = -1						; size = 1
__First$ = 8						; size = 4
__Last$ = 12						; size = 4
__Off$ = 16						; size = 4
??$_Distance@PADI@std@@YAXPAD0AAI@Z PROC		; std::_Distance<char *,unsigned int>, COMDAT

; 1866 : 	{	// add to _Off distance between iterators

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 1867 : 	_Distance2(_First, _Last, _Off, _Iter_cat(_First));

  00004	8d 45 08	 lea	 eax, DWORD PTR __First$[ebp]
  00007	50		 push	 eax
  00008	8d 4d ff	 lea	 ecx, DWORD PTR $T308349[ebp]
  0000b	51		 push	 ecx
  0000c	e8 00 00 00 00	 call	 ??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z ; std::_Iter_cat<char *>
  00011	83 c4 08	 add	 esp, 8
  00014	0f b6 10	 movzx	 edx, BYTE PTR [eax]
  00017	52		 push	 edx
  00018	8b 45 10	 mov	 eax, DWORD PTR __Off$[ebp]
  0001b	50		 push	 eax
  0001c	8b 4d 0c	 mov	 ecx, DWORD PTR __Last$[ebp]
  0001f	51		 push	 ecx
  00020	8b 55 08	 mov	 edx, DWORD PTR __First$[ebp]
  00023	52		 push	 edx
  00024	e8 00 00 00 00	 call	 ??$_Distance2@PADI@std@@YAXPAD0AAIUrandom_access_iterator_tag@0@@Z ; std::_Distance2<char *,unsigned int>
  00029	83 c4 10	 add	 esp, 16			; 00000010H

; 1868 : 	}

  0002c	8b e5		 mov	 esp, ebp
  0002e	5d		 pop	 ebp
  0002f	c3		 ret	 0
??$_Distance@PADI@std@@YAXPAD0AAI@Z ENDP		; std::_Distance<char *,unsigned int>
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
_TEXT	ENDS
;	COMDAT ??0?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WPBV_Container_base_secure@1@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
__Ptr$ = 8						; size = 4
__Pstring$ = 12						; size = 4
??0?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WPBV_Container_base_secure@1@@Z PROC ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >, COMDAT
; _this$ = ecx

; 83   : 		__CLR_OR_THIS_CALL _String_const_iterator(pointer _Ptr, const _Container_base_secure *_Pstring)

  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 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000a	e8 00 00 00 00	 call	 ??0?$_Ranit_base@_WHPB_WAB_WV_Iterator_base_secure@std@@@std@@QAE@XZ

; 84   : 			{	// construct with pointer _Ptr
; 85   : 			_SCL_SECURE_VALIDATE(

  0000f	83 7d 0c 00	 cmp	 DWORD PTR __Pstring$[ebp], 0
  00013	74 29		 je	 SHORT $LN4@String_con
  00015	83 7d 08 00	 cmp	 DWORD PTR __Ptr$[ebp], 0
  00019	74 23		 je	 SHORT $LN4@String_con
  0001b	8b 4d 0c	 mov	 ecx, DWORD PTR __Pstring$[ebp]
  0001e	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00023	3b 45 08	 cmp	 eax, DWORD PTR __Ptr$[ebp]
  00026	77 16		 ja	 SHORT $LN4@String_con
  00028	8b 4d 0c	 mov	 ecx, DWORD PTR __Pstring$[ebp]
  0002b	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00030	8b 4d 0c	 mov	 ecx, DWORD PTR __Pstring$[ebp]
  00033	8b 51 14	 mov	 edx, DWORD PTR [ecx+20]
  00036	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  00039	39 45 08	 cmp	 DWORD PTR __Ptr$[ebp], eax
  0003c	76 05		 jbe	 SHORT $LN2@String_con
$LN4@String_con:

; 86   : 				_Pstring != NULL && 
; 87   : 				_Ptr != NULL && 
; 88   : 				((_Mystring *)_Pstring)->_Myptr() <= _Ptr && _Ptr <= (((_Mystring *)_Pstring)->_Myptr() + ((_Mystring *)_Pstring)->_Mysize));

  0003e	e8 00 00 00 00	 call	 __invalid_parameter_noinfo
$LN2@String_con:
  00043	33 c9		 xor	 ecx, ecx
  00045	75 fc		 jne	 SHORT $LN2@String_con

; 89   : 			this->_Mycont = _Pstring;

  00047	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0004a	8b 45 0c	 mov	 eax, DWORD PTR __Pstring$[ebp]
  0004d	89 02		 mov	 DWORD PTR [edx], eax

; 90   : 			_Myptr = _Ptr;

  0004f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00052	8b 55 08	 mov	 edx, DWORD PTR __Ptr$[ebp]
  00055	89 51 04	 mov	 DWORD PTR [ecx+4], edx

; 91   : 			}

  00058	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0005b	8b e5		 mov	 esp, ebp
  0005d	5d		 pop	 ebp
  0005e	c2 08 00	 ret	 8
??0?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WPBV_Container_base_secure@1@@Z ENDP ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??0?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PA_WPBV_Container_base_secure@1@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
__Ptr$ = 8						; size = 4
__Pstring$ = 12						; size = 4
??0?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PA_WPBV_Container_base_secure@1@@Z PROC ; std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >, COMDAT
; _this$ = ecx

; 341  : 			{	// construct with pointer _Ptr

  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 __Pstring$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d 08	 mov	 ecx, DWORD PTR __Ptr$[ebp]
  0000e	51		 push	 ecx
  0000f	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00012	e8 00 00 00 00	 call	 ??0?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PB_WPBV_Container_base_secure@1@@Z ; std::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_const_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >

; 342  : 			}

  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?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PA_WPBV_Container_base_secure@1@@Z ENDP ; std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
___$ReturnUdt$ = 8					; size = 4
?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::end, COMDAT
; _this$ = ecx

; 1511 : 		{	// return iterator for end of mutable sequence

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

; 1512 : 		return (_STRING_ITERATOR(_Myptr() + _Mysize));

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000e	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00013	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00016	8b 51 14	 mov	 edx, DWORD PTR [ecx+20]
  00019	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  0001c	50		 push	 eax
  0001d	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00020	e8 00 00 00 00	 call	 ??0?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PA_WPBV_Container_base_secure@1@@Z ; std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00025	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 1513 : 		}

  00028	8b e5		 mov	 esp, ebp
  0002a	5d		 pop	 ebp
  0002b	c2 04 00	 ret	 4
?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::end
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ
_TEXT	SEGMENT
_this$ = -4						; size = 4
___$ReturnUdt$ = 8					; size = 4
?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::begin, COMDAT
; _this$ = ecx

; 1501 : 		{	// return iterator for beginning of mutable sequence

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

; 1502 : 		return (_STRING_ITERATOR(_Myptr()));

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	50		 push	 eax
  0000b	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0000e	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00013	50		 push	 eax
  00014	8b 4d 08	 mov	 ecx, DWORD PTR ___$ReturnUdt$[ebp]
  00017	e8 00 00 00 00	 call	 ??0?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PA_WPBV_Container_base_secure@1@@Z ; std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  0001c	8b 45 08	 mov	 eax, DWORD PTR ___$ReturnUdt$[ebp]

; 1503 : 		}

  0001f	8b e5		 mov	 esp, ebp
  00021	5d		 pop	 ebp
  00022	c2 04 00	 ret	 4
?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::begin
_TEXT	ENDS
PUBLIC	?my_jpeg_stdio_dest@@YAXPAUjpeg_compress_struct@@PAU_iobuf@@@Z ; my_jpeg_stdio_dest
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\jpeghelper.cpp
;	COMDAT ?my_jpeg_stdio_dest@@YAXPAUjpeg_compress_struct@@PAU_iobuf@@@Z
_TEXT	SEGMENT
_dest$ = -4						; size = 4
_cinfo$ = 8						; size = 4
_outfile$ = 12						; size = 4
?my_jpeg_stdio_dest@@YAXPAUjpeg_compress_struct@@PAU_iobuf@@@Z PROC ; my_jpeg_stdio_dest, COMDAT

; 353  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 354  :   my_dest_ptr dest;
; 355  : 
; 356  :   /* The destination object is made permanent so that multiple JPEG images
; 357  :    * can be written to the same file without re-executing jpeg_stdio_dest.
; 358  :    * This makes it dangerous to use this manager and a different destination
; 359  :    * manager serially with the same JPEG object, because their private object
; 360  :    * sizes may be different.  Caveat programmer.
; 361  :    */
; 362  :   if (cinfo->dest == NULL)    /* first time for this JPEG object? */

  00004	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00007	83 78 18 00	 cmp	 DWORD PTR [eax+24], 0
  0000b	75 1b		 jne	 SHORT $LN1@my_jpeg_st

; 363  :   {
; 364  :     cinfo->dest = (struct jpeg_destination_mgr *)
; 365  :       (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
; 366  :                   (size_t) sizeof(my_destination_mgr));

  0000d	6a 1c		 push	 28			; 0000001cH
  0000f	6a 00		 push	 0
  00011	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  00014	51		 push	 ecx
  00015	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00018	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  0001b	8b 08		 mov	 ecx, DWORD PTR [eax]
  0001d	ff d1		 call	 ecx
  0001f	83 c4 0c	 add	 esp, 12			; 0000000cH
  00022	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00025	89 42 18	 mov	 DWORD PTR [edx+24], eax
$LN1@my_jpeg_st:

; 367  :   }
; 368  : 
; 369  :   dest = (my_dest_ptr) cinfo->dest;

  00028	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  0002b	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0002e	89 4d fc	 mov	 DWORD PTR _dest$[ebp], ecx

; 370  :   dest->pub.init_destination = init_destination;

  00031	8b 55 fc	 mov	 edx, DWORD PTR _dest$[ebp]
  00034	c7 42 08 00 00
	00 00		 mov	 DWORD PTR [edx+8], OFFSET ?init_destination@@YAXPAUjpeg_compress_struct@@@Z ; init_destination

; 371  :   dest->pub.empty_output_buffer = empty_output_buffer;

  0003b	8b 45 fc	 mov	 eax, DWORD PTR _dest$[ebp]
  0003e	c7 40 0c 00 00
	00 00		 mov	 DWORD PTR [eax+12], OFFSET ?empty_output_buffer@@YAEPAUjpeg_compress_struct@@@Z ; empty_output_buffer

; 372  :   dest->pub.term_destination = term_destination;

  00045	8b 4d fc	 mov	 ecx, DWORD PTR _dest$[ebp]
  00048	c7 41 10 00 00
	00 00		 mov	 DWORD PTR [ecx+16], OFFSET ?term_destination@@YAXPAUjpeg_compress_struct@@@Z ; term_destination

; 373  :   dest->outfile = outfile;

  0004f	8b 55 fc	 mov	 edx, DWORD PTR _dest$[ebp]
  00052	8b 45 0c	 mov	 eax, DWORD PTR _outfile$[ebp]
  00055	89 42 14	 mov	 DWORD PTR [edx+20], eax

; 374  : }

  00058	8b e5		 mov	 esp, ebp
  0005a	5d		 pop	 ebp
  0005b	c3		 ret	 0
?my_jpeg_stdio_dest@@YAXPAUjpeg_compress_struct@@PAU_iobuf@@@Z ENDP ; my_jpeg_stdio_dest
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?skip_input_data@@YAXPAUjpeg_decompress_struct@@J@Z
_TEXT	SEGMENT
_src$ = -4						; size = 4
_cinfo$ = 8						; size = 4
_num_bytes$ = 12					; size = 4
?skip_input_data@@YAXPAUjpeg_decompress_struct@@J@Z PROC ; skip_input_data, COMDAT

; 172  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 173  :   my_src_ptr src = (my_src_ptr) cinfo->src;

  00004	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00007	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0000a	89 4d fc	 mov	 DWORD PTR _src$[ebp], ecx

; 174  : 
; 175  :   /* Just a dumb implementation for now.  Could use fseek() except
; 176  :    * it doesn't work on pipes.  Not clear that being smart is worth
; 177  :    * any trouble anyway --- large skips are infrequent.
; 178  :    */
; 179  :   if (num_bytes > 0)

  0000d	83 7d 0c 00	 cmp	 DWORD PTR _num_bytes$[ebp], 0
  00011	7e 41		 jle	 SHORT $LN4@skip_input
$LN2@skip_input:

; 180  :   {
; 181  :     while (num_bytes > (long) src->pub.bytes_in_buffer)

  00013	8b 55 fc	 mov	 edx, DWORD PTR _src$[ebp]
  00016	8b 45 0c	 mov	 eax, DWORD PTR _num_bytes$[ebp]
  00019	3b 42 04	 cmp	 eax, DWORD PTR [edx+4]
  0001c	7e 1a		 jle	 SHORT $LN1@skip_input

; 182  :     {
; 183  :       num_bytes -= (long) src->pub.bytes_in_buffer;

  0001e	8b 4d fc	 mov	 ecx, DWORD PTR _src$[ebp]
  00021	8b 55 0c	 mov	 edx, DWORD PTR _num_bytes$[ebp]
  00024	2b 51 04	 sub	 edx, DWORD PTR [ecx+4]
  00027	89 55 0c	 mov	 DWORD PTR _num_bytes$[ebp], edx

; 184  :       (void) fill_input_buffer(cinfo);

  0002a	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  0002d	50		 push	 eax
  0002e	e8 00 00 00 00	 call	 ?fill_input_buffer@@YAEPAUjpeg_decompress_struct@@@Z ; fill_input_buffer
  00033	83 c4 04	 add	 esp, 4

; 185  :       /* note we assume that fill_input_buffer will never return FALSE,
; 186  :        * so suspension need not be handled.
; 187  :        */
; 188  :     }

  00036	eb db		 jmp	 SHORT $LN2@skip_input
$LN1@skip_input:

; 189  :     src->pub.next_input_byte += (size_t) num_bytes;

  00038	8b 4d fc	 mov	 ecx, DWORD PTR _src$[ebp]
  0003b	8b 11		 mov	 edx, DWORD PTR [ecx]
  0003d	03 55 0c	 add	 edx, DWORD PTR _num_bytes$[ebp]
  00040	8b 45 fc	 mov	 eax, DWORD PTR _src$[ebp]
  00043	89 10		 mov	 DWORD PTR [eax], edx

; 190  :     src->pub.bytes_in_buffer -= (size_t) num_bytes;

  00045	8b 4d fc	 mov	 ecx, DWORD PTR _src$[ebp]
  00048	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  0004b	2b 55 0c	 sub	 edx, DWORD PTR _num_bytes$[ebp]
  0004e	8b 45 fc	 mov	 eax, DWORD PTR _src$[ebp]
  00051	89 50 04	 mov	 DWORD PTR [eax+4], edx
$LN4@skip_input:

; 191  :   }
; 192  : }

  00054	8b e5		 mov	 esp, ebp
  00056	5d		 pop	 ebp
  00057	c3		 ret	 0
?skip_input_data@@YAXPAUjpeg_decompress_struct@@J@Z ENDP ; skip_input_data
PUBLIC	?my_jpeg_stdio_src@@YAXPAUjpeg_decompress_struct@@PAU_iobuf@@@Z ; my_jpeg_stdio_src
; Function compile flags: /Odtp
;	COMDAT ?my_jpeg_stdio_src@@YAXPAUjpeg_decompress_struct@@PAU_iobuf@@@Z
_TEXT	SEGMENT
_src$ = -4						; size = 4
_cinfo$ = 8						; size = 4
_infile$ = 12						; size = 4
?my_jpeg_stdio_src@@YAXPAUjpeg_decompress_struct@@PAU_iobuf@@@Z PROC ; my_jpeg_stdio_src, COMDAT

; 219  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx

; 220  :   my_src_ptr src;
; 221  : 
; 222  :   /* The source object and input buffer are made permanent so that a series
; 223  :    * of JPEG images can be read from the same file by calling jpeg_stdio_src
; 224  :    * only before the first one.  (If we discarded the buffer at the end of
; 225  :    * one image, we'd likely lose the start of the next one.)
; 226  :    * This makes it unsafe to use this manager and a different source
; 227  :    * manager serially with the same JPEG object.  Caveat programmer.
; 228  :    */
; 229  :   if (cinfo->src == NULL) /* first time for this JPEG object? */

  00004	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  00007	83 78 18 00	 cmp	 DWORD PTR [eax+24], 0
  0000b	75 42		 jne	 SHORT $LN1@my_jpeg_st@2

; 230  :   {
; 231  :     cinfo->src = (struct jpeg_source_mgr *)
; 232  :       (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
; 233  :                   (size_t) sizeof(my_source_mgr));

  0000d	6a 28		 push	 40			; 00000028H
  0000f	6a 00		 push	 0
  00011	8b 4d 08	 mov	 ecx, DWORD PTR _cinfo$[ebp]
  00014	51		 push	 ecx
  00015	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00018	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  0001b	8b 08		 mov	 ecx, DWORD PTR [eax]
  0001d	ff d1		 call	 ecx
  0001f	83 c4 0c	 add	 esp, 12			; 0000000cH
  00022	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00025	89 42 18	 mov	 DWORD PTR [edx+24], eax

; 234  :     src = (my_src_ptr) cinfo->src;

  00028	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  0002b	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0002e	89 4d fc	 mov	 DWORD PTR _src$[ebp], ecx

; 235  :     src->buffer = (JOCTET *)
; 236  :       (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
; 237  :                   INPUT_BUF_SIZE * (size_t) sizeof(JOCTET));

  00031	68 00 10 00 00	 push	 4096			; 00001000H
  00036	6a 00		 push	 0
  00038	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  0003b	52		 push	 edx
  0003c	8b 45 08	 mov	 eax, DWORD PTR _cinfo$[ebp]
  0003f	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00042	8b 11		 mov	 edx, DWORD PTR [ecx]
  00044	ff d2		 call	 edx
  00046	83 c4 0c	 add	 esp, 12			; 0000000cH
  00049	8b 4d fc	 mov	 ecx, DWORD PTR _src$[ebp]
  0004c	89 41 20	 mov	 DWORD PTR [ecx+32], eax
$LN1@my_jpeg_st@2:

; 238  :   }
; 239  : 
; 240  :   src = (my_src_ptr) cinfo->src;

  0004f	8b 55 08	 mov	 edx, DWORD PTR _cinfo$[ebp]
  00052	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  00055	89 45 fc	 mov	 DWORD PTR _src$[ebp], eax

; 241  :   src->pub.init_source = init_source;

  00058	8b 4d fc	 mov	 ecx, DWORD PTR _src$[ebp]
  0005b	c7 41 08 00 00
	00 00		 mov	 DWORD PTR [ecx+8], OFFSET ?init_source@@YAXPAUjpeg_decompress_struct@@@Z ; init_source

; 242  :   src->pub.fill_input_buffer = fill_input_buffer;

  00062	8b 55 fc	 mov	 edx, DWORD PTR _src$[ebp]
  00065	c7 42 0c 00 00
	00 00		 mov	 DWORD PTR [edx+12], OFFSET ?fill_input_buffer@@YAEPAUjpeg_decompress_struct@@@Z ; fill_input_buffer

; 243  :   src->pub.skip_input_data = skip_input_data;

  0006c	8b 45 fc	 mov	 eax, DWORD PTR _src$[ebp]
  0006f	c7 40 10 00 00
	00 00		 mov	 DWORD PTR [eax+16], OFFSET ?skip_input_data@@YAXPAUjpeg_decompress_struct@@J@Z ; skip_input_data

; 244  :   src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */

  00076	8b 4d fc	 mov	 ecx, DWORD PTR _src$[ebp]
  00079	c7 41 14 00 00
	00 00		 mov	 DWORD PTR [ecx+20], OFFSET _jpeg_resync_to_restart

; 245  :   src->pub.term_source = term_source;

  00080	8b 55 fc	 mov	 edx, DWORD PTR _src$[ebp]
  00083	c7 42 18 00 00
	00 00		 mov	 DWORD PTR [edx+24], OFFSET ?term_source@@YAXPAUjpeg_decompress_struct@@@Z ; term_source

; 246  :   src->infile = infile;

  0008a	8b 45 fc	 mov	 eax, DWORD PTR _src$[ebp]
  0008d	8b 4d 0c	 mov	 ecx, DWORD PTR _infile$[ebp]
  00090	89 48 1c	 mov	 DWORD PTR [eax+28], ecx

; 247  :   src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */

  00093	8b 55 fc	 mov	 edx, DWORD PTR _src$[ebp]
  00096	c7 42 04 00 00
	00 00		 mov	 DWORD PTR [edx+4], 0

; 248  :   src->pub.next_input_byte = NULL; /* until buffer loaded */

  0009d	8b 45 fc	 mov	 eax, DWORD PTR _src$[ebp]
  000a0	c7 00 00 00 00
	00		 mov	 DWORD PTR [eax], 0

; 249  : }

  000a6	8b e5		 mov	 esp, ebp
  000a8	5d		 pop	 ebp
  000a9	c3		 ret	 0
?my_jpeg_stdio_src@@YAXPAUjpeg_decompress_struct@@PAU_iobuf@@@Z ENDP ; my_jpeg_stdio_src
; Function compile flags: /Odtp
; File c:\program files (x86)\microsoft visual studio 9.0\vc\include\xstring
;	COMDAT ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z
_TEXT	SEGMENT
_this$ = -16						; size = 4
__Newsize$ = -12					; size = 4
__Num$ = -8						; size = 4
__Nm$ = -4						; size = 4
__Off$ = 8						; size = 4
__N0$ = 12						; size = 4
__Right$ = 16						; size = 4
__Roff$ = 20						; size = 4
__Count$ = 24						; size = 4
?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace, COMDAT
; _this$ = ecx

; 1303 : 		{	// replace [_Off, _Off + _N0) with _Right [_Roff, _Roff + _Count)

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H
  00006	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx

; 1304 : 		if (_Mysize < _Off || _Right.size() < _Roff)

  00009	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  0000f	3b 4d 08	 cmp	 ecx, DWORD PTR __Off$[ebp]
  00012	72 0d		 jb	 SHORT $LN13@replace
  00014	8b 4d 10	 mov	 ecx, DWORD PTR __Right$[ebp]
  00017	e8 00 00 00 00	 call	 ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::size
  0001c	3b 45 14	 cmp	 eax, DWORD PTR __Roff$[ebp]
  0001f	73 05		 jae	 SHORT $LN14@replace
$LN13@replace:

; 1305 : 			_String_base::_Xran();	// _Off or _Roff off end

  00021	e8 00 00 00 00	 call	 ?_Xran@_String_base@std@@SAXXZ ; std::_String_base::_Xran
$LN14@replace:

; 1306 : 		if (_Mysize - _Off < _N0)

  00026	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00029	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  0002c	2b 45 08	 sub	 eax, DWORD PTR __Off$[ebp]
  0002f	3b 45 0c	 cmp	 eax, DWORD PTR __N0$[ebp]
  00032	73 0c		 jae	 SHORT $LN12@replace

; 1307 : 			_N0 = _Mysize - _Off;	// trim _N0 to size

  00034	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00037	8b 51 14	 mov	 edx, DWORD PTR [ecx+20]
  0003a	2b 55 08	 sub	 edx, DWORD PTR __Off$[ebp]
  0003d	89 55 0c	 mov	 DWORD PTR __N0$[ebp], edx
$LN12@replace:

; 1308 : 		size_type _Num = _Right.size() - _Roff;

  00040	8b 4d 10	 mov	 ecx, DWORD PTR __Right$[ebp]
  00043	e8 00 00 00 00	 call	 ?size@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::size
  00048	2b 45 14	 sub	 eax, DWORD PTR __Roff$[ebp]
  0004b	89 45 f8	 mov	 DWORD PTR __Num$[ebp], eax

; 1309 : 		if (_Num < _Count)

  0004e	8b 45 f8	 mov	 eax, DWORD PTR __Num$[ebp]
  00051	3b 45 18	 cmp	 eax, DWORD PTR __Count$[ebp]
  00054	73 06		 jae	 SHORT $LN11@replace

; 1310 : 			_Count = _Num;	// trim _Count to size

  00056	8b 4d f8	 mov	 ecx, DWORD PTR __Num$[ebp]
  00059	89 4d 18	 mov	 DWORD PTR __Count$[ebp], ecx
$LN11@replace:

; 1311 : 		if (npos - _Count <= _Mysize - _N0)

  0005c	83 ca ff	 or	 edx, -1
  0005f	2b 55 18	 sub	 edx, DWORD PTR __Count$[ebp]
  00062	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00065	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  00068	2b 4d 0c	 sub	 ecx, DWORD PTR __N0$[ebp]
  0006b	3b d1		 cmp	 edx, ecx
  0006d	77 05		 ja	 SHORT $LN10@replace

; 1312 : 			_String_base::_Xlen();	// result too long

  0006f	e8 00 00 00 00	 call	 ?_Xlen@_String_base@std@@SAXXZ ; std::_String_base::_Xlen
$LN10@replace:

; 1313 : 
; 1314 : 		size_type _Nm = _Mysize - _N0 - _Off;	// length of preserved tail

  00074	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00077	8b 42 14	 mov	 eax, DWORD PTR [edx+20]
  0007a	2b 45 0c	 sub	 eax, DWORD PTR __N0$[ebp]
  0007d	2b 45 08	 sub	 eax, DWORD PTR __Off$[ebp]
  00080	89 45 fc	 mov	 DWORD PTR __Nm$[ebp], eax

; 1315 : 		size_type _Newsize = _Mysize + _Count - _N0;

  00083	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00086	8b 51 14	 mov	 edx, DWORD PTR [ecx+20]
  00089	03 55 18	 add	 edx, DWORD PTR __Count$[ebp]
  0008c	2b 55 0c	 sub	 edx, DWORD PTR __N0$[ebp]
  0008f	89 55 f4	 mov	 DWORD PTR __Newsize$[ebp], edx

; 1316 : 		if (_Mysize < _Newsize)

  00092	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00095	8b 48 14	 mov	 ecx, DWORD PTR [eax+20]
  00098	3b 4d f4	 cmp	 ecx, DWORD PTR __Newsize$[ebp]
  0009b	73 0e		 jae	 SHORT $LN9@replace

; 1317 : 			_Grow(_Newsize);

  0009d	6a 00		 push	 0
  0009f	8b 55 f4	 mov	 edx, DWORD PTR __Newsize$[ebp]
  000a2	52		 push	 edx
  000a3	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000a6	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
$LN9@replace:

; 1318 : 
; 1319 : 		if (this != &_Right)

  000ab	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000ae	3b 45 10	 cmp	 eax, DWORD PTR __Right$[ebp]
  000b1	74 7c		 je	 SHORT $LN8@replace

; 1320 : 			{	// no overlap, just move down and copy in new stuff
; 1321 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
; 1322 : 				_Myptr() + _Off + _N0, _Nm);	// empty hole

  000b3	8b 4d fc	 mov	 ecx, DWORD PTR __Nm$[ebp]
  000b6	51		 push	 ecx
  000b7	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000ba	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  000bf	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  000c2	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  000c5	8b 4d 0c	 mov	 ecx, DWORD PTR __N0$[ebp]
  000c8	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  000cb	52		 push	 edx
  000cc	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000cf	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  000d2	2b 4d 08	 sub	 ecx, DWORD PTR __Off$[ebp]
  000d5	2b 4d 18	 sub	 ecx, DWORD PTR __Count$[ebp]
  000d8	51		 push	 ecx
  000d9	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000dc	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  000e1	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  000e4	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  000e7	8b 4d 18	 mov	 ecx, DWORD PTR __Count$[ebp]
  000ea	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  000ed	52		 push	 edx
  000ee	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  000f3	83 c4 10	 add	 esp, 16			; 00000010H

; 1323 : 			_Traits_helper::copy_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
; 1324 : 				_Right._Myptr() + _Roff, _Count);	// fill hole

  000f6	8b 45 18	 mov	 eax, DWORD PTR __Count$[ebp]
  000f9	50		 push	 eax
  000fa	8b 4d 10	 mov	 ecx, DWORD PTR __Right$[ebp]
  000fd	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00102	8b 4d 14	 mov	 ecx, DWORD PTR __Roff$[ebp]
  00105	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00108	52		 push	 edx
  00109	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0010c	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0010f	2b 4d 08	 sub	 ecx, DWORD PTR __Off$[ebp]
  00112	51		 push	 ecx
  00113	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00116	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  0011b	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  0011e	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  00121	50		 push	 eax
  00122	e8 00 00 00 00	 call	 ??$copy_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::copy_s<std::char_traits<wchar_t> >
  00127	83 c4 10	 add	 esp, 16			; 00000010H
  0012a	e9 56 02 00 00	 jmp	 $LN7@replace
$LN8@replace:

; 1325 : 			}
; 1326 : 		else if (_Count <= _N0)

  0012f	8b 4d 18	 mov	 ecx, DWORD PTR __Count$[ebp]
  00132	3b 4d 0c	 cmp	 ecx, DWORD PTR __N0$[ebp]
  00135	77 7c		 ja	 SHORT $LN6@replace

; 1327 : 			{	// hole doesn't get larger, just copy in substring
; 1328 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
; 1329 : 				_Myptr() + _Roff, _Count);	// fill hole

  00137	8b 55 18	 mov	 edx, DWORD PTR __Count$[ebp]
  0013a	52		 push	 edx
  0013b	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0013e	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00143	8b 4d 14	 mov	 ecx, DWORD PTR __Roff$[ebp]
  00146	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00149	52		 push	 edx
  0014a	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  0014d	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  00150	2b 4d 08	 sub	 ecx, DWORD PTR __Off$[ebp]
  00153	51		 push	 ecx
  00154	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00157	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  0015c	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  0015f	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  00162	50		 push	 eax
  00163	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  00168	83 c4 10	 add	 esp, 16			; 00000010H

; 1330 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
; 1331 : 				_Myptr() + _Off + _N0, _Nm);	// move tail down

  0016b	8b 4d fc	 mov	 ecx, DWORD PTR __Nm$[ebp]
  0016e	51		 push	 ecx
  0016f	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00172	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00177	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  0017a	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  0017d	8b 4d 0c	 mov	 ecx, DWORD PTR __N0$[ebp]
  00180	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00183	52		 push	 edx
  00184	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00187	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  0018a	2b 4d 08	 sub	 ecx, DWORD PTR __Off$[ebp]
  0018d	2b 4d 18	 sub	 ecx, DWORD PTR __Count$[ebp]
  00190	51		 push	 ecx
  00191	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00194	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00199	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  0019c	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  0019f	8b 4d 18	 mov	 ecx, DWORD PTR __Count$[ebp]
  001a2	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  001a5	52		 push	 edx
  001a6	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  001ab	83 c4 10	 add	 esp, 16			; 00000010H
  001ae	e9 d2 01 00 00	 jmp	 $LN7@replace
$LN6@replace:

; 1332 : 			}
; 1333 : 		else if (_Roff <= _Off)

  001b3	8b 45 14	 mov	 eax, DWORD PTR __Roff$[ebp]
  001b6	3b 45 08	 cmp	 eax, DWORD PTR __Off$[ebp]
  001b9	77 7c		 ja	 SHORT $LN4@replace

; 1334 : 			{	// hole gets larger, substring begins before hole
; 1335 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
; 1336 : 				_Myptr() + _Off + _N0, _Nm);	// move tail down

  001bb	8b 4d fc	 mov	 ecx, DWORD PTR __Nm$[ebp]
  001be	51		 push	 ecx
  001bf	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  001c2	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  001c7	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  001ca	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  001cd	8b 4d 0c	 mov	 ecx, DWORD PTR __N0$[ebp]
  001d0	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  001d3	52		 push	 edx
  001d4	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  001d7	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  001da	2b 4d 08	 sub	 ecx, DWORD PTR __Off$[ebp]
  001dd	2b 4d 18	 sub	 ecx, DWORD PTR __Count$[ebp]
  001e0	51		 push	 ecx
  001e1	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  001e4	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  001e9	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  001ec	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  001ef	8b 4d 18	 mov	 ecx, DWORD PTR __Count$[ebp]
  001f2	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  001f5	52		 push	 edx
  001f6	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  001fb	83 c4 10	 add	 esp, 16			; 00000010H

; 1337 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
; 1338 : 				_Myptr() + _Roff, _Count);	// fill hole

  001fe	8b 45 18	 mov	 eax, DWORD PTR __Count$[ebp]
  00201	50		 push	 eax
  00202	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00205	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  0020a	8b 4d 14	 mov	 ecx, DWORD PTR __Roff$[ebp]
  0020d	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00210	52		 push	 edx
  00211	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00214	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  00217	2b 4d 08	 sub	 ecx, DWORD PTR __Off$[ebp]
  0021a	51		 push	 ecx
  0021b	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0021e	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00223	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  00226	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  00229	50		 push	 eax
  0022a	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  0022f	83 c4 10	 add	 esp, 16			; 00000010H
  00232	e9 4e 01 00 00	 jmp	 $LN7@replace
$LN4@replace:

; 1339 : 			}
; 1340 : 		else if (_Off + _N0 <= _Roff)

  00237	8b 4d 08	 mov	 ecx, DWORD PTR __Off$[ebp]
  0023a	03 4d 0c	 add	 ecx, DWORD PTR __N0$[ebp]
  0023d	3b 4d 14	 cmp	 ecx, DWORD PTR __Roff$[ebp]
  00240	0f 87 82 00 00
	00		 ja	 $LN2@replace

; 1341 : 			{	// hole gets larger, substring begins after hole
; 1342 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
; 1343 : 				_Myptr() + _Off + _N0, _Nm);	// move tail down

  00246	8b 55 fc	 mov	 edx, DWORD PTR __Nm$[ebp]
  00249	52		 push	 edx
  0024a	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0024d	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00252	8b 4d 08	 mov	 ecx, DWORD PTR __Off$[ebp]
  00255	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00258	8b 45 0c	 mov	 eax, DWORD PTR __N0$[ebp]
  0025b	8d 0c 42	 lea	 ecx, DWORD PTR [edx+eax*2]
  0025e	51		 push	 ecx
  0025f	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00262	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  00265	2b 45 08	 sub	 eax, DWORD PTR __Off$[ebp]
  00268	2b 45 18	 sub	 eax, DWORD PTR __Count$[ebp]
  0026b	50		 push	 eax
  0026c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0026f	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00274	8b 4d 08	 mov	 ecx, DWORD PTR __Off$[ebp]
  00277	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  0027a	8b 45 18	 mov	 eax, DWORD PTR __Count$[ebp]
  0027d	8d 0c 42	 lea	 ecx, DWORD PTR [edx+eax*2]
  00280	51		 push	 ecx
  00281	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  00286	83 c4 10	 add	 esp, 16			; 00000010H

; 1344 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
; 1345 : 				_Myptr() + (_Roff + _Count - _N0), _Count);	// fill hole

  00289	8b 55 18	 mov	 edx, DWORD PTR __Count$[ebp]
  0028c	52		 push	 edx
  0028d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00290	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00295	8b 4d 14	 mov	 ecx, DWORD PTR __Roff$[ebp]
  00298	03 4d 18	 add	 ecx, DWORD PTR __Count$[ebp]
  0029b	2b 4d 0c	 sub	 ecx, DWORD PTR __N0$[ebp]
  0029e	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  002a1	52		 push	 edx
  002a2	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  002a5	8b 48 18	 mov	 ecx, DWORD PTR [eax+24]
  002a8	2b 4d 08	 sub	 ecx, DWORD PTR __Off$[ebp]
  002ab	51		 push	 ecx
  002ac	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  002af	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  002b4	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  002b7	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  002ba	50		 push	 eax
  002bb	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  002c0	83 c4 10	 add	 esp, 16			; 00000010H

; 1346 : 			}
; 1347 : 		else

  002c3	e9 bd 00 00 00	 jmp	 $LN7@replace
$LN2@replace:

; 1348 : 			{	// hole gets larger, substring begins in hole
; 1349 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off, _Myres - _Off,
; 1350 : 				_Myptr() + _Roff, _N0);	// fill old hole

  002c8	8b 4d 0c	 mov	 ecx, DWORD PTR __N0$[ebp]
  002cb	51		 push	 ecx
  002cc	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  002cf	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  002d4	8b 55 14	 mov	 edx, DWORD PTR __Roff$[ebp]
  002d7	8d 04 50	 lea	 eax, DWORD PTR [eax+edx*2]
  002da	50		 push	 eax
  002db	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  002de	8b 51 18	 mov	 edx, DWORD PTR [ecx+24]
  002e1	2b 55 08	 sub	 edx, DWORD PTR __Off$[ebp]
  002e4	52		 push	 edx
  002e5	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  002e8	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  002ed	8b 4d 08	 mov	 ecx, DWORD PTR __Off$[ebp]
  002f0	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  002f3	52		 push	 edx
  002f4	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  002f9	83 c4 10	 add	 esp, 16			; 00000010H

; 1351 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off + _Count, _Myres - _Off - _Count,
; 1352 : 				_Myptr() + _Off + _N0, _Nm);	// move tail down

  002fc	8b 45 fc	 mov	 eax, DWORD PTR __Nm$[ebp]
  002ff	50		 push	 eax
  00300	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00303	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00308	8b 4d 08	 mov	 ecx, DWORD PTR __Off$[ebp]
  0030b	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  0030e	8b 45 0c	 mov	 eax, DWORD PTR __N0$[ebp]
  00311	8d 0c 42	 lea	 ecx, DWORD PTR [edx+eax*2]
  00314	51		 push	 ecx
  00315	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00318	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  0031b	2b 45 08	 sub	 eax, DWORD PTR __Off$[ebp]
  0031e	2b 45 18	 sub	 eax, DWORD PTR __Count$[ebp]
  00321	50		 push	 eax
  00322	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00325	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  0032a	8b 4d 08	 mov	 ecx, DWORD PTR __Off$[ebp]
  0032d	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00330	8b 45 18	 mov	 eax, DWORD PTR __Count$[ebp]
  00333	8d 0c 42	 lea	 ecx, DWORD PTR [edx+eax*2]
  00336	51		 push	 ecx
  00337	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  0033c	83 c4 10	 add	 esp, 16			; 00000010H

; 1353 : 			_Traits_helper::move_s<_Traits>(_Myptr() + _Off + _N0, _Myres - _Off - _N0, _Myptr() + _Roff + _Count,
; 1354 : 				_Count - _N0);	// fill rest of new hole

  0033f	8b 55 18	 mov	 edx, DWORD PTR __Count$[ebp]
  00342	2b 55 0c	 sub	 edx, DWORD PTR __N0$[ebp]
  00345	52		 push	 edx
  00346	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00349	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  0034e	8b 4d 14	 mov	 ecx, DWORD PTR __Roff$[ebp]
  00351	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00354	8b 45 18	 mov	 eax, DWORD PTR __Count$[ebp]
  00357	8d 0c 42	 lea	 ecx, DWORD PTR [edx+eax*2]
  0035a	51		 push	 ecx
  0035b	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0035e	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  00361	2b 45 08	 sub	 eax, DWORD PTR __Off$[ebp]
  00364	2b 45 0c	 sub	 eax, DWORD PTR __N0$[ebp]
  00367	50		 push	 eax
  00368	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0036b	e8 00 00 00 00	 call	 ?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Myptr
  00370	8b 4d 08	 mov	 ecx, DWORD PTR __Off$[ebp]
  00373	8d 14 48	 lea	 edx, DWORD PTR [eax+ecx*2]
  00376	8b 45 0c	 mov	 eax, DWORD PTR __N0$[ebp]
  00379	8d 0c 42	 lea	 ecx, DWORD PTR [edx+eax*2]
  0037c	51		 push	 ecx
  0037d	e8 00 00 00 00	 call	 ??$move_s@U?$char_traits@_W@std@@@_Traits_helper@std@@YAPA_WPA_WIPB_WI@Z ; std::_Traits_helper::move_s<std::char_traits<wchar_t> >
  00382	83 c4 10	 add	 esp, 16			; 00000010H
$LN7@replace:

; 1355 : 			}
; 1356 : 
; 1357 : 		_Eos(_Newsize);

  00385	8b 55 f4	 mov	 edx, DWORD PTR __Newsize$[ebp]
  00388	52		 push	 edx
  00389	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0038c	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

; 1358 : 		return (*this);

  00391	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]

; 1359 : 		}

  00394	8b e5		 mov	 esp, ebp
  00396	5d		 pop	 ebp
  00397	c2 14 00	 ret	 20			; 00000014H
?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
__Off$ = 8						; size = 4
__N0$ = 12						; size = 4
__Right$ = 16						; size = 4
?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace, COMDAT
; _this$ = ecx

; 1297 : 		{	// replace [_Off, _Off + _N0) with _Right

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

; 1298 : 		return (replace(_Off, _N0, _Right, 0, npos));

  00007	6a ff		 push	 -1
  00009	6a 00		 push	 0
  0000b	8b 45 10	 mov	 eax, DWORD PTR __Right$[ebp]
  0000e	50		 push	 eax
  0000f	8b 4d 0c	 mov	 ecx, DWORD PTR __N0$[ebp]
  00012	51		 push	 ecx
  00013	8b 55 08	 mov	 edx, DWORD PTR __Off$[ebp]
  00016	52		 push	 edx
  00017	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0001a	e8 00 00 00 00	 call	 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@II@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace

; 1299 : 		}

  0001f	8b e5		 mov	 esp, ebp
  00021	5d		 pop	 ebp
  00022	c2 0c 00	 ret	 12			; 0000000cH
?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z
_TEXT	SEGMENT
_this$ = -20						; size = 4
$T327077 = -16						; size = 8
$T327076 = -8						; size = 8
__First$ = 8						; size = 8
__Last$ = 16						; size = 8
__Right$ = 24						; size = 4
?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace, COMDAT
; _this$ = ecx

; 1429 : 		{	// replace [_First, _Last) with _Right

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

; 1430 : 		return (replace(
; 1431 : 			_Pdif(_First, begin()), _Pdif(_Last, _First), _Right));

  00009	8d 45 f0	 lea	 eax, DWORD PTR $T327077[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	e8 00 00 00 00	 call	 ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::begin
  00015	8b 08		 mov	 ecx, DWORD PTR [eax]
  00017	8b 50 04	 mov	 edx, DWORD PTR [eax+4]
  0001a	89 4d f8	 mov	 DWORD PTR $T327076[ebp], ecx
  0001d	89 55 fc	 mov	 DWORD PTR $T327076[ebp+4], edx
  00020	8b 45 18	 mov	 eax, DWORD PTR __Right$[ebp]
  00023	50		 push	 eax
  00024	8b 4d 0c	 mov	 ecx, DWORD PTR __First$[ebp+4]
  00027	51		 push	 ecx
  00028	8b 55 08	 mov	 edx, DWORD PTR __First$[ebp]
  0002b	52		 push	 edx
  0002c	8b 45 14	 mov	 eax, DWORD PTR __Last$[ebp+4]
  0002f	50		 push	 eax
  00030	8b 4d 10	 mov	 ecx, DWORD PTR __Last$[ebp]
  00033	51		 push	 ecx
  00034	e8 00 00 00 00	 call	 ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Pdif
  00039	83 c4 10	 add	 esp, 16			; 00000010H
  0003c	50		 push	 eax
  0003d	8b 55 fc	 mov	 edx, DWORD PTR $T327076[ebp+4]
  00040	52		 push	 edx
  00041	8b 45 f8	 mov	 eax, DWORD PTR $T327076[ebp]
  00044	50		 push	 eax
  00045	8b 4d 0c	 mov	 ecx, DWORD PTR __First$[ebp+4]
  00048	51		 push	 ecx
  00049	8b 55 08	 mov	 edx, DWORD PTR __First$[ebp]
  0004c	52		 push	 edx
  0004d	e8 00 00 00 00	 call	 ?_Pdif@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@KAIV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Pdif
  00052	83 c4 10	 add	 esp, 16			; 00000010H
  00055	50		 push	 eax
  00056	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00059	e8 00 00 00 00	 call	 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@IIABV12@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace

; 1432 : 		}

  0005e	8b e5		 mov	 esp, ebp
  00060	5d		 pop	 ebp
  00061	c2 14 00	 ret	 20			; 00000014H
?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z DD 0ffffffffH
	DD	00H
	DD	0ffffffffH
	DD	00H
__catchsym$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z$2 DD 00H
	DD	00H
	DD	00H
	DD	FLAT:__catch$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z$0
__tryblocktable$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z DD 00H
	DD	00H
	DD	01H
	DD	01H
	DD	FLAT:__catchsym$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z$2
__ehfuncinfo$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z
	DD	01H
	DD	FLAT:__tryblocktable$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z
_TEXT	SEGMENT
_this$ = -24						; size = 4
__Count$ = -20						; size = 4
__$EHRec$ = -16						; size = 16
__First$ = 8						; size = 4
__Last$ = 12						; size = 4
___formal$ = 16						; size = 1
??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Construct<char *>, COMDAT
; _this$ = ecx

; 881  : 		void __CLR_OR_THIS_CALL _Construct(_It _First,

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	83 ec 08	 sub	 esp, 8
  00015	53		 push	 ebx
  00016	56		 push	 esi
  00017	57		 push	 edi
  00018	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0001d	33 c5		 xor	 eax, ebp
  0001f	50		 push	 eax
  00020	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp+4]
  00023	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00029	89 65 f0	 mov	 DWORD PTR __$EHRec$[ebp], esp
  0002c	89 4d e8	 mov	 DWORD PTR _this$[ebp], ecx

; 882  : 			_It _Last, forward_iterator_tag)
; 883  : 		{	// initialize from [_First, _Last), forward iterators
; 884  : #if defined(_DEBUG)
; 885  : 		// skip debug checks if the container is initizialed with _IGNORE_MYITERLIST
; 886  : 		if (this->_Myfirstiter != _IGNORE_MYITERLIST)
; 887  : 			{
; 888  : 			_DEBUG_RANGE(_First, _Last);
; 889  : 			}
; 890  : #endif
; 891  : 		size_type _Count = 0;

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

; 892  : 		_Distance(_First, _Last, _Count);

  00036	8d 45 ec	 lea	 eax, DWORD PTR __Count$[ebp]
  00039	50		 push	 eax
  0003a	8b 4d 0c	 mov	 ecx, DWORD PTR __Last$[ebp]
  0003d	51		 push	 ecx
  0003e	8b 55 08	 mov	 edx, DWORD PTR __First$[ebp]
  00041	52		 push	 edx
  00042	e8 00 00 00 00	 call	 ??$_Distance@PADI@std@@YAXPAD0AAI@Z ; std::_Distance<char *,unsigned int>
  00047	83 c4 0c	 add	 esp, 12			; 0000000cH

; 893  : 		reserve(_Count);

  0004a	8b 45 ec	 mov	 eax, DWORD PTR __Count$[ebp]
  0004d	50		 push	 eax
  0004e	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00051	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

; 894  : 
; 895  : 		_TRY_BEGIN

  00056	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+12], 0

; 896  : 		for (; _First != _Last; ++_First)

  0005d	eb 09		 jmp	 SHORT $LN3@Construct@32
$LN2@Construct@32:
  0005f	8b 4d 08	 mov	 ecx, DWORD PTR __First$[ebp]
  00062	83 c1 01	 add	 ecx, 1
  00065	89 4d 08	 mov	 DWORD PTR __First$[ebp], ecx
$LN3@Construct@32:
  00068	8b 55 08	 mov	 edx, DWORD PTR __First$[ebp]
  0006b	3b 55 0c	 cmp	 edx, DWORD PTR __Last$[ebp]
  0006e	74 17		 je	 SHORT $LN1@Construct@32

; 897  : 			append((size_type)1, (_Elem)*_First);

  00070	8b 45 08	 mov	 eax, DWORD PTR __First$[ebp]
  00073	66 0f be 08	 movsx	 cx, BYTE PTR [eax]
  00077	0f b7 d1	 movzx	 edx, cx
  0007a	52		 push	 edx
  0007b	6a 01		 push	 1
  0007d	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00080	e8 00 00 00 00	 call	 ?append@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@I_W@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::append
  00085	eb d8		 jmp	 SHORT $LN2@Construct@32
$LN1@Construct@32:
  00087	eb 22		 jmp	 SHORT $LN7@Construct@32
__catch$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z$0:

; 898  : 		_CATCH_ALL
; 899  : 		_Tidy(true);

  00089	6a 00		 push	 0
  0008b	6a 01		 push	 1
  0008d	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00090	e8 00 00 00 00	 call	 ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Tidy

; 900  : 		_RERAISE;

  00095	6a 00		 push	 0
  00097	6a 00		 push	 0
  00099	e8 00 00 00 00	 call	 __CxxThrowException@8

; 901  : 		_CATCH_END

  0009e	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+12], -1
  000a5	b8 00 00 00 00	 mov	 eax, $LN6@Construct@32
  000aa	c3		 ret	 0
$LN7@Construct@32:
  000ab	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+12], -1
$LN6@Construct@32:

; 902  : 		}

  000b2	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp+4]
  000b5	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  000bc	59		 pop	 ecx
  000bd	5f		 pop	 edi
  000be	5e		 pop	 esi
  000bf	5b		 pop	 ebx
  000c0	8b e5		 mov	 esp, ebp
  000c2	5d		 pop	 ebp
  000c3	c2 0c 00	 ret	 12			; 0000000cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__ehhandler$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z:
  00000	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00004	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00007	8b 4a e4	 mov	 ecx, DWORD PTR [edx-28]
  0000a	33 c8		 xor	 ecx, eax
  0000c	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00011	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z
  00016	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Construct<char *>
; Function compile flags: /Odtp
;	COMDAT ??$?0PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PAD0@Z
_TEXT	SEGMENT
_this$ = -12						; size = 4
$T328902 = -6						; size = 1
$T328901 = -5						; size = 1
__First$ = 8						; size = 4
__Last$ = 12						; size = 4
??$?0PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PAD0@Z PROC ; 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> ><char *>, COMDAT
; _this$ = ecx

; 680  : 		{	// construct from [_First, _Last)

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d f4	 mov	 DWORD PTR _this$[ebp], ecx
  00009	51		 push	 ecx
  0000a	8b cc		 mov	 ecx, esp
  0000c	e8 00 00 00 00	 call	 ??0?$allocator@_W@std@@QAE@XZ ; std::allocator<wchar_t>::allocator<wchar_t>
  00011	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00014	e8 00 00 00 00	 call	 ??0?$_String_val@_WV?$allocator@_W@std@@@std@@IAE@V?$allocator@_W@1@@Z ; std::_String_val<wchar_t,std::allocator<wchar_t> >::_String_val<wchar_t,std::allocator<wchar_t> >

; 681  : 		_Tidy();

  00019	6a 00		 push	 0
  0001b	6a 00		 push	 0
  0001d	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00020	e8 00 00 00 00	 call	 ?_Tidy@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEX_NI@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Tidy

; 682  : 		_Construct(_First, _Last, _Iter_cat(_First));

  00025	8d 45 08	 lea	 eax, DWORD PTR __First$[ebp]
  00028	50		 push	 eax
  00029	8d 4d fb	 lea	 ecx, DWORD PTR $T328901[ebp]
  0002c	51		 push	 ecx
  0002d	e8 00 00 00 00	 call	 ??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z ; std::_Iter_cat<char *>
  00032	83 c4 08	 add	 esp, 8
  00035	0f b6 55 fa	 movzx	 edx, BYTE PTR $T328902[ebp]
  00039	52		 push	 edx
  0003a	8b 45 0c	 mov	 eax, DWORD PTR __Last$[ebp]
  0003d	50		 push	 eax
  0003e	8b 4d 08	 mov	 ecx, DWORD PTR __First$[ebp]
  00041	51		 push	 ecx
  00042	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00045	e8 00 00 00 00	 call	 ??$_Construct@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXPAD0Uforward_iterator_tag@1@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Construct<char *>

; 683  : 		}

  0004a	8b 45 f4	 mov	 eax, DWORD PTR _this$[ebp]
  0004d	8b e5		 mov	 esp, ebp
  0004f	5d		 pop	 ebp
  00050	c2 08 00	 ret	 8
??$?0PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PAD0@Z ENDP ; 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> ><char *>
_TEXT	ENDS
PUBLIC	__$ArrayPad$
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z$0
__ehfuncinfo$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z
_TEXT	SEGMENT
_this$ = -52						; size = 4
$T328906 = -48						; size = 4
__Right$ = -44						; size = 28
__$ArrayPad$ = -16					; size = 4
__$EHRec$ = -12						; size = 12
__First$ = 8						; size = 8
__Last$ = 16						; size = 8
__First2$ = 24						; size = 4
__Last2$ = 28						; size = 4
___formal$ = 32						; size = 1
??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Replace<char *>, COMDAT
; _this$ = ecx

; 1470 : 		_Myt& __CLR_OR_THIS_CALL _Replace(const_iterator _First, const_iterator _Last,

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 28	 sub	 esp, 40			; 00000028H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	89 45 f0	 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 cc	 mov	 DWORD PTR _this$[ebp], ecx

; 1471 : 			_It _First2, _It _Last2, input_iterator_tag)
; 1472 : 		{	// replace [_First, _Last) with [_First2, _Last2), input iterators
; 1473 : 		_Myt _Right(_First2, _Last2);

  0002b	8b 45 1c	 mov	 eax, DWORD PTR __Last2$[ebp]
  0002e	50		 push	 eax
  0002f	8b 4d 18	 mov	 ecx, DWORD PTR __First2$[ebp]
  00032	51		 push	 ecx
  00033	8d 4d d4	 lea	 ecx, DWORD PTR __Right$[ebp]
  00036	e8 00 00 00 00	 call	 ??$?0PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@PAD0@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> ><char *>
  0003b	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 1474 : 		replace(_First, _Last, _Right);

  00042	8d 55 d4	 lea	 edx, DWORD PTR __Right$[ebp]
  00045	52		 push	 edx
  00046	8b 45 14	 mov	 eax, DWORD PTR __Last$[ebp+4]
  00049	50		 push	 eax
  0004a	8b 4d 10	 mov	 ecx, DWORD PTR __Last$[ebp]
  0004d	51		 push	 ecx
  0004e	8b 55 0c	 mov	 edx, DWORD PTR __First$[ebp+4]
  00051	52		 push	 edx
  00052	8b 45 08	 mov	 eax, DWORD PTR __First$[ebp]
  00055	50		 push	 eax
  00056	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  00059	e8 00 00 00 00	 call	 ?replace@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0ABV12@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace

; 1475 : 		return (*this);

  0005e	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  00061	89 4d d0	 mov	 DWORD PTR $T328906[ebp], ecx
  00064	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0006b	8d 4d d4	 lea	 ecx, DWORD PTR __Right$[ebp]
  0006e	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> >
  00073	8b 45 d0	 mov	 eax, DWORD PTR $T328906[ebp]

; 1476 : 		}

  00076	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00079	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00080	59		 pop	 ecx
  00081	8b 4d f0	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  00084	33 cd		 xor	 ecx, ebp
  00086	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0008b	8b e5		 mov	 esp, ebp
  0008d	5d		 pop	 ebp
  0008e	c2 1c 00	 ret	 28			; 0000001cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z$0:
  00000	8d 4d d4	 lea	 ecx, DWORD PTR __Right$[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> >
__ehhandler$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a d4	 mov	 ecx, DWORD PTR [edx-44]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	8b 4a fc	 mov	 ecx, DWORD PTR [edx-4]
  0001c	33 c8		 xor	 ecx, eax
  0001e	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00023	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z
  00028	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Replace<char *>
; Function compile flags: /Odtp
;	COMDAT ??$replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
$T328917 = -2						; size = 1
$T328916 = -1						; size = 1
__First$ = 8						; size = 8
__Last$ = 16						; size = 8
__First2$ = 24						; size = 4
__Last2$ = 28						; size = 4
??$replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace<char *>, COMDAT
; _this$ = ecx

; 1455 : 		_Myt& __CLR_OR_THIS_CALL replace(const_iterator _First, const_iterator _Last,

  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

; 1456 : 			_It _First2, _It _Last2)
; 1457 : 		{	// replace [_First, _Last) with [_First2, _Last2)
; 1458 : 		return (_Replace(_First, _Last,
; 1459 : 			_First2, _Last2, _Iter_cat(_First2)));

  00009	8d 45 18	 lea	 eax, DWORD PTR __First2$[ebp]
  0000c	50		 push	 eax
  0000d	8d 4d ff	 lea	 ecx, DWORD PTR $T328916[ebp]
  00010	51		 push	 ecx
  00011	e8 00 00 00 00	 call	 ??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z ; std::_Iter_cat<char *>
  00016	83 c4 08	 add	 esp, 8
  00019	0f b6 55 fe	 movzx	 edx, BYTE PTR $T328917[ebp]
  0001d	52		 push	 edx
  0001e	8b 45 1c	 mov	 eax, DWORD PTR __Last2$[ebp]
  00021	50		 push	 eax
  00022	8b 4d 18	 mov	 ecx, DWORD PTR __First2$[ebp]
  00025	51		 push	 ecx
  00026	8b 55 14	 mov	 edx, DWORD PTR __Last$[ebp+4]
  00029	52		 push	 edx
  0002a	8b 45 10	 mov	 eax, DWORD PTR __Last$[ebp]
  0002d	50		 push	 eax
  0002e	8b 4d 0c	 mov	 ecx, DWORD PTR __First$[ebp+4]
  00031	51		 push	 ecx
  00032	8b 55 08	 mov	 edx, DWORD PTR __First$[ebp]
  00035	52		 push	 edx
  00036	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00039	e8 00 00 00 00	 call	 ??$_Replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1Uinput_iterator_tag@1@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Replace<char *>

; 1460 : 		}

  0003e	8b e5		 mov	 esp, ebp
  00040	5d		 pop	 ebp
  00041	c2 18 00	 ret	 24			; 00000018H
??$replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace<char *>
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??$_Assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0Uinput_iterator_tag@1@@Z
_TEXT	SEGMENT
_this$ = -36						; size = 4
$T328923 = -32						; size = 8
$T328922 = -24						; size = 8
$T328921 = -16						; size = 8
$T328920 = -8						; size = 8
__First$ = 8						; size = 4
__Last$ = 12						; size = 4
___formal$ = 16						; size = 1
??$_Assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0Uinput_iterator_tag@1@@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Assign<char *>, COMDAT
; _this$ = ecx

; 1114 : 		_Myt& __CLR_OR_THIS_CALL _Assign(_It _First, _It _Last, input_iterator_tag)

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 24	 sub	 esp, 36			; 00000024H
  00006	89 4d dc	 mov	 DWORD PTR _this$[ebp], ecx

; 1115 : 		{	// assign [First, _Last), input iterators
; 1116 : 		return (replace(begin(), end(), _First, _Last));

  00009	8d 45 f0	 lea	 eax, DWORD PTR $T328921[ebp]
  0000c	50		 push	 eax
  0000d	8b 4d dc	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	e8 00 00 00 00	 call	 ?end@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::end
  00015	8b 08		 mov	 ecx, DWORD PTR [eax]
  00017	8b 50 04	 mov	 edx, DWORD PTR [eax+4]
  0001a	89 4d f8	 mov	 DWORD PTR $T328920[ebp], ecx
  0001d	89 55 fc	 mov	 DWORD PTR $T328920[ebp+4], edx
  00020	8d 45 e0	 lea	 eax, DWORD PTR $T328923[ebp]
  00023	50		 push	 eax
  00024	8b 4d dc	 mov	 ecx, DWORD PTR _this$[ebp]
  00027	e8 00 00 00 00	 call	 ?begin@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::begin
  0002c	8b 08		 mov	 ecx, DWORD PTR [eax]
  0002e	8b 50 04	 mov	 edx, DWORD PTR [eax+4]
  00031	89 4d e8	 mov	 DWORD PTR $T328922[ebp], ecx
  00034	89 55 ec	 mov	 DWORD PTR $T328922[ebp+4], edx
  00037	8b 45 0c	 mov	 eax, DWORD PTR __Last$[ebp]
  0003a	50		 push	 eax
  0003b	8b 4d 08	 mov	 ecx, DWORD PTR __First$[ebp]
  0003e	51		 push	 ecx
  0003f	8b 55 fc	 mov	 edx, DWORD PTR $T328920[ebp+4]
  00042	52		 push	 edx
  00043	8b 45 f8	 mov	 eax, DWORD PTR $T328920[ebp]
  00046	50		 push	 eax
  00047	8b 4d ec	 mov	 ecx, DWORD PTR $T328922[ebp+4]
  0004a	51		 push	 ecx
  0004b	8b 55 e8	 mov	 edx, DWORD PTR $T328922[ebp]
  0004e	52		 push	 edx
  0004f	8b 4d dc	 mov	 ecx, DWORD PTR _this$[ebp]
  00052	e8 00 00 00 00	 call	 ??$replace@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@0PAD1@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::replace<char *>

; 1117 : 		}

  00057	8b e5		 mov	 esp, ebp
  00059	5d		 pop	 ebp
  0005a	c2 0c 00	 ret	 12			; 0000000cH
??$_Assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0Uinput_iterator_tag@1@@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Assign<char *>
; Function compile flags: /Odtp
_TEXT	ENDS
;	COMDAT ??$assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
$T328927 = -2						; size = 1
$T328926 = -1						; size = 1
__First$ = 8						; size = 4
__Last$ = 12						; size = 4
??$assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0@Z PROC ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign<char *>, COMDAT
; _this$ = ecx

; 1102 : 		_Myt& __CLR_OR_THIS_CALL assign(_It _First, _It _Last)

  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

; 1103 : 		{	// assign [First, _Last)
; 1104 : 		return (_Assign(_First, _Last, _Iter_cat(_First)));

  00009	8d 45 08	 lea	 eax, DWORD PTR __First$[ebp]
  0000c	50		 push	 eax
  0000d	8d 4d ff	 lea	 ecx, DWORD PTR $T328926[ebp]
  00010	51		 push	 ecx
  00011	e8 00 00 00 00	 call	 ??$_Iter_cat@PAD@std@@YA?AUrandom_access_iterator_tag@0@ABQAD@Z ; std::_Iter_cat<char *>
  00016	83 c4 08	 add	 esp, 8
  00019	0f b6 55 fe	 movzx	 edx, BYTE PTR $T328927[ebp]
  0001d	52		 push	 edx
  0001e	8b 45 0c	 mov	 eax, DWORD PTR __Last$[ebp]
  00021	50		 push	 eax
  00022	8b 4d 08	 mov	 ecx, DWORD PTR __First$[ebp]
  00025	51		 push	 ecx
  00026	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ??$_Assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0Uinput_iterator_tag@1@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::_Assign<char *>

; 1105 : 		}

  0002e	8b e5		 mov	 esp, ebp
  00030	5d		 pop	 ebp
  00031	c2 08 00	 ret	 8
??$assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0@Z ENDP ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign<char *>
PUBLIC	__$ArrayPad$
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\jpeghelper.cpp
;	COMDAT ?SaveSnapshot@CJpegHelper@@UAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@HHPAEJ0@Z
_TEXT	SEGMENT
tv301 = -632						; size = 4
tv302 = -628						; size = 4
tv279 = -624						; size = 4
tv280 = -620						; size = 4
tv259 = -616						; size = 4
tv260 = -612						; size = 4
tv239 = -608						; size = 4
tv240 = -604						; size = 4
tv182 = -600						; size = 4
tv183 = -596						; size = 4
_this$ = -592						; size = 4
_pBufOverlay$ = -588					; size = 4
_pLineBuf$ = -584					; size = 4
_quality$ = -580					; size = 4
_jmp_mark$ = -576					; size = 64
_outfile$ = -512					; size = 4
_row_pointer$ = -508					; size = 4
_cinfo$ = -504						; size = 360
_jerr$ = -144						; size = 132
__$ArrayPad$ = -8					; size = 4
_i$ = -4						; size = 4
_FilePath$ = 8						; size = 4
_Height$ = 12						; size = 4
_Width$ = 16						; size = 4
_pOverlay$ = 20						; size = 4
_OverlayPitch$ = 24					; size = 4
_Context$ = 28						; size = 4
?SaveSnapshot@CJpegHelper@@UAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@HHPAEJ0@Z PROC ; CJpegHelper::SaveSnapshot, COMDAT
; _this$ = ecx

; 589  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 78 02 00
	00		 sub	 esp, 632		; 00000278H
  00009	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000e	33 c5		 xor	 eax, ebp
  00010	89 45 f8	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00013	89 8d b0 fd ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 590  :     struct jpeg_compress_struct cinfo;
; 591  :     struct jpeg_error_mgr jerr;
; 592  :     FILE * outfile;
; 593  :     JSAMPROW row_pointer[1];
; 594  :     JSAMPLE* pLineBuf;
; 595  :     BYTE *pBufOverlay;
; 596  :     int i, quality;
; 597  :     jmp_buf jmp_mark;
; 598  : 
; 599  :     // Allocate memory buffer to store one line of data
; 600  :     pLineBuf = (JSAMPLE*)malloc(Width * 3 * sizeof(JSAMPLE));

  00019	8b 45 10	 mov	 eax, DWORD PTR _Width$[ebp]
  0001c	6b c0 03	 imul	 eax, 3
  0001f	50		 push	 eax
  00020	e8 00 00 00 00	 call	 _malloc
  00025	83 c4 04	 add	 esp, 4
  00028	89 85 b8 fd ff
	ff		 mov	 DWORD PTR _pLineBuf$[ebp], eax

; 601  :     if (pLineBuf == NULL)

  0002e	83 bd b8 fd ff
	ff 00		 cmp	 DWORD PTR _pLineBuf$[ebp], 0
  00035	75 05		 jne	 SHORT $LN13@SaveSnapsh

; 602  :     {
; 603  :         return;

  00037	e9 61 05 00 00	 jmp	 $LN14@SaveSnapsh
$LN13@SaveSnapsh:

; 604  :     }
; 605  : 
; 606  :     // Open the output stream (file)
; 607  :     if ((outfile = _tfopen(FilePath.c_str(), _T("wb"))) == NULL)

  0003c	68 00 00 00 00	 push	 OFFSET ??_C@_15MJDFFMKN@?$AAw?$AAb?$AA?$AA@
  00041	8b 4d 08	 mov	 ecx, DWORD PTR _FilePath$[ebp]
  00044	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
  00049	50		 push	 eax
  0004a	e8 00 00 00 00	 call	 __wfopen
  0004f	83 c4 08	 add	 esp, 8
  00052	89 85 00 fe ff
	ff		 mov	 DWORD PTR _outfile$[ebp], eax
  00058	83 bd 00 fe ff
	ff 00		 cmp	 DWORD PTR _outfile$[ebp], 0
  0005f	75 14		 jne	 SHORT $LN12@SaveSnapsh

; 608  :     {
; 609  :         free(pLineBuf);

  00061	8b 8d b8 fd ff
	ff		 mov	 ecx, DWORD PTR _pLineBuf$[ebp]
  00067	51		 push	 ecx
  00068	e8 00 00 00 00	 call	 _free
  0006d	83 c4 04	 add	 esp, 4

; 610  :         return;

  00070	e9 28 05 00 00	 jmp	 $LN14@SaveSnapsh
$LN12@SaveSnapsh:

; 611  :     }
; 612  : 
; 613  :     // Error handling
; 614  :     cinfo.err = jpeg_std_error(&jerr);

  00075	8d 95 70 ff ff
	ff		 lea	 edx, DWORD PTR _jerr$[ebp]
  0007b	52		 push	 edx
  0007c	e8 00 00 00 00	 call	 _jpeg_std_error
  00081	83 c4 04	 add	 esp, 4
  00084	89 85 08 fe ff
	ff		 mov	 DWORD PTR _cinfo$[ebp], eax

; 615  :     cinfo.client_data = &jmp_mark;

  0008a	8d 85 c0 fd ff
	ff		 lea	 eax, DWORD PTR _jmp_mark$[ebp]
  00090	89 85 14 fe ff
	ff		 mov	 DWORD PTR _cinfo$[ebp+12], eax

; 616  :     cinfo.err->error_exit = my_error_exit;

  00096	8b 8d 08 fe ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp]
  0009c	c7 01 00 00 00
	00		 mov	 DWORD PTR [ecx], OFFSET ?my_error_exit@@YAXPAUjpeg_common_struct@@@Z ; my_error_exit

; 617  :     cinfo.err->output_message = my_output_message;

  000a2	8b 95 08 fe ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp]
  000a8	c7 42 08 00 00
	00 00		 mov	 DWORD PTR [edx+8], OFFSET ?my_output_message@@YAXPAUjpeg_common_struct@@@Z ; my_output_message

; 618  :     cinfo.err->emit_message = my_emit_message;

  000af	8b 85 08 fe ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp]
  000b5	c7 40 04 00 00
	00 00		 mov	 DWORD PTR [eax+4], OFFSET ?my_emit_message@@YAXPAUjpeg_common_struct@@H@Z ; my_emit_message

; 619  :     cinfo.err->trace_level = 0;

  000bc	8b 8d 08 fe ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp]
  000c2	c7 41 68 00 00
	00 00		 mov	 DWORD PTR [ecx+104], 0

; 620  :     if (setjmp(jmp_mark))

  000c9	8d 95 c0 fd ff
	ff		 lea	 edx, DWORD PTR _jmp_mark$[ebp]
  000cf	6a 00		 push	 0
  000d1	52		 push	 edx
  000d2	e8 00 00 00 00	 call	 __setjmp3
  000d7	83 c4 08	 add	 esp, 8
  000da	85 c0		 test	 eax, eax
  000dc	74 46		 je	 SHORT $LN11@SaveSnapsh

; 621  :     {
; 622  :         // If we get here, the JPEG code has signaled an error.
; 623  :         // We need to clean up the JPEG object, close the output file, and return.
; 624  :         LOG(1, "libjpeg fatal error : %s", msg_err);

  000de	68 00 00 00 00	 push	 OFFSET ?msg_err@@3PADA	; msg_err
  000e3	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@HFNEANFP@libjpeg?5fatal?5error?5?3?5?$CFs?$AA@
  000e8	6a 01		 push	 1
  000ea	e8 00 00 00 00	 call	 ?LOG@@YAXHPBDZZ		; LOG
  000ef	83 c4 0c	 add	 esp, 12			; 0000000cH

; 625  :         jpeg_destroy_compress(&cinfo);

  000f2	8d 85 08 fe ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  000f8	50		 push	 eax
  000f9	e8 00 00 00 00	 call	 _jpeg_destroy_compress
  000fe	83 c4 04	 add	 esp, 4

; 626  :         fclose(outfile);

  00101	8b 8d 00 fe ff
	ff		 mov	 ecx, DWORD PTR _outfile$[ebp]
  00107	51		 push	 ecx
  00108	e8 00 00 00 00	 call	 _fclose
  0010d	83 c4 04	 add	 esp, 4

; 627  :         free(pLineBuf);

  00110	8b 95 b8 fd ff
	ff		 mov	 edx, DWORD PTR _pLineBuf$[ebp]
  00116	52		 push	 edx
  00117	e8 00 00 00 00	 call	 _free
  0011c	83 c4 04	 add	 esp, 4

; 628  :         return;

  0011f	e9 79 04 00 00	 jmp	 $LN14@SaveSnapsh
$LN11@SaveSnapsh:

; 629  :     }
; 630  : 
; 631  :     // Initialize the JPEG compression object
; 632  :     jpeg_create_compress(&cinfo);

  00124	68 68 01 00 00	 push	 360			; 00000168H
  00129	6a 3e		 push	 62			; 0000003eH
  0012b	8d 85 08 fe ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  00131	50		 push	 eax
  00132	e8 00 00 00 00	 call	 _jpeg_CreateCompress
  00137	83 c4 0c	 add	 esp, 12			; 0000000cH

; 633  : 
; 634  :     // Specify the destination of the compressed data (eg, a file)
; 635  :     my_jpeg_stdio_dest(&cinfo, outfile);

  0013a	8b 8d 00 fe ff
	ff		 mov	 ecx, DWORD PTR _outfile$[ebp]
  00140	51		 push	 ecx
  00141	8d 95 08 fe ff
	ff		 lea	 edx, DWORD PTR _cinfo$[ebp]
  00147	52		 push	 edx
  00148	e8 00 00 00 00	 call	 ?my_jpeg_stdio_dest@@YAXPAUjpeg_compress_struct@@PAU_iobuf@@@Z ; my_jpeg_stdio_dest
  0014d	83 c4 08	 add	 esp, 8

; 636  : 
; 637  :     // Set parameters for compression
; 638  :     cinfo.image_width = Width;

  00150	8b 45 10	 mov	 eax, DWORD PTR _Width$[ebp]
  00153	89 85 24 fe ff
	ff		 mov	 DWORD PTR _cinfo$[ebp+28], eax

; 639  :     cinfo.image_height = Height;

  00159	8b 4d 0c	 mov	 ecx, DWORD PTR _Height$[ebp]
  0015c	89 8d 28 fe ff
	ff		 mov	 DWORD PTR _cinfo$[ebp+32], ecx

; 640  :     cinfo.input_components = 3;

  00162	c7 85 2c fe ff
	ff 03 00 00 00	 mov	 DWORD PTR _cinfo$[ebp+36], 3

; 641  :     cinfo.in_color_space = JCS_YCbCr;

  0016c	c7 85 30 fe ff
	ff 03 00 00 00	 mov	 DWORD PTR _cinfo$[ebp+40], 3

; 642  :     jpeg_set_defaults(&cinfo);

  00176	8d 95 08 fe ff
	ff		 lea	 edx, DWORD PTR _cinfo$[ebp]
  0017c	52		 push	 edx
  0017d	e8 00 00 00 00	 call	 _jpeg_set_defaults
  00182	83 c4 04	 add	 esp, 4

; 643  :     jpeg_set_colorspace(&cinfo, JCS_YCbCr);

  00185	6a 03		 push	 3
  00187	8d 85 08 fe ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  0018d	50		 push	 eax
  0018e	e8 00 00 00 00	 call	 _jpeg_set_colorspace
  00193	83 c4 08	 add	 esp, 8

; 644  :     quality = Setting_GetValue(WM_STILL_GETVALUE, JPEGQUALITY);

  00196	6a 02		 push	 2
  00198	68 29 80 00 00	 push	 32809			; 00008029H
  0019d	e8 00 00 00 00	 call	 ?Setting_GetValue@@YAJJJ@Z ; Setting_GetValue
  001a2	83 c4 08	 add	 esp, 8
  001a5	89 85 bc fd ff
	ff		 mov	 DWORD PTR _quality$[ebp], eax

; 645  :     jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */);

  001ab	6a 01		 push	 1
  001ad	8b 8d bc fd ff
	ff		 mov	 ecx, DWORD PTR _quality$[ebp]
  001b3	51		 push	 ecx
  001b4	8d 95 08 fe ff
	ff		 lea	 edx, DWORD PTR _cinfo$[ebp]
  001ba	52		 push	 edx
  001bb	e8 00 00 00 00	 call	 _jpeg_set_quality
  001c0	83 c4 0c	 add	 esp, 12			; 0000000cH

; 646  :     cinfo.dct_method = JDCT_ISLOW;

  001c3	c7 85 c0 fe ff
	ff 00 00 00 00	 mov	 DWORD PTR _cinfo$[ebp+184], 0

; 647  :     cinfo.optimize_coding = TRUE;

  001cd	c6 85 ba fe ff
	ff 01		 mov	 BYTE PTR _cinfo$[ebp+178], 1

; 648  : 
; 649  :     // Start compression
; 650  :     jpeg_start_compress(&cinfo, TRUE);

  001d4	6a 01		 push	 1
  001d6	8d 85 08 fe ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  001dc	50		 push	 eax
  001dd	e8 00 00 00 00	 call	 _jpeg_start_compress
  001e2	83 c4 08	 add	 esp, 8

; 651  : 
; 652  :     // Write DScaler marker APP1 with the DScaler current context
; 653  :     jpeg_write_marker(&cinfo, JPEG_APP0 + 1, (JOCTET*)Context.c_str(), Context.length());

  001e5	8b 4d 1c	 mov	 ecx, DWORD PTR _Context$[ebp]
  001e8	e8 00 00 00 00	 call	 ?length@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEIXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::length
  001ed	50		 push	 eax
  001ee	8b 4d 1c	 mov	 ecx, DWORD PTR _Context$[ebp]
  001f1	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
  001f6	50		 push	 eax
  001f7	68 e1 00 00 00	 push	 225			; 000000e1H
  001fc	8d 8d 08 fe ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  00202	51		 push	 ecx
  00203	e8 00 00 00 00	 call	 _jpeg_write_marker
  00208	83 c4 10	 add	 esp, 16			; 00000010H

; 654  : 
; 655  :     // Write DScaler marker APP2 to save if square pixels mode is on or off
; 656  :     if (m_pParent->m_SquarePixels)

  0020b	8b 95 b0 fd ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00211	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00214	83 b8 c0 00 00
	00 00		 cmp	 DWORD PTR [eax+192], 0
  0021b	74 29		 je	 SHORT $LN10@SaveSnapsh

; 657  :     {
; 658  :         jpeg_write_marker(&cinfo, JPEG_APP0 + 2, (JOCTET*)SQUARE_MODE_ON, strlen(SQUARE_MODE_ON));

  0021d	68 00 00 00 00	 push	 OFFSET ??_C@_0BO@MMGDENBH@DScaler?3Square?5Pixels?5Mode?3ON?$AA@
  00222	e8 00 00 00 00	 call	 _strlen
  00227	83 c4 04	 add	 esp, 4
  0022a	50		 push	 eax
  0022b	68 00 00 00 00	 push	 OFFSET ??_C@_0BO@MMGDENBH@DScaler?3Square?5Pixels?5Mode?3ON?$AA@
  00230	68 e2 00 00 00	 push	 226			; 000000e2H
  00235	8d 8d 08 fe ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  0023b	51		 push	 ecx
  0023c	e8 00 00 00 00	 call	 _jpeg_write_marker
  00241	83 c4 10	 add	 esp, 16			; 00000010H

; 659  :     }
; 660  :     else

  00244	eb 27		 jmp	 SHORT $LN9@SaveSnapsh
$LN10@SaveSnapsh:

; 661  :     {
; 662  :         jpeg_write_marker(&cinfo, JPEG_APP0 + 2, (JOCTET*)SQUARE_MODE_OFF, strlen(SQUARE_MODE_OFF));

  00246	68 00 00 00 00	 push	 OFFSET ??_C@_0BP@CLCPFPLB@DScaler?3Square?5Pixels?5Mode?3OFF?$AA@
  0024b	e8 00 00 00 00	 call	 _strlen
  00250	83 c4 04	 add	 esp, 4
  00253	50		 push	 eax
  00254	68 00 00 00 00	 push	 OFFSET ??_C@_0BP@CLCPFPLB@DScaler?3Square?5Pixels?5Mode?3OFF?$AA@
  00259	68 e2 00 00 00	 push	 226			; 000000e2H
  0025e	8d 95 08 fe ff
	ff		 lea	 edx, DWORD PTR _cinfo$[ebp]
  00264	52		 push	 edx
  00265	e8 00 00 00 00	 call	 _jpeg_write_marker
  0026a	83 c4 10	 add	 esp, 16			; 00000010H
$LN9@SaveSnapsh:

; 663  :     }
; 664  : 
; 665  :     // Process data
; 666  :     row_pointer[0] = pLineBuf;

  0026d	8b 85 b8 fd ff
	ff		 mov	 eax, DWORD PTR _pLineBuf$[ebp]
  00273	89 85 04 fe ff
	ff		 mov	 DWORD PTR _row_pointer$[ebp], eax
$LN8@SaveSnapsh:

; 667  :     while (cinfo.next_scanline < Height)

  00279	8b 8d d8 fe ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+208]
  0027f	3b 4d 0c	 cmp	 ecx, DWORD PTR _Height$[ebp]
  00282	0f 83 d9 02 00
	00		 jae	 $LN7@SaveSnapsh

; 668  :     {
; 669  :         pBufOverlay = pOverlay + cinfo.next_scanline * OverlayPitch;

  00288	8b 95 d8 fe ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp+208]
  0028e	0f af 55 18	 imul	 edx, DWORD PTR _OverlayPitch$[ebp]
  00292	03 55 14	 add	 edx, DWORD PTR _pOverlay$[ebp]
  00295	89 95 b4 fd ff
	ff		 mov	 DWORD PTR _pBufOverlay$[ebp], edx

; 670  :         // In the input (overlay), Y range should be normally [16,235]
; 671  :         // In the output (file), Y range must be [0,255]
; 672  :         // YUYV => YUVYUV with an Y extension from [16,235] to [0,255]
; 673  :         for (i = 0 ; i < Width ; i++)

  0029b	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  002a2	eb 09		 jmp	 SHORT $LN6@SaveSnapsh
$LN5@SaveSnapsh:
  002a4	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  002a7	83 c0 01	 add	 eax, 1
  002aa	89 45 fc	 mov	 DWORD PTR _i$[ebp], eax
$LN6@SaveSnapsh:
  002ad	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  002b0	3b 4d 10	 cmp	 ecx, DWORD PTR _Width$[ebp]
  002b3	0f 8d 8b 02 00
	00		 jge	 $LN4@SaveSnapsh

; 674  :         {
; 675  :             // Y extension from [16,235] to [0,255]
; 676  :             pLineBuf[i * 3] = (LIMIT_Y(pBufOverlay[i * 2]) - 16) * 255 / 219;

  002b9	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  002bc	8b 85 b4 fd ff
	ff		 mov	 eax, DWORD PTR _pBufOverlay$[ebp]
  002c2	0f b6 0c 50	 movzx	 ecx, BYTE PTR [eax+edx*2]
  002c6	83 f9 10	 cmp	 ecx, 16			; 00000010H
  002c9	7d 0c		 jge	 SHORT $LN18@SaveSnapsh
  002cb	c7 85 ac fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv183[ebp], 16 ; 00000010H
  002d5	eb 40		 jmp	 SHORT $LN19@SaveSnapsh
$LN18@SaveSnapsh:
  002d7	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  002da	8b 85 b4 fd ff
	ff		 mov	 eax, DWORD PTR _pBufOverlay$[ebp]
  002e0	0f b6 0c 50	 movzx	 ecx, BYTE PTR [eax+edx*2]
  002e4	81 f9 eb 00 00
	00		 cmp	 ecx, 235		; 000000ebH
  002ea	7e 0c		 jle	 SHORT $LN16@SaveSnapsh
  002ec	c7 85 a8 fd ff
	ff eb 00 00 00	 mov	 DWORD PTR tv182[ebp], 235 ; 000000ebH
  002f6	eb 13		 jmp	 SHORT $LN17@SaveSnapsh
$LN16@SaveSnapsh:
  002f8	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  002fb	8b 85 b4 fd ff
	ff		 mov	 eax, DWORD PTR _pBufOverlay$[ebp]
  00301	0f b6 0c 50	 movzx	 ecx, BYTE PTR [eax+edx*2]
  00305	89 8d a8 fd ff
	ff		 mov	 DWORD PTR tv182[ebp], ecx
$LN17@SaveSnapsh:
  0030b	8b 95 a8 fd ff
	ff		 mov	 edx, DWORD PTR tv182[ebp]
  00311	89 95 ac fd ff
	ff		 mov	 DWORD PTR tv183[ebp], edx
$LN19@SaveSnapsh:
  00317	8b 85 ac fd ff
	ff		 mov	 eax, DWORD PTR tv183[ebp]
  0031d	83 e8 10	 sub	 eax, 16			; 00000010H
  00320	69 c0 ff 00 00
	00		 imul	 eax, 255		; 000000ffH
  00326	99		 cdq
  00327	b9 db 00 00 00	 mov	 ecx, 219		; 000000dbH
  0032c	f7 f9		 idiv	 ecx
  0032e	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  00331	6b d2 03	 imul	 edx, 3
  00334	8b 8d b8 fd ff
	ff		 mov	 ecx, DWORD PTR _pLineBuf$[ebp]
  0033a	88 04 11	 mov	 BYTE PTR [ecx+edx], al

; 677  :             if (i%2)

  0033d	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  00340	81 e2 01 00 00
	80		 and	 edx, -2147483647	; 80000001H
  00346	79 05		 jns	 SHORT $LN36@SaveSnapsh
  00348	4a		 dec	 edx
  00349	83 ca fe	 or	 edx, -2			; fffffffeH
  0034c	42		 inc	 edx
$LN36@SaveSnapsh:
  0034d	85 d2		 test	 edx, edx
  0034f	0f 84 f2 00 00
	00		 je	 $LN3@SaveSnapsh

; 678  :             {
; 679  :                 pLineBuf[i * 3 + 1] = LIMIT_CbCr(pBufOverlay[i * 2 - 1]);

  00355	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00358	8b 8d b4 fd ff
	ff		 mov	 ecx, DWORD PTR _pBufOverlay$[ebp]
  0035e	0f b6 54 41 ff	 movzx	 edx, BYTE PTR [ecx+eax*2-1]
  00363	83 fa 10	 cmp	 edx, 16			; 00000010H
  00366	7d 0c		 jge	 SHORT $LN22@SaveSnapsh
  00368	c7 85 a4 fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv240[ebp], 16 ; 00000010H
  00372	eb 42		 jmp	 SHORT $LN23@SaveSnapsh
$LN22@SaveSnapsh:
  00374	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00377	8b 8d b4 fd ff
	ff		 mov	 ecx, DWORD PTR _pBufOverlay$[ebp]
  0037d	0f b6 54 41 ff	 movzx	 edx, BYTE PTR [ecx+eax*2-1]
  00382	81 fa f0 00 00
	00		 cmp	 edx, 240		; 000000f0H
  00388	7e 0c		 jle	 SHORT $LN20@SaveSnapsh
  0038a	c7 85 a0 fd ff
	ff f0 00 00 00	 mov	 DWORD PTR tv239[ebp], 240 ; 000000f0H
  00394	eb 14		 jmp	 SHORT $LN21@SaveSnapsh
$LN20@SaveSnapsh:
  00396	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00399	8b 8d b4 fd ff
	ff		 mov	 ecx, DWORD PTR _pBufOverlay$[ebp]
  0039f	0f b6 54 41 ff	 movzx	 edx, BYTE PTR [ecx+eax*2-1]
  003a4	89 95 a0 fd ff
	ff		 mov	 DWORD PTR tv239[ebp], edx
$LN21@SaveSnapsh:
  003aa	8b 85 a0 fd ff
	ff		 mov	 eax, DWORD PTR tv239[ebp]
  003b0	89 85 a4 fd ff
	ff		 mov	 DWORD PTR tv240[ebp], eax
$LN23@SaveSnapsh:
  003b6	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  003b9	6b c9 03	 imul	 ecx, 3
  003bc	8b 95 b8 fd ff
	ff		 mov	 edx, DWORD PTR _pLineBuf$[ebp]
  003c2	8a 85 a4 fd ff
	ff		 mov	 al, BYTE PTR tv240[ebp]
  003c8	88 44 0a 01	 mov	 BYTE PTR [edx+ecx+1], al

; 680  :                 pLineBuf[i * 3 + 2] = LIMIT_CbCr(pBufOverlay[i * 2 + 1]);

  003cc	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  003cf	8b 95 b4 fd ff
	ff		 mov	 edx, DWORD PTR _pBufOverlay$[ebp]
  003d5	0f b6 44 4a 01	 movzx	 eax, BYTE PTR [edx+ecx*2+1]
  003da	83 f8 10	 cmp	 eax, 16			; 00000010H
  003dd	7d 0c		 jge	 SHORT $LN26@SaveSnapsh
  003df	c7 85 9c fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv260[ebp], 16 ; 00000010H
  003e9	eb 41		 jmp	 SHORT $LN27@SaveSnapsh
$LN26@SaveSnapsh:
  003eb	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  003ee	8b 95 b4 fd ff
	ff		 mov	 edx, DWORD PTR _pBufOverlay$[ebp]
  003f4	0f b6 44 4a 01	 movzx	 eax, BYTE PTR [edx+ecx*2+1]
  003f9	3d f0 00 00 00	 cmp	 eax, 240		; 000000f0H
  003fe	7e 0c		 jle	 SHORT $LN24@SaveSnapsh
  00400	c7 85 98 fd ff
	ff f0 00 00 00	 mov	 DWORD PTR tv259[ebp], 240 ; 000000f0H
  0040a	eb 14		 jmp	 SHORT $LN25@SaveSnapsh
$LN24@SaveSnapsh:
  0040c	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  0040f	8b 95 b4 fd ff
	ff		 mov	 edx, DWORD PTR _pBufOverlay$[ebp]
  00415	0f b6 44 4a 01	 movzx	 eax, BYTE PTR [edx+ecx*2+1]
  0041a	89 85 98 fd ff
	ff		 mov	 DWORD PTR tv259[ebp], eax
$LN25@SaveSnapsh:
  00420	8b 8d 98 fd ff
	ff		 mov	 ecx, DWORD PTR tv259[ebp]
  00426	89 8d 9c fd ff
	ff		 mov	 DWORD PTR tv260[ebp], ecx
$LN27@SaveSnapsh:
  0042c	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  0042f	6b d2 03	 imul	 edx, 3
  00432	8b 85 b8 fd ff
	ff		 mov	 eax, DWORD PTR _pLineBuf$[ebp]
  00438	8a 8d 9c fd ff
	ff		 mov	 cl, BYTE PTR tv260[ebp]
  0043e	88 4c 10 02	 mov	 BYTE PTR [eax+edx+2], cl

; 681  :             }
; 682  :             else

  00442	e9 f8 00 00 00	 jmp	 $LN2@SaveSnapsh
$LN3@SaveSnapsh:

; 683  :             {
; 684  :                 pLineBuf[i * 3 + 1] = LIMIT_CbCr(pBufOverlay[i * 2 + 1]);

  00447	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  0044a	8b 85 b4 fd ff
	ff		 mov	 eax, DWORD PTR _pBufOverlay$[ebp]
  00450	0f b6 4c 50 01	 movzx	 ecx, BYTE PTR [eax+edx*2+1]
  00455	83 f9 10	 cmp	 ecx, 16			; 00000010H
  00458	7d 0c		 jge	 SHORT $LN30@SaveSnapsh
  0045a	c7 85 94 fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv280[ebp], 16 ; 00000010H
  00464	eb 42		 jmp	 SHORT $LN31@SaveSnapsh
$LN30@SaveSnapsh:
  00466	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  00469	8b 85 b4 fd ff
	ff		 mov	 eax, DWORD PTR _pBufOverlay$[ebp]
  0046f	0f b6 4c 50 01	 movzx	 ecx, BYTE PTR [eax+edx*2+1]
  00474	81 f9 f0 00 00
	00		 cmp	 ecx, 240		; 000000f0H
  0047a	7e 0c		 jle	 SHORT $LN28@SaveSnapsh
  0047c	c7 85 90 fd ff
	ff f0 00 00 00	 mov	 DWORD PTR tv279[ebp], 240 ; 000000f0H
  00486	eb 14		 jmp	 SHORT $LN29@SaveSnapsh
$LN28@SaveSnapsh:
  00488	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  0048b	8b 85 b4 fd ff
	ff		 mov	 eax, DWORD PTR _pBufOverlay$[ebp]
  00491	0f b6 4c 50 01	 movzx	 ecx, BYTE PTR [eax+edx*2+1]
  00496	89 8d 90 fd ff
	ff		 mov	 DWORD PTR tv279[ebp], ecx
$LN29@SaveSnapsh:
  0049c	8b 95 90 fd ff
	ff		 mov	 edx, DWORD PTR tv279[ebp]
  004a2	89 95 94 fd ff
	ff		 mov	 DWORD PTR tv280[ebp], edx
$LN31@SaveSnapsh:
  004a8	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  004ab	6b c0 03	 imul	 eax, 3
  004ae	8b 8d b8 fd ff
	ff		 mov	 ecx, DWORD PTR _pLineBuf$[ebp]
  004b4	8a 95 94 fd ff
	ff		 mov	 dl, BYTE PTR tv280[ebp]
  004ba	88 54 01 01	 mov	 BYTE PTR [ecx+eax+1], dl

; 685  :                 if (i != (Width - 1))

  004be	8b 45 10	 mov	 eax, DWORD PTR _Width$[ebp]
  004c1	83 e8 01	 sub	 eax, 1
  004c4	39 45 fc	 cmp	 DWORD PTR _i$[ebp], eax
  004c7	74 76		 je	 SHORT $LN2@SaveSnapsh

; 686  :                 {
; 687  :                     pLineBuf[i * 3 + 2] = LIMIT_CbCr(pBufOverlay[i * 2 + 3]);

  004c9	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  004cc	8b 95 b4 fd ff
	ff		 mov	 edx, DWORD PTR _pBufOverlay$[ebp]
  004d2	0f b6 44 4a 03	 movzx	 eax, BYTE PTR [edx+ecx*2+3]
  004d7	83 f8 10	 cmp	 eax, 16			; 00000010H
  004da	7d 0c		 jge	 SHORT $LN34@SaveSnapsh
  004dc	c7 85 8c fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv302[ebp], 16 ; 00000010H
  004e6	eb 41		 jmp	 SHORT $LN35@SaveSnapsh
$LN34@SaveSnapsh:
  004e8	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  004eb	8b 95 b4 fd ff
	ff		 mov	 edx, DWORD PTR _pBufOverlay$[ebp]
  004f1	0f b6 44 4a 03	 movzx	 eax, BYTE PTR [edx+ecx*2+3]
  004f6	3d f0 00 00 00	 cmp	 eax, 240		; 000000f0H
  004fb	7e 0c		 jle	 SHORT $LN32@SaveSnapsh
  004fd	c7 85 88 fd ff
	ff f0 00 00 00	 mov	 DWORD PTR tv301[ebp], 240 ; 000000f0H
  00507	eb 14		 jmp	 SHORT $LN33@SaveSnapsh
$LN32@SaveSnapsh:
  00509	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  0050c	8b 95 b4 fd ff
	ff		 mov	 edx, DWORD PTR _pBufOverlay$[ebp]
  00512	0f b6 44 4a 03	 movzx	 eax, BYTE PTR [edx+ecx*2+3]
  00517	89 85 88 fd ff
	ff		 mov	 DWORD PTR tv301[ebp], eax
$LN33@SaveSnapsh:
  0051d	8b 8d 88 fd ff
	ff		 mov	 ecx, DWORD PTR tv301[ebp]
  00523	89 8d 8c fd ff
	ff		 mov	 DWORD PTR tv302[ebp], ecx
$LN35@SaveSnapsh:
  00529	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  0052c	6b d2 03	 imul	 edx, 3
  0052f	8b 85 b8 fd ff
	ff		 mov	 eax, DWORD PTR _pLineBuf$[ebp]
  00535	8a 8d 8c fd ff
	ff		 mov	 cl, BYTE PTR tv302[ebp]
  0053b	88 4c 10 02	 mov	 BYTE PTR [eax+edx+2], cl
$LN2@SaveSnapsh:

; 688  :                 }
; 689  :             }
; 690  :         }

  0053f	e9 60 fd ff ff	 jmp	 $LN5@SaveSnapsh
$LN4@SaveSnapsh:

; 691  :         (void)jpeg_write_scanlines(&cinfo, row_pointer, 1);

  00544	6a 01		 push	 1
  00546	8d 95 04 fe ff
	ff		 lea	 edx, DWORD PTR _row_pointer$[ebp]
  0054c	52		 push	 edx
  0054d	8d 85 08 fe ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  00553	50		 push	 eax
  00554	e8 00 00 00 00	 call	 _jpeg_write_scanlines
  00559	83 c4 0c	 add	 esp, 12			; 0000000cH

; 692  :     }

  0055c	e9 18 fd ff ff	 jmp	 $LN8@SaveSnapsh
$LN7@SaveSnapsh:

; 693  : 
; 694  :     // Finish compression
; 695  :     jpeg_finish_compress(&cinfo);

  00561	8d 8d 08 fe ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  00567	51		 push	 ecx
  00568	e8 00 00 00 00	 call	 _jpeg_finish_compress
  0056d	83 c4 04	 add	 esp, 4

; 696  : 
; 697  :     // Release the JPEG decompression object
; 698  :     jpeg_destroy_compress(&cinfo);

  00570	8d 95 08 fe ff
	ff		 lea	 edx, DWORD PTR _cinfo$[ebp]
  00576	52		 push	 edx
  00577	e8 00 00 00 00	 call	 _jpeg_destroy_compress
  0057c	83 c4 04	 add	 esp, 4

; 699  : 
; 700  :     // Close the input stream (file)
; 701  :     fclose(outfile);

  0057f	8b 85 00 fe ff
	ff		 mov	 eax, DWORD PTR _outfile$[ebp]
  00585	50		 push	 eax
  00586	e8 00 00 00 00	 call	 _fclose
  0058b	83 c4 04	 add	 esp, 4

; 702  : 
; 703  :     // Free the line buffer
; 704  :     free(pLineBuf);

  0058e	8b 8d b8 fd ff
	ff		 mov	 ecx, DWORD PTR _pLineBuf$[ebp]
  00594	51		 push	 ecx
  00595	e8 00 00 00 00	 call	 _free
  0059a	83 c4 04	 add	 esp, 4
$LN14@SaveSnapsh:

; 705  : 
; 706  :     return;
; 707  : }

  0059d	8b 4d f8	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  005a0	33 cd		 xor	 ecx, ebp
  005a2	e8 00 00 00 00	 call	 @__security_check_cookie@4
  005a7	8b e5		 mov	 esp, ebp
  005a9	5d		 pop	 ebp
  005aa	c2 18 00	 ret	 24			; 00000018H
?SaveSnapshot@CJpegHelper@@UAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@HHPAEJ0@Z ENDP ; CJpegHelper::SaveSnapshot
PUBLIC	__$ArrayPad$
; Function compile flags: /Odtp
;	COMDAT ?OpenMediaFile@CJpegHelper@@UAEHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z
_TEXT	SEGMENT
tv396 = -728						; size = 4
tv397 = -724						; size = 4
tv372 = -720						; size = 4
tv373 = -716						; size = 4
tv346 = -712						; size = 4
tv347 = -708						; size = 4
_this$ = -704						; size = 4
_j$ = -700						; size = 4
_Square$ = -696						; size = 4
_buffer$ = -692						; size = 4
_infile$ = -688						; size = 4
_buffer_height$ = -684					; size = 4
_pDestBuf$ = -680					; size = 4
_pFrameBuf$ = -676					; size = 4
_jmp_mark$ = -672					; size = 64
_pDestBuf2$ = -608					; size = 4
_pMarker$ = -604					; size = 4
_cinfo$ = -600						; size = 432
_i$ = -164						; size = 4
_jerr$ = -160						; size = 132
__$ArrayPad$ = -24					; size = 4
_h$ = -20						; size = 4
_w$ = -16						; size = 4
_pStartFrame$ = -12					; size = 4
_num_scanlines$ = -8					; size = 4
_LinePitch$ = -4					; size = 4
_FileName$ = 8						; size = 4
?OpenMediaFile@CJpegHelper@@UAEHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z PROC ; CJpegHelper::OpenMediaFile, COMDAT
; _this$ = ecx

; 409  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec d8 02 00
	00		 sub	 esp, 728		; 000002d8H
  00009	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000e	33 c5		 xor	 eax, ebp
  00010	89 45 e8	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00013	56		 push	 esi
  00014	89 8d 40 fd ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 410  :     int h, w, i, j;
; 411  :     BYTE* pFrameBuf = NULL;

  0001a	c7 85 5c fd ff
	ff 00 00 00 00	 mov	 DWORD PTR _pFrameBuf$[ebp], 0

; 412  :     BYTE* pStartFrame;
; 413  :     BYTE* pDestBuf;
; 414  :     BYTE* pDestBuf2;
; 415  :     struct jpeg_decompress_struct cinfo;
; 416  :     struct jpeg_error_mgr jerr;
; 417  :     jpeg_saved_marker_ptr pMarker;
; 418  :     FILE* infile;
; 419  :     JDIMENSION num_scanlines;
; 420  :     JSAMPARRAY buffer;
; 421  :     JDIMENSION buffer_height;
; 422  :     BOOL Square = TRUE;

  00024	c7 85 48 fd ff
	ff 01 00 00 00	 mov	 DWORD PTR _Square$[ebp], 1

; 423  :     int LinePitch;
; 424  :     jmp_buf jmp_mark;
; 425  : 
; 426  :     // Open the input stream (file)
; 427  :     if ((infile = _tfopen(FileName.c_str(), _T("rb"))) == NULL)

  0002e	68 00 00 00 00	 push	 OFFSET ??_C@_15JJPIMNBO@?$AAr?$AAb?$AA?$AA@
  00033	8b 4d 08	 mov	 ecx, DWORD PTR _FileName$[ebp]
  00036	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
  0003b	50		 push	 eax
  0003c	e8 00 00 00 00	 call	 __wfopen
  00041	83 c4 08	 add	 esp, 8
  00044	89 85 50 fd ff
	ff		 mov	 DWORD PTR _infile$[ebp], eax
  0004a	83 bd 50 fd ff
	ff 00		 cmp	 DWORD PTR _infile$[ebp], 0
  00051	75 07		 jne	 SHORT $LN21@OpenMediaF@2

; 428  :     {
; 429  :         return FALSE;

  00053	33 c0		 xor	 eax, eax
  00055	e9 4e 08 00 00	 jmp	 $LN22@OpenMediaF@2
$LN21@OpenMediaF@2:

; 430  :     }
; 431  : 
; 432  :     // Error handling
; 433  :     cinfo.err = jpeg_std_error(&jerr);

  0005a	8d 85 60 ff ff
	ff		 lea	 eax, DWORD PTR _jerr$[ebp]
  00060	50		 push	 eax
  00061	e8 00 00 00 00	 call	 _jpeg_std_error
  00066	83 c4 04	 add	 esp, 4
  00069	89 85 a8 fd ff
	ff		 mov	 DWORD PTR _cinfo$[ebp], eax

; 434  :     cinfo.client_data = &jmp_mark;

  0006f	8d 8d 60 fd ff
	ff		 lea	 ecx, DWORD PTR _jmp_mark$[ebp]
  00075	89 8d b4 fd ff
	ff		 mov	 DWORD PTR _cinfo$[ebp+12], ecx

; 435  :     cinfo.err->error_exit = my_error_exit;

  0007b	8b 95 a8 fd ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp]
  00081	c7 02 00 00 00
	00		 mov	 DWORD PTR [edx], OFFSET ?my_error_exit@@YAXPAUjpeg_common_struct@@@Z ; my_error_exit

; 436  :     cinfo.err->output_message = my_output_message;

  00087	8b 85 a8 fd ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp]
  0008d	c7 40 08 00 00
	00 00		 mov	 DWORD PTR [eax+8], OFFSET ?my_output_message@@YAXPAUjpeg_common_struct@@@Z ; my_output_message

; 437  :     cinfo.err->emit_message = my_emit_message;

  00094	8b 8d a8 fd ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp]
  0009a	c7 41 04 00 00
	00 00		 mov	 DWORD PTR [ecx+4], OFFSET ?my_emit_message@@YAXPAUjpeg_common_struct@@H@Z ; my_emit_message

; 438  :     cinfo.err->trace_level = 0;

  000a1	8b 95 a8 fd ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp]
  000a7	c7 42 68 00 00
	00 00		 mov	 DWORD PTR [edx+104], 0

; 439  :     if (setjmp(jmp_mark))

  000ae	8d 85 60 fd ff
	ff		 lea	 eax, DWORD PTR _jmp_mark$[ebp]
  000b4	6a 00		 push	 0
  000b6	50		 push	 eax
  000b7	e8 00 00 00 00	 call	 __setjmp3
  000bc	83 c4 08	 add	 esp, 8
  000bf	85 c0		 test	 eax, eax
  000c1	74 51		 je	 SHORT $LN20@OpenMediaF@2

; 440  :     {
; 441  :         // If we get here, the JPEG code has signaled an error.
; 442  :         // We need to clean up the JPEG object, close the input file, and return.
; 443  :         LOG(1, "libjpeg fatal error : %s", msg_err);

  000c3	68 00 00 00 00	 push	 OFFSET ?msg_err@@3PADA	; msg_err
  000c8	68 00 00 00 00	 push	 OFFSET ??_C@_0BJ@HFNEANFP@libjpeg?5fatal?5error?5?3?5?$CFs?$AA@
  000cd	6a 01		 push	 1
  000cf	e8 00 00 00 00	 call	 ?LOG@@YAXHPBDZZ		; LOG
  000d4	83 c4 0c	 add	 esp, 12			; 0000000cH

; 444  :         jpeg_destroy_decompress(&cinfo);

  000d7	8d 8d a8 fd ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  000dd	51		 push	 ecx
  000de	e8 00 00 00 00	 call	 _jpeg_destroy_decompress
  000e3	83 c4 04	 add	 esp, 4

; 445  :         fclose(infile);

  000e6	8b 95 50 fd ff
	ff		 mov	 edx, DWORD PTR _infile$[ebp]
  000ec	52		 push	 edx
  000ed	e8 00 00 00 00	 call	 _fclose
  000f2	83 c4 04	 add	 esp, 4

; 446  :         if (pFrameBuf != NULL)

  000f5	83 bd 5c fd ff
	ff 00		 cmp	 DWORD PTR _pFrameBuf$[ebp], 0
  000fc	74 0f		 je	 SHORT $LN19@OpenMediaF@2

; 447  :         {
; 448  :             free(pFrameBuf);

  000fe	8b 85 5c fd ff
	ff		 mov	 eax, DWORD PTR _pFrameBuf$[ebp]
  00104	50		 push	 eax
  00105	e8 00 00 00 00	 call	 _free
  0010a	83 c4 04	 add	 esp, 4
$LN19@OpenMediaF@2:

; 449  :         }
; 450  :         return FALSE;

  0010d	33 c0		 xor	 eax, eax
  0010f	e9 94 07 00 00	 jmp	 $LN22@OpenMediaF@2
$LN20@OpenMediaF@2:

; 451  :     }
; 452  : 
; 453  :     // Initialize the JPEG decompression object
; 454  :     jpeg_create_decompress(&cinfo);

  00114	68 b0 01 00 00	 push	 432			; 000001b0H
  00119	6a 3e		 push	 62			; 0000003eH
  0011b	8d 8d a8 fd ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  00121	51		 push	 ecx
  00122	e8 00 00 00 00	 call	 _jpeg_CreateDecompress
  00127	83 c4 0c	 add	 esp, 12			; 0000000cH

; 455  : 
; 456  :     // Specify the source of the compressed data (eg, a file)
; 457  :     my_jpeg_stdio_src(&cinfo, infile);

  0012a	8b 95 50 fd ff
	ff		 mov	 edx, DWORD PTR _infile$[ebp]
  00130	52		 push	 edx
  00131	8d 85 a8 fd ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  00137	50		 push	 eax
  00138	e8 00 00 00 00	 call	 ?my_jpeg_stdio_src@@YAXPAUjpeg_decompress_struct@@PAU_iobuf@@@Z ; my_jpeg_stdio_src
  0013d	83 c4 08	 add	 esp, 8

; 458  : 
; 459  :     // Read DScaler markers APP1 and APP2
; 460  :     jpeg_save_markers(&cinfo, JPEG_APP0+1, 0xFFFF);

  00140	68 ff ff 00 00	 push	 65535			; 0000ffffH
  00145	68 e1 00 00 00	 push	 225			; 000000e1H
  0014a	8d 8d a8 fd ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  00150	51		 push	 ecx
  00151	e8 00 00 00 00	 call	 _jpeg_save_markers
  00156	83 c4 0c	 add	 esp, 12			; 0000000cH

; 461  :     jpeg_save_markers(&cinfo, JPEG_APP0+2, 0xFFFF);

  00159	68 ff ff 00 00	 push	 65535			; 0000ffffH
  0015e	68 e2 00 00 00	 push	 226			; 000000e2H
  00163	8d 95 a8 fd ff
	ff		 lea	 edx, DWORD PTR _cinfo$[ebp]
  00169	52		 push	 edx
  0016a	e8 00 00 00 00	 call	 _jpeg_save_markers
  0016f	83 c4 0c	 add	 esp, 12			; 0000000cH

; 462  : 
; 463  :     // Call jpeg_read_header() to obtain image info
; 464  :     (void)jpeg_read_header(&cinfo, TRUE);

  00172	6a 01		 push	 1
  00174	8d 85 a8 fd ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  0017a	50		 push	 eax
  0017b	e8 00 00 00 00	 call	 _jpeg_read_header
  00180	83 c4 08	 add	 esp, 8

; 465  : 
; 466  :     LOG(2, _T("image_height %d - image_width %d"), cinfo.image_height, cinfo.image_width);

  00183	8b 8d c4 fd ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+28]
  00189	51		 push	 ecx
  0018a	8b 95 c8 fd ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp+32]
  00190	52		 push	 edx
  00191	68 00 00 00 00	 push	 OFFSET ??_C@_1EC@JKGNFDHN@?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAi?$AAm?$AAa?$AAg?$AAe?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5?$AA?$CF?$AAd@
  00196	6a 02		 push	 2
  00198	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0019d	83 c4 10	 add	 esp, 16			; 00000010H

; 467  :     LOG(2, _T("num_components %d"), cinfo.num_components);

  001a0	8b 85 cc fd ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp+36]
  001a6	50		 push	 eax
  001a7	68 00 00 00 00	 push	 OFFSET ??_C@_1CE@JOOFLNGN@?$AAn?$AAu?$AAm?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  001ac	6a 02		 push	 2
  001ae	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001b3	83 c4 0c	 add	 esp, 12			; 0000000cH

; 468  :     LOG(2, _T("jpeg_color_space %d"), cinfo.jpeg_color_space);

  001b6	8b 8d d0 fd ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+40]
  001bc	51		 push	 ecx
  001bd	68 00 00 00 00	 push	 OFFSET ??_C@_1CI@IFLKGAPN@?$AAj?$AAp?$AAe?$AAg?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  001c2	6a 02		 push	 2
  001c4	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001c9	83 c4 0c	 add	 esp, 12			; 0000000cH

; 469  :     LOG(2, _T("out_color_space %d"), cinfo.out_color_space);

  001cc	8b 95 d4 fd ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp+44]
  001d2	52		 push	 edx
  001d3	68 00 00 00 00	 push	 OFFSET ??_C@_1CG@OBBPBLHK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAs?$AAp?$AAa?$AAc?$AAe?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  001d8	6a 02		 push	 2
  001da	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001df	83 c4 0c	 add	 esp, 12			; 0000000cH

; 470  :     LOG(2, _T("scale_num %u"), cinfo.scale_num);

  001e2	8b 85 d8 fd ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp+48]
  001e8	50		 push	 eax
  001e9	68 00 00 00 00	 push	 OFFSET ??_C@_1BK@CAEJGBD@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAn?$AAu?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@
  001ee	6a 02		 push	 2
  001f0	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001f5	83 c4 0c	 add	 esp, 12			; 0000000cH

; 471  :     LOG(2, _T("scale_denom %u"), cinfo.scale_denom);

  001f8	8b 8d dc fd ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+52]
  001fe	51		 push	 ecx
  001ff	68 00 00 00 00	 push	 OFFSET ??_C@_1BO@GAEPBAIN@?$AAs?$AAc?$AAa?$AAl?$AAe?$AA_?$AAd?$AAe?$AAn?$AAo?$AAm?$AA?5?$AA?$CF?$AAu?$AA?$AA@
  00204	6a 02		 push	 2
  00206	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG

; 472  :     LOG(2, _T("output_gamma %f"), cinfo.output_gamma);

  0020b	83 c4 04	 add	 esp, 4
  0020e	dd 85 e0 fd ff
	ff		 fld	 QWORD PTR _cinfo$[ebp+56]
  00214	dd 1c 24	 fstp	 QWORD PTR [esp]
  00217	68 00 00 00 00	 push	 OFFSET ??_C@_1CA@NCKNJEAF@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAg?$AAa?$AAm?$AAm?$AAa?$AA?5?$AA?$CF?$AAf?$AA?$AA@
  0021c	6a 02		 push	 2
  0021e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00223	83 c4 10	 add	 esp, 16			; 00000010H

; 473  : 
; 474  :     m_pParent->m_Comments = _T("");

  00226	68 00 00 00 00	 push	 OFFSET ??_C@_11LOCGONAA@?$AA?$AA@
  0022b	8b 95 40 fd ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00231	8b 4a 04	 mov	 ecx, DWORD PTR [edx+4]
  00234	83 c1 54	 add	 ecx, 84			; 00000054H
  00237	e8 00 00 00 00	 call	 ??4?$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=

; 475  :     pMarker = cinfo.marker_list;

  0023c	8b 85 b4 fe ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp+268]
  00242	89 85 a4 fd ff
	ff		 mov	 DWORD PTR _pMarker$[ebp], eax
$LN18@OpenMediaF@2:

; 476  :     while (pMarker != NULL)

  00248	83 bd a4 fd ff
	ff 00		 cmp	 DWORD PTR _pMarker$[ebp], 0
  0024f	0f 84 d0 00 00
	00		 je	 $LN17@OpenMediaF@2

; 477  :     {
; 478  :         LOG(2, _T("marker %d"), pMarker->marker);

  00255	8b 8d a4 fd ff
	ff		 mov	 ecx, DWORD PTR _pMarker$[ebp]
  0025b	0f b6 51 04	 movzx	 edx, BYTE PTR [ecx+4]
  0025f	52		 push	 edx
  00260	68 00 00 00 00	 push	 OFFSET ??_C@_1BE@KCNLBGPH@?$AAm?$AAa?$AAr?$AAk?$AAe?$AAr?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  00265	6a 02		 push	 2
  00267	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0026c	83 c4 0c	 add	 esp, 12			; 0000000cH

; 479  :         // Check that the marker is a DScaler marker
; 480  :         if (!strncmp((char*)pMarker->data, "DScaler", 7))

  0026f	6a 07		 push	 7
  00271	68 00 00 00 00	 push	 OFFSET ??_C@_07CNOAGGKG@DScaler?$AA@
  00276	8b 85 a4 fd ff
	ff		 mov	 eax, DWORD PTR _pMarker$[ebp]
  0027c	8b 48 10	 mov	 ecx, DWORD PTR [eax+16]
  0027f	51		 push	 ecx
  00280	e8 00 00 00 00	 call	 _strncmp
  00285	83 c4 0c	 add	 esp, 12			; 0000000cH
  00288	85 c0		 test	 eax, eax
  0028a	0f 85 82 00 00
	00		 jne	 $LN13@OpenMediaF@2

; 481  :         {
; 482  :             if (pMarker->marker == JPEG_APP0+1)

  00290	8b 95 a4 fd ff
	ff		 mov	 edx, DWORD PTR _pMarker$[ebp]
  00296	0f b6 42 04	 movzx	 eax, BYTE PTR [edx+4]
  0029a	3d e1 00 00 00	 cmp	 eax, 225		; 000000e1H
  0029f	75 30		 jne	 SHORT $LN15@OpenMediaF@2

; 483  :             {
; 484  :                 m_pParent->m_Comments.assign((char*)pMarker->data, (char*)pMarker->data + pMarker->data_length);

  002a1	8b 8d a4 fd ff
	ff		 mov	 ecx, DWORD PTR _pMarker$[ebp]
  002a7	8b 51 10	 mov	 edx, DWORD PTR [ecx+16]
  002aa	8b 85 a4 fd ff
	ff		 mov	 eax, DWORD PTR _pMarker$[ebp]
  002b0	03 50 0c	 add	 edx, DWORD PTR [eax+12]
  002b3	52		 push	 edx
  002b4	8b 8d a4 fd ff
	ff		 mov	 ecx, DWORD PTR _pMarker$[ebp]
  002ba	8b 51 10	 mov	 edx, DWORD PTR [ecx+16]
  002bd	52		 push	 edx
  002be	8b 85 40 fd ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  002c4	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  002c7	83 c1 54	 add	 ecx, 84			; 00000054H
  002ca	e8 00 00 00 00	 call	 ??$assign@PAD@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@PAD0@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign<char *>

; 485  :             }
; 486  :             else if ( (pMarker->marker == JPEG_APP0+2)

  002cf	eb 41		 jmp	 SHORT $LN13@OpenMediaF@2
$LN15@OpenMediaF@2:

; 487  :               && ! strncmp((char*)pMarker->data, SQUARE_MODE_OFF, pMarker->data_length) )

  002d1	8b 8d a4 fd ff
	ff		 mov	 ecx, DWORD PTR _pMarker$[ebp]
  002d7	0f b6 51 04	 movzx	 edx, BYTE PTR [ecx+4]
  002db	81 fa e2 00 00
	00		 cmp	 edx, 226		; 000000e2H
  002e1	75 2f		 jne	 SHORT $LN13@OpenMediaF@2
  002e3	8b 85 a4 fd ff
	ff		 mov	 eax, DWORD PTR _pMarker$[ebp]
  002e9	8b 48 0c	 mov	 ecx, DWORD PTR [eax+12]
  002ec	51		 push	 ecx
  002ed	68 00 00 00 00	 push	 OFFSET ??_C@_0BP@CLCPFPLB@DScaler?3Square?5Pixels?5Mode?3OFF?$AA@
  002f2	8b 95 a4 fd ff
	ff		 mov	 edx, DWORD PTR _pMarker$[ebp]
  002f8	8b 42 10	 mov	 eax, DWORD PTR [edx+16]
  002fb	50		 push	 eax
  002fc	e8 00 00 00 00	 call	 _strncmp
  00301	83 c4 0c	 add	 esp, 12			; 0000000cH
  00304	85 c0		 test	 eax, eax
  00306	75 0a		 jne	 SHORT $LN13@OpenMediaF@2

; 488  :             {
; 489  :                 Square = FALSE;

  00308	c7 85 48 fd ff
	ff 00 00 00 00	 mov	 DWORD PTR _Square$[ebp], 0
$LN13@OpenMediaF@2:

; 490  :             }
; 491  :         }
; 492  :         pMarker = pMarker->next;

  00312	8b 8d a4 fd ff
	ff		 mov	 ecx, DWORD PTR _pMarker$[ebp]
  00318	8b 11		 mov	 edx, DWORD PTR [ecx]
  0031a	89 95 a4 fd ff
	ff		 mov	 DWORD PTR _pMarker$[ebp], edx

; 493  :     }

  00320	e9 23 ff ff ff	 jmp	 $LN18@OpenMediaF@2
$LN17@OpenMediaF@2:

; 494  : 
; 495  :     // Set parameters for decompression
; 496  :     cinfo.out_color_space = JCS_YCbCr;

  00325	c7 85 d4 fd ff
	ff 03 00 00 00	 mov	 DWORD PTR _cinfo$[ebp+44], 3

; 497  :     cinfo.scale_num = 1;

  0032f	c7 85 d8 fd ff
	ff 01 00 00 00	 mov	 DWORD PTR _cinfo$[ebp+48], 1

; 498  :     cinfo.scale_denom = 1;

  00339	c7 85 dc fd ff
	ff 01 00 00 00	 mov	 DWORD PTR _cinfo$[ebp+52], 1

; 499  :     cinfo.quantize_colors = FALSE;

  00343	c6 85 f2 fd ff
	ff 00		 mov	 BYTE PTR _cinfo$[ebp+74], 0

; 500  :     cinfo.dct_method = JDCT_ISLOW;

  0034a	c7 85 ec fd ff
	ff 00 00 00 00	 mov	 DWORD PTR _cinfo$[ebp+68], 0

; 501  :     cinfo.do_fancy_upsampling = TRUE;

  00354	c6 85 f0 fd ff
	ff 01		 mov	 BYTE PTR _cinfo$[ebp+72], 1

; 502  :     cinfo.do_block_smoothing = FALSE;

  0035b	c6 85 f1 fd ff
	ff 00		 mov	 BYTE PTR _cinfo$[ebp+73], 0

; 503  : 
; 504  :     // Start decompression
; 505  :     (void)jpeg_start_decompress(&cinfo);

  00362	8d 85 a8 fd ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  00368	50		 push	 eax
  00369	e8 00 00 00 00	 call	 _jpeg_start_decompress
  0036e	83 c4 04	 add	 esp, 4

; 506  : 
; 507  :     LOG(2, _T("output_height %d - output_width %d"), cinfo.output_height, cinfo.output_width);

  00371	8b 8d 04 fe ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+92]
  00377	51		 push	 ecx
  00378	8b 95 08 fe ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp+96]
  0037e	52		 push	 edx
  0037f	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@BEDNHNAL@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?5?$AA?9?$AA?5?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAw?$AAi?$AAd?$AAt?$AAh?$AA?5@
  00384	6a 02		 push	 2
  00386	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0038b	83 c4 10	 add	 esp, 16			; 00000010H

; 508  :     LOG(2, _T("out_color_components %d"), cinfo.out_color_components);

  0038e	8b 85 0c fe ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp+100]
  00394	50		 push	 eax
  00395	68 00 00 00 00	 push	 OFFSET ??_C@_1DA@PAEMCCCK@?$AAo?$AAu?$AAt?$AA_?$AAc?$AAo?$AAl?$AAo?$AAr?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  0039a	6a 02		 push	 2
  0039c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  003a1	83 c4 0c	 add	 esp, 12			; 0000000cH

; 509  :     LOG(2, _T("output_components %d"), cinfo.output_components);

  003a4	8b 8d 10 fe ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+104]
  003aa	51		 push	 ecx
  003ab	68 00 00 00 00	 push	 OFFSET ??_C@_1CK@MMEHHEGK@?$AAo?$AAu?$AAt?$AAp?$AAu?$AAt?$AA_?$AAc?$AAo?$AAm?$AAp?$AAo?$AAn?$AAe?$AAn?$AAt?$AAs?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  003b0	6a 02		 push	 2
  003b2	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  003b7	83 c4 0c	 add	 esp, 12			; 0000000cH

; 510  :     LOG(2, _T("rec_outbuf_height %d"), cinfo.rec_outbuf_height);

  003ba	8b 95 14 fe ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp+108]
  003c0	52		 push	 edx
  003c1	68 00 00 00 00	 push	 OFFSET ??_C@_1CK@MIPHAGHM@?$AAr?$AAe?$AAc?$AA_?$AAo?$AAu?$AAt?$AAb?$AAu?$AAf?$AA_?$AAh?$AAe?$AAi?$AAg?$AAh?$AAt?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  003c6	6a 02		 push	 2
  003c8	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  003cd	83 c4 0c	 add	 esp, 12			; 0000000cH

; 511  : 
; 512  :     buffer_height = cinfo.rec_outbuf_height;

  003d0	8b 85 14 fe ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp+108]
  003d6	89 85 54 fd ff
	ff		 mov	 DWORD PTR _buffer_height$[ebp], eax

; 513  :     buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr) &cinfo, JPOOL_IMAGE, cinfo.output_width * cinfo.output_components, buffer_height);

  003dc	8b 8d 54 fd ff
	ff		 mov	 ecx, DWORD PTR _buffer_height$[ebp]
  003e2	51		 push	 ecx
  003e3	8b 95 04 fe ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp+92]
  003e9	0f af 95 10 fe
	ff ff		 imul	 edx, DWORD PTR _cinfo$[ebp+104]
  003f0	52		 push	 edx
  003f1	6a 01		 push	 1
  003f3	8d 85 a8 fd ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  003f9	50		 push	 eax
  003fa	8b 8d ac fd ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+4]
  00400	8b 51 08	 mov	 edx, DWORD PTR [ecx+8]
  00403	ff d2		 call	 edx
  00405	83 c4 10	 add	 esp, 16			; 00000010H
  00408	89 85 4c fd ff
	ff		 mov	 DWORD PTR _buffer$[ebp], eax

; 514  : 
; 515  :     h = cinfo.output_height;

  0040e	8b 85 08 fe ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp+96]
  00414	89 45 ec	 mov	 DWORD PTR _h$[ebp], eax

; 516  :     w = cinfo.output_width;

  00417	8b 8d 04 fe ff
	ff		 mov	 ecx, DWORD PTR _cinfo$[ebp+92]
  0041d	89 4d f0	 mov	 DWORD PTR _w$[ebp], ecx

; 517  :     // The width must be even
; 518  :     if (w%2)

  00420	8b 55 f0	 mov	 edx, DWORD PTR _w$[ebp]
  00423	81 e2 01 00 00
	80		 and	 edx, -2147483647	; 80000001H
  00429	79 05		 jns	 SHORT $LN36@OpenMediaF@2
  0042b	4a		 dec	 edx
  0042c	83 ca fe	 or	 edx, -2			; fffffffeH
  0042f	42		 inc	 edx
$LN36@OpenMediaF@2:
  00430	85 d2		 test	 edx, edx
  00432	74 09		 je	 SHORT $LN12@OpenMediaF@2

; 519  :     {
; 520  :         w--;

  00434	8b 45 f0	 mov	 eax, DWORD PTR _w$[ebp]
  00437	83 e8 01	 sub	 eax, 1
  0043a	89 45 f0	 mov	 DWORD PTR _w$[ebp], eax
$LN12@OpenMediaF@2:

; 521  :     }
; 522  : 
; 523  :     // Allocate memory buffer to store the final YUYV values
; 524  :     LinePitch = (w * 2 * sizeof(BYTE) + 15) & 0xfffffff0;

  0043d	8b 4d f0	 mov	 ecx, DWORD PTR _w$[ebp]
  00440	8d 54 09 0f	 lea	 edx, DWORD PTR [ecx+ecx+15]
  00444	83 e2 f0	 and	 edx, -16		; fffffff0H
  00447	89 55 fc	 mov	 DWORD PTR _LinePitch$[ebp], edx

; 525  :     pFrameBuf = (BYTE*)malloc(LinePitch * h + 16);

  0044a	8b 45 fc	 mov	 eax, DWORD PTR _LinePitch$[ebp]
  0044d	0f af 45 ec	 imul	 eax, DWORD PTR _h$[ebp]
  00451	83 c0 10	 add	 eax, 16			; 00000010H
  00454	50		 push	 eax
  00455	e8 00 00 00 00	 call	 _malloc
  0045a	83 c4 04	 add	 esp, 4
  0045d	89 85 5c fd ff
	ff		 mov	 DWORD PTR _pFrameBuf$[ebp], eax

; 526  :     if (pFrameBuf == NULL)

  00463	83 bd 5c fd ff
	ff 00		 cmp	 DWORD PTR _pFrameBuf$[ebp], 0
  0046a	75 25		 jne	 SHORT $LN11@OpenMediaF@2

; 527  :     {
; 528  :         jpeg_destroy_decompress(&cinfo);

  0046c	8d 8d a8 fd ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  00472	51		 push	 ecx
  00473	e8 00 00 00 00	 call	 _jpeg_destroy_decompress
  00478	83 c4 04	 add	 esp, 4

; 529  :         fclose(infile);

  0047b	8b 95 50 fd ff
	ff		 mov	 edx, DWORD PTR _infile$[ebp]
  00481	52		 push	 edx
  00482	e8 00 00 00 00	 call	 _fclose
  00487	83 c4 04	 add	 esp, 4

; 530  :         return FALSE;

  0048a	33 c0		 xor	 eax, eax
  0048c	e9 17 04 00 00	 jmp	 $LN22@OpenMediaF@2
$LN11@OpenMediaF@2:

; 531  :     }
; 532  :     pStartFrame = START_ALIGNED16(pFrameBuf);

  00491	8b 8d 5c fd ff
	ff		 mov	 ecx, DWORD PTR _pFrameBuf$[ebp]
  00497	83 c1 10	 add	 ecx, 16			; 00000010H
  0049a	8b 85 5c fd ff
	ff		 mov	 eax, DWORD PTR _pFrameBuf$[ebp]
  004a0	33 d2		 xor	 edx, edx
  004a2	be 10 00 00 00	 mov	 esi, 16			; 00000010H
  004a7	f7 f6		 div	 esi
  004a9	2b ca		 sub	 ecx, edx
  004ab	89 4d f4	 mov	 DWORD PTR _pStartFrame$[ebp], ecx
$LN10@OpenMediaF@2:

; 533  : 
; 534  :     // Process data
; 535  :     while (cinfo.output_scanline < h)

  004ae	8b 95 20 fe ff
	ff		 mov	 edx, DWORD PTR _cinfo$[ebp+120]
  004b4	3b 55 ec	 cmp	 edx, DWORD PTR _h$[ebp]
  004b7	0f 83 21 03 00
	00		 jae	 $LN9@OpenMediaF@2

; 536  :     {
; 537  :         pDestBuf2 = pStartFrame + cinfo.output_scanline * LinePitch;

  004bd	8b 85 20 fe ff
	ff		 mov	 eax, DWORD PTR _cinfo$[ebp+120]
  004c3	0f af 45 fc	 imul	 eax, DWORD PTR _LinePitch$[ebp]
  004c7	03 45 f4	 add	 eax, DWORD PTR _pStartFrame$[ebp]
  004ca	89 85 a0 fd ff
	ff		 mov	 DWORD PTR _pDestBuf2$[ebp], eax

; 538  :         num_scanlines = jpeg_read_scanlines(&cinfo, buffer, buffer_height);

  004d0	8b 8d 54 fd ff
	ff		 mov	 ecx, DWORD PTR _buffer_height$[ebp]
  004d6	51		 push	 ecx
  004d7	8b 95 4c fd ff
	ff		 mov	 edx, DWORD PTR _buffer$[ebp]
  004dd	52		 push	 edx
  004de	8d 85 a8 fd ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  004e4	50		 push	 eax
  004e5	e8 00 00 00 00	 call	 _jpeg_read_scanlines
  004ea	83 c4 0c	 add	 esp, 12			; 0000000cH
  004ed	89 45 f8	 mov	 DWORD PTR _num_scanlines$[ebp], eax

; 539  : 
; 540  :         // In the input (file), Y range is [0,255]
; 541  :         // In the output (overlay), Y range must be [16,235]
; 542  :         // YUVYUV => YUYV with an Y compression from [0,255] to [16,235]
; 543  :         for (i = 0 ; i < num_scanlines ; i++)

  004f0	c7 85 5c ff ff
	ff 00 00 00 00	 mov	 DWORD PTR _i$[ebp], 0
  004fa	eb 0f		 jmp	 SHORT $LN8@OpenMediaF@2
$LN7@OpenMediaF@2:
  004fc	8b 8d 5c ff ff
	ff		 mov	 ecx, DWORD PTR _i$[ebp]
  00502	83 c1 01	 add	 ecx, 1
  00505	89 8d 5c ff ff
	ff		 mov	 DWORD PTR _i$[ebp], ecx
$LN8@OpenMediaF@2:
  0050b	8b 95 5c ff ff
	ff		 mov	 edx, DWORD PTR _i$[ebp]
  00511	3b 55 f8	 cmp	 edx, DWORD PTR _num_scanlines$[ebp]
  00514	0f 83 bf 02 00
	00		 jae	 $LN6@OpenMediaF@2

; 544  :         {
; 545  :             pDestBuf = pDestBuf2 + i * LinePitch;

  0051a	8b 85 5c ff ff
	ff		 mov	 eax, DWORD PTR _i$[ebp]
  00520	0f af 45 fc	 imul	 eax, DWORD PTR _LinePitch$[ebp]
  00524	03 85 a0 fd ff
	ff		 add	 eax, DWORD PTR _pDestBuf2$[ebp]
  0052a	89 85 58 fd ff
	ff		 mov	 DWORD PTR _pDestBuf$[ebp], eax

; 546  :             for (j = 0 ; j < w ; j++)

  00530	c7 85 44 fd ff
	ff 00 00 00 00	 mov	 DWORD PTR _j$[ebp], 0
  0053a	eb 0f		 jmp	 SHORT $LN5@OpenMediaF@2
$LN4@OpenMediaF@2:
  0053c	8b 8d 44 fd ff
	ff		 mov	 ecx, DWORD PTR _j$[ebp]
  00542	83 c1 01	 add	 ecx, 1
  00545	89 8d 44 fd ff
	ff		 mov	 DWORD PTR _j$[ebp], ecx
$LN5@OpenMediaF@2:
  0054b	8b 95 44 fd ff
	ff		 mov	 edx, DWORD PTR _j$[ebp]
  00551	3b 55 f0	 cmp	 edx, DWORD PTR _w$[ebp]
  00554	0f 8d 7a 02 00
	00		 jge	 $LN3@OpenMediaF@2

; 547  :             {
; 548  :                 // Y compression from [0,255] to [16,235]
; 549  :                 *pDestBuf = LIMIT_Y(buffer[i][j * cinfo.output_components] * 219 / 255 + 16);

  0055a	8b 85 44 fd ff
	ff		 mov	 eax, DWORD PTR _j$[ebp]
  00560	0f af 85 10 fe
	ff ff		 imul	 eax, DWORD PTR _cinfo$[ebp+104]
  00567	8b 8d 5c ff ff
	ff		 mov	 ecx, DWORD PTR _i$[ebp]
  0056d	8b 95 4c fd ff
	ff		 mov	 edx, DWORD PTR _buffer$[ebp]
  00573	8b 0c 8a	 mov	 ecx, DWORD PTR [edx+ecx*4]
  00576	0f b6 04 01	 movzx	 eax, BYTE PTR [ecx+eax]
  0057a	69 c0 db 00 00
	00		 imul	 eax, 219		; 000000dbH
  00580	99		 cdq
  00581	b9 ff 00 00 00	 mov	 ecx, 255		; 000000ffH
  00586	f7 f9		 idiv	 ecx
  00588	83 c0 10	 add	 eax, 16			; 00000010H
  0058b	83 f8 10	 cmp	 eax, 16			; 00000010H
  0058e	7d 0f		 jge	 SHORT $LN26@OpenMediaF@2
  00590	c7 85 3c fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv347[ebp], 16 ; 00000010H
  0059a	e9 87 00 00 00	 jmp	 $LN27@OpenMediaF@2
$LN26@OpenMediaF@2:
  0059f	8b 95 44 fd ff
	ff		 mov	 edx, DWORD PTR _j$[ebp]
  005a5	0f af 95 10 fe
	ff ff		 imul	 edx, DWORD PTR _cinfo$[ebp+104]
  005ac	8b 85 5c ff ff
	ff		 mov	 eax, DWORD PTR _i$[ebp]
  005b2	8b 8d 4c fd ff
	ff		 mov	 ecx, DWORD PTR _buffer$[ebp]
  005b8	8b 04 81	 mov	 eax, DWORD PTR [ecx+eax*4]
  005bb	0f b6 04 10	 movzx	 eax, BYTE PTR [eax+edx]
  005bf	69 c0 db 00 00
	00		 imul	 eax, 219		; 000000dbH
  005c5	99		 cdq
  005c6	b9 ff 00 00 00	 mov	 ecx, 255		; 000000ffH
  005cb	f7 f9		 idiv	 ecx
  005cd	83 c0 10	 add	 eax, 16			; 00000010H
  005d0	3d eb 00 00 00	 cmp	 eax, 235		; 000000ebH
  005d5	7e 0c		 jle	 SHORT $LN24@OpenMediaF@2
  005d7	c7 85 38 fd ff
	ff eb 00 00 00	 mov	 DWORD PTR tv346[ebp], 235 ; 000000ebH
  005e1	eb 37		 jmp	 SHORT $LN25@OpenMediaF@2
$LN24@OpenMediaF@2:
  005e3	8b 95 44 fd ff
	ff		 mov	 edx, DWORD PTR _j$[ebp]
  005e9	0f af 95 10 fe
	ff ff		 imul	 edx, DWORD PTR _cinfo$[ebp+104]
  005f0	8b 85 5c ff ff
	ff		 mov	 eax, DWORD PTR _i$[ebp]
  005f6	8b 8d 4c fd ff
	ff		 mov	 ecx, DWORD PTR _buffer$[ebp]
  005fc	8b 04 81	 mov	 eax, DWORD PTR [ecx+eax*4]
  005ff	0f b6 04 10	 movzx	 eax, BYTE PTR [eax+edx]
  00603	69 c0 db 00 00
	00		 imul	 eax, 219		; 000000dbH
  00609	99		 cdq
  0060a	b9 ff 00 00 00	 mov	 ecx, 255		; 000000ffH
  0060f	f7 f9		 idiv	 ecx
  00611	83 c0 10	 add	 eax, 16			; 00000010H
  00614	89 85 38 fd ff
	ff		 mov	 DWORD PTR tv346[ebp], eax
$LN25@OpenMediaF@2:
  0061a	8b 95 38 fd ff
	ff		 mov	 edx, DWORD PTR tv346[ebp]
  00620	89 95 3c fd ff
	ff		 mov	 DWORD PTR tv347[ebp], edx
$LN27@OpenMediaF@2:
  00626	8b 85 58 fd ff
	ff		 mov	 eax, DWORD PTR _pDestBuf$[ebp]
  0062c	8a 8d 3c fd ff
	ff		 mov	 cl, BYTE PTR tv347[ebp]
  00632	88 08		 mov	 BYTE PTR [eax], cl

; 550  :                 ++pDestBuf;

  00634	8b 95 58 fd ff
	ff		 mov	 edx, DWORD PTR _pDestBuf$[ebp]
  0063a	83 c2 01	 add	 edx, 1
  0063d	89 95 58 fd ff
	ff		 mov	 DWORD PTR _pDestBuf$[ebp], edx

; 551  :                 if (j%2)

  00643	8b 85 44 fd ff
	ff		 mov	 eax, DWORD PTR _j$[ebp]
  00649	25 01 00 00 80	 and	 eax, -2147483647	; 80000001H
  0064e	79 05		 jns	 SHORT $LN37@OpenMediaF@2
  00650	48		 dec	 eax
  00651	83 c8 fe	 or	 eax, -2			; fffffffeH
  00654	40		 inc	 eax
$LN37@OpenMediaF@2:
  00655	85 c0		 test	 eax, eax
  00657	0f 84 bb 00 00
	00		 je	 $LN2@OpenMediaF@2

; 552  :                 {
; 553  :                     *pDestBuf = LIMIT_CbCr(buffer[i][j * cinfo.output_components + 2]);

  0065d	8b 8d 44 fd ff
	ff		 mov	 ecx, DWORD PTR _j$[ebp]
  00663	0f af 8d 10 fe
	ff ff		 imul	 ecx, DWORD PTR _cinfo$[ebp+104]
  0066a	8b 95 5c ff ff
	ff		 mov	 edx, DWORD PTR _i$[ebp]
  00670	8b 85 4c fd ff
	ff		 mov	 eax, DWORD PTR _buffer$[ebp]
  00676	8b 14 90	 mov	 edx, DWORD PTR [eax+edx*4]
  00679	0f b6 44 0a 02	 movzx	 eax, BYTE PTR [edx+ecx+2]
  0067e	83 f8 10	 cmp	 eax, 16			; 00000010H
  00681	7d 0c		 jge	 SHORT $LN30@OpenMediaF@2
  00683	c7 85 34 fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv373[ebp], 16 ; 00000010H
  0068d	eb 67		 jmp	 SHORT $LN31@OpenMediaF@2
$LN30@OpenMediaF@2:
  0068f	8b 8d 44 fd ff
	ff		 mov	 ecx, DWORD PTR _j$[ebp]
  00695	0f af 8d 10 fe
	ff ff		 imul	 ecx, DWORD PTR _cinfo$[ebp+104]
  0069c	8b 95 5c ff ff
	ff		 mov	 edx, DWORD PTR _i$[ebp]
  006a2	8b 85 4c fd ff
	ff		 mov	 eax, DWORD PTR _buffer$[ebp]
  006a8	8b 14 90	 mov	 edx, DWORD PTR [eax+edx*4]
  006ab	0f b6 44 0a 02	 movzx	 eax, BYTE PTR [edx+ecx+2]
  006b0	3d f0 00 00 00	 cmp	 eax, 240		; 000000f0H
  006b5	7e 0c		 jle	 SHORT $LN28@OpenMediaF@2
  006b7	c7 85 30 fd ff
	ff f0 00 00 00	 mov	 DWORD PTR tv372[ebp], 240 ; 000000f0H
  006c1	eb 27		 jmp	 SHORT $LN29@OpenMediaF@2
$LN28@OpenMediaF@2:
  006c3	8b 8d 44 fd ff
	ff		 mov	 ecx, DWORD PTR _j$[ebp]
  006c9	0f af 8d 10 fe
	ff ff		 imul	 ecx, DWORD PTR _cinfo$[ebp+104]
  006d0	8b 95 5c ff ff
	ff		 mov	 edx, DWORD PTR _i$[ebp]
  006d6	8b 85 4c fd ff
	ff		 mov	 eax, DWORD PTR _buffer$[ebp]
  006dc	8b 14 90	 mov	 edx, DWORD PTR [eax+edx*4]
  006df	0f b6 44 0a 02	 movzx	 eax, BYTE PTR [edx+ecx+2]
  006e4	89 85 30 fd ff
	ff		 mov	 DWORD PTR tv372[ebp], eax
$LN29@OpenMediaF@2:
  006ea	8b 8d 30 fd ff
	ff		 mov	 ecx, DWORD PTR tv372[ebp]
  006f0	89 8d 34 fd ff
	ff		 mov	 DWORD PTR tv373[ebp], ecx
$LN31@OpenMediaF@2:
  006f6	8b 95 58 fd ff
	ff		 mov	 edx, DWORD PTR _pDestBuf$[ebp]
  006fc	8a 85 34 fd ff
	ff		 mov	 al, BYTE PTR tv373[ebp]
  00702	88 02		 mov	 BYTE PTR [edx], al

; 554  :                     ++pDestBuf;

  00704	8b 8d 58 fd ff
	ff		 mov	 ecx, DWORD PTR _pDestBuf$[ebp]
  0070a	83 c1 01	 add	 ecx, 1
  0070d	89 8d 58 fd ff
	ff		 mov	 DWORD PTR _pDestBuf$[ebp], ecx

; 555  :                 }
; 556  :                 else

  00713	e9 b7 00 00 00	 jmp	 $LN1@OpenMediaF@2
$LN2@OpenMediaF@2:

; 557  :                 {
; 558  :                     *pDestBuf = LIMIT_CbCr(buffer[i][j * cinfo.output_components + 1]);

  00718	8b 95 44 fd ff
	ff		 mov	 edx, DWORD PTR _j$[ebp]
  0071e	0f af 95 10 fe
	ff ff		 imul	 edx, DWORD PTR _cinfo$[ebp+104]
  00725	8b 85 5c ff ff
	ff		 mov	 eax, DWORD PTR _i$[ebp]
  0072b	8b 8d 4c fd ff
	ff		 mov	 ecx, DWORD PTR _buffer$[ebp]
  00731	8b 04 81	 mov	 eax, DWORD PTR [ecx+eax*4]
  00734	0f b6 4c 10 01	 movzx	 ecx, BYTE PTR [eax+edx+1]
  00739	83 f9 10	 cmp	 ecx, 16			; 00000010H
  0073c	7d 0c		 jge	 SHORT $LN34@OpenMediaF@2
  0073e	c7 85 2c fd ff
	ff 10 00 00 00	 mov	 DWORD PTR tv397[ebp], 16 ; 00000010H
  00748	eb 68		 jmp	 SHORT $LN35@OpenMediaF@2
$LN34@OpenMediaF@2:
  0074a	8b 95 44 fd ff
	ff		 mov	 edx, DWORD PTR _j$[ebp]
  00750	0f af 95 10 fe
	ff ff		 imul	 edx, DWORD PTR _cinfo$[ebp+104]
  00757	8b 85 5c ff ff
	ff		 mov	 eax, DWORD PTR _i$[ebp]
  0075d	8b 8d 4c fd ff
	ff		 mov	 ecx, DWORD PTR _buffer$[ebp]
  00763	8b 04 81	 mov	 eax, DWORD PTR [ecx+eax*4]
  00766	0f b6 4c 10 01	 movzx	 ecx, BYTE PTR [eax+edx+1]
  0076b	81 f9 f0 00 00
	00		 cmp	 ecx, 240		; 000000f0H
  00771	7e 0c		 jle	 SHORT $LN32@OpenMediaF@2
  00773	c7 85 28 fd ff
	ff f0 00 00 00	 mov	 DWORD PTR tv396[ebp], 240 ; 000000f0H
  0077d	eb 27		 jmp	 SHORT $LN33@OpenMediaF@2
$LN32@OpenMediaF@2:
  0077f	8b 95 44 fd ff
	ff		 mov	 edx, DWORD PTR _j$[ebp]
  00785	0f af 95 10 fe
	ff ff		 imul	 edx, DWORD PTR _cinfo$[ebp+104]
  0078c	8b 85 5c ff ff
	ff		 mov	 eax, DWORD PTR _i$[ebp]
  00792	8b 8d 4c fd ff
	ff		 mov	 ecx, DWORD PTR _buffer$[ebp]
  00798	8b 04 81	 mov	 eax, DWORD PTR [ecx+eax*4]
  0079b	0f b6 4c 10 01	 movzx	 ecx, BYTE PTR [eax+edx+1]
  007a0	89 8d 28 fd ff
	ff		 mov	 DWORD PTR tv396[ebp], ecx
$LN33@OpenMediaF@2:
  007a6	8b 95 28 fd ff
	ff		 mov	 edx, DWORD PTR tv396[ebp]
  007ac	89 95 2c fd ff
	ff		 mov	 DWORD PTR tv397[ebp], edx
$LN35@OpenMediaF@2:
  007b2	8b 85 58 fd ff
	ff		 mov	 eax, DWORD PTR _pDestBuf$[ebp]
  007b8	8a 8d 2c fd ff
	ff		 mov	 cl, BYTE PTR tv397[ebp]
  007be	88 08		 mov	 BYTE PTR [eax], cl

; 559  :                     ++pDestBuf;

  007c0	8b 95 58 fd ff
	ff		 mov	 edx, DWORD PTR _pDestBuf$[ebp]
  007c6	83 c2 01	 add	 edx, 1
  007c9	89 95 58 fd ff
	ff		 mov	 DWORD PTR _pDestBuf$[ebp], edx
$LN1@OpenMediaF@2:

; 560  :                 }
; 561  :             }

  007cf	e9 68 fd ff ff	 jmp	 $LN4@OpenMediaF@2
$LN3@OpenMediaF@2:

; 562  :         }

  007d4	e9 23 fd ff ff	 jmp	 $LN7@OpenMediaF@2
$LN6@OpenMediaF@2:

; 563  :     }

  007d9	e9 d0 fc ff ff	 jmp	 $LN10@OpenMediaF@2
$LN9@OpenMediaF@2:

; 564  : 
; 565  :     // Finish decompression
; 566  :     (void)jpeg_finish_decompress(&cinfo);

  007de	8d 85 a8 fd ff
	ff		 lea	 eax, DWORD PTR _cinfo$[ebp]
  007e4	50		 push	 eax
  007e5	e8 00 00 00 00	 call	 _jpeg_finish_decompress
  007ea	83 c4 04	 add	 esp, 4

; 567  : 
; 568  :     // Release the JPEG decompression object
; 569  :     jpeg_destroy_decompress(&cinfo);

  007ed	8d 8d a8 fd ff
	ff		 lea	 ecx, DWORD PTR _cinfo$[ebp]
  007f3	51		 push	 ecx
  007f4	e8 00 00 00 00	 call	 _jpeg_destroy_decompress
  007f9	83 c4 04	 add	 esp, 4

; 570  : 
; 571  :     // Close the input stream (file)
; 572  :     fclose(infile);

  007fc	8b 95 50 fd ff
	ff		 mov	 edx, DWORD PTR _infile$[ebp]
  00802	52		 push	 edx
  00803	e8 00 00 00 00	 call	 _fclose
  00808	83 c4 04	 add	 esp, 4

; 573  : 
; 574  :     m_pParent->FreeOriginalFrameBuffer();

  0080b	8b 85 40 fd ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00811	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  00814	e8 00 00 00 00	 call	 ?FreeOriginalFrameBuffer@CStillSource@@AAEXXZ ; CStillSource::FreeOriginalFrameBuffer

; 575  :     m_pParent->m_OriginalFrameBuffer = pFrameBuf;

  00819	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0081f	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00822	8b 85 5c fd ff
	ff		 mov	 eax, DWORD PTR _pFrameBuf$[ebp]
  00828	89 82 90 00 00
	00		 mov	 DWORD PTR [edx+144], eax

; 576  :     m_pParent->m_OriginalFrame.pData = pStartFrame;

  0082e	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00834	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00837	8b 45 f4	 mov	 eax, DWORD PTR _pStartFrame$[ebp]
  0083a	89 82 94 00 00
	00		 mov	 DWORD PTR [edx+148], eax

; 577  :     m_pParent->m_LinePitch = LinePitch;

  00840	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00846	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00849	8b 45 fc	 mov	 eax, DWORD PTR _LinePitch$[ebp]
  0084c	89 82 c8 00 00
	00		 mov	 DWORD PTR [edx+200], eax

; 578  :     m_pParent->m_InitialHeight = h;

  00852	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00858	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  0085b	8b 45 ec	 mov	 eax, DWORD PTR _h$[ebp]
  0085e	89 42 74	 mov	 DWORD PTR [edx+116], eax

; 579  :     m_pParent->m_InitialWidth = w;

  00861	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00867	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  0086a	8b 45 f0	 mov	 eax, DWORD PTR _w$[ebp]
  0086d	89 42 70	 mov	 DWORD PTR [edx+112], eax

; 580  :     m_pParent->m_Height = h;

  00870	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00876	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00879	8b 45 ec	 mov	 eax, DWORD PTR _h$[ebp]
  0087c	89 42 7c	 mov	 DWORD PTR [edx+124], eax

; 581  :     m_pParent->m_Width = w;

  0087f	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00885	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00888	8b 45 f0	 mov	 eax, DWORD PTR _w$[ebp]
  0088b	89 42 78	 mov	 DWORD PTR [edx+120], eax

; 582  :     m_pParent->m_SquarePixels = Square;

  0088e	8b 8d 40 fd ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00894	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00897	8b 85 48 fd ff
	ff		 mov	 eax, DWORD PTR _Square$[ebp]
  0089d	89 82 c0 00 00
	00		 mov	 DWORD PTR [edx+192], eax

; 583  : 
; 584  :     return TRUE;

  008a3	b8 01 00 00 00	 mov	 eax, 1
$LN22@OpenMediaF@2:

; 585  : }

  008a8	5e		 pop	 esi
  008a9	8b 4d e8	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  008ac	33 cd		 xor	 ecx, ebp
  008ae	e8 00 00 00 00	 call	 @__security_check_cookie@4
  008b3	8b e5		 mov	 esp, ebp
  008b5	5d		 pop	 ebp
  008b6	c2 04 00	 ret	 4
?OpenMediaFile@CJpegHelper@@UAEHABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z ENDP ; CJpegHelper::OpenMediaFile
END
