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

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

INCLUDELIB OLDNAMES

PUBLIC	??_C@_1BA@FJJBCNDC@?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BC@EFEBCBGB@?$AAr?$AAe?$AAs?$AAe?$AAr?$AAv?$AAe?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BO@LNCMEOOC@?$AAp?$AAu?$AAb?$AAl?$AAi?$AAc?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BM@OEFNAPKD@?$AAm?$AAi?$AAs?$AAc?$AAe?$AAl?$AAl?$AAa?$AAn?$AAi?$AAo?$AAu?$AAs?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BA@CMDIGMLP@?$AAc?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@ ; `string'
PUBLIC	??_C@_1O@LHLCKFKO@?$AAf?$AAu?$AAt?$AAu?$AAr?$AAe?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BA@BJGEONAH@?$AAc?$AAu?$AAr?$AAr?$AAe?$AAn?$AAt?$AA?$AA@ ; `string'
PUBLIC	??_C@_13IPNMLBEF@?$AA?$PL?$AA?$AA@		; `string'
PUBLIC	??_C@_13NHLPKBBD@?$AA?t?$AA?$AA@		; `string'
PUBLIC	??_C@_13OIBLBGOI@?$AA?n?$AA?$AA@		; `string'
PUBLIC	??_C@_13GHHJIBLP@?$AA?j?$AA?$AA@		; `string'
PUBLIC	??_C@_13KCMNKJFA@?$AA?b?$AA?$AA@		; `string'
PUBLIC	??_C@_13MNHAEJDE@?$AA?h?$AA?$AA@		; `string'
PUBLIC	??_C@_13IMEGBNL@?$AA?$OA?$AA?$AA@		; `string'
PUBLIC	??_C@_13OGKCDBKF@?$AA?$LG?$AA?$AA@		; `string'
PUBLIC	??_C@_13IBGFJGAI@?$AA?$KD?$AA?$AA@		; `string'
PUBLIC	??_C@_13DJNJPBGN@?$AA?$KC?$AA?$AA@		; `string'
PUBLIC	??_C@_13ONAPGLIB@?$CB?$CC?$AA?$AA@		; `string'
PUBLIC	??_C@_13JLKKHOCP@?$AA?$LP?$AA?$AA@		; `string'
PUBLIC	??_C@_13DBKDLGKE@?$AA?$LN?$AA?$AA@		; `string'
PUBLIC	??_C@_13MDMJGOHJ@?$AA?$LA?$AA?$AA@		; `string'
PUBLIC	??_C@_13HDAPEONF@?$AA?$KO?$AA?$AA@		; `string'
PUBLIC	??_C@_1M@PNEAPPIB@?$AAT?$AAV?$AA?9?$AAM?$AAA?$AA?$AA@ ; `string'
PUBLIC	??_C@_1M@NNEBGCJF@?$AAT?$AAV?$AA?9?$AA1?$AA4?$AA?$AA@ ; `string'
PUBLIC	??_C@_1M@GHGDLBBI@?$AAT?$AAV?$AA?9?$AAP?$AAG?$AA?$AA@ ; `string'
PUBLIC	??_C@_19ICDCDNJG@?$AAT?$AAV?$AA?9?$AAG?$AA?$AA@	; `string'
PUBLIC	??_C@_1M@CLFDEAEM@?$AAT?$AAV?$AA?9?$AAY?$AA7?$AA?$AA@ ; `string'
PUBLIC	??_C@_19DCPEBNDK@?$AAT?$AAV?$AA?9?$AAY?$AA?$AA@	; `string'
PUBLIC	??_C@_1BI@EFBFEOLC@?$AA?$CI?$AAN?$AAO?$AAT?$AA?5?$AAR?$AAA?$AAT?$AAE?$AAD?$AA?$CJ?$AA?$AA@ ; `string'
PUBLIC	?Info@@3PAY1BJ@BAA@_WA				; Info
PUBLIC	?NewInfo@@3PAY1BJ@BAA@_WA			; NewInfo
PUBLIC	?Mode@@3HA					; Mode
PUBLIC	?Type@@3HA					; Type
PUBLIC	?InfoCheckSum@@3DA				; InfoCheckSum
PUBLIC	?LastCode@@3HA					; LastCode
PUBLIC	?CCBuf@@3PAY0BAA@_WA				; CCBuf
PUBLIC	?CC_Clock@@3HA					; CC_Clock
PUBLIC	?CC_Gap@@3HA					; CC_Gap
PUBLIC	?pInfo@@3PA_WA					; pInfo
PUBLIC	?Ratings@@3PAPA_WA				; Ratings
PUBLIC	?RowData@@3PAHA					; RowData
PUBLIC	?SpecialChars@@3PAPA_WA				; SpecialChars
PUBLIC	?Modes@@3PAPA_WA				; Modes
PUBLIC	?CCDisplayMode@@3HA				; CCDisplayMode
PUBLIC	??_C@_1BA@KMJLPCNF@?$AA?$BL?$AA?$FL?$AA3?$AA3?$AAm?$AA?$CF?$AA?$CF?$AA?$AA@ ; `string'
PUBLIC	??_C@_1DE@MIKPHIAB@?$AAT?$AAI?$AAM?$AAE?$AAC?$AAO?$AAD?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1EG@BOAKNFKF@?$AAL?$AAE?$AAN?$AAG?$AAT?$AAH?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AAo?$AAf?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3@ ; `string'
PUBLIC	??_C@_1BE@FONPCFBK@?$AAT?$AAI?$AAT?$AAL?$AAE?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CA@MPLMOKLI@?$AAR?$AAA?$AAT?$AAI?$AAN?$AAG?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?5?$AA?$CI?$AA?$CF?$AAd?$AA?$CJ?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BC@LCHFCNOL@?$AAV?$AAI?$AAO?$AAL?$AAE?$AAN?$AAC?$AAE?$AA?$AA@ ; `string'
PUBLIC	??_C@_1O@HPCNKNMM@?$AAS?$AAE?$AAX?$AAU?$AAA?$AAL?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BC@HEMCLPBJ@?$AAL?$AAA?$AAN?$AAG?$AAU?$AAA?$AAG?$AAE?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BI@PIIKNFKL@?$AAN?$AAE?$AAT?$AAW?$AAO?$AAR?$AAK?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BC@LOJAINCG@?$AAC?$AAA?$AAL?$AAL?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ ; `string'
PUBLIC	??_C@_1EG@GPMDOPJI@?$AAC?$AAU?$AAR?$AA?4?$AAT?$AAI?$AAM?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?1?$AA?$CF?$AA0?$AA4?$AAd?$AA?5?$AAU@ ; `string'
PUBLIC	??_C@_1CC@JFPGMOCH@?$AAT?$AAI?$AAM?$AAE?$AAZ?$AAO?$AAN?$AAE?$AA?3?$AA?5?$AAU?$AAT?$AAC?$AA?9?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BC@MJDNNMCO@?$AAD?$AAE?$AAS?$AAC?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ ; `string'
PUBLIC	??_C@_1M@OGEOKCEA@?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@ ; `string'
PUBLIC	??_C@_1M@OCKMCADJ@?$AA?$CF?$AA0?$AA4?$AAX?$AA?6?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CI@NGPGBM@?$AA?$BL?$AA?$FL?$AA3?$AA5?$AAm?$AAW?$AAE?$AAB?$AAT?$AAV?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@ ; `string'
?Info@@3PAY1BJ@BAA@_WA DW 0c800H DUP (?)		; Info
?NewInfo@@3PAY1BJ@BAA@_WA DW 0c800H DUP (?)		; NewInfo
?Mode@@3HA DD	01H DUP (?)				; Mode
?Type@@3HA DD	01H DUP (?)				; Type
?InfoCheckSum@@3DA DB 01H DUP (?)			; InfoCheckSum
	ALIGN	4

?LastCode@@3HA DD 01H DUP (?)				; LastCode
?CCBuf@@3PAY0BAA@_WA DW 0300H DUP (?)			; CCBuf
?CC_Clock@@3HA DD 01H DUP (?)				; CC_Clock
?CC_Gap@@3HA DD	01H DUP (?)				; CC_Gap
;	COMDAT ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
_BSS	SEGMENT
?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA DD 01H DUP (?) ; `CCdecode'::`2'::ScreenToWrite
_BSS	ENDS
;	COMDAT ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
_BSS	SEGMENT
?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA DD 01H DUP (?)	; `CCdecode'::`2'::CursorPos
_BSS	ENDS
;	COMDAT ?ForeColor@?1??CCdecode@@YAHHHH@Z@4DA
_BSS	SEGMENT
?ForeColor@?1??CCdecode@@YAHHHH@Z@4DA DB 01H DUP (?)	; `CCdecode'::`2'::ForeColor
_BSS	ENDS
;	COMDAT ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A
_BSS	SEGMENT
?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A DD 01H DUP (?) ; `CCdecode'::`2'::Mode
_BSS	ENDS
;	COMDAT ?ModeRows@?1??CCdecode@@YAHHHH@Z@4HA
_BSS	SEGMENT
?ModeRows@?1??CCdecode@@YAHHHH@Z@4HA DD 01H DUP (?)	; `CCdecode'::`2'::ModeRows
_BSS	ENDS
;	COMDAT ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA
_BSS	SEGMENT
?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA DD 01H DUP (?)	; `CCdecode'::`2'::bCaptureText
_BSS	ENDS
;	COMDAT ?BadCount@?1??CCdecode@@YAHHHH@Z@4HA
_BSS	SEGMENT
?BadCount@?1??CCdecode@@YAHHHH@Z@4HA DD 01H DUP (?)	; `CCdecode'::`2'::BadCount
;	COMDAT ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
_DATA	SEGMENT
?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A DD 01H	; `CCdecode'::`2'::ResetState
	DW	020H
	ORG $+2
	DD	00H
	DD	07H
	DD	00H
	DD	00H
	DD	00H
_DATA	ENDS
;	COMDAT ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
_DATA	SEGMENT
?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A DD 01H ; `CCdecode'::`2'::CurrentState
	DW	020H
	ORG $+2
	DD	00H
	DD	07H
	DD	00H
	DD	00H
	DD	00H
_DATA	ENDS
;	COMDAT ?LastIndent@?1??CCdecode@@YAHHHH@Z@4HA
_DATA	SEGMENT
?LastIndent@?1??CCdecode@@YAHHHH@Z@4HA DD 0ffffffffH	; `CCdecode'::`2'::LastIndent
_DATA	ENDS
;	COMDAT ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
_DATA	SEGMENT
?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA DD 0eH		; `CCdecode'::`2'::CursorRow
_DATA	ENDS
;	COMDAT ??_C@_1CI@NGPGBM@?$AA?$BL?$AA?$FL?$AA3?$AA5?$AAm?$AAW?$AAE?$AAB?$AAT?$AAV?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@
CONST	SEGMENT
??_C@_1CI@NGPGBM@?$AA?$BL?$AA?$FL?$AA3?$AA5?$AAm?$AAW?$AAE?$AAB?$AAT?$AAV?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@ DB 01bH
	DB	00H, '[', 00H, '3', 00H, '5', 00H, 'm', 00H, 'W', 00H, 'E', 00H
	DB	'B', 00H, 'T', 00H, 'V', 00H, ':', 00H, ' ', 00H, '%', 00H, 's'
	DB	00H, 01bH, 00H, '[', 00H, '0', 00H, 'm', 00H, 0aH, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1M@OCKMCADJ@?$AA?$CF?$AA0?$AA4?$AAX?$AA?6?$AA?$AA@
CONST	SEGMENT
??_C@_1M@OCKMCADJ@?$AA?$CF?$AA0?$AA4?$AAX?$AA?6?$AA?$AA@ DB '%', 00H, '0', 00H
	DB	'4', 00H, 'X', 00H, 0aH, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1M@OGEOKCEA@?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@
CONST	SEGMENT
??_C@_1M@OGEOKCEA@?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@ DB 01bH, 00H, '['
	DB	00H, '0', 00H, 'm', 00H, 0aH, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1BC@MJDNNMCO@?$AAD?$AAE?$AAS?$AAC?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
CONST	SEGMENT
??_C@_1BC@MJDNNMCO@?$AAD?$AAE?$AAS?$AAC?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ DB 'D'
	DB	00H, 'E', 00H, 'S', 00H, 'C', 00H, ':', 00H, ' ', 00H, '%', 00H
	DB	's', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1CC@JFPGMOCH@?$AAT?$AAI?$AAM?$AAE?$AAZ?$AAO?$AAN?$AAE?$AA?3?$AA?5?$AAU?$AAT?$AAC?$AA?9?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CC@JFPGMOCH@?$AAT?$AAI?$AAM?$AAE?$AAZ?$AAO?$AAN?$AAE?$AA?3?$AA?5?$AAU?$AAT?$AAC?$AA?9?$AA?$CF?$AAd?$AA?$AA@ DB 'T'
	DB	00H, 'I', 00H, 'M', 00H, 'E', 00H, 'Z', 00H, 'O', 00H, 'N', 00H
	DB	'E', 00H, ':', 00H, ' ', 00H, 'U', 00H, 'T', 00H, 'C', 00H, '-'
	DB	00H, '%', 00H, 'd', 00H, 00H, 00H		; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@GPMDOPJI@?$AAC?$AAU?$AAR?$AA?4?$AAT?$AAI?$AAM?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?1?$AA?$CF?$AA0?$AA4?$AAd?$AA?5?$AAU@
CONST	SEGMENT
??_C@_1EG@GPMDOPJI@?$AAC?$AAU?$AAR?$AA?4?$AAT?$AAI?$AAM?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?1?$AA?$CF?$AA0?$AA4?$AAd?$AA?5?$AAU@ DB 'C'
	DB	00H, 'U', 00H, 'R', 00H, '.', 00H, 'T', 00H, 'I', 00H, 'M', 00H
	DB	'E', 00H, ':', 00H, ' ', 00H, '%', 00H, 'd', 00H, ':', 00H, '%'
	DB	00H, '0', 00H, '2', 00H, 'd', 00H, ' ', 00H, '%', 00H, 'd', 00H
	DB	'/', 00H, '%', 00H, '0', 00H, '2', 00H, 'd', 00H, '/', 00H, '%'
	DB	00H, '0', 00H, '4', 00H, 'd', 00H, ' ', 00H, 'U', 00H, 'T', 00H
	DB	'C', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1BC@LOJAINCG@?$AAC?$AAA?$AAL?$AAL?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
CONST	SEGMENT
??_C@_1BC@LOJAINCG@?$AAC?$AAA?$AAL?$AAL?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ DB 'C'
	DB	00H, 'A', 00H, 'L', 00H, 'L', 00H, ':', 00H, ' ', 00H, '%', 00H
	DB	's', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1BI@PIIKNFKL@?$AAN?$AAE?$AAT?$AAW?$AAO?$AAR?$AAK?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
CONST	SEGMENT
??_C@_1BI@PIIKNFKL@?$AAN?$AAE?$AAT?$AAW?$AAO?$AAR?$AAK?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ DB 'N'
	DB	00H, 'E', 00H, 'T', 00H, 'W', 00H, 'O', 00H, 'R', 00H, 'K', 00H
	DB	':', 00H, ' ', 00H, '%', 00H, 's', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1BC@HEMCLPBJ@?$AAL?$AAA?$AAN?$AAG?$AAU?$AAA?$AAG?$AAE?$AA?$AA@
CONST	SEGMENT
??_C@_1BC@HEMCLPBJ@?$AAL?$AAA?$AAN?$AAG?$AAU?$AAA?$AAG?$AAE?$AA?$AA@ DB 'L'
	DB	00H, 'A', 00H, 'N', 00H, 'G', 00H, 'U', 00H, 'A', 00H, 'G', 00H
	DB	'E', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1O@HPCNKNMM@?$AAS?$AAE?$AAX?$AAU?$AAA?$AAL?$AA?$AA@
CONST	SEGMENT
??_C@_1O@HPCNKNMM@?$AAS?$AAE?$AAX?$AAU?$AAA?$AAL?$AA?$AA@ DB 'S', 00H, 'E'
	DB	00H, 'X', 00H, 'U', 00H, 'A', 00H, 'L', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1BC@LCHFCNOL@?$AAV?$AAI?$AAO?$AAL?$AAE?$AAN?$AAC?$AAE?$AA?$AA@
CONST	SEGMENT
??_C@_1BC@LCHFCNOL@?$AAV?$AAI?$AAO?$AAL?$AAE?$AAN?$AAC?$AAE?$AA?$AA@ DB 'V'
	DB	00H, 'I', 00H, 'O', 00H, 'L', 00H, 'E', 00H, 'N', 00H, 'C', 00H
	DB	'E', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1CA@MPLMOKLI@?$AAR?$AAA?$AAT?$AAI?$AAN?$AAG?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?5?$AA?$CI?$AA?$CF?$AAd?$AA?$CJ?$AA?$AA@
CONST	SEGMENT
??_C@_1CA@MPLMOKLI@?$AAR?$AAA?$AAT?$AAI?$AAN?$AAG?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?5?$AA?$CI?$AA?$CF?$AAd?$AA?$CJ?$AA?$AA@ DB 'R'
	DB	00H, 'A', 00H, 'T', 00H, 'I', 00H, 'N', 00H, 'G', 00H, ':', 00H
	DB	' ', 00H, '%', 00H, 's', 00H, ' ', 00H, '(', 00H, '%', 00H, 'd'
	DB	00H, ')', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1BE@FONPCFBK@?$AAT?$AAI?$AAT?$AAL?$AAE?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
CONST	SEGMENT
??_C@_1BE@FONPCFBK@?$AAT?$AAI?$AAT?$AAL?$AAE?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@ DB 'T'
	DB	00H, 'I', 00H, 'T', 00H, 'L', 00H, 'E', 00H, ':', 00H, ' ', 00H
	DB	'%', 00H, 's', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1EG@BOAKNFKF@?$AAL?$AAE?$AAN?$AAG?$AAT?$AAH?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AAo?$AAf?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3@
CONST	SEGMENT
??_C@_1EG@BOAKNFKF@?$AAL?$AAE?$AAN?$AAG?$AAT?$AAH?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AAo?$AAf?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3@ DB 'L'
	DB	00H, 'E', 00H, 'N', 00H, 'G', 00H, 'T', 00H, 'H', 00H, ':', 00H
	DB	' ', 00H, '%', 00H, 'd', 00H, ':', 00H, '%', 00H, '0', 00H, '2'
	DB	00H, 'd', 00H, ':', 00H, '%', 00H, '0', 00H, '2', 00H, 'd', 00H
	DB	' ', 00H, 'o', 00H, 'f', 00H, ' ', 00H, '%', 00H, 'd', 00H, ':'
	DB	00H, '%', 00H, '0', 00H, '2', 00H, 'd', 00H, ':', 00H, '0', 00H
	DB	'0', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1DE@MIKPHIAB@?$AAT?$AAI?$AAM?$AAE?$AAC?$AAO?$AAD?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1DE@MIKPHIAB@?$AAT?$AAI?$AAM?$AAE?$AAC?$AAO?$AAD?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?$AA@ DB 'T'
	DB	00H, 'I', 00H, 'M', 00H, 'E', 00H, 'C', 00H, 'O', 00H, 'D', 00H
	DB	'E', 00H, ':', 00H, ' ', 00H, '%', 00H, 'd', 00H, '/', 00H, '%'
	DB	00H, '0', 00H, '2', 00H, 'd', 00H, ' ', 00H, '%', 00H, 'd', 00H
	DB	':', 00H, '%', 00H, '0', 00H, '2', 00H, 'd', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1BA@KMJLPCNF@?$AA?$BL?$AA?$FL?$AA3?$AA3?$AAm?$AA?$CF?$AA?$CF?$AA?$AA@
CONST	SEGMENT
??_C@_1BA@KMJLPCNF@?$AA?$BL?$AA?$FL?$AA3?$AA3?$AAm?$AA?$CF?$AA?$CF?$AA?$AA@ DB 01bH
	DB	00H, '[', 00H, '3', 00H, '3', 00H, 'm', 00H, '%', 00H, '%', 00H
	DB	00H, 00H					; `string'
CONST	ENDS
;	COMDAT ??_C@_1BA@FJJBCNDC@?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1BA@FJJBCNDC@?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?$AA@ DB 'i', 00H
	DB	'n', 00H, 'v', 00H, 'a', 00H, 'l', 00H, 'i', 00H, 'd', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1BC@EFEBCBGB@?$AAr?$AAe?$AAs?$AAe?$AAr?$AAv?$AAe?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1BC@EFEBCBGB@?$AAr?$AAe?$AAs?$AAe?$AAr?$AAv?$AAe?$AAd?$AA?$AA@ DB 'r'
	DB	00H, 'e', 00H, 's', 00H, 'e', 00H, 'r', 00H, 'v', 00H, 'e', 00H
	DB	'd', 00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1BO@LNCMEOOC@?$AAp?$AAu?$AAb?$AAl?$AAi?$AAc?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$AA@
CONST	SEGMENT
??_C@_1BO@LNCMEOOC@?$AAp?$AAu?$AAb?$AAl?$AAi?$AAc?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$AA@ DB 'p'
	DB	00H, 'u', 00H, 'b', 00H, 'l', 00H, 'i', 00H, 'c', 00H, ' ', 00H
	DB	's', 00H, 'e', 00H, 'r', 00H, 'v', 00H, 'i', 00H, 'c', 00H, 'e'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1BM@OEFNAPKD@?$AAm?$AAi?$AAs?$AAc?$AAe?$AAl?$AAl?$AAa?$AAn?$AAi?$AAo?$AAu?$AAs?$AA?$AA@
CONST	SEGMENT
??_C@_1BM@OEFNAPKD@?$AAm?$AAi?$AAs?$AAc?$AAe?$AAl?$AAl?$AAa?$AAn?$AAi?$AAo?$AAu?$AAs?$AA?$AA@ DB 'm'
	DB	00H, 'i', 00H, 's', 00H, 'c', 00H, 'e', 00H, 'l', 00H, 'l', 00H
	DB	'a', 00H, 'n', 00H, 'i', 00H, 'o', 00H, 'u', 00H, 's', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1BA@CMDIGMLP@?$AAc?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@
CONST	SEGMENT
??_C@_1BA@CMDIGMLP@?$AAc?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@ DB 'c', 00H
	DB	'h', 00H, 'a', 00H, 'n', 00H, 'n', 00H, 'e', 00H, 'l', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1O@LHLCKFKO@?$AAf?$AAu?$AAt?$AAu?$AAr?$AAe?$AA?$AA@
CONST	SEGMENT
??_C@_1O@LHLCKFKO@?$AAf?$AAu?$AAt?$AAu?$AAr?$AAe?$AA?$AA@ DB 'f', 00H, 'u'
	DB	00H, 't', 00H, 'u', 00H, 'r', 00H, 'e', 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1BA@BJGEONAH@?$AAc?$AAu?$AAr?$AAr?$AAe?$AAn?$AAt?$AA?$AA@
CONST	SEGMENT
??_C@_1BA@BJGEONAH@?$AAc?$AAu?$AAr?$AAr?$AAe?$AAn?$AAt?$AA?$AA@ DB 'c', 00H
	DB	'u', 00H, 'r', 00H, 'r', 00H, 'e', 00H, 'n', 00H, 't', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_13IPNMLBEF@?$AA?$PL?$AA?$AA@
CONST	SEGMENT
??_C@_13IPNMLBEF@?$AA?$PL?$AA?$AA@ DB 0fbH, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13NHLPKBBD@?$AA?t?$AA?$AA@
CONST	SEGMENT
??_C@_13NHLPKBBD@?$AA?t?$AA?$AA@ DB 0f4H, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_13OIBLBGOI@?$AA?n?$AA?$AA@
CONST	SEGMENT
??_C@_13OIBLBGOI@?$AA?n?$AA?$AA@ DB 0eeH, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_13GHHJIBLP@?$AA?j?$AA?$AA@
CONST	SEGMENT
??_C@_13GHHJIBLP@?$AA?j?$AA?$AA@ DB 0eaH, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_13KCMNKJFA@?$AA?b?$AA?$AA@
CONST	SEGMENT
??_C@_13KCMNKJFA@?$AA?b?$AA?$AA@ DB 0e2H, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_13MNHAEJDE@?$AA?h?$AA?$AA@
CONST	SEGMENT
??_C@_13MNHAEJDE@?$AA?h?$AA?$AA@ DB 0e8H, 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_13IMEGBNL@?$AA?$OA?$AA?$AA@
CONST	SEGMENT
??_C@_13IMEGBNL@?$AA?$OA?$AA?$AA@ DB 0e0H, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13OGKCDBKF@?$AA?$LG?$AA?$AA@
CONST	SEGMENT
??_C@_13OGKCDBKF@?$AA?$LG?$AA?$AA@ DB 0b6H, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13IBGFJGAI@?$AA?$KD?$AA?$AA@
CONST	SEGMENT
??_C@_13IBGFJGAI@?$AA?$KD?$AA?$AA@ DB 0a3H, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13DJNJPBGN@?$AA?$KC?$AA?$AA@
CONST	SEGMENT
??_C@_13DJNJPBGN@?$AA?$KC?$AA?$AA@ DB 0a2H, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13ONAPGLIB@?$CB?$CC?$AA?$AA@
CONST	SEGMENT
??_C@_13ONAPGLIB@?$CB?$CC?$AA?$AA@ DB '"!', 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_13JLKKHOCP@?$AA?$LP?$AA?$AA@
CONST	SEGMENT
??_C@_13JLKKHOCP@?$AA?$LP?$AA?$AA@ DB 0bfH, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13DBKDLGKE@?$AA?$LN?$AA?$AA@
CONST	SEGMENT
??_C@_13DBKDLGKE@?$AA?$LN?$AA?$AA@ DB 0bdH, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13MDMJGOHJ@?$AA?$LA?$AA?$AA@
CONST	SEGMENT
??_C@_13MDMJGOHJ@?$AA?$LA?$AA?$AA@ DB 0b0H, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_13HDAPEONF@?$AA?$KO?$AA?$AA@
CONST	SEGMENT
??_C@_13HDAPEONF@?$AA?$KO?$AA?$AA@ DB 0aeH, 00H, 00H, 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_1M@PNEAPPIB@?$AAT?$AAV?$AA?9?$AAM?$AAA?$AA?$AA@
CONST	SEGMENT
??_C@_1M@PNEAPPIB@?$AAT?$AAV?$AA?9?$AAM?$AAA?$AA?$AA@ DB 'T', 00H, 'V', 00H
	DB	'-', 00H, 'M', 00H, 'A', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1M@NNEBGCJF@?$AAT?$AAV?$AA?9?$AA1?$AA4?$AA?$AA@
CONST	SEGMENT
??_C@_1M@NNEBGCJF@?$AAT?$AAV?$AA?9?$AA1?$AA4?$AA?$AA@ DB 'T', 00H, 'V', 00H
	DB	'-', 00H, '1', 00H, '4', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1M@GHGDLBBI@?$AAT?$AAV?$AA?9?$AAP?$AAG?$AA?$AA@
CONST	SEGMENT
??_C@_1M@GHGDLBBI@?$AAT?$AAV?$AA?9?$AAP?$AAG?$AA?$AA@ DB 'T', 00H, 'V', 00H
	DB	'-', 00H, 'P', 00H, 'G', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_19ICDCDNJG@?$AAT?$AAV?$AA?9?$AAG?$AA?$AA@
CONST	SEGMENT
??_C@_19ICDCDNJG@?$AAT?$AAV?$AA?9?$AAG?$AA?$AA@ DB 'T', 00H, 'V', 00H, '-'
	DB	00H, 'G', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1M@CLFDEAEM@?$AAT?$AAV?$AA?9?$AAY?$AA7?$AA?$AA@
CONST	SEGMENT
??_C@_1M@CLFDEAEM@?$AAT?$AAV?$AA?9?$AAY?$AA7?$AA?$AA@ DB 'T', 00H, 'V', 00H
	DB	'-', 00H, 'Y', 00H, '7', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_19DCPEBNDK@?$AAT?$AAV?$AA?9?$AAY?$AA?$AA@
CONST	SEGMENT
??_C@_19DCPEBNDK@?$AAT?$AAV?$AA?9?$AAY?$AA?$AA@ DB 'T', 00H, 'V', 00H, '-'
	DB	00H, 'Y', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1BI@EFBFEOLC@?$AA?$CI?$AAN?$AAO?$AAT?$AA?5?$AAR?$AAA?$AAT?$AAE?$AAD?$AA?$CJ?$AA?$AA@
CONST	SEGMENT
??_C@_1BI@EFBFEOLC@?$AA?$CI?$AAN?$AAO?$AAT?$AA?5?$AAR?$AAA?$AAT?$AAE?$AAD?$AA?$CJ?$AA?$AA@ DB '('
	DB	00H, 'N', 00H, 'O', 00H, 'T', 00H, ' ', 00H, 'R', 00H, 'A', 00H
	DB	'T', 00H, 'E', 00H, 'D', 00H, ')', 00H, 00H, 00H ; `string'
?pInfo@@3PA_WA DD FLAT:?NewInfo@@3PAY1BJ@BAA@_WA	; pInfo
?Ratings@@3PAPA_WA DD FLAT:??_C@_1BI@EFBFEOLC@?$AA?$CI?$AAN?$AAO?$AAT?$AA?5?$AAR?$AAA?$AAT?$AAE?$AAD?$AA?$CJ?$AA?$AA@ ; Ratings
	DD	FLAT:??_C@_19DCPEBNDK@?$AAT?$AAV?$AA?9?$AAY?$AA?$AA@
	DD	FLAT:??_C@_1M@CLFDEAEM@?$AAT?$AAV?$AA?9?$AAY?$AA7?$AA?$AA@
	DD	FLAT:??_C@_19ICDCDNJG@?$AAT?$AAV?$AA?9?$AAG?$AA?$AA@
	DD	FLAT:??_C@_1M@GHGDLBBI@?$AAT?$AAV?$AA?9?$AAP?$AAG?$AA?$AA@
	DD	FLAT:??_C@_1M@NNEBGCJF@?$AAT?$AAV?$AA?9?$AA1?$AA4?$AA?$AA@
	DD	FLAT:??_C@_1M@PNEAPPIB@?$AAT?$AAV?$AA?9?$AAM?$AAA?$AA?$AA@
	DD	FLAT:??_C@_1BI@EFBFEOLC@?$AA?$CI?$AAN?$AAO?$AAT?$AA?5?$AAR?$AAA?$AAT?$AAE?$AAD?$AA?$CJ?$AA?$AA@
?RowData@@3PAHA DD 0aH					; RowData
	DD	00H
	DD	00H
	DD	01H
	DD	02H
	DD	03H
	DD	0bH
	DD	0cH
	DD	0dH
	DD	0eH
	DD	04H
	DD	05H
	DD	06H
	DD	07H
	DD	08H
	DD	09H
?SpecialChars@@3PAPA_WA DD FLAT:??_C@_13HDAPEONF@?$AA?$KO?$AA?$AA@ ; SpecialChars
	DD	FLAT:??_C@_13MDMJGOHJ@?$AA?$LA?$AA?$AA@
	DD	FLAT:??_C@_13DBKDLGKE@?$AA?$LN?$AA?$AA@
	DD	FLAT:??_C@_13JLKKHOCP@?$AA?$LP?$AA?$AA@
	DD	FLAT:??_C@_13ONAPGLIB@?$CB?$CC?$AA?$AA@
	DD	FLAT:??_C@_13DJNJPBGN@?$AA?$KC?$AA?$AA@
	DD	FLAT:??_C@_13IBGFJGAI@?$AA?$KD?$AA?$AA@
	DD	FLAT:??_C@_13OGKCDBKF@?$AA?$LG?$AA?$AA@
	DD	FLAT:??_C@_13IMEGBNL@?$AA?$OA?$AA?$AA@
	DD	FLAT:??_C@_13HOIJIPNN@?$AA?5?$AA?$AA@
	DD	FLAT:??_C@_13MNHAEJDE@?$AA?h?$AA?$AA@
	DD	FLAT:??_C@_13KCMNKJFA@?$AA?b?$AA?$AA@
	DD	FLAT:??_C@_13GHHJIBLP@?$AA?j?$AA?$AA@
	DD	FLAT:??_C@_13OIBLBGOI@?$AA?n?$AA?$AA@
	DD	FLAT:??_C@_13NHLPKBBD@?$AA?t?$AA?$AA@
	DD	FLAT:??_C@_13IPNMLBEF@?$AA?$PL?$AA?$AA@
?Modes@@3PAPA_WA DD FLAT:??_C@_1BA@BJGEONAH@?$AAc?$AAu?$AAr?$AAr?$AAe?$AAn?$AAt?$AA?$AA@ ; Modes
	DD	FLAT:??_C@_1O@LHLCKFKO@?$AAf?$AAu?$AAt?$AAu?$AAr?$AAe?$AA?$AA@
	DD	FLAT:??_C@_1BA@CMDIGMLP@?$AAc?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@
	DD	FLAT:??_C@_1BM@OEFNAPKD@?$AAm?$AAi?$AAs?$AAc?$AAe?$AAl?$AAl?$AAa?$AAn?$AAi?$AAo?$AAu?$AAs?$AA?$AA@
	DD	FLAT:??_C@_1BO@LNCMEOOC@?$AAp?$AAu?$AAb?$AAl?$AAi?$AAc?$AA?5?$AAs?$AAe?$AAr?$AAv?$AAi?$AAc?$AAe?$AA?$AA@
	DD	FLAT:??_C@_1BC@EFEBCBGB@?$AAr?$AAe?$AAs?$AAe?$AAr?$AAv?$AAe?$AAd?$AA?$AA@
	DD	FLAT:??_C@_1BA@FJJBCNDC@?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?$AA@
	DD	FLAT:??_C@_1BA@FJJBCNDC@?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?$AA@
	DD	FLAT:??_C@_1BA@FJJBCNDC@?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?$AA@
	DD	FLAT:??_C@_1BA@FJJBCNDC@?$AAi?$AAn?$AAv?$AAa?$AAl?$AAi?$AAd?$AA?$AA@
?CCDisplayMode@@3HA DD 01H				; CCDisplayMode
PUBLIC	?CC_GetColor@@YAKW4eCCColor@@@Z			; CC_GetColor
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\vbi_ccdecode.cpp
;	COMDAT ?CC_GetColor@@YAKW4eCCColor@@@Z
_TEXT	SEGMENT
tv64 = -4						; size = 4
_Color$ = 8						; size = 4
?CC_GetColor@@YAKW4eCCColor@@@Z PROC			; CC_GetColor, COMDAT

; 860  : {

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

; 861  :     switch(Color)

  00004	8b 45 08	 mov	 eax, DWORD PTR _Color$[ebp]
  00007	89 45 fc	 mov	 DWORD PTR tv64[ebp], eax
  0000a	8b 4d fc	 mov	 ecx, DWORD PTR tv64[ebp]
  0000d	83 e9 01	 sub	 ecx, 1
  00010	89 4d fc	 mov	 DWORD PTR tv64[ebp], ecx
  00013	83 7d fc 06	 cmp	 DWORD PTR tv64[ebp], 6
  00017	77 38		 ja	 SHORT $LN1@CC_GetColo
  00019	8b 55 fc	 mov	 edx, DWORD PTR tv64[ebp]
  0001c	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN13@CC_GetColo[edx*4]
$LN8@CC_GetColo:

; 862  :     {
; 863  :     case CC_GREEN:
; 864  :         return RGB(0,255,0);

  00023	b8 00 ff 00 00	 mov	 eax, 65280		; 0000ff00H
  00028	eb 2c		 jmp	 SHORT $LN11@CC_GetColo
$LN7@CC_GetColo:

; 865  :     case CC_BLUE:
; 866  :         return RGB(0,0,255);

  0002a	b8 00 00 ff 00	 mov	 eax, 16711680		; 00ff0000H
  0002f	eb 25		 jmp	 SHORT $LN11@CC_GetColo
$LN6@CC_GetColo:

; 867  :     case CC_CYAN:
; 868  :         return RGB(0,255,255);

  00031	b8 00 ff ff 00	 mov	 eax, 16776960		; 00ffff00H
  00036	eb 1e		 jmp	 SHORT $LN11@CC_GetColo
$LN5@CC_GetColo:

; 869  :     case CC_RED:
; 870  :         return RGB(255,0,0);

  00038	b8 ff 00 00 00	 mov	 eax, 255		; 000000ffH
  0003d	eb 17		 jmp	 SHORT $LN11@CC_GetColo
$LN4@CC_GetColo:

; 871  :     case CC_YELLOW:
; 872  :         return RGB(255,255,0);

  0003f	b8 ff ff 00 00	 mov	 eax, 65535		; 0000ffffH
  00044	eb 10		 jmp	 SHORT $LN11@CC_GetColo
$LN3@CC_GetColo:

; 873  :     case CC_MAGENTA:
; 874  :         return RGB(255,0,255);

  00046	b8 ff 00 ff 00	 mov	 eax, 16711935		; 00ff00ffH
  0004b	eb 09		 jmp	 SHORT $LN11@CC_GetColo
$LN2@CC_GetColo:

; 875  :     case CC_BLACK:
; 876  :         return RGB(0,0,0);

  0004d	33 c0		 xor	 eax, eax
  0004f	eb 05		 jmp	 SHORT $LN11@CC_GetColo
$LN1@CC_GetColo:

; 877  :     default:
; 878  :     case CC_WHITE:
; 879  :         return RGB(255,255,255);

  00051	b8 ff ff ff 00	 mov	 eax, 16777215		; 00ffffffH
$LN11@CC_GetColo:

; 880  :     }
; 881  : }

  00056	8b e5		 mov	 esp, ebp
  00058	5d		 pop	 ebp
  00059	c3		 ret	 0
  0005a	8b ff		 npad	 2
$LN13@CC_GetColo:
  0005c	00 00 00 00	 DD	 $LN8@CC_GetColo
  00060	00 00 00 00	 DD	 $LN7@CC_GetColo
  00064	00 00 00 00	 DD	 $LN6@CC_GetColo
  00068	00 00 00 00	 DD	 $LN5@CC_GetColo
  0006c	00 00 00 00	 DD	 $LN4@CC_GetColo
  00070	00 00 00 00	 DD	 $LN3@CC_GetColo
  00074	00 00 00 00	 DD	 $LN2@CC_GetColo
?CC_GetColor@@YAKW4eCCColor@@@Z ENDP			; CC_GetColor
_TEXT	ENDS
PUBLIC	__real@401a000000000000
PUBLIC	?FindClock@@YAHPAEH@Z				; FindClock
;	COMDAT __real@401a000000000000
CONST	SEGMENT
__real@401a000000000000 DQ 0401a000000000000r	; 6.5
; Function compile flags: /Odtp
CONST	ENDS
;	COMDAT ?FindClock@@YAHPAEH@Z
_TEXT	SEGMENT
_MaxCount$ = -28					; size = 4
_Remainder$ = -24					; size = 4
_MinTotal$ = -20					; size = 4
_LastPixel$ = -16					; size = 4
_i$ = -12						; size = 4
_MinCount$ = -8						; size = 4
_MaxTotal$ = -4						; size = 4
_vbiline$ = 8						; size = 4
_ClockPixels$ = 12					; size = 4
?FindClock@@YAHPAEH@Z PROC				; FindClock, COMDAT

; 119  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 1c	 sub	 esp, 28			; 0000001cH

; 120  :     int i;
; 121  :     DWORD MinTotal = 0;

  00006	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _MinTotal$[ebp], 0

; 122  :     int MinCount = 0;

  0000d	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _MinCount$[ebp], 0

; 123  :     DWORD MaxTotal = 0;

  00014	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _MaxTotal$[ebp], 0

; 124  :     int MaxCount = 0;

  0001b	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR _MaxCount$[ebp], 0

; 125  :     int LastPixel = (int)(ClockPixels * 6.5);

  00022	db 45 0c	 fild	 DWORD PTR _ClockPixels$[ebp]
  00025	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@401a000000000000
  0002b	e8 00 00 00 00	 call	 __ftol2_sse
  00030	89 45 f0	 mov	 DWORD PTR _LastPixel$[ebp], eax

; 126  :     int Remainder;
; 127  : 
; 128  :     for(i = 0; i < LastPixel; i++)

  00033	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  0003a	eb 09		 jmp	 SHORT $LN9@FindClock
$LN8@FindClock:
  0003c	8b 45 f4	 mov	 eax, DWORD PTR _i$[ebp]
  0003f	83 c0 01	 add	 eax, 1
  00042	89 45 f4	 mov	 DWORD PTR _i$[ebp], eax
$LN9@FindClock:
  00045	8b 4d f4	 mov	 ecx, DWORD PTR _i$[ebp]
  00048	3b 4d f0	 cmp	 ecx, DWORD PTR _LastPixel$[ebp]
  0004b	7d 63		 jge	 SHORT $LN7@FindClock

; 129  :     {
; 130  :         Remainder = i % ClockPixels;

  0004d	8b 45 f4	 mov	 eax, DWORD PTR _i$[ebp]
  00050	99		 cdq
  00051	f7 7d 0c	 idiv	 DWORD PTR _ClockPixels$[ebp]
  00054	89 55 e8	 mov	 DWORD PTR _Remainder$[ebp], edx

; 131  :         if(Remainder < ClockPixels / 4  || Remainder > 3 * ClockPixels / 4)

  00057	8b 45 0c	 mov	 eax, DWORD PTR _ClockPixels$[ebp]
  0005a	99		 cdq
  0005b	83 e2 03	 and	 edx, 3
  0005e	03 c2		 add	 eax, edx
  00060	c1 f8 02	 sar	 eax, 2
  00063	39 45 e8	 cmp	 DWORD PTR _Remainder$[ebp], eax
  00066	7c 14		 jl	 SHORT $LN5@FindClock
  00068	8b 45 0c	 mov	 eax, DWORD PTR _ClockPixels$[ebp]
  0006b	6b c0 03	 imul	 eax, 3
  0006e	99		 cdq
  0006f	83 e2 03	 and	 edx, 3
  00072	03 c2		 add	 eax, edx
  00074	c1 f8 02	 sar	 eax, 2
  00077	39 45 e8	 cmp	 DWORD PTR _Remainder$[ebp], eax
  0007a	7e 1a		 jle	 SHORT $LN6@FindClock
$LN5@FindClock:

; 132  :         {
; 133  :             MinTotal += vbiline[i];

  0007c	8b 55 08	 mov	 edx, DWORD PTR _vbiline$[ebp]
  0007f	03 55 f4	 add	 edx, DWORD PTR _i$[ebp]
  00082	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  00085	03 45 ec	 add	 eax, DWORD PTR _MinTotal$[ebp]
  00088	89 45 ec	 mov	 DWORD PTR _MinTotal$[ebp], eax

; 134  :             MinCount++;

  0008b	8b 4d f8	 mov	 ecx, DWORD PTR _MinCount$[ebp]
  0008e	83 c1 01	 add	 ecx, 1
  00091	89 4d f8	 mov	 DWORD PTR _MinCount$[ebp], ecx

; 135  :         }
; 136  :         else

  00094	eb 18		 jmp	 SHORT $LN4@FindClock
$LN6@FindClock:

; 137  :         {
; 138  :             MaxTotal += vbiline[i];

  00096	8b 55 08	 mov	 edx, DWORD PTR _vbiline$[ebp]
  00099	03 55 f4	 add	 edx, DWORD PTR _i$[ebp]
  0009c	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  0009f	03 45 fc	 add	 eax, DWORD PTR _MaxTotal$[ebp]
  000a2	89 45 fc	 mov	 DWORD PTR _MaxTotal$[ebp], eax

; 139  :             MaxCount++;

  000a5	8b 4d e4	 mov	 ecx, DWORD PTR _MaxCount$[ebp]
  000a8	83 c1 01	 add	 ecx, 1
  000ab	89 4d e4	 mov	 DWORD PTR _MaxCount$[ebp], ecx
$LN4@FindClock:

; 140  :         }
; 141  :     }

  000ae	eb 8c		 jmp	 SHORT $LN8@FindClock
$LN7@FindClock:

; 142  :     if(MinCount == 0 || MaxCount == 0)

  000b0	83 7d f8 00	 cmp	 DWORD PTR _MinCount$[ebp], 0
  000b4	74 06		 je	 SHORT $LN2@FindClock
  000b6	83 7d e4 00	 cmp	 DWORD PTR _MaxCount$[ebp], 0
  000ba	75 06		 jne	 SHORT $LN3@FindClock
$LN2@FindClock:

; 143  :     {
; 144  :         return 0;

  000bc	33 c0		 xor	 eax, eax
  000be	eb 18		 jmp	 SHORT $LN1@FindClock

; 145  :     }
; 146  :     else

  000c0	eb 16		 jmp	 SHORT $LN1@FindClock
$LN3@FindClock:

; 147  :     {
; 148  :         return (MaxTotal / MaxCount) - (MinTotal / MinCount);

  000c2	8b 45 fc	 mov	 eax, DWORD PTR _MaxTotal$[ebp]
  000c5	33 d2		 xor	 edx, edx
  000c7	f7 75 e4	 div	 DWORD PTR _MaxCount$[ebp]
  000ca	8b c8		 mov	 ecx, eax
  000cc	8b 45 ec	 mov	 eax, DWORD PTR _MinTotal$[ebp]
  000cf	33 d2		 xor	 edx, edx
  000d1	f7 75 f8	 div	 DWORD PTR _MinCount$[ebp]
  000d4	2b c8		 sub	 ecx, eax
  000d6	8b c1		 mov	 eax, ecx
$LN1@FindClock:

; 149  :     }
; 150  : }

  000d8	8b e5		 mov	 esp, ebp
  000da	5d		 pop	 ebp
  000db	c3		 ret	 0
?FindClock@@YAHPAEH@Z ENDP				; FindClock
_TEXT	ENDS
PUBLIC	?decodebit@@YAHPAEHH@Z				; decodebit
; Function compile flags: /Odtp
;	COMDAT ?decodebit@@YAHPAEHH@Z
_TEXT	SEGMENT
_sum$ = -8						; size = 4
_i$ = -4						; size = 4
_data$ = 8						; size = 4
_threshold$ = 12					; size = 4
_NumPixels$ = 16					; size = 4
?decodebit@@YAHPAEHH@Z PROC				; decodebit, COMDAT

; 109  : {

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

; 110  :     int i, sum = 0;

  00006	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _sum$[ebp], 0

; 111  :     for (i = 0; i < NumPixels; i++)

  0000d	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  00014	eb 09		 jmp	 SHORT $LN3@decodebit
$LN2@decodebit:
  00016	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00019	83 c0 01	 add	 eax, 1
  0001c	89 45 fc	 mov	 DWORD PTR _i$[ebp], eax
$LN3@decodebit:
  0001f	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  00022	3b 4d 10	 cmp	 ecx, DWORD PTR _NumPixels$[ebp]
  00025	7d 11		 jge	 SHORT $LN1@decodebit

; 112  :     {
; 113  :         sum += data[i];

  00027	8b 55 08	 mov	 edx, DWORD PTR _data$[ebp]
  0002a	03 55 fc	 add	 edx, DWORD PTR _i$[ebp]
  0002d	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  00030	03 45 f8	 add	 eax, DWORD PTR _sum$[ebp]
  00033	89 45 f8	 mov	 DWORD PTR _sum$[ebp], eax

; 114  :     }

  00036	eb de		 jmp	 SHORT $LN2@decodebit
$LN1@decodebit:

; 115  :     return (sum > threshold * NumPixels);

  00038	8b 4d 0c	 mov	 ecx, DWORD PTR _threshold$[ebp]
  0003b	0f af 4d 10	 imul	 ecx, DWORD PTR _NumPixels$[ebp]
  0003f	33 c0		 xor	 eax, eax
  00041	39 4d f8	 cmp	 DWORD PTR _sum$[ebp], ecx
  00044	0f 9f c0	 setg	 al

; 116  : }

  00047	8b e5		 mov	 esp, ebp
  00049	5d		 pop	 ebp
  0004a	c3		 ret	 0
?decodebit@@YAHPAEHH@Z ENDP				; decodebit
_TEXT	ENDS
PUBLIC	?parityok@@YAHH@Z				; parityok
; Function compile flags: /Odtp
;	COMDAT ?parityok@@YAHH@Z
_TEXT	SEGMENT
_j$ = -12						; size = 4
_k$ = -8						; size = 4
_mask$ = -4						; size = 4
_n$ = 8							; size = 4
?parityok@@YAHH@Z PROC					; parityok, COMDAT

; 79   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH

; 80   :     int mask=0;

  00006	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _mask$[ebp], 0

; 81   :     int j, k;
; 82   : 
; 83   :     for (k = 1, j = 0; j < 7; j++)

  0000d	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _k$[ebp], 1
  00014	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _j$[ebp], 0
  0001b	eb 09		 jmp	 SHORT $LN10@parityok
$LN9@parityok:
  0001d	8b 45 f4	 mov	 eax, DWORD PTR _j$[ebp]
  00020	83 c0 01	 add	 eax, 1
  00023	89 45 f4	 mov	 DWORD PTR _j$[ebp], eax
$LN10@parityok:
  00026	83 7d f4 07	 cmp	 DWORD PTR _j$[ebp], 7
  0002a	7d 1a		 jge	 SHORT $LN8@parityok

; 84   :     {
; 85   :         if (n & (1<<j))

  0002c	ba 01 00 00 00	 mov	 edx, 1
  00031	8b 4d f4	 mov	 ecx, DWORD PTR _j$[ebp]
  00034	d3 e2		 shl	 edx, cl
  00036	23 55 08	 and	 edx, DWORD PTR _n$[ebp]
  00039	74 09		 je	 SHORT $LN7@parityok

; 86   :         {
; 87   :             k++;

  0003b	8b 45 f8	 mov	 eax, DWORD PTR _k$[ebp]
  0003e	83 c0 01	 add	 eax, 1
  00041	89 45 f8	 mov	 DWORD PTR _k$[ebp], eax
$LN7@parityok:

; 88   :         }
; 89   :     }

  00044	eb d7		 jmp	 SHORT $LN9@parityok
$LN8@parityok:

; 90   :     if ((k & 1) == ((n>>7)&1))

  00046	8b 4d f8	 mov	 ecx, DWORD PTR _k$[ebp]
  00049	83 e1 01	 and	 ecx, 1
  0004c	8b 55 08	 mov	 edx, DWORD PTR _n$[ebp]
  0004f	c1 fa 07	 sar	 edx, 7
  00052	83 e2 01	 and	 edx, 1
  00055	3b ca		 cmp	 ecx, edx
  00057	75 0b		 jne	 SHORT $LN6@parityok

; 91   :     {
; 92   :         mask |= 0x00FF;

  00059	8b 45 fc	 mov	 eax, DWORD PTR _mask$[ebp]
  0005c	0d ff 00 00 00	 or	 eax, 255		; 000000ffH
  00061	89 45 fc	 mov	 DWORD PTR _mask$[ebp], eax
$LN6@parityok:

; 93   :     }
; 94   :     for (k = 1, j = 8; j < 15; j++)

  00064	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _k$[ebp], 1
  0006b	c7 45 f4 08 00
	00 00		 mov	 DWORD PTR _j$[ebp], 8
  00072	eb 09		 jmp	 SHORT $LN5@parityok
$LN4@parityok:
  00074	8b 4d f4	 mov	 ecx, DWORD PTR _j$[ebp]
  00077	83 c1 01	 add	 ecx, 1
  0007a	89 4d f4	 mov	 DWORD PTR _j$[ebp], ecx
$LN5@parityok:
  0007d	83 7d f4 0f	 cmp	 DWORD PTR _j$[ebp], 15	; 0000000fH
  00081	7d 1a		 jge	 SHORT $LN3@parityok

; 95   :     {
; 96   :         if (n & (1<<j))

  00083	ba 01 00 00 00	 mov	 edx, 1
  00088	8b 4d f4	 mov	 ecx, DWORD PTR _j$[ebp]
  0008b	d3 e2		 shl	 edx, cl
  0008d	23 55 08	 and	 edx, DWORD PTR _n$[ebp]
  00090	74 09		 je	 SHORT $LN2@parityok

; 97   :         {
; 98   :             k++;

  00092	8b 45 f8	 mov	 eax, DWORD PTR _k$[ebp]
  00095	83 c0 01	 add	 eax, 1
  00098	89 45 f8	 mov	 DWORD PTR _k$[ebp], eax
$LN2@parityok:

; 99   :         }
; 100  :     }

  0009b	eb d7		 jmp	 SHORT $LN4@parityok
$LN3@parityok:

; 101  :     if ((k & 1) == ((n>>15)&1))

  0009d	8b 4d f8	 mov	 ecx, DWORD PTR _k$[ebp]
  000a0	83 e1 01	 and	 ecx, 1
  000a3	8b 55 08	 mov	 edx, DWORD PTR _n$[ebp]
  000a6	c1 fa 0f	 sar	 edx, 15			; 0000000fH
  000a9	83 e2 01	 and	 edx, 1
  000ac	3b ca		 cmp	 ecx, edx
  000ae	75 0b		 jne	 SHORT $LN1@parityok

; 102  :     {
; 103  :         mask |= 0xFF00;

  000b0	8b 45 fc	 mov	 eax, DWORD PTR _mask$[ebp]
  000b3	0d 00 ff 00 00	 or	 eax, 65280		; 0000ff00H
  000b8	89 45 fc	 mov	 DWORD PTR _mask$[ebp], eax
$LN1@parityok:

; 104  :     }
; 105  :    return mask;

  000bb	8b 45 fc	 mov	 eax, DWORD PTR _mask$[ebp]

; 106  : }

  000be	8b e5		 mov	 esp, ebp
  000c0	5d		 pop	 ebp
  000c1	c3		 ret	 0
?parityok@@YAHH@Z ENDP					; parityok
PUBLIC	?CC_PaintChars@@YAXPAUHWND__@@PAUTCCChar@@PA_WPAUHDC__@@PAUtagRECT@@H@Z ; CC_PaintChars
; Function compile flags: /Odtp
;	COMDAT ?CC_PaintChars@@YAXPAUHWND__@@PAUTCCChar@@PA_WPAUHDC__@@PAUtagRECT@@H@Z
_TEXT	SEGMENT
_hTmp$ = -16						; size = 4
_sizeText$ = -12					; size = 8
_hOSDfont$ = -4						; size = 4
_hWnd$ = 8						; size = 4
_Char$ = 12						; size = 4
_szLine$ = 16						; size = 4
_hDC$ = 20						; size = 4
_PaintRect$ = 24					; size = 4
_nFontsize$ = 28					; size = 4
?CC_PaintChars@@YAXPAUHWND__@@PAUTCCChar@@PA_WPAUHDC__@@PAUtagRECT@@H@Z PROC ; CC_PaintChars, COMDAT

; 885  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H

; 886  :     SIZE sizeText;
; 887  :     HFONT hTmp, hOSDfont;
; 888  : 
; 889  :     if (hDC != NULL)

  00006	83 7d 14 00	 cmp	 DWORD PTR _hDC$[ebp], 0
  0000a	0f 84 c1 01 00
	00		 je	 $LN4@CC_PaintCh

; 890  :     {
; 891  :         hOSDfont = CreateFont(nFontsize, 0, 0, 0,
; 892  :                                 (Char->bFlash)? FW_BOLD:0,
; 893  :                                 Char->bItalics,
; 894  :                                 Char->bUnderline,
; 895  :                                 0, 0, 0, 0,
; 896  :                                 NONANTIALIASED_QUALITY,
; 897  :                                 DEFAULT_PITCH | FF_DONTCARE,
; 898  :                                 _T("Arial"));

  00010	68 00 00 00 00	 push	 OFFSET ??_C@_1M@KAKMLIHO@?$AAA?$AAr?$AAi?$AAa?$AAl?$AA?$AA@
  00015	6a 00		 push	 0
  00017	6a 03		 push	 3
  00019	6a 00		 push	 0
  0001b	6a 00		 push	 0
  0001d	6a 00		 push	 0
  0001f	6a 00		 push	 0
  00021	8b 45 0c	 mov	 eax, DWORD PTR _Char$[ebp]
  00024	8b 48 10	 mov	 ecx, DWORD PTR [eax+16]
  00027	51		 push	 ecx
  00028	8b 55 0c	 mov	 edx, DWORD PTR _Char$[ebp]
  0002b	8b 42 18	 mov	 eax, DWORD PTR [edx+24]
  0002e	50		 push	 eax
  0002f	8b 4d 0c	 mov	 ecx, DWORD PTR _Char$[ebp]
  00032	8b 51 14	 mov	 edx, DWORD PTR [ecx+20]
  00035	f7 da		 neg	 edx
  00037	1b d2		 sbb	 edx, edx
  00039	81 e2 bc 02 00
	00		 and	 edx, 700		; 000002bcH
  0003f	52		 push	 edx
  00040	6a 00		 push	 0
  00042	6a 00		 push	 0
  00044	6a 00		 push	 0
  00046	8b 45 1c	 mov	 eax, DWORD PTR _nFontsize$[ebp]
  00049	50		 push	 eax
  0004a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateFontW@56
  00050	89 45 fc	 mov	 DWORD PTR _hOSDfont$[ebp], eax

; 899  :         if (!hOSDfont) return;

  00053	83 7d fc 00	 cmp	 DWORD PTR _hOSDfont$[ebp], 0
  00057	75 05		 jne	 SHORT $LN2@CC_PaintCh
  00059	e9 73 01 00 00	 jmp	 $LN4@CC_PaintCh
$LN2@CC_PaintCh:

; 900  : 
; 901  :         hTmp = (HFONT)SelectObject(hDC, hOSDfont);

  0005e	8b 4d fc	 mov	 ecx, DWORD PTR _hOSDfont$[ebp]
  00061	51		 push	 ecx
  00062	8b 55 14	 mov	 edx, DWORD PTR _hDC$[ebp]
  00065	52		 push	 edx
  00066	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SelectObject@8
  0006c	89 45 f0	 mov	 DWORD PTR _hTmp$[ebp], eax

; 902  : 
; 903  :         if(hTmp)

  0006f	83 7d f0 00	 cmp	 DWORD PTR _hTmp$[ebp], 0
  00073	0f 84 58 01 00
	00		 je	 $LN4@CC_PaintCh

; 904  :         {
; 905  :             GetTextExtentPoint32W(hDC, szLine, wcslen(szLine), &sizeText);

  00079	8d 45 f4	 lea	 eax, DWORD PTR _sizeText$[ebp]
  0007c	50		 push	 eax
  0007d	8b 4d 10	 mov	 ecx, DWORD PTR _szLine$[ebp]
  00080	51		 push	 ecx
  00081	e8 00 00 00 00	 call	 _wcslen
  00086	83 c4 04	 add	 esp, 4
  00089	50		 push	 eax
  0008a	8b 55 10	 mov	 edx, DWORD PTR _szLine$[ebp]
  0008d	52		 push	 edx
  0008e	8b 45 14	 mov	 eax, DWORD PTR _hDC$[ebp]
  00091	50		 push	 eax
  00092	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetTextExtentPoint32W@16

; 906  : 
; 907  :             SetBkMode(hDC, TRANSPARENT);

  00098	6a 01		 push	 1
  0009a	8b 4d 14	 mov	 ecx, DWORD PTR _hDC$[ebp]
  0009d	51		 push	 ecx
  0009e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetBkMode@8

; 908  :             SetTextColor(hDC, CC_GetColor(Char->BackColor));

  000a4	8b 55 0c	 mov	 edx, DWORD PTR _Char$[ebp]
  000a7	8b 42 0c	 mov	 eax, DWORD PTR [edx+12]
  000aa	50		 push	 eax
  000ab	e8 00 00 00 00	 call	 ?CC_GetColor@@YAKW4eCCColor@@@Z ; CC_GetColor
  000b0	83 c4 04	 add	 esp, 4
  000b3	50		 push	 eax
  000b4	8b 4d 14	 mov	 ecx, DWORD PTR _hDC$[ebp]
  000b7	51		 push	 ecx
  000b8	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetTextColor@8

; 909  : 
; 910  :             TextOutW(hDC, PaintRect->left - 2, PaintRect->top, szLine, wcslen(szLine));

  000be	8b 55 10	 mov	 edx, DWORD PTR _szLine$[ebp]
  000c1	52		 push	 edx
  000c2	e8 00 00 00 00	 call	 _wcslen
  000c7	83 c4 04	 add	 esp, 4
  000ca	50		 push	 eax
  000cb	8b 45 10	 mov	 eax, DWORD PTR _szLine$[ebp]
  000ce	50		 push	 eax
  000cf	8b 4d 18	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  000d2	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  000d5	52		 push	 edx
  000d6	8b 45 18	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  000d9	8b 08		 mov	 ecx, DWORD PTR [eax]
  000db	83 e9 02	 sub	 ecx, 2
  000de	51		 push	 ecx
  000df	8b 55 14	 mov	 edx, DWORD PTR _hDC$[ebp]
  000e2	52		 push	 edx
  000e3	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TextOutW@20

; 911  :             TextOutW(hDC, PaintRect->left + 2, PaintRect->top, szLine, wcslen(szLine));

  000e9	8b 45 10	 mov	 eax, DWORD PTR _szLine$[ebp]
  000ec	50		 push	 eax
  000ed	e8 00 00 00 00	 call	 _wcslen
  000f2	83 c4 04	 add	 esp, 4
  000f5	50		 push	 eax
  000f6	8b 4d 10	 mov	 ecx, DWORD PTR _szLine$[ebp]
  000f9	51		 push	 ecx
  000fa	8b 55 18	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  000fd	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  00100	50		 push	 eax
  00101	8b 4d 18	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  00104	8b 11		 mov	 edx, DWORD PTR [ecx]
  00106	83 c2 02	 add	 edx, 2
  00109	52		 push	 edx
  0010a	8b 45 14	 mov	 eax, DWORD PTR _hDC$[ebp]
  0010d	50		 push	 eax
  0010e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TextOutW@20

; 912  :             TextOutW(hDC, PaintRect->left, PaintRect->top - 2, szLine, wcslen(szLine));

  00114	8b 4d 10	 mov	 ecx, DWORD PTR _szLine$[ebp]
  00117	51		 push	 ecx
  00118	e8 00 00 00 00	 call	 _wcslen
  0011d	83 c4 04	 add	 esp, 4
  00120	50		 push	 eax
  00121	8b 55 10	 mov	 edx, DWORD PTR _szLine$[ebp]
  00124	52		 push	 edx
  00125	8b 45 18	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  00128	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  0012b	83 e9 02	 sub	 ecx, 2
  0012e	51		 push	 ecx
  0012f	8b 55 18	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  00132	8b 02		 mov	 eax, DWORD PTR [edx]
  00134	50		 push	 eax
  00135	8b 4d 14	 mov	 ecx, DWORD PTR _hDC$[ebp]
  00138	51		 push	 ecx
  00139	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TextOutW@20

; 913  :             TextOutW(hDC, PaintRect->left, PaintRect->top + 2, szLine, wcslen(szLine));

  0013f	8b 55 10	 mov	 edx, DWORD PTR _szLine$[ebp]
  00142	52		 push	 edx
  00143	e8 00 00 00 00	 call	 _wcslen
  00148	83 c4 04	 add	 esp, 4
  0014b	50		 push	 eax
  0014c	8b 45 10	 mov	 eax, DWORD PTR _szLine$[ebp]
  0014f	50		 push	 eax
  00150	8b 4d 18	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  00153	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00156	83 c2 02	 add	 edx, 2
  00159	52		 push	 edx
  0015a	8b 45 18	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  0015d	8b 08		 mov	 ecx, DWORD PTR [eax]
  0015f	51		 push	 ecx
  00160	8b 55 14	 mov	 edx, DWORD PTR _hDC$[ebp]
  00163	52		 push	 edx
  00164	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TextOutW@20

; 914  : 
; 915  :             SetTextColor(hDC, CC_GetColor(Char->ForeColor));

  0016a	8b 45 0c	 mov	 eax, DWORD PTR _Char$[ebp]
  0016d	8b 48 08	 mov	 ecx, DWORD PTR [eax+8]
  00170	51		 push	 ecx
  00171	e8 00 00 00 00	 call	 ?CC_GetColor@@YAKW4eCCColor@@@Z ; CC_GetColor
  00176	83 c4 04	 add	 esp, 4
  00179	50		 push	 eax
  0017a	8b 55 14	 mov	 edx, DWORD PTR _hDC$[ebp]
  0017d	52		 push	 edx
  0017e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetTextColor@8

; 916  :             TextOutW(hDC, PaintRect->left, PaintRect->top, szLine, wcslen(szLine));

  00184	8b 45 10	 mov	 eax, DWORD PTR _szLine$[ebp]
  00187	50		 push	 eax
  00188	e8 00 00 00 00	 call	 _wcslen
  0018d	83 c4 04	 add	 esp, 4
  00190	50		 push	 eax
  00191	8b 4d 10	 mov	 ecx, DWORD PTR _szLine$[ebp]
  00194	51		 push	 ecx
  00195	8b 55 18	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  00198	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  0019b	50		 push	 eax
  0019c	8b 4d 18	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  0019f	8b 11		 mov	 edx, DWORD PTR [ecx]
  001a1	52		 push	 edx
  001a2	8b 45 14	 mov	 eax, DWORD PTR _hDC$[ebp]
  001a5	50		 push	 eax
  001a6	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__TextOutW@20

; 917  : 
; 918  :             PaintRect->left += sizeText.cx;

  001ac	8b 4d 18	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  001af	8b 11		 mov	 edx, DWORD PTR [ecx]
  001b1	03 55 f4	 add	 edx, DWORD PTR _sizeText$[ebp]
  001b4	8b 45 18	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  001b7	89 10		 mov	 DWORD PTR [eax], edx

; 919  : 
; 920  :             SelectObject(hDC, hTmp);

  001b9	8b 4d f0	 mov	 ecx, DWORD PTR _hTmp$[ebp]
  001bc	51		 push	 ecx
  001bd	8b 55 14	 mov	 edx, DWORD PTR _hDC$[ebp]
  001c0	52		 push	 edx
  001c1	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SelectObject@8

; 921  :             DeleteObject(hOSDfont);

  001c7	8b 45 fc	 mov	 eax, DWORD PTR _hOSDfont$[ebp]
  001ca	50		 push	 eax
  001cb	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DeleteObject@4
$LN4@CC_PaintCh:

; 922  :         }
; 923  :     }
; 924  : }

  001d1	8b e5		 mov	 esp, ebp
  001d3	5d		 pop	 ebp
  001d4	c3		 ret	 0
?CC_PaintChars@@YAXPAUHWND__@@PAUTCCChar@@PA_WPAUHDC__@@PAUtagRECT@@H@Z ENDP ; CC_PaintChars
_TEXT	ENDS
PUBLIC	?CCdecode@@YAHHHH@Z				; CCdecode
;	COMDAT ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
_BSS	SEGMENT
?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A DB 09d80H DUP (?) ; `CCdecode'::`2'::Screens
; Function compile flags: /Odtp
_BSS	ENDS
;	COMDAT ?CCdecode@@YAHHHH@Z
_TEXT	SEGMENT
tv461 = -40						; size = 4
tv337 = -36						; size = 4
tv289 = -32						; size = 4
tv287 = -28						; size = 4
tv263 = -24						; size = 4
_b1$ = -20						; size = 4
_len$ = -16						; size = 4
_b2$ = -12						; size = 4
_x$ = -8						; size = 4
_bPaintNow$ = -4					; size = 4
_data$ = 8						; size = 4
_CaptionMode$ = 12					; size = 4
_Channel$ = 16						; size = 4
?CCdecode@@YAHHHH@Z PROC				; CCdecode, COMDAT

; 370  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 28	 sub	 esp, 40			; 00000028H

; 371  :     int b1, b2, len, x;
; 372  :     static TCCScreen Screens[2];
; 373  :     static int ScreenToWrite = 0;
; 374  :     static int CursorPos = 0;
; 375  :     static int CursorRow = 14;
; 376  :     static char ForeColor = 0;
; 377  :     static eCaptionMode Mode = TEXT;
; 378  :     static int ModeRows = 0;
; 379  :     static int LastIndent = -1;
; 380  :     static TCCChar CurrentState =
; 381  :         { TRUE, ' ', CC_WHITE, CC_BLACK, FALSE, FALSE, FALSE,};
; 382  :     static TCCChar ResetState =
; 383  :         { TRUE, ' ', CC_WHITE, CC_BLACK, FALSE, FALSE, FALSE,};
; 384  :     static BOOL bCaptureText = FALSE;
; 385  :     static int BadCount = 0;
; 386  : 
; 387  :     BOOL bPaintNow = FALSE;

  00006	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 0

; 388  : 
; 389  :     if (data == -1) //invalid data.

  0000d	83 7d 08 ff	 cmp	 DWORD PTR _data$[ebp], -1
  00011	75 40		 jne	 SHORT $LN116@CCdecode

; 390  :     {
; 391  :         // if we get three in a row then reset the
; 392  :         // display
; 393  :         BadCount++;

  00013	a1 00 00 00 00	 mov	 eax, DWORD PTR ?BadCount@?1??CCdecode@@YAHHHH@Z@4HA
  00018	83 c0 01	 add	 eax, 1
  0001b	a3 00 00 00 00	 mov	 DWORD PTR ?BadCount@?1??CCdecode@@YAHHHH@Z@4HA, eax

; 394  :         if(BadCount == 3)

  00020	83 3d 00 00 00
	00 03		 cmp	 DWORD PTR ?BadCount@?1??CCdecode@@YAHHHH@Z@4HA, 3
  00027	75 25		 jne	 SHORT $LN115@CCdecode

; 395  :         {
; 396  :             memset(&Screens[0],0,sizeof(TCCScreen));

  00029	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  0002e	6a 00		 push	 0
  00030	68 00 00 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
  00035	e8 00 00 00 00	 call	 _memset
  0003a	83 c4 0c	 add	 esp, 12			; 0000000cH

; 397  :             bPaintNow = TRUE;

  0003d	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1

; 398  :             bCaptureText = FALSE;

  00044	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0
$LN115@CCdecode:

; 399  :         }
; 400  :     }

  0004e	e9 30 0e 00 00	 jmp	 $LN114@CCdecode
$LN116@CCdecode:

; 401  :     else if (data == -2) //erase asked.

  00053	83 7d 08 fe	 cmp	 DWORD PTR _data$[ebp], -2 ; fffffffeH
  00057	75 2a		 jne	 SHORT $LN113@CCdecode

; 402  :     {
; 403  :         memset(&Screens[0],0,sizeof(TCCScreen));

  00059	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  0005e	6a 00		 push	 0
  00060	68 00 00 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
  00065	e8 00 00 00 00	 call	 _memset
  0006a	83 c4 0c	 add	 esp, 12			; 0000000cH

; 404  :         bPaintNow = TRUE;

  0006d	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1

; 405  :         bCaptureText = FALSE;

  00074	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 406  :     }
; 407  :     else

  0007e	e9 00 0e 00 00	 jmp	 $LN114@CCdecode
$LN113@CCdecode:

; 408  :     {
; 409  :         BadCount = 0;

  00083	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?BadCount@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 410  :         b1 = data & 0x7f;

  0008d	8b 4d 08	 mov	 ecx, DWORD PTR _data$[ebp]
  00090	83 e1 7f	 and	 ecx, 127		; 0000007fH
  00093	89 4d ec	 mov	 DWORD PTR _b1$[ebp], ecx

; 411  :         b2 = (data>>8) & 0x7f;

  00096	8b 55 08	 mov	 edx, DWORD PTR _data$[ebp]
  00099	c1 fa 08	 sar	 edx, 8
  0009c	83 e2 7f	 and	 edx, 127		; 0000007fH
  0009f	89 55 f4	 mov	 DWORD PTR _b2$[ebp], edx

; 412  : 
; 413  :         if (b1&0x60) // text (characters not repeated)

  000a2	8b 45 ec	 mov	 eax, DWORD PTR _b1$[ebp]
  000a5	83 e0 60	 and	 eax, 96			; 00000060H
  000a8	0f 84 f4 02 00
	00		 je	 $LN111@CCdecode

; 414  :         {
; 415  :             if(bCaptureText)

  000ae	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0
  000b5	0f 84 e2 02 00
	00		 je	 $LN110@CCdecode

; 416  :             {
; 417  :                 // copy first character
; 418  :                 if(CursorPos < CC_CHARS_PER_LINE - 1)

  000bb	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  000c2	7d 7e		 jge	 SHORT $LN109@CCdecode

; 419  :                 {
; 420  :                     memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  000c4	6a 1c		 push	 28			; 0000001cH
  000c6	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  000cb	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  000d1	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  000d7	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  000dd	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  000e3	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  000ea	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  000f0	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  000f3	03 c1		 add	 eax, ecx
  000f5	50		 push	 eax
  000f6	e8 00 00 00 00	 call	 _memcpy
  000fb	83 c4 0c	 add	 esp, 12			; 0000000cH

; 421  :                     Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = b1;

  000fe	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00104	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  0010a	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0010f	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00115	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  0011c	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00122	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00125	66 8b 45 ec	 mov	 ax, WORD PTR _b1$[ebp]
  00129	66 89 44 11 04	 mov	 WORD PTR [ecx+edx+4], ax

; 422  :                     CursorPos++;

  0012e	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00134	83 c1 01	 add	 ecx, 1
  00137	89 0d 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, ecx

; 423  :                 }
; 424  :                 else

  0013d	e9 de 00 00 00	 jmp	 $LN108@CCdecode
$LN109@CCdecode:

; 425  :                 {
; 426  :                     // Not enough room - Shift characters over one row
; 427  :                     for(x = 1; x < CC_CHARS_PER_LINE;x++)

  00142	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _x$[ebp], 1
  00149	eb 09		 jmp	 SHORT $LN107@CCdecode
$LN106@CCdecode:
  0014b	8b 55 f8	 mov	 edx, DWORD PTR _x$[ebp]
  0014e	83 c2 01	 add	 edx, 1
  00151	89 55 f8	 mov	 DWORD PTR _x$[ebp], edx
$LN107@CCdecode:
  00154	83 7d f8 30	 cmp	 DWORD PTR _x$[ebp], 48	; 00000030H
  00158	7d 5e		 jge	 SHORT $LN105@CCdecode

; 428  :                     {
; 429  :                         memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][x - 1],
; 430  :                             &Screens[ScreenToWrite].ScreenData[CursorRow][x],
; 431  :                             sizeof(TCCChar));

  0015a	6a 1c		 push	 28			; 0000001cH
  0015c	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00161	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  00167	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0016d	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00173	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  0017a	8b 45 f8	 mov	 eax, DWORD PTR _x$[ebp]
  0017d	6b c0 1c	 imul	 eax, 28			; 0000001cH
  00180	03 d0		 add	 edx, eax
  00182	52		 push	 edx
  00183	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00189	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  0018f	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00195	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  0019b	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  001a2	8b 4d f8	 mov	 ecx, DWORD PTR _x$[ebp]
  001a5	83 e9 01	 sub	 ecx, 1
  001a8	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  001ab	03 c1		 add	 eax, ecx
  001ad	50		 push	 eax
  001ae	e8 00 00 00 00	 call	 _memcpy
  001b3	83 c4 0c	 add	 esp, 12			; 0000000cH

; 432  :                     }

  001b6	eb 93		 jmp	 SHORT $LN106@CCdecode
$LN105@CCdecode:

; 433  :                     memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  001b8	6a 1c		 push	 28			; 0000001cH
  001ba	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  001bf	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  001c5	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  001cb	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  001d0	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  001d6	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  001dd	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  001e3	6b d2 1c	 imul	 edx, 28			; 0000001cH
  001e6	03 ca		 add	 ecx, edx
  001e8	51		 push	 ecx
  001e9	e8 00 00 00 00	 call	 _memcpy
  001ee	83 c4 0c	 add	 esp, 12			; 0000000cH

; 434  :                     Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = b1;

  001f1	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  001f6	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  001fc	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00202	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00208	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  0020f	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00214	6b c0 1c	 imul	 eax, 28			; 0000001cH
  00217	66 8b 4d ec	 mov	 cx, WORD PTR _b1$[ebp]
  0021b	66 89 4c 02 04	 mov	 WORD PTR [edx+eax+4], cx
$LN108@CCdecode:

; 435  :                 };
; 436  : 
; 437  :                 if(b2 > 31)

  00220	83 7d f4 1f	 cmp	 DWORD PTR _b2$[ebp], 31	; 0000001fH
  00224	0f 8e 64 01 00
	00		 jle	 $LN104@CCdecode

; 438  :                 {
; 439  :                     // copy second character
; 440  :                     if(CursorPos < CC_CHARS_PER_LINE - 1)

  0022a	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  00231	7d 7c		 jge	 SHORT $LN103@CCdecode

; 441  :                     {
; 442  :                         memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  00233	6a 1c		 push	 28			; 0000001cH
  00235	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  0023a	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00240	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  00246	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0024b	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00251	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  00258	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  0025e	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00261	03 ca		 add	 ecx, edx
  00263	51		 push	 ecx
  00264	e8 00 00 00 00	 call	 _memcpy
  00269	83 c4 0c	 add	 esp, 12			; 0000000cH

; 443  :                         Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = b2;

  0026c	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00271	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  00277	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0027d	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00283	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  0028a	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  0028f	6b c0 1c	 imul	 eax, 28			; 0000001cH
  00292	66 8b 4d f4	 mov	 cx, WORD PTR _b2$[ebp]
  00296	66 89 4c 02 04	 mov	 WORD PTR [edx+eax+4], cx

; 444  :                         CursorPos++;

  0029b	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  002a1	83 c2 01	 add	 edx, 1
  002a4	89 15 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, edx

; 445  :                     }
; 446  :                     else

  002aa	e9 df 00 00 00	 jmp	 $LN104@CCdecode
$LN103@CCdecode:

; 447  :                     {
; 448  :                         // Not enough room - Shift characters over one row
; 449  :                         for(x = 1; x < CC_CHARS_PER_LINE;x++)

  002af	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _x$[ebp], 1
  002b6	eb 09		 jmp	 SHORT $LN101@CCdecode
$LN100@CCdecode:
  002b8	8b 45 f8	 mov	 eax, DWORD PTR _x$[ebp]
  002bb	83 c0 01	 add	 eax, 1
  002be	89 45 f8	 mov	 DWORD PTR _x$[ebp], eax
$LN101@CCdecode:
  002c1	83 7d f8 30	 cmp	 DWORD PTR _x$[ebp], 48	; 00000030H
  002c5	7d 5e		 jge	 SHORT $LN99@CCdecode

; 450  :                         {
; 451  :                             memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][x - 1],
; 452  :                                 &Screens[ScreenToWrite].ScreenData[CursorRow][x],
; 453  :                                 sizeof(TCCChar));

  002c7	6a 1c		 push	 28			; 0000001cH
  002c9	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  002cf	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  002d5	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  002db	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  002e1	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  002e8	8b 4d f8	 mov	 ecx, DWORD PTR _x$[ebp]
  002eb	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  002ee	03 c1		 add	 eax, ecx
  002f0	50		 push	 eax
  002f1	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  002f7	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  002fd	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00302	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00308	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  0030f	8b 55 f8	 mov	 edx, DWORD PTR _x$[ebp]
  00312	83 ea 01	 sub	 edx, 1
  00315	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00318	03 ca		 add	 ecx, edx
  0031a	51		 push	 ecx
  0031b	e8 00 00 00 00	 call	 _memcpy
  00320	83 c4 0c	 add	 esp, 12			; 0000000cH

; 454  :                         }

  00323	eb 93		 jmp	 SHORT $LN100@CCdecode
$LN99@CCdecode:

; 455  :                         memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  00325	6a 1c		 push	 28			; 0000001cH
  00327	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  0032c	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00331	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  00337	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0033d	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00343	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  0034a	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  0034f	6b c0 1c	 imul	 eax, 28			; 0000001cH
  00352	03 d0		 add	 edx, eax
  00354	52		 push	 edx
  00355	e8 00 00 00 00	 call	 _memcpy
  0035a	83 c4 0c	 add	 esp, 12			; 0000000cH

; 456  :                         Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = b2;

  0035d	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00363	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  00369	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0036f	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  00375	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  0037c	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00382	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  00385	66 8b 55 f4	 mov	 dx, WORD PTR _b2$[ebp]
  00389	66 89 54 08 04	 mov	 WORD PTR [eax+ecx+4], dx
$LN104@CCdecode:

; 457  :                     }
; 458  :                 }
; 459  :                 bPaintNow = (ScreenToWrite == 0);

  0038e	33 c0		 xor	 eax, eax
  00390	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA, 0
  00397	0f 94 c0	 sete	 al
  0039a	89 45 fc	 mov	 DWORD PTR _bPaintNow$[ebp], eax
$LN110@CCdecode:

; 460  :             }
; 461  :         }

  0039d	e9 e1 0a 00 00	 jmp	 $LN114@CCdecode
$LN111@CCdecode:

; 462  :         else if ((b1&0x10) && (b2>0x1F) && (data != LastCode)) //codes are always transmitted twice (ignore the second occurance)

  003a2	8b 4d ec	 mov	 ecx, DWORD PTR _b1$[ebp]
  003a5	83 e1 10	 and	 ecx, 16			; 00000010H
  003a8	0f 84 d5 0a 00
	00		 je	 $LN114@CCdecode
  003ae	83 7d f4 1f	 cmp	 DWORD PTR _b2$[ebp], 31	; 0000001fH
  003b2	0f 8e cb 0a 00
	00		 jle	 $LN114@CCdecode
  003b8	8b 55 08	 mov	 edx, DWORD PTR _data$[ebp]
  003bb	3b 15 00 00 00
	00		 cmp	 edx, DWORD PTR ?LastCode@@3HA ; LastCode
  003c1	0f 84 bc 0a 00
	00		 je	 $LN114@CCdecode

; 463  :         {
; 464  :             // if we have been asked for the other channel
; 465  :             // need to ignore any text that follows
; 466  :             if(((b1>>3)&1) != Channel)

  003c7	8b 45 ec	 mov	 eax, DWORD PTR _b1$[ebp]
  003ca	c1 f8 03	 sar	 eax, 3
  003cd	83 e0 01	 and	 eax, 1
  003d0	3b 45 10	 cmp	 eax, DWORD PTR _Channel$[ebp]
  003d3	74 11		 je	 SHORT $LN96@CCdecode

; 467  :             {
; 468  :                 bCaptureText = FALSE;

  003d5	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 469  :                 return 0;

  003df	33 c0		 xor	 eax, eax
  003e1	e9 c5 0a 00 00	 jmp	 $LN117@CCdecode
$LN96@CCdecode:

; 470  :             }
; 471  :             len = _tcslen(CCBuf[CCDisplayMode]);

  003e6	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CCDisplayMode@@3HA ; CCDisplayMode
  003ec	c1 e1 09	 shl	 ecx, 9
  003ef	81 c1 00 00 00
	00		 add	 ecx, OFFSET ?CCBuf@@3PAY0BAA@_WA ; CCBuf
  003f5	51		 push	 ecx
  003f6	e8 00 00 00 00	 call	 _wcslen
  003fb	83 c4 04	 add	 esp, 4
  003fe	89 45 f0	 mov	 DWORD PTR _len$[ebp], eax

; 472  : 
; 473  :             if (b2 & 0x40)  //preamble address code (row & indent)

  00401	8b 55 f4	 mov	 edx, DWORD PTR _b2$[ebp]
  00404	83 e2 40	 and	 edx, 64			; 00000040H
  00407	0f 84 01 01 00
	00		 je	 $LN95@CCdecode

; 474  :             {
; 475  :                 if(bCaptureText == TRUE)

  0040d	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  00414	0f 85 ef 00 00
	00		 jne	 $LN94@CCdecode

; 476  :                 {
; 477  :                     // reset state
; 478  :                     memcpy(&CurrentState, &ResetState, sizeof(TCCChar));

  0041a	6a 1c		 push	 28			; 0000001cH
  0041c	68 00 00 00 00	 push	 OFFSET ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00421	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00426	e8 00 00 00 00	 call	 _memcpy
  0042b	83 c4 0c	 add	 esp, 12			; 0000000cH

; 479  : 
; 480  :                     // row information ignored in text Mode
; 481  :                     if(Mode != ROLL_UP)

  0042e	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 1
  00435	74 20		 je	 SHORT $LN93@CCdecode

; 482  :                     {
; 483  :                         CursorRow = RowData[((b1<<1)&0x0E)|((b2>>5)&0x01)];

  00437	8b 45 ec	 mov	 eax, DWORD PTR _b1$[ebp]
  0043a	d1 e0		 shl	 eax, 1
  0043c	83 e0 0e	 and	 eax, 14			; 0000000eH
  0043f	8b 4d f4	 mov	 ecx, DWORD PTR _b2$[ebp]
  00442	c1 f9 05	 sar	 ecx, 5
  00445	83 e1 01	 and	 ecx, 1
  00448	0b c1		 or	 eax, ecx
  0044a	8b 14 85 00 00
	00 00		 mov	 edx, DWORD PTR ?RowData@@3PAHA[eax*4]
  00451	89 15 00 00 00
	00		 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, edx
$LN93@CCdecode:

; 484  :                     }
; 485  : 
; 486  :                     CursorPos = 0;

  00457	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 487  : 
; 488  :                     // get underline flag
; 489  :                     CurrentState.bUnderline = b2&0x1;

  00461	8b 45 f4	 mov	 eax, DWORD PTR _b2$[ebp]
  00464	83 e0 01	 and	 eax, 1
  00467	a3 10 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+16, eax

; 490  : 
; 491  :                     // get indent Info
; 492  :                     if (b2&0x10)

  0046c	8b 4d f4	 mov	 ecx, DWORD PTR _b2$[ebp]
  0046f	83 e1 10	 and	 ecx, 16			; 00000010H
  00472	74 6e		 je	 SHORT $LN92@CCdecode

; 493  :                     {
; 494  :                         //row contains indent flag
; 495  :                         CurrentState.ForeColor = CC_WHITE;

  00474	c7 05 08 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+8, 0

; 496  :                         CursorPos = (b2&0x0E) << 1;

  0047e	8b 55 f4	 mov	 edx, DWORD PTR _b2$[ebp]
  00481	83 e2 0e	 and	 edx, 14			; 0000000eH
  00484	d1 e2		 shl	 edx, 1
  00486	89 15 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, edx

; 497  :                         // there seems to be a problem with the pop on captions
; 498  :                         // when you get the second or third line of data
; 499  : 
; 500  :                         for(x=0; x<CursorPos; x++)

  0048c	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _x$[ebp], 0
  00493	eb 09		 jmp	 SHORT $LN91@CCdecode
$LN90@CCdecode:
  00495	8b 45 f8	 mov	 eax, DWORD PTR _x$[ebp]
  00498	83 c0 01	 add	 eax, 1
  0049b	89 45 f8	 mov	 DWORD PTR _x$[ebp], eax
$LN91@CCdecode:
  0049e	8b 4d f8	 mov	 ecx, DWORD PTR _x$[ebp]
  004a1	3b 0d 00 00 00
	00		 cmp	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  004a7	7d 2d		 jge	 SHORT $LN89@CCdecode

; 501  :                         {
; 502  :                             Screens[ScreenToWrite].ScreenData[CursorRow][x].bIsActive = FALSE;

  004a9	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  004af	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  004b5	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  004ba	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  004c0	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  004c7	8b 55 f8	 mov	 edx, DWORD PTR _x$[ebp]
  004ca	6b d2 1c	 imul	 edx, 28			; 0000001cH
  004cd	c7 04 11 00 00
	00 00		 mov	 DWORD PTR [ecx+edx], 0

; 503  :                         }

  004d4	eb bf		 jmp	 SHORT $LN90@CCdecode
$LN89@CCdecode:

; 504  :                         LastIndent = CursorPos;

  004d6	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  004db	a3 00 00 00 00	 mov	 DWORD PTR ?LastIndent@?1??CCdecode@@YAHHHH@Z@4HA, eax

; 505  :                     }
; 506  :                     else

  004e0	eb 27		 jmp	 SHORT $LN94@CCdecode
$LN92@CCdecode:

; 507  :                     {
; 508  :                         // get color and indent Info
; 509  :                         if(((b2&0x0E) >> 1) == 0x07)

  004e2	8b 4d f4	 mov	 ecx, DWORD PTR _b2$[ebp]
  004e5	83 e1 0e	 and	 ecx, 14			; 0000000eH
  004e8	d1 f9		 sar	 ecx, 1
  004ea	83 f9 07	 cmp	 ecx, 7
  004ed	75 0c		 jne	 SHORT $LN87@CCdecode

; 510  :                         {
; 511  :                             CurrentState.bItalics = TRUE;

  004ef	c7 05 18 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+24, 1

; 512  :                         }
; 513  :                         else

  004f9	eb 0e		 jmp	 SHORT $LN94@CCdecode
$LN87@CCdecode:

; 514  :                         {
; 515  :                             CurrentState.ForeColor = (eCCColor)((b2&0x0E) >> 1);

  004fb	8b 55 f4	 mov	 edx, DWORD PTR _b2$[ebp]
  004fe	83 e2 0e	 and	 edx, 14			; 0000000eH
  00501	d1 fa		 sar	 edx, 1
  00503	89 15 08 00 00
	00		 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+8, edx
$LN94@CCdecode:

; 516  :                         }
; 517  :                     }
; 518  :                 }
; 519  :             }
; 520  :             else

  00509	e9 75 09 00 00	 jmp	 $LN114@CCdecode
$LN95@CCdecode:

; 521  :             {
; 522  :                 switch (b1 & 0x07)

  0050e	8b 45 ec	 mov	 eax, DWORD PTR _b1$[ebp]
  00511	83 e0 07	 and	 eax, 7
  00514	89 45 e8	 mov	 DWORD PTR tv263[ebp], eax
  00517	83 7d e8 07	 cmp	 DWORD PTR tv263[ebp], 7
  0051b	0f 87 62 09 00
	00		 ja	 $LN114@CCdecode
  00521	8b 4d e8	 mov	 ecx, DWORD PTR tv263[ebp]
  00524	ff 24 8d 00 00
	00 00		 jmp	 DWORD PTR $LN120@CCdecode[ecx*4]
$LN82@CCdecode:

; 523  :                 {
; 524  :                     case 0x00:  //attribute
; 525  :                         if(bCaptureText == TRUE)

  0052b	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  00532	0f 85 8e 00 00
	00		 jne	 $LN81@CCdecode

; 526  :                         {
; 527  :                             CurrentState.BackColor = (eCCColor)((b2&0x0E) >> 1);

  00538	8b 55 f4	 mov	 edx, DWORD PTR _b2$[ebp]
  0053b	83 e2 0e	 and	 edx, 14			; 0000000eH
  0053e	d1 fa		 sar	 edx, 1
  00540	89 15 0c 00 00
	00		 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+12, edx

; 528  :                             memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  00546	6a 1c		 push	 28			; 0000001cH
  00548	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  0054d	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00552	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  00558	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0055e	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00564	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  0056b	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00570	6b c0 1c	 imul	 eax, 28			; 0000001cH
  00573	03 d0		 add	 edx, eax
  00575	52		 push	 edx
  00576	e8 00 00 00 00	 call	 _memcpy
  0057b	83 c4 0c	 add	 esp, 12			; 0000000cH

; 529  :                             Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = ' ';

  0057e	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00584	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  0058a	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00590	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  00596	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  0059d	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  005a3	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  005a6	ba 20 00 00 00	 mov	 edx, 32			; 00000020H
  005ab	66 89 54 08 04	 mov	 WORD PTR [eax+ecx+4], dx

; 530  :                             if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  005b0	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  005b7	7d 0d		 jge	 SHORT $LN81@CCdecode
  005b9	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  005be	83 c0 01	 add	 eax, 1
  005c1	a3 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, eax
$LN81@CCdecode:

; 531  :                         }
; 532  :                         break;

  005c6	e9 b8 08 00 00	 jmp	 $LN114@CCdecode
$LN79@CCdecode:

; 533  :                     case 0x01:  //midrow or char
; 534  :                         if(bCaptureText == TRUE)

  005cb	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  005d2	0f 85 80 01 00
	00		 jne	 $LN78@CCdecode

; 535  :                         {
; 536  :                             switch (b2&0x70)

  005d8	8b 4d f4	 mov	 ecx, DWORD PTR _b2$[ebp]
  005db	83 e1 70	 and	 ecx, 112		; 00000070H
  005de	89 4d e4	 mov	 DWORD PTR tv287[ebp], ecx
  005e1	83 7d e4 20	 cmp	 DWORD PTR tv287[ebp], 32 ; 00000020H
  005e5	74 0f		 je	 SHORT $LN75@CCdecode
  005e7	83 7d e4 30	 cmp	 DWORD PTR tv287[ebp], 48 ; 00000030H
  005eb	0f 84 dd 00 00
	00		 je	 $LN67@CCdecode
  005f1	e9 62 01 00 00	 jmp	 $LN78@CCdecode
$LN75@CCdecode:

; 537  :                             {
; 538  :                                 case 0x20: //midrow attribute change
; 539  :                                     switch (b2&0x0e)

  005f6	8b 55 f4	 mov	 edx, DWORD PTR _b2$[ebp]
  005f9	83 e2 0e	 and	 edx, 14			; 0000000eH
  005fc	89 55 e0	 mov	 DWORD PTR tv289[ebp], edx
  005ff	83 7d e0 0e	 cmp	 DWORD PTR tv289[ebp], 14 ; 0000000eH
  00603	74 02		 je	 SHORT $LN72@CCdecode
  00605	eb 0c		 jmp	 SHORT $LN71@CCdecode
$LN72@CCdecode:

; 540  :                                     {
; 541  :                                         case 0x0e: //italics on
; 542  :                                             CurrentState.bItalics = TRUE;

  00607	c7 05 18 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+24, 1

; 543  :                                             break;

  00611	eb 17		 jmp	 SHORT $LN73@CCdecode
$LN71@CCdecode:

; 544  :                                         default:
; 545  :                                             CurrentState.ForeColor = (eCCColor)((b2&0x0E) >> 1);

  00613	8b 45 f4	 mov	 eax, DWORD PTR _b2$[ebp]
  00616	83 e0 0e	 and	 eax, 14			; 0000000eH
  00619	d1 f8		 sar	 eax, 1
  0061b	a3 08 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+8, eax

; 546  :                                             CurrentState.bItalics = FALSE;

  00620	c7 05 18 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+24, 0
$LN73@CCdecode:

; 547  :                                             break;
; 548  :                                     }
; 549  :                                     if (b2&0x01) //underline

  0062a	8b 4d f4	 mov	 ecx, DWORD PTR _b2$[ebp]
  0062d	83 e1 01	 and	 ecx, 1
  00630	74 0c		 je	 SHORT $LN70@CCdecode

; 550  :                                         CurrentState.bUnderline = TRUE;

  00632	c7 05 10 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+16, 1

; 551  :                                     else

  0063c	eb 0a		 jmp	 SHORT $LN69@CCdecode
$LN70@CCdecode:

; 552  :                                         CurrentState.bUnderline = FALSE;

  0063e	c7 05 10 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+16, 0
$LN69@CCdecode:

; 553  :                                     memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  00648	6a 1c		 push	 28			; 0000001cH
  0064a	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  0064f	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00655	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  0065b	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00660	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00666	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  0066d	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00673	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00676	03 ca		 add	 ecx, edx
  00678	51		 push	 ecx
  00679	e8 00 00 00 00	 call	 _memcpy
  0067e	83 c4 0c	 add	 esp, 12			; 0000000cH

; 554  :                                     Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = ' ';

  00681	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00686	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  0068c	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00692	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00698	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  0069f	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  006a4	6b c0 1c	 imul	 eax, 28			; 0000001cH
  006a7	b9 20 00 00 00	 mov	 ecx, 32			; 00000020H
  006ac	66 89 4c 02 04	 mov	 WORD PTR [edx+eax+4], cx

; 555  :                                     if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  006b1	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  006b8	7d 0f		 jge	 SHORT $LN68@CCdecode
  006ba	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  006c0	83 c2 01	 add	 edx, 1
  006c3	89 15 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, edx
$LN68@CCdecode:

; 556  :                                     break;

  006c9	e9 8a 00 00 00	 jmp	 $LN78@CCdecode
$LN67@CCdecode:

; 557  :                                 case 0x30: //special character..
; 558  :                                     memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  006ce	6a 1c		 push	 28			; 0000001cH
  006d0	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  006d5	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  006da	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  006e0	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  006e6	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  006ec	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  006f3	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  006f8	6b c0 1c	 imul	 eax, 28			; 0000001cH
  006fb	03 d0		 add	 edx, eax
  006fd	52		 push	 edx
  006fe	e8 00 00 00 00	 call	 _memcpy
  00703	83 c4 0c	 add	 esp, 12			; 0000000cH

; 559  :                                     Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = *(SpecialChars[b2&0x0f]);

  00706	8b 4d f4	 mov	 ecx, DWORD PTR _b2$[ebp]
  00709	83 e1 0f	 and	 ecx, 15			; 0000000fH
  0070c	8b 14 8d 00 00
	00 00		 mov	 edx, DWORD PTR ?SpecialChars@@3PAPA_WA[ecx*4]
  00713	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00718	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  0071e	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00724	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  0072a	8d 84 08 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  00731	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00737	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  0073a	66 8b 12	 mov	 dx, WORD PTR [edx]
  0073d	66 89 54 08 04	 mov	 WORD PTR [eax+ecx+4], dx

; 560  :                                     if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  00742	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  00749	7d 0d		 jge	 SHORT $LN78@CCdecode
  0074b	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00750	83 c0 01	 add	 eax, 1
  00753	a3 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, eax
$LN78@CCdecode:

; 561  :                                     break;
; 562  :                             }
; 563  :                         }
; 564  :                         break;

  00758	e9 26 07 00 00	 jmp	 $LN114@CCdecode
$LN65@CCdecode:

; 565  :                     case 0x04:  //misc
; 566  :                     case 0x05:  //misc + F
; 567  :                         switch (b2)

  0075d	8b 4d f4	 mov	 ecx, DWORD PTR _b2$[ebp]
  00760	89 4d dc	 mov	 DWORD PTR tv337[ebp], ecx
  00763	8b 55 dc	 mov	 edx, DWORD PTR tv337[ebp]
  00766	83 ea 20	 sub	 edx, 32			; 00000020H
  00769	89 55 dc	 mov	 DWORD PTR tv337[ebp], edx
  0076c	83 7d dc 0f	 cmp	 DWORD PTR tv337[ebp], 15 ; 0000000fH
  00770	0f 87 68 05 00
	00		 ja	 $LN63@CCdecode
  00776	8b 45 dc	 mov	 eax, DWORD PTR tv337[ebp]
  00779	ff 24 85 00 00
	00 00		 jmp	 DWORD PTR $LN121@CCdecode[eax*4]
$LN62@CCdecode:

; 568  :                         {
; 569  :                         // start pop on captioning
; 570  :                         case 0x20:
; 571  :                             if(CaptionMode)

  00780	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  00784	0f 84 88 00 00
	00		 je	 $LN61@CCdecode

; 572  :                             {
; 573  :                                 if (bOldCCMethod || Mode != POP_ON)

  0078a	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?bOldCCMethod@@3HA, 0 ; bOldCCMethod
  00791	75 09		 jne	 SHORT $LN59@CCdecode
  00793	83 3d 00 00 00
	00 02		 cmp	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 2
  0079a	74 59		 je	 SHORT $LN60@CCdecode
$LN59@CCdecode:

; 574  :                                 {
; 575  :                                     // Only reset on the first pop_on command
; 576  :                                     if (ScreenToWrite == 0)

  0079c	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA, 0
  007a3	75 14		 jne	 SHORT $LN58@CCdecode

; 577  :                                     {
; 578  :                                         memset(&Screens[1],0,sizeof(TCCScreen));

  007a5	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  007aa	6a 00		 push	 0
  007ac	68 c0 4e 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A+20160
  007b1	e8 00 00 00 00	 call	 _memset
  007b6	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN58@CCdecode:

; 579  :                                     }
; 580  :                                     ScreenToWrite = 1;

  007b9	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA, 1

; 581  :                                     Mode = POP_ON;

  007c3	c7 05 00 00 00
	00 02 00 00 00	 mov	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 2

; 582  :                                     memcpy(&CurrentState, &ResetState, sizeof(TCCChar));

  007cd	6a 1c		 push	 28			; 0000001cH
  007cf	68 00 00 00 00	 push	 OFFSET ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  007d4	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  007d9	e8 00 00 00 00	 call	 _memcpy
  007de	83 c4 0c	 add	 esp, 12			; 0000000cH

; 583  :                                     CursorPos = 0;

  007e1	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 584  :                                     CursorRow = 14;

  007eb	c7 05 00 00 00
	00 0e 00 00 00	 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, 14 ; 0000000eH
$LN60@CCdecode:

; 585  :                                 }
; 586  :                                 bPaintNow = FALSE;

  007f5	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 0

; 587  :                                 LastIndent = -1;

  007fc	c7 05 00 00 00
	00 ff ff ff ff	 mov	 DWORD PTR ?LastIndent@?1??CCdecode@@YAHHHH@Z@4HA, -1

; 588  :                                 bCaptureText = TRUE;

  00806	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1

; 589  :                             }
; 590  :                             else

  00810	eb 0a		 jmp	 SHORT $LN57@CCdecode
$LN61@CCdecode:

; 591  :                             {
; 592  :                                 bCaptureText = FALSE;

  00812	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0
$LN57@CCdecode:

; 593  :                             }
; 594  :                             break;

  0081c	e9 bd 04 00 00	 jmp	 $LN63@CCdecode
$LN56@CCdecode:

; 595  : 
; 596  :                         case 0x21: //backspace
; 597  :                             if(bCaptureText == TRUE)

  00821	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  00828	75 4d		 jne	 SHORT $LN55@CCdecode

; 598  :                             {
; 599  :                                 if(CursorPos > 0)

  0082a	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0
  00831	7e 0f		 jle	 SHORT $LN54@CCdecode

; 600  :                                 {
; 601  :                                     CursorPos--;

  00833	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00839	83 e9 01	 sub	 ecx, 1
  0083c	89 0d 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, ecx
$LN54@CCdecode:

; 602  :                                 }
; 603  :                                 Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].bIsActive = FALSE;

  00842	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00848	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  0084e	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00853	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00859	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  00860	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00866	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00869	c7 04 11 00 00
	00 00		 mov	 DWORD PTR [ecx+edx], 0

; 604  :                                 bPaintNow = TRUE;

  00870	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1
$LN55@CCdecode:

; 605  :                             }
; 606  :                             break;

  00877	e9 62 04 00 00	 jmp	 $LN63@CCdecode
$LN53@CCdecode:

; 607  : 
; 608  :                         case 0x24: //delete to end of row
; 609  :                             if(bCaptureText == TRUE)

  0087c	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  00883	75 50		 jne	 SHORT $LN52@CCdecode

; 610  :                             {
; 611  :                                 for(x = CursorPos; x < CC_CHARS_PER_LINE; x++)

  00885	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  0088a	89 45 f8	 mov	 DWORD PTR _x$[ebp], eax
  0088d	eb 09		 jmp	 SHORT $LN51@CCdecode
$LN50@CCdecode:
  0088f	8b 4d f8	 mov	 ecx, DWORD PTR _x$[ebp]
  00892	83 c1 01	 add	 ecx, 1
  00895	89 4d f8	 mov	 DWORD PTR _x$[ebp], ecx
$LN51@CCdecode:
  00898	83 7d f8 30	 cmp	 DWORD PTR _x$[ebp], 48	; 00000030H
  0089c	7d 30		 jge	 SHORT $LN49@CCdecode

; 612  :                                 {
; 613  :                                     Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].bIsActive = FALSE;

  0089e	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  008a4	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  008aa	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  008af	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  008b5	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  008bc	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  008c2	6b d2 1c	 imul	 edx, 28			; 0000001cH
  008c5	c7 04 11 00 00
	00 00		 mov	 DWORD PTR [ecx+edx], 0

; 614  :                                 }

  008cc	eb c1		 jmp	 SHORT $LN50@CCdecode
$LN49@CCdecode:

; 615  :                                 bPaintNow = TRUE;

  008ce	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1
$LN52@CCdecode:

; 616  :                             }
; 617  :                             break;

  008d5	e9 04 04 00 00	 jmp	 $LN63@CCdecode
$LN48@CCdecode:

; 618  : 
; 619  :                         // reset screen becase we've gone into roll up Mode
; 620  :                         case 0x25: //2 row caption
; 621  :                         case 0x26: //3 row caption
; 622  :                         case 0x27: //4 row caption
; 623  :                             if(CaptionMode)

  008da	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  008de	74 6c		 je	 SHORT $LN47@CCdecode

; 624  :                             {
; 625  :                                 if (bOldCCMethod || Mode != ROLL_UP)

  008e0	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?bOldCCMethod@@3HA, 0 ; bOldCCMethod
  008e7	75 09		 jne	 SHORT $LN45@CCdecode
  008e9	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 1
  008f0	74 47		 je	 SHORT $LN46@CCdecode
$LN45@CCdecode:

; 626  :                                 {
; 627  :                                     Mode = ROLL_UP;

  008f2	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 1

; 628  :                                     ModeRows = b2 - 0x23;

  008fc	8b 45 f4	 mov	 eax, DWORD PTR _b2$[ebp]
  008ff	83 e8 23	 sub	 eax, 35			; 00000023H
  00902	a3 00 00 00 00	 mov	 DWORD PTR ?ModeRows@?1??CCdecode@@YAHHHH@Z@4HA, eax

; 629  :                                     ScreenToWrite = 0;

  00907	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 630  :                                     memcpy(&CurrentState, &ResetState, sizeof(TCCChar));

  00911	6a 1c		 push	 28			; 0000001cH
  00913	68 00 00 00 00	 push	 OFFSET ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00918	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  0091d	e8 00 00 00 00	 call	 _memcpy
  00922	83 c4 0c	 add	 esp, 12			; 0000000cH

; 631  :                                     CursorPos = 0;

  00925	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 632  :                                     CursorRow = 14;

  0092f	c7 05 00 00 00
	00 0e 00 00 00	 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, 14 ; 0000000eH
$LN46@CCdecode:

; 633  :                                 }
; 634  :                                 bPaintNow = TRUE;

  00939	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1

; 635  :                                 bCaptureText = TRUE;

  00940	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1

; 636  :                             }
; 637  :                             else

  0094a	eb 0a		 jmp	 SHORT $LN44@CCdecode
$LN47@CCdecode:

; 638  :                             {
; 639  :                                 bCaptureText = FALSE;

  0094c	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0
$LN44@CCdecode:

; 640  :                             }
; 641  :                             break;

  00956	e9 83 03 00 00	 jmp	 $LN63@CCdecode
$LN43@CCdecode:

; 642  : 
; 643  :                         case 0x28: //flash on
; 644  :                             if(bCaptureText == TRUE)

  0095b	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  00962	0f 85 8a 00 00
	00		 jne	 $LN42@CCdecode

; 645  :                             {
; 646  :                                 CurrentState.bFlash = TRUE;

  00968	c7 05 14 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+20, 1

; 647  :                                 memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  00972	6a 1c		 push	 28			; 0000001cH
  00974	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00979	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  0097f	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  00985	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  0098b	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  00991	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  00998	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  0099e	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  009a1	03 c1		 add	 eax, ecx
  009a3	50		 push	 eax
  009a4	e8 00 00 00 00	 call	 _memcpy
  009a9	83 c4 0c	 add	 esp, 12			; 0000000cH

; 648  :                                 Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = '\0';

  009ac	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  009b2	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  009b8	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  009bd	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  009c3	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  009ca	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  009d0	6b d2 1c	 imul	 edx, 28			; 0000001cH
  009d3	33 c0		 xor	 eax, eax
  009d5	66 89 44 11 04	 mov	 WORD PTR [ecx+edx+4], ax

; 649  :                                 if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  009da	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  009e1	7d 0f		 jge	 SHORT $LN42@CCdecode
  009e3	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  009e9	83 c1 01	 add	 ecx, 1
  009ec	89 0d 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, ecx
$LN42@CCdecode:

; 650  :                             }
; 651  :                             break;

  009f2	e9 e7 02 00 00	 jmp	 $LN63@CCdecode
$LN40@CCdecode:

; 652  : 
; 653  :                         // reset screen because we've gone into paint on Mode
; 654  :                         case 0x29: //resume direct caption
; 655  :                             if(CaptionMode)

  009f7	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  009fb	74 75		 je	 SHORT $LN39@CCdecode

; 656  :                             {
; 657  :                                 if (bOldCCMethod || Mode != PAINT_ON)

  009fd	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?bOldCCMethod@@3HA, 0 ; bOldCCMethod
  00a04	75 09		 jne	 SHORT $LN37@CCdecode
  00a06	83 3d 00 00 00
	00 03		 cmp	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 3
  00a0d	74 50		 je	 SHORT $LN38@CCdecode
$LN37@CCdecode:

; 658  :                                 {
; 659  :                                     ScreenToWrite = 0;

  00a0f	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 660  :                                     Mode = PAINT_ON;

  00a19	c7 05 00 00 00
	00 03 00 00 00	 mov	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 3

; 661  :                                     memset(&Screens[0],0,sizeof(TCCScreen));

  00a23	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  00a28	6a 00		 push	 0
  00a2a	68 00 00 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
  00a2f	e8 00 00 00 00	 call	 _memset
  00a34	83 c4 0c	 add	 esp, 12			; 0000000cH

; 662  :                                     memcpy(&CurrentState, &ResetState, sizeof(TCCChar));

  00a37	6a 1c		 push	 28			; 0000001cH
  00a39	68 00 00 00 00	 push	 OFFSET ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00a3e	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00a43	e8 00 00 00 00	 call	 _memcpy
  00a48	83 c4 0c	 add	 esp, 12			; 0000000cH

; 663  :                                     CursorPos = 0;

  00a4b	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 664  :                                     CursorRow = 14;

  00a55	c7 05 00 00 00
	00 0e 00 00 00	 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, 14 ; 0000000eH
$LN38@CCdecode:

; 665  :                                 }
; 666  :                                 bPaintNow = TRUE;

  00a5f	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1

; 667  :                                 bCaptureText = TRUE;

  00a66	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1

; 668  :                             }
; 669  :                             else

  00a70	eb 0a		 jmp	 SHORT $LN36@CCdecode
$LN39@CCdecode:

; 670  :                             {
; 671  :                                 bCaptureText = FALSE;

  00a72	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0
$LN36@CCdecode:

; 672  :                             }
; 673  :                             break;

  00a7c	e9 5d 02 00 00	 jmp	 $LN63@CCdecode
$LN35@CCdecode:

; 674  : 
; 675  :                         case 0x2C: //erase displayed memory
; 676  :                             if(CaptionMode)

  00a81	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  00a85	74 1b		 je	 SHORT $LN34@CCdecode

; 677  :                             {
; 678  :                                 memset(&Screens[0],0,sizeof(TCCScreen));

  00a87	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  00a8c	6a 00		 push	 0
  00a8e	68 00 00 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
  00a93	e8 00 00 00 00	 call	 _memset
  00a98	83 c4 0c	 add	 esp, 12			; 0000000cH

; 679  :                                 bPaintNow = TRUE;

  00a9b	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1
$LN34@CCdecode:

; 680  :                             }
; 681  :                             break;

  00aa2	e9 37 02 00 00	 jmp	 $LN63@CCdecode
$LN33@CCdecode:

; 682  : 
; 683  :                         case 0x2E: //erase non-displayed memory
; 684  :                             if(CaptionMode)

  00aa7	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  00aab	74 1e		 je	 SHORT $LN32@CCdecode

; 685  :                             {
; 686  :                                 memset(&Screens[1],0,sizeof(TCCScreen));

  00aad	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  00ab2	6a 00		 push	 0
  00ab4	68 c0 4e 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A+20160
  00ab9	e8 00 00 00 00	 call	 _memset
  00abe	83 c4 0c	 add	 esp, 12			; 0000000cH

; 687  :                                 LastIndent = -1;

  00ac1	c7 05 00 00 00
	00 ff ff ff ff	 mov	 DWORD PTR ?LastIndent@?1??CCdecode@@YAHHHH@Z@4HA, -1
$LN32@CCdecode:

; 688  :                             }
; 689  :                             break;

  00acb	e9 0e 02 00 00	 jmp	 $LN63@CCdecode
$LN31@CCdecode:

; 690  : 
; 691  :                         case 0x2A: //text restart
; 692  :                             if(!CaptionMode)

  00ad0	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  00ad4	75 6d		 jne	 SHORT $LN30@CCdecode

; 693  :                             {
; 694  :                                 Mode = TEXT;

  00ad6	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 0

; 695  :                                 ModeRows = 9;

  00ae0	c7 05 00 00 00
	00 09 00 00 00	 mov	 DWORD PTR ?ModeRows@?1??CCdecode@@YAHHHH@Z@4HA, 9

; 696  :                                 memset(&Screens[0],0,sizeof(TCCScreen));

  00aea	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  00aef	6a 00		 push	 0
  00af1	68 00 00 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
  00af6	e8 00 00 00 00	 call	 _memset
  00afb	83 c4 0c	 add	 esp, 12			; 0000000cH

; 697  :                                 ScreenToWrite = 0;

  00afe	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 698  :                                 memcpy(&CurrentState, &ResetState, sizeof(TCCChar));

  00b08	6a 1c		 push	 28			; 0000001cH
  00b0a	68 00 00 00 00	 push	 OFFSET ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00b0f	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00b14	e8 00 00 00 00	 call	 _memcpy
  00b19	83 c4 0c	 add	 esp, 12			; 0000000cH

; 699  :                                 CursorPos = 0;

  00b1c	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 700  :                                 CursorRow = 6;

  00b26	c7 05 00 00 00
	00 06 00 00 00	 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, 6

; 701  :                                 bPaintNow = TRUE;

  00b30	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1

; 702  :                                 bCaptureText = TRUE;

  00b37	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1

; 703  :                             }
; 704  :                             else

  00b41	eb 0a		 jmp	 SHORT $LN29@CCdecode
$LN30@CCdecode:

; 705  :                             {
; 706  :                                 bCaptureText = FALSE;

  00b43	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0
$LN29@CCdecode:

; 707  :                             }
; 708  :                             break;

  00b4d	e9 8c 01 00 00	 jmp	 $LN63@CCdecode
$LN28@CCdecode:

; 709  : 
; 710  :                         case 0x2B: //resume text display
; 711  :                             if(!CaptionMode)

  00b52	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  00b56	75 0c		 jne	 SHORT $LN27@CCdecode

; 712  :                             {
; 713  :                                 bCaptureText = TRUE;

  00b58	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1

; 714  :                             }
; 715  :                             else

  00b62	eb 0a		 jmp	 SHORT $LN26@CCdecode
$LN27@CCdecode:

; 716  :                             {
; 717  :                                 bCaptureText = FALSE;

  00b64	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 0
$LN26@CCdecode:

; 718  :                             }
; 719  :                             break;

  00b6e	e9 6b 01 00 00	 jmp	 $LN63@CCdecode
$LN25@CCdecode:

; 720  : 
; 721  :                         case 0x2D: //carriage return
; 722  :                             if(bCaptureText == TRUE)

  00b73	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  00b7a	0f 85 f2 00 00
	00		 jne	 $LN24@CCdecode

; 723  :                             {
; 724  :                                 if(Mode == TEXT || Mode == ROLL_UP)

  00b80	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 0
  00b87	74 0d		 je	 SHORT $LN22@CCdecode
  00b89	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?Mode@?1??CCdecode@@YAHHHH@Z@4W4eCaptionMode@@A, 1
  00b90	0f 85 dc 00 00
	00		 jne	 $LN24@CCdecode
$LN22@CCdecode:

; 725  :                                 {
; 726  :                                     if(CursorRow < 14)

  00b96	83 3d 00 00 00
	00 0e		 cmp	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, 14 ; 0000000eH
  00b9d	7d 11		 jge	 SHORT $LN21@CCdecode

; 727  :                                     {
; 728  :                                         CursorRow++;

  00b9f	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00ba5	83 c2 01	 add	 edx, 1
  00ba8	89 15 00 00 00
	00		 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, edx

; 729  :                                     }
; 730  :                                     else

  00bae	eb 78		 jmp	 SHORT $LN20@CCdecode
$LN21@CCdecode:

; 731  :                                     {
; 732  :                                         for(x = 14 - ModeRows + 1; x < 14; x++)

  00bb0	b8 0e 00 00 00	 mov	 eax, 14			; 0000000eH
  00bb5	2b 05 00 00 00
	00		 sub	 eax, DWORD PTR ?ModeRows@?1??CCdecode@@YAHHHH@Z@4HA
  00bbb	83 c0 01	 add	 eax, 1
  00bbe	89 45 f8	 mov	 DWORD PTR _x$[ebp], eax
  00bc1	eb 09		 jmp	 SHORT $LN19@CCdecode
$LN18@CCdecode:
  00bc3	8b 4d f8	 mov	 ecx, DWORD PTR _x$[ebp]
  00bc6	83 c1 01	 add	 ecx, 1
  00bc9	89 4d f8	 mov	 DWORD PTR _x$[ebp], ecx
$LN19@CCdecode:
  00bcc	83 7d f8 0e	 cmp	 DWORD PTR _x$[ebp], 14	; 0000000eH
  00bd0	7d 4c		 jge	 SHORT $LN17@CCdecode

; 733  :                                         {
; 734  :                                             memcpy(Screens[ScreenToWrite].ScreenData[x], Screens[ScreenToWrite].ScreenData[x + 1], CC_CHARS_PER_LINE * sizeof(TCCChar));

  00bd2	68 40 05 00 00	 push	 1344			; 00000540H
  00bd7	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00bdd	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  00be3	8b 45 f8	 mov	 eax, DWORD PTR _x$[ebp]
  00be6	83 c0 01	 add	 eax, 1
  00be9	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00bef	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  00bf6	51		 push	 ecx
  00bf7	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00bfd	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  00c03	8b 45 f8	 mov	 eax, DWORD PTR _x$[ebp]
  00c06	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00c0c	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  00c13	51		 push	 ecx
  00c14	e8 00 00 00 00	 call	 _memcpy
  00c19	83 c4 0c	 add	 esp, 12			; 0000000cH

; 735  :                                         }

  00c1c	eb a5		 jmp	 SHORT $LN18@CCdecode
$LN17@CCdecode:

; 736  :                                         CursorRow = 14;

  00c1e	c7 05 00 00 00
	00 0e 00 00 00	 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, 14 ; 0000000eH
$LN20@CCdecode:

; 737  :                                     }
; 738  :                                     memset(Screens[ScreenToWrite].ScreenData[x], 0 ,CC_CHARS_PER_LINE * sizeof(TCCChar));

  00c28	68 40 05 00 00	 push	 1344			; 00000540H
  00c2d	6a 00		 push	 0
  00c2f	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00c35	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  00c3b	8b 45 f8	 mov	 eax, DWORD PTR _x$[ebp]
  00c3e	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00c44	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  00c4b	51		 push	 ecx
  00c4c	e8 00 00 00 00	 call	 _memset
  00c51	83 c4 0c	 add	 esp, 12			; 0000000cH

; 739  :                                     memcpy(&CurrentState, &ResetState, sizeof(TCCChar));

  00c54	6a 1c		 push	 28			; 0000001cH
  00c56	68 00 00 00 00	 push	 OFFSET ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00c5b	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00c60	e8 00 00 00 00	 call	 _memcpy
  00c65	83 c4 0c	 add	 esp, 12			; 0000000cH

; 740  :                                     CursorPos = 0;

  00c68	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0
$LN24@CCdecode:

; 741  :                                 }
; 742  :                             }
; 743  :                             break;

  00c72	eb 6a		 jmp	 SHORT $LN63@CCdecode
$LN16@CCdecode:

; 744  : 
; 745  :                         case 0x2F: //end caption + swap memory
; 746  :                             if(CaptionMode)

  00c74	83 7d 0c 00	 cmp	 DWORD PTR _CaptionMode$[ebp], 0
  00c78	74 64		 je	 SHORT $LN63@CCdecode

; 747  :                             {
; 748  :                                 memcpy(Screens, Screens + 1, sizeof(TCCScreen));

  00c7a	68 c0 4e 00 00	 push	 20160			; 00004ec0H
  00c7f	68 c0 4e 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A+20160
  00c84	68 00 00 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
  00c89	e8 00 00 00 00	 call	 _memcpy
  00c8e	83 c4 0c	 add	 esp, 12			; 0000000cH

; 749  :                                 memcpy(&CurrentState, &ResetState, sizeof(TCCChar));

  00c91	6a 1c		 push	 28			; 0000001cH
  00c93	68 00 00 00 00	 push	 OFFSET ?ResetState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00c98	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00c9d	e8 00 00 00 00	 call	 _memcpy
  00ca2	83 c4 0c	 add	 esp, 12			; 0000000cH

; 750  :                                 ScreenToWrite = 0;

  00ca5	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 751  :                                 CursorPos = 0;

  00caf	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 0

; 752  :                                 CursorRow = 14;

  00cb9	c7 05 00 00 00
	00 0e 00 00 00	 mov	 DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA, 14 ; 0000000eH

; 753  :                                 bPaintNow = TRUE;

  00cc3	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bPaintNow$[ebp], 1

; 754  :                                 LastIndent = -1;

  00cca	c7 05 00 00 00
	00 ff ff ff ff	 mov	 DWORD PTR ?LastIndent@?1??CCdecode@@YAHHHH@Z@4HA, -1

; 755  :                                 bCaptureText = TRUE;

  00cd4	c7 05 00 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
$LN63@CCdecode:

; 756  :                             }
; 757  :                             break;
; 758  :                     }
; 759  :                     break;

  00cde	e9 a0 01 00 00	 jmp	 $LN114@CCdecode
$LN14@CCdecode:

; 760  :                 case 0x07:  //misc (TAB)
; 761  :                     if(bCaptureText == TRUE)

  00ce3	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?bCaptureText@?1??CCdecode@@YAHHHH@Z@4HA, 1
  00cea	0f 85 93 01 00
	00		 jne	 $LN114@CCdecode

; 762  :                     {
; 763  :                         switch(b2)

  00cf0	8b 55 f4	 mov	 edx, DWORD PTR _b2$[ebp]
  00cf3	89 55 d8	 mov	 DWORD PTR tv461[ebp], edx
  00cf6	8b 45 d8	 mov	 eax, DWORD PTR tv461[ebp]
  00cf9	83 e8 21	 sub	 eax, 33			; 00000021H
  00cfc	89 45 d8	 mov	 DWORD PTR tv461[ebp], eax
  00cff	83 7d d8 0e	 cmp	 DWORD PTR tv461[ebp], 14 ; 0000000eH
  00d03	0f 87 7a 01 00
	00		 ja	 $LN114@CCdecode
  00d09	8b 4d d8	 mov	 ecx, DWORD PTR tv461[ebp]
  00d0c	0f b6 91 00 00
	00 00		 movzx	 edx, BYTE PTR $LN119@CCdecode[ecx]
  00d13	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN122@CCdecode[edx*4]
$LN10@CCdecode:

; 764  :                         {
; 765  :                         case 0x23:
; 766  :                             Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].bIsActive = FALSE;

  00d1a	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00d1f	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  00d25	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00d2b	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00d31	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  00d38	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00d3d	6b c0 1c	 imul	 eax, 28			; 0000001cH
  00d40	c7 04 02 00 00
	00 00		 mov	 DWORD PTR [edx+eax], 0

; 767  :                             if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  00d47	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  00d4e	7d 0f		 jge	 SHORT $LN8@CCdecode
  00d50	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00d56	83 c1 01	 add	 ecx, 1
  00d59	89 0d 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, ecx
$LN8@CCdecode:

; 768  :                             // FALL
; 769  :                         case 0x22:
; 770  :                             Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].bIsActive = FALSE;

  00d5f	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00d65	69 d2 c0 4e 00
	00		 imul	 edx, 20160		; 00004ec0H
  00d6b	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00d70	69 c0 40 05 00
	00		 imul	 eax, 1344		; 00000540H
  00d76	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[edx+eax]
  00d7d	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00d83	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00d86	c7 04 11 00 00
	00 00		 mov	 DWORD PTR [ecx+edx], 0

; 771  :                             if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  00d8d	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  00d94	7d 0d		 jge	 SHORT $LN6@CCdecode
  00d96	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00d9b	83 c0 01	 add	 eax, 1
  00d9e	a3 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, eax
$LN6@CCdecode:

; 772  :                             // FALL
; 773  :                         case 0x21:
; 774  :                             Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].bIsActive = FALSE;

  00da3	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00da9	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  00daf	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00db5	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  00dbb	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  00dc2	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00dc8	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  00dcb	c7 04 08 00 00
	00 00		 mov	 DWORD PTR [eax+ecx], 0

; 775  :                             if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  00dd2	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  00dd9	7d 0f		 jge	 SHORT $LN5@CCdecode
  00ddb	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00de1	83 c2 01	 add	 edx, 1
  00de4	89 15 00 00 00
	00		 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, edx
$LN5@CCdecode:

; 776  :                             break;

  00dea	e9 94 00 00 00	 jmp	 $LN114@CCdecode
$LN4@CCdecode:

; 777  : 
; 778  :                         case 0x2F:
; 779  :                             CurrentState.bUnderline = TRUE;

  00def	c7 05 10 00 00
	00 01 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+16, 1
$LN3@CCdecode:

; 780  :                             // FALL
; 781  :                         case 0x2E:
; 782  :                             CurrentState.ForeColor = CC_BLACK;

  00df9	c7 05 08 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A+8, 7

; 783  :                             memcpy(&Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos], &CurrentState, sizeof(TCCChar));

  00e03	6a 1c		 push	 28			; 0000001cH
  00e05	68 00 00 00 00	 push	 OFFSET ?CurrentState@?1??CCdecode@@YAHHHH@Z@4UTCCChar@@A
  00e0a	a1 00 00 00 00	 mov	 eax, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00e0f	69 c0 c0 4e 00
	00		 imul	 eax, 20160		; 00004ec0H
  00e15	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00e1b	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  00e21	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[eax+ecx]
  00e28	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00e2d	6b c0 1c	 imul	 eax, 28			; 0000001cH
  00e30	03 d0		 add	 edx, eax
  00e32	52		 push	 edx
  00e33	e8 00 00 00 00	 call	 _memcpy
  00e38	83 c4 0c	 add	 esp, 12			; 0000000cH

; 784  :                             Screens[ScreenToWrite].ScreenData[CursorRow][CursorPos].Text = ' ';

  00e3b	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?ScreenToWrite@?1??CCdecode@@YAHHHH@Z@4HA
  00e41	69 c9 c0 4e 00
	00		 imul	 ecx, 20160		; 00004ec0H
  00e47	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?CursorRow@?1??CCdecode@@YAHHHH@Z@4HA
  00e4d	69 d2 40 05 00
	00		 imul	 edx, 1344		; 00000540H
  00e53	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A[ecx+edx]
  00e5a	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00e60	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  00e63	ba 20 00 00 00	 mov	 edx, 32			; 00000020H
  00e68	66 89 54 08 04	 mov	 WORD PTR [eax+ecx+4], dx

; 785  :                             if(CursorPos < CC_CHARS_PER_LINE - 1) CursorPos++;

  00e6d	83 3d 00 00 00
	00 2f		 cmp	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, 47 ; 0000002fH
  00e74	7d 0d		 jge	 SHORT $LN114@CCdecode
  00e76	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA
  00e7b	83 c0 01	 add	 eax, 1
  00e7e	a3 00 00 00 00	 mov	 DWORD PTR ?CursorPos@?1??CCdecode@@YAHHHH@Z@4HA, eax
$LN114@CCdecode:

; 786  :                             break;
; 787  :                         }
; 788  :                     }
; 789  :                     break;
; 790  :                 }
; 791  :             }
; 792  :         }
; 793  :     }
; 794  :     if(bPaintNow)

  00e83	83 7d fc 00	 cmp	 DWORD PTR _bPaintNow$[ebp], 0
  00e87	74 17		 je	 SHORT $LN1@CCdecode

; 795  :     {
; 796  :         PostMessageToMainWindow(WM_COMMAND, IDM_OSD_CC_TEXT, (LPARAM)Screens);

  00e89	68 00 00 00 00	 push	 OFFSET ?Screens@?1??CCdecode@@YAHHHH@Z@4PAUTCCScreen@@A
  00e8e	68 53 02 00 00	 push	 595			; 00000253H
  00e93	68 11 01 00 00	 push	 273			; 00000111H
  00e98	e8 00 00 00 00	 call	 ?PostMessageToMainWindow@@YAXIIJ@Z ; PostMessageToMainWindow
  00e9d	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN1@CCdecode:

; 797  :     }
; 798  :     LastCode=data;

  00ea0	8b 4d 08	 mov	 ecx, DWORD PTR _data$[ebp]
  00ea3	89 0d 00 00 00
	00		 mov	 DWORD PTR ?LastCode@@3HA, ecx ; LastCode

; 799  :     return 0;

  00ea9	33 c0		 xor	 eax, eax
$LN117@CCdecode:

; 800  : }

  00eab	8b e5		 mov	 esp, ebp
  00ead	5d		 pop	 ebp
  00eae	c3		 ret	 0
  00eaf	90		 npad	 1
$LN120@CCdecode:
  00eb0	00 00 00 00	 DD	 $LN82@CCdecode
  00eb4	00 00 00 00	 DD	 $LN79@CCdecode
  00eb8	00 00 00 00	 DD	 $LN114@CCdecode
  00ebc	00 00 00 00	 DD	 $LN114@CCdecode
  00ec0	00 00 00 00	 DD	 $LN65@CCdecode
  00ec4	00 00 00 00	 DD	 $LN65@CCdecode
  00ec8	00 00 00 00	 DD	 $LN114@CCdecode
  00ecc	00 00 00 00	 DD	 $LN14@CCdecode
$LN121@CCdecode:
  00ed0	00 00 00 00	 DD	 $LN62@CCdecode
  00ed4	00 00 00 00	 DD	 $LN56@CCdecode
  00ed8	00 00 00 00	 DD	 $LN63@CCdecode
  00edc	00 00 00 00	 DD	 $LN63@CCdecode
  00ee0	00 00 00 00	 DD	 $LN53@CCdecode
  00ee4	00 00 00 00	 DD	 $LN48@CCdecode
  00ee8	00 00 00 00	 DD	 $LN48@CCdecode
  00eec	00 00 00 00	 DD	 $LN48@CCdecode
  00ef0	00 00 00 00	 DD	 $LN43@CCdecode
  00ef4	00 00 00 00	 DD	 $LN40@CCdecode
  00ef8	00 00 00 00	 DD	 $LN31@CCdecode
  00efc	00 00 00 00	 DD	 $LN28@CCdecode
  00f00	00 00 00 00	 DD	 $LN35@CCdecode
  00f04	00 00 00 00	 DD	 $LN25@CCdecode
  00f08	00 00 00 00	 DD	 $LN33@CCdecode
  00f0c	00 00 00 00	 DD	 $LN16@CCdecode
$LN122@CCdecode:
  00f10	00 00 00 00	 DD	 $LN6@CCdecode
  00f14	00 00 00 00	 DD	 $LN8@CCdecode
  00f18	00 00 00 00	 DD	 $LN10@CCdecode
  00f1c	00 00 00 00	 DD	 $LN3@CCdecode
  00f20	00 00 00 00	 DD	 $LN4@CCdecode
  00f24	00 00 00 00	 DD	 $LN114@CCdecode
$LN119@CCdecode:
  00f28	00		 DB	 0
  00f29	01		 DB	 1
  00f2a	02		 DB	 2
  00f2b	05		 DB	 5
  00f2c	05		 DB	 5
  00f2d	05		 DB	 5
  00f2e	05		 DB	 5
  00f2f	05		 DB	 5
  00f30	05		 DB	 5
  00f31	05		 DB	 5
  00f32	05		 DB	 5
  00f33	05		 DB	 5
  00f34	05		 DB	 5
  00f35	03		 DB	 3
  00f36	04		 DB	 4
?CCdecode@@YAHHHH@Z ENDP				; CCdecode
_TEXT	ENDS
PUBLIC	?decode@@YAHPAE@Z				; decode
; Function compile flags: /Odtp
;	COMDAT ?decode@@YAHPAE@Z
_TEXT	SEGMENT
_ClockMax$ = -28					; size = 4
_ClockPos$ = -24					; size = 4
_packedbits$ = -20					; size = 4
_Threshold$ = -16					; size = 4
_tmp$ = -12						; size = 4
_ClockCur$ = -8						; size = 4
_i$ = -4						; size = 4
_vbiline$ = 8						; size = 4
?decode@@YAHPAE@Z PROC					; decode, COMDAT

; 153  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 1c	 sub	 esp, 28			; 0000001cH

; 154  :     int i, tmp, packedbits = 0;

  00006	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _packedbits$[ebp], 0

; 155  :     int ClockMax = -1;

  0000d	c7 45 e4 ff ff
	ff ff		 mov	 DWORD PTR _ClockMax$[ebp], -1

; 156  :     int ClockPos = -1;

  00014	c7 45 e8 ff ff
	ff ff		 mov	 DWORD PTR _ClockPos$[ebp], -1

; 157  :     DWORD Threshold = 0;

  0001b	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _Threshold$[ebp], 0

; 158  :     int ClockCur;
; 159  : 
; 160  :     i=0;

  00022	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
$LN12@decode:

; 161  : 
; 162  :     while (i < 120)

  00029	83 7d fc 78	 cmp	 DWORD PTR _i$[ebp], 120	; 00000078H
  0002d	7d 37		 jge	 SHORT $LN11@decode

; 163  :     {
; 164  :         ClockCur = FindClock(vbiline + i, CC_Clock);

  0002f	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CC_Clock@@3HA ; CC_Clock
  00034	50		 push	 eax
  00035	8b 4d 08	 mov	 ecx, DWORD PTR _vbiline$[ebp]
  00038	03 4d fc	 add	 ecx, DWORD PTR _i$[ebp]
  0003b	51		 push	 ecx
  0003c	e8 00 00 00 00	 call	 ?FindClock@@YAHPAEH@Z	; FindClock
  00041	83 c4 08	 add	 esp, 8
  00044	89 45 f8	 mov	 DWORD PTR _ClockCur$[ebp], eax

; 165  :         if(ClockCur > ClockMax)

  00047	8b 55 f8	 mov	 edx, DWORD PTR _ClockCur$[ebp]
  0004a	3b 55 e4	 cmp	 edx, DWORD PTR _ClockMax$[ebp]
  0004d	7e 0c		 jle	 SHORT $LN10@decode

; 166  :         {
; 167  :             ClockMax = ClockCur;

  0004f	8b 45 f8	 mov	 eax, DWORD PTR _ClockCur$[ebp]
  00052	89 45 e4	 mov	 DWORD PTR _ClockMax$[ebp], eax

; 168  :             ClockPos = i;

  00055	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  00058	89 4d e8	 mov	 DWORD PTR _ClockPos$[ebp], ecx
$LN10@decode:

; 169  :         }
; 170  :         i++;

  0005b	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  0005e	83 c2 01	 add	 edx, 1
  00061	89 55 fc	 mov	 DWORD PTR _i$[ebp], edx

; 171  :     }

  00064	eb c3		 jmp	 SHORT $LN12@decode
$LN11@decode:

; 172  : 
; 173  :     if(ClockMax < 10)

  00066	83 7d e4 0a	 cmp	 DWORD PTR _ClockMax$[ebp], 10 ; 0000000aH
  0006a	7d 08		 jge	 SHORT $LN9@decode

; 174  :     {
; 175  :         return -1;

  0006c	83 c8 ff	 or	 eax, -1
  0006f	e9 03 01 00 00	 jmp	 $LN13@decode
$LN9@decode:

; 176  :     }
; 177  : 
; 178  :     tmp = ClockPos + CC_Gap - 3 * CC_Clock / 2;

  00074	8b 4d e8	 mov	 ecx, DWORD PTR _ClockPos$[ebp]
  00077	03 0d 00 00 00
	00		 add	 ecx, DWORD PTR ?CC_Gap@@3HA ; CC_Gap
  0007d	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CC_Clock@@3HA ; CC_Clock
  00082	6b c0 03	 imul	 eax, 3
  00085	99		 cdq
  00086	2b c2		 sub	 eax, edx
  00088	d1 f8		 sar	 eax, 1
  0008a	2b c8		 sub	 ecx, eax
  0008c	89 4d f4	 mov	 DWORD PTR _tmp$[ebp], ecx

; 179  : 
; 180  :     for(i = 0; i < CC_Clock; i++)

  0008f	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  00096	eb 09		 jmp	 SHORT $LN8@decode
$LN7@decode:
  00098	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  0009b	83 c2 01	 add	 edx, 1
  0009e	89 55 fc	 mov	 DWORD PTR _i$[ebp], edx
$LN8@decode:
  000a1	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  000a4	3b 05 00 00 00
	00		 cmp	 eax, DWORD PTR ?CC_Clock@@3HA ; CC_Clock
  000aa	7d 15		 jge	 SHORT $LN6@decode

; 181  :     {
; 182  :         Threshold += vbiline[tmp + i];

  000ac	8b 4d f4	 mov	 ecx, DWORD PTR _tmp$[ebp]
  000af	03 4d fc	 add	 ecx, DWORD PTR _i$[ebp]
  000b2	8b 55 08	 mov	 edx, DWORD PTR _vbiline$[ebp]
  000b5	0f b6 04 0a	 movzx	 eax, BYTE PTR [edx+ecx]
  000b9	03 45 f0	 add	 eax, DWORD PTR _Threshold$[ebp]
  000bc	89 45 f0	 mov	 DWORD PTR _Threshold$[ebp], eax

; 183  :     }

  000bf	eb d7		 jmp	 SHORT $LN7@decode
$LN6@decode:

; 184  :     Threshold /= CC_Clock;

  000c1	8b 45 f0	 mov	 eax, DWORD PTR _Threshold$[ebp]
  000c4	33 d2		 xor	 edx, edx
  000c6	f7 35 00 00 00
	00		 div	 DWORD PTR ?CC_Clock@@3HA ; CC_Clock
  000cc	89 45 f0	 mov	 DWORD PTR _Threshold$[ebp], eax

; 185  :     Threshold += ClockMax / 2;

  000cf	8b 45 e4	 mov	 eax, DWORD PTR _ClockMax$[ebp]
  000d2	99		 cdq
  000d3	2b c2		 sub	 eax, edx
  000d5	d1 f8		 sar	 eax, 1
  000d7	03 45 f0	 add	 eax, DWORD PTR _Threshold$[ebp]
  000da	89 45 f0	 mov	 DWORD PTR _Threshold$[ebp], eax

; 186  :     tmp = ClockPos + CC_Gap;

  000dd	8b 4d e8	 mov	 ecx, DWORD PTR _ClockPos$[ebp]
  000e0	03 0d 00 00 00
	00		 add	 ecx, DWORD PTR ?CC_Gap@@3HA ; CC_Gap
  000e6	89 4d f4	 mov	 DWORD PTR _tmp$[ebp], ecx

; 187  : 
; 188  :     if(!decodebit(&vbiline[tmp], Threshold, CC_Clock / 2))

  000e9	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CC_Clock@@3HA ; CC_Clock
  000ee	99		 cdq
  000ef	2b c2		 sub	 eax, edx
  000f1	d1 f8		 sar	 eax, 1
  000f3	50		 push	 eax
  000f4	8b 55 f0	 mov	 edx, DWORD PTR _Threshold$[ebp]
  000f7	52		 push	 edx
  000f8	8b 45 08	 mov	 eax, DWORD PTR _vbiline$[ebp]
  000fb	03 45 f4	 add	 eax, DWORD PTR _tmp$[ebp]
  000fe	50		 push	 eax
  000ff	e8 00 00 00 00	 call	 ?decodebit@@YAHPAEHH@Z	; decodebit
  00104	83 c4 0c	 add	 esp, 12			; 0000000cH
  00107	85 c0		 test	 eax, eax
  00109	75 05		 jne	 SHORT $LN5@decode

; 189  :     {
; 190  :         // no start bit
; 191  :         return -1;

  0010b	83 c8 ff	 or	 eax, -1
  0010e	eb 67		 jmp	 SHORT $LN13@decode
$LN5@decode:

; 192  :     }
; 193  :     for (i = 0; i < 16; i++)

  00110	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  00117	eb 09		 jmp	 SHORT $LN4@decode
$LN3@decode:
  00119	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  0011c	83 c1 01	 add	 ecx, 1
  0011f	89 4d fc	 mov	 DWORD PTR _i$[ebp], ecx
$LN4@decode:
  00122	83 7d fc 10	 cmp	 DWORD PTR _i$[ebp], 16	; 00000010H
  00126	7d 40		 jge	 SHORT $LN2@decode

; 194  :     {
; 195  :         tmp += CC_Clock;

  00128	8b 55 f4	 mov	 edx, DWORD PTR _tmp$[ebp]
  0012b	03 15 00 00 00
	00		 add	 edx, DWORD PTR ?CC_Clock@@3HA ; CC_Clock
  00131	89 55 f4	 mov	 DWORD PTR _tmp$[ebp], edx

; 196  :         if(decodebit(&vbiline[tmp], Threshold, CC_Clock / 2))

  00134	a1 00 00 00 00	 mov	 eax, DWORD PTR ?CC_Clock@@3HA ; CC_Clock
  00139	99		 cdq
  0013a	2b c2		 sub	 eax, edx
  0013c	d1 f8		 sar	 eax, 1
  0013e	50		 push	 eax
  0013f	8b 45 f0	 mov	 eax, DWORD PTR _Threshold$[ebp]
  00142	50		 push	 eax
  00143	8b 4d 08	 mov	 ecx, DWORD PTR _vbiline$[ebp]
  00146	03 4d f4	 add	 ecx, DWORD PTR _tmp$[ebp]
  00149	51		 push	 ecx
  0014a	e8 00 00 00 00	 call	 ?decodebit@@YAHPAEHH@Z	; decodebit
  0014f	83 c4 0c	 add	 esp, 12			; 0000000cH
  00152	85 c0		 test	 eax, eax
  00154	74 10		 je	 SHORT $LN1@decode

; 197  :         {
; 198  :             packedbits |= 1<<i;

  00156	ba 01 00 00 00	 mov	 edx, 1
  0015b	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  0015e	d3 e2		 shl	 edx, cl
  00160	0b 55 ec	 or	 edx, DWORD PTR _packedbits$[ebp]
  00163	89 55 ec	 mov	 DWORD PTR _packedbits$[ebp], edx
$LN1@decode:

; 199  :         }
; 200  :     }

  00166	eb b1		 jmp	 SHORT $LN3@decode
$LN2@decode:

; 201  : 
; 202  :     return packedbits & parityok(packedbits);

  00168	8b 45 ec	 mov	 eax, DWORD PTR _packedbits$[ebp]
  0016b	50		 push	 eax
  0016c	e8 00 00 00 00	 call	 ?parityok@@YAHH@Z	; parityok
  00171	83 c4 04	 add	 esp, 4
  00174	23 45 ec	 and	 eax, DWORD PTR _packedbits$[ebp]
$LN13@decode:

; 203  : } // decode

  00177	8b e5		 mov	 esp, ebp
  00179	5d		 pop	 ebp
  0017a	c3		 ret	 0
?decode@@YAHPAE@Z ENDP					; decode
PUBLIC	__$ArrayPad$
PUBLIC	?CC_PaintLine@@YAXPAUHWND__@@PAUTCCChar@@PAUHDC__@@PAUtagRECT@@H@Z ; CC_PaintLine
; Function compile flags: /Odtp
;	COMDAT ?CC_PaintLine@@YAXPAUHWND__@@PAUTCCChar@@PAUHDC__@@PAUtagRECT@@H@Z
_TEXT	SEGMENT
tv147 = -140						; size = 4
_LineWidth$ = -136					; size = 4
_Count$ = -132						; size = 4
_StrPos$ = -128						; size = 4
_i$ = -124						; size = 4
_szString$ = -120					; size = 98
__$ArrayPad$ = -12					; size = 4
_LastChar$ = -8						; size = 4
_bAnyText$ = -4						; size = 4
_hWnd$ = 8						; size = 4
_Line$ = 12						; size = 4
_hDC$ = 16						; size = 4
_PaintRect$ = 20					; size = 4
_nFontsize$ = 24					; size = 4
?CC_PaintLine@@YAXPAUHWND__@@PAUTCCChar@@PAUHDC__@@PAUtagRECT@@H@Z PROC ; CC_PaintLine, COMDAT

; 928  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	81 ec 8c 00 00
	00		 sub	 esp, 140		; 0000008cH
  00009	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000e	33 c5		 xor	 eax, ebp
  00010	89 45 f4	 mov	 DWORD PTR __$ArrayPad$[ebp], eax

; 929  :     int i;
; 930  :     BOOL bAnyText = FALSE;

  00013	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bAnyText$[ebp], 0

; 931  :     int Count = 0;

  0001a	c7 85 7c ff ff
	ff 00 00 00 00	 mov	 DWORD PTR _Count$[ebp], 0

; 932  :     int LineWidth = (PaintRect->right - PaintRect->left);

  00024	8b 45 14	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  00027	8b 4d 14	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  0002a	8b 50 08	 mov	 edx, DWORD PTR [eax+8]
  0002d	2b 11		 sub	 edx, DWORD PTR [ecx]
  0002f	89 95 78 ff ff
	ff		 mov	 DWORD PTR _LineWidth$[ebp], edx

; 933  :     wchar_t szString[CC_CHARS_PER_LINE + 1];
; 934  :     TCCChar* LastChar = NULL;

  00035	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _LastChar$[ebp], 0

; 935  :     int StrPos = 0;

  0003c	c7 45 80 00 00
	00 00		 mov	 DWORD PTR _StrPos$[ebp], 0

; 936  : 
; 937  :     for(i = 0; i < CC_CHARS_PER_LINE; i++)

  00043	c7 45 84 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  0004a	eb 09		 jmp	 SHORT $LN23@CC_PaintLi@4
$LN22@CC_PaintLi@4:
  0004c	8b 45 84	 mov	 eax, DWORD PTR _i$[ebp]
  0004f	83 c0 01	 add	 eax, 1
  00052	89 45 84	 mov	 DWORD PTR _i$[ebp], eax
$LN23@CC_PaintLi@4:
  00055	83 7d 84 30	 cmp	 DWORD PTR _i$[ebp], 48	; 00000030H
  00059	0f 8d b6 02 00
	00		 jge	 $LN21@CC_PaintLi@4

; 938  :     {
; 939  :         if(Line[i].bIsActive)

  0005f	8b 4d 84	 mov	 ecx, DWORD PTR _i$[ebp]
  00062	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  00065	8b 55 0c	 mov	 edx, DWORD PTR _Line$[ebp]
  00068	83 3c 0a 00	 cmp	 DWORD PTR [edx+ecx], 0
  0006c	0f 84 59 02 00
	00		 je	 $LN20@CC_PaintLi@4

; 940  :         {
; 941  :             if(!bAnyText && Count == 0)

  00072	83 7d fc 00	 cmp	 DWORD PTR _bAnyText$[ebp], 0
  00076	75 2f		 jne	 SHORT $LN19@CC_PaintLi@4
  00078	83 bd 7c ff ff
	ff 00		 cmp	 DWORD PTR _Count$[ebp], 0
  0007f	75 26		 jne	 SHORT $LN19@CC_PaintLi@4

; 942  :             {
; 943  :                 bAnyText = TRUE;

  00081	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bAnyText$[ebp], 1

; 944  :                 PaintRect->left = PaintRect->left + LineWidth * (i + 2) / (CC_CHARS_PER_LINE + 4);

  00088	8b 45 84	 mov	 eax, DWORD PTR _i$[ebp]
  0008b	83 c0 02	 add	 eax, 2
  0008e	0f af 85 78 ff
	ff ff		 imul	 eax, DWORD PTR _LineWidth$[ebp]
  00095	99		 cdq
  00096	b9 34 00 00 00	 mov	 ecx, 52			; 00000034H
  0009b	f7 f9		 idiv	 ecx
  0009d	8b 55 14	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  000a0	03 02		 add	 eax, DWORD PTR [edx]
  000a2	8b 4d 14	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  000a5	89 01		 mov	 DWORD PTR [ecx], eax
$LN19@CC_PaintLi@4:

; 945  :             }
; 946  : 
; 947  :             if(LastChar != NULL &&
; 948  :                 (LastChar->BackColor != Line[i].BackColor ||
; 949  :                  LastChar->ForeColor != Line[i].ForeColor ||
; 950  :                  LastChar->bItalics != Line[i].bItalics ||
; 951  :                  LastChar->bUnderline != Line[i].bUnderline ||
; 952  :                  LastChar->bFlash != Line[i].bFlash))

  000a7	83 7d f8 00	 cmp	 DWORD PTR _LastChar$[ebp], 0
  000ab	0f 84 9a 00 00
	00		 je	 $LN18@CC_PaintLi@4
  000b1	8b 55 84	 mov	 edx, DWORD PTR _i$[ebp]
  000b4	6b d2 1c	 imul	 edx, 28			; 0000001cH
  000b7	8b 45 f8	 mov	 eax, DWORD PTR _LastChar$[ebp]
  000ba	8b 4d 0c	 mov	 ecx, DWORD PTR _Line$[ebp]
  000bd	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  000c0	3b 44 11 0c	 cmp	 eax, DWORD PTR [ecx+edx+12]
  000c4	75 54		 jne	 SHORT $LN17@CC_PaintLi@4
  000c6	8b 4d 84	 mov	 ecx, DWORD PTR _i$[ebp]
  000c9	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  000cc	8b 55 f8	 mov	 edx, DWORD PTR _LastChar$[ebp]
  000cf	8b 45 0c	 mov	 eax, DWORD PTR _Line$[ebp]
  000d2	8b 52 08	 mov	 edx, DWORD PTR [edx+8]
  000d5	3b 54 08 08	 cmp	 edx, DWORD PTR [eax+ecx+8]
  000d9	75 3f		 jne	 SHORT $LN17@CC_PaintLi@4
  000db	8b 45 84	 mov	 eax, DWORD PTR _i$[ebp]
  000de	6b c0 1c	 imul	 eax, 28			; 0000001cH
  000e1	8b 4d f8	 mov	 ecx, DWORD PTR _LastChar$[ebp]
  000e4	8b 55 0c	 mov	 edx, DWORD PTR _Line$[ebp]
  000e7	8b 49 18	 mov	 ecx, DWORD PTR [ecx+24]
  000ea	3b 4c 02 18	 cmp	 ecx, DWORD PTR [edx+eax+24]
  000ee	75 2a		 jne	 SHORT $LN17@CC_PaintLi@4
  000f0	8b 55 84	 mov	 edx, DWORD PTR _i$[ebp]
  000f3	6b d2 1c	 imul	 edx, 28			; 0000001cH
  000f6	8b 45 f8	 mov	 eax, DWORD PTR _LastChar$[ebp]
  000f9	8b 4d 0c	 mov	 ecx, DWORD PTR _Line$[ebp]
  000fc	8b 40 10	 mov	 eax, DWORD PTR [eax+16]
  000ff	3b 44 11 10	 cmp	 eax, DWORD PTR [ecx+edx+16]
  00103	75 15		 jne	 SHORT $LN17@CC_PaintLi@4
  00105	8b 4d 84	 mov	 ecx, DWORD PTR _i$[ebp]
  00108	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  0010b	8b 55 f8	 mov	 edx, DWORD PTR _LastChar$[ebp]
  0010e	8b 45 0c	 mov	 eax, DWORD PTR _Line$[ebp]
  00111	8b 52 14	 mov	 edx, DWORD PTR [edx+20]
  00114	3b 54 08 14	 cmp	 edx, DWORD PTR [eax+ecx+20]
  00118	74 31		 je	 SHORT $LN18@CC_PaintLi@4
$LN17@CC_PaintLi@4:

; 953  :             {
; 954  :                 szString[StrPos] = '\0';

  0011a	33 c0		 xor	 eax, eax
  0011c	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  0011f	66 89 44 4d 88	 mov	 WORD PTR _szString$[ebp+ecx*2], ax

; 955  :                 CC_PaintChars(hWnd, LastChar, szString, hDC, PaintRect, nFontsize);

  00124	8b 55 18	 mov	 edx, DWORD PTR _nFontsize$[ebp]
  00127	52		 push	 edx
  00128	8b 45 14	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  0012b	50		 push	 eax
  0012c	8b 4d 10	 mov	 ecx, DWORD PTR _hDC$[ebp]
  0012f	51		 push	 ecx
  00130	8d 55 88	 lea	 edx, DWORD PTR _szString$[ebp]
  00133	52		 push	 edx
  00134	8b 45 f8	 mov	 eax, DWORD PTR _LastChar$[ebp]
  00137	50		 push	 eax
  00138	8b 4d 08	 mov	 ecx, DWORD PTR _hWnd$[ebp]
  0013b	51		 push	 ecx
  0013c	e8 00 00 00 00	 call	 ?CC_PaintChars@@YAXPAUHWND__@@PAUTCCChar@@PA_WPAUHDC__@@PAUtagRECT@@H@Z ; CC_PaintChars
  00141	83 c4 18	 add	 esp, 24			; 00000018H

; 956  :                 StrPos = 0;

  00144	c7 45 80 00 00
	00 00		 mov	 DWORD PTR _StrPos$[ebp], 0
$LN18@CC_PaintLi@4:

; 957  :             }
; 958  : 
; 959  :             // cope with changes from straight ASCII
; 960  :             switch(Line[i].Text)

  0014b	8b 55 84	 mov	 edx, DWORD PTR _i$[ebp]
  0014e	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00151	8b 45 0c	 mov	 eax, DWORD PTR _Line$[ebp]
  00154	0f b7 4c 10 04	 movzx	 ecx, WORD PTR [eax+edx+4]
  00159	89 8d 74 ff ff
	ff		 mov	 DWORD PTR tv147[ebp], ecx
  0015f	8b 95 74 ff ff
	ff		 mov	 edx, DWORD PTR tv147[ebp]
  00165	83 ea 2a	 sub	 edx, 42			; 0000002aH
  00168	89 95 74 ff ff
	ff		 mov	 DWORD PTR tv147[ebp], edx
  0016e	81 bd 74 ff ff
	ff 8c 00 00 00	 cmp	 DWORD PTR tv147[ebp], 140 ; 0000008cH
  00178	0f 87 11 01 00
	00		 ja	 $LN4@CC_PaintLi@4
  0017e	8b 85 74 ff ff
	ff		 mov	 eax, DWORD PTR tv147[ebp]
  00184	0f b6 88 00 00
	00 00		 movzx	 ecx, BYTE PTR $LN26@CC_PaintLi@4[eax]
  0018b	ff 24 8d 00 00
	00 00		 jmp	 DWORD PTR $LN27@CC_PaintLi@4[ecx*4]
$LN14@CC_PaintLi@4:

; 961  :             {
; 962  :             case '`':
; 963  :                 szString[StrPos++] = 'á';

  00192	ba e1 ff 00 00	 mov	 edx, 65505		; 0000ffe1H
  00197	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  0019a	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  0019f	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  001a2	83 c1 01	 add	 ecx, 1
  001a5	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 964  :                 break;

  001a8	e9 01 01 00 00	 jmp	 $LN15@CC_PaintLi@4
$LN13@CC_PaintLi@4:

; 965  :             case '*':
; 966  :                 szString[StrPos++] = 'ú';

  001ad	ba fa ff 00 00	 mov	 edx, 65530		; 0000fffaH
  001b2	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  001b5	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  001ba	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  001bd	83 c1 01	 add	 ecx, 1
  001c0	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 967  :                 break;

  001c3	e9 e6 00 00 00	 jmp	 $LN15@CC_PaintLi@4
$LN12@CC_PaintLi@4:

; 968  :             case '\\':
; 969  :                 szString[StrPos++] = 'é';

  001c8	ba e9 ff 00 00	 mov	 edx, 65513		; 0000ffe9H
  001cd	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  001d0	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  001d5	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  001d8	83 c1 01	 add	 ecx, 1
  001db	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 970  :                 break;

  001de	e9 cb 00 00 00	 jmp	 $LN15@CC_PaintLi@4
$LN11@CC_PaintLi@4:

; 971  :             case '^':
; 972  :                 szString[StrPos++] = 'í';

  001e3	ba ed ff 00 00	 mov	 edx, 65517		; 0000ffedH
  001e8	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  001eb	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  001f0	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  001f3	83 c1 01	 add	 ecx, 1
  001f6	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 973  :                 break;

  001f9	e9 b0 00 00 00	 jmp	 $LN15@CC_PaintLi@4
$LN10@CC_PaintLi@4:

; 974  :             case '_':
; 975  :                 szString[StrPos++] = 'ó';

  001fe	ba f3 ff 00 00	 mov	 edx, 65523		; 0000fff3H
  00203	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00206	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  0020b	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  0020e	83 c1 01	 add	 ecx, 1
  00211	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 976  :                 break;

  00214	e9 95 00 00 00	 jmp	 $LN15@CC_PaintLi@4
$LN9@CC_PaintLi@4:

; 977  :             case '{':
; 978  :                 szString[StrPos++] = 'ç';

  00219	ba e7 ff 00 00	 mov	 edx, 65511		; 0000ffe7H
  0021e	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00221	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  00226	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  00229	83 c1 01	 add	 ecx, 1
  0022c	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 979  :                 break;

  0022f	eb 7d		 jmp	 SHORT $LN15@CC_PaintLi@4
$LN8@CC_PaintLi@4:

; 980  :             case '|':
; 981  :                 szString[StrPos++] = '÷';

  00231	ba f7 ff 00 00	 mov	 edx, 65527		; 0000fff7H
  00236	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00239	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  0023e	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  00241	83 c1 01	 add	 ecx, 1
  00244	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 982  :                 break;

  00247	eb 65		 jmp	 SHORT $LN15@CC_PaintLi@4
$LN7@CC_PaintLi@4:

; 983  :             case '}':
; 984  :                 szString[StrPos++] = 'Ñ';

  00249	ba d1 ff 00 00	 mov	 edx, 65489		; 0000ffd1H
  0024e	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00251	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  00256	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  00259	83 c1 01	 add	 ecx, 1
  0025c	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 985  :                 break;

  0025f	eb 4d		 jmp	 SHORT $LN15@CC_PaintLi@4
$LN6@CC_PaintLi@4:

; 986  :             case '~':
; 987  :                 szString[StrPos++] = 'ñ';

  00261	ba f1 ff 00 00	 mov	 edx, 65521		; 0000fff1H
  00266	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00269	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  0026e	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  00271	83 c1 01	 add	 ecx, 1
  00274	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx

; 988  :                 break;

  00277	eb 35		 jmp	 SHORT $LN15@CC_PaintLi@4
$LN5@CC_PaintLi@4:

; 989  :             // convert music symbol
; 990  :             case 0xb6:
; 991  :                 szString[StrPos++] = 0x226A;

  00279	ba 6a 22 00 00	 mov	 edx, 8810		; 0000226aH
  0027e	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00281	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  00286	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  00289	83 c1 01	 add	 ecx, 1
  0028c	89 4d 80	 mov	 DWORD PTR _StrPos$[ebp], ecx
$LN4@CC_PaintLi@4:

; 992  :             default:
; 993  :                 szString[StrPos++] = Line[i].Text;

  0028f	8b 55 84	 mov	 edx, DWORD PTR _i$[ebp]
  00292	6b d2 1c	 imul	 edx, 28			; 0000001cH
  00295	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00298	8b 4d 0c	 mov	 ecx, DWORD PTR _Line$[ebp]
  0029b	66 8b 54 11 04	 mov	 dx, WORD PTR [ecx+edx+4]
  002a0	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx
  002a5	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  002a8	83 c0 01	 add	 eax, 1
  002ab	89 45 80	 mov	 DWORD PTR _StrPos$[ebp], eax
$LN15@CC_PaintLi@4:

; 994  :                 break;
; 995  :             }
; 996  :             LastChar = Line + i;

  002ae	8b 4d 84	 mov	 ecx, DWORD PTR _i$[ebp]
  002b1	6b c9 1c	 imul	 ecx, 28			; 0000001cH
  002b4	03 4d 0c	 add	 ecx, DWORD PTR _Line$[ebp]
  002b7	89 4d f8	 mov	 DWORD PTR _LastChar$[ebp], ecx

; 997  :             Count++;

  002ba	8b 95 7c ff ff
	ff		 mov	 edx, DWORD PTR _Count$[ebp]
  002c0	83 c2 01	 add	 edx, 1
  002c3	89 95 7c ff ff
	ff		 mov	 DWORD PTR _Count$[ebp], edx

; 998  :         }
; 999  :         else

  002c9	eb 45		 jmp	 SHORT $LN3@CC_PaintLi@4
$LN20@CC_PaintLi@4:

; 1000 :         {
; 1001 :             if(StrPos > 0)

  002cb	83 7d 80 00	 cmp	 DWORD PTR _StrPos$[ebp], 0
  002cf	7e 31		 jle	 SHORT $LN2@CC_PaintLi@4

; 1002 :             {
; 1003 :                 szString[StrPos] = '\0';

  002d1	33 c0		 xor	 eax, eax
  002d3	8b 4d 80	 mov	 ecx, DWORD PTR _StrPos$[ebp]
  002d6	66 89 44 4d 88	 mov	 WORD PTR _szString$[ebp+ecx*2], ax

; 1004 :                 CC_PaintChars(hWnd, LastChar, szString, hDC, PaintRect, nFontsize);

  002db	8b 55 18	 mov	 edx, DWORD PTR _nFontsize$[ebp]
  002de	52		 push	 edx
  002df	8b 45 14	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  002e2	50		 push	 eax
  002e3	8b 4d 10	 mov	 ecx, DWORD PTR _hDC$[ebp]
  002e6	51		 push	 ecx
  002e7	8d 55 88	 lea	 edx, DWORD PTR _szString$[ebp]
  002ea	52		 push	 edx
  002eb	8b 45 f8	 mov	 eax, DWORD PTR _LastChar$[ebp]
  002ee	50		 push	 eax
  002ef	8b 4d 08	 mov	 ecx, DWORD PTR _hWnd$[ebp]
  002f2	51		 push	 ecx
  002f3	e8 00 00 00 00	 call	 ?CC_PaintChars@@YAXPAUHWND__@@PAUTCCChar@@PA_WPAUHDC__@@PAUtagRECT@@H@Z ; CC_PaintChars
  002f8	83 c4 18	 add	 esp, 24			; 00000018H

; 1005 :                 StrPos = 0;

  002fb	c7 45 80 00 00
	00 00		 mov	 DWORD PTR _StrPos$[ebp], 0
$LN2@CC_PaintLi@4:

; 1006 :             }
; 1007 :             bAnyText = FALSE;

  00302	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bAnyText$[ebp], 0

; 1008 :             LastChar = NULL;

  00309	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _LastChar$[ebp], 0
$LN3@CC_PaintLi@4:

; 1009 :         }
; 1010 :     }

  00310	e9 37 fd ff ff	 jmp	 $LN22@CC_PaintLi@4
$LN21@CC_PaintLi@4:

; 1011 : 
; 1012 :     if(StrPos > 0)

  00315	83 7d 80 00	 cmp	 DWORD PTR _StrPos$[ebp], 0
  00319	7e 2a		 jle	 SHORT $LN24@CC_PaintLi@4

; 1013 :     {
; 1014 :         szString[StrPos] = '\0';

  0031b	33 d2		 xor	 edx, edx
  0031d	8b 45 80	 mov	 eax, DWORD PTR _StrPos$[ebp]
  00320	66 89 54 45 88	 mov	 WORD PTR _szString$[ebp+eax*2], dx

; 1015 :         CC_PaintChars(hWnd, LastChar, szString, hDC, PaintRect, nFontsize);

  00325	8b 4d 18	 mov	 ecx, DWORD PTR _nFontsize$[ebp]
  00328	51		 push	 ecx
  00329	8b 55 14	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  0032c	52		 push	 edx
  0032d	8b 45 10	 mov	 eax, DWORD PTR _hDC$[ebp]
  00330	50		 push	 eax
  00331	8d 4d 88	 lea	 ecx, DWORD PTR _szString$[ebp]
  00334	51		 push	 ecx
  00335	8b 55 f8	 mov	 edx, DWORD PTR _LastChar$[ebp]
  00338	52		 push	 edx
  00339	8b 45 08	 mov	 eax, DWORD PTR _hWnd$[ebp]
  0033c	50		 push	 eax
  0033d	e8 00 00 00 00	 call	 ?CC_PaintChars@@YAXPAUHWND__@@PAUTCCChar@@PA_WPAUHDC__@@PAUtagRECT@@H@Z ; CC_PaintChars
  00342	83 c4 18	 add	 esp, 24			; 00000018H
$LN24@CC_PaintLi@4:

; 1016 :     }
; 1017 : }

  00345	8b 4d f4	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  00348	33 cd		 xor	 ecx, ebp
  0034a	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0034f	8b e5		 mov	 esp, ebp
  00351	5d		 pop	 ebp
  00352	c3		 ret	 0
  00353	90		 npad	 1
$LN27@CC_PaintLi@4:
  00354	00 00 00 00	 DD	 $LN13@CC_PaintLi@4
  00358	00 00 00 00	 DD	 $LN12@CC_PaintLi@4
  0035c	00 00 00 00	 DD	 $LN11@CC_PaintLi@4
  00360	00 00 00 00	 DD	 $LN10@CC_PaintLi@4
  00364	00 00 00 00	 DD	 $LN14@CC_PaintLi@4
  00368	00 00 00 00	 DD	 $LN9@CC_PaintLi@4
  0036c	00 00 00 00	 DD	 $LN8@CC_PaintLi@4
  00370	00 00 00 00	 DD	 $LN7@CC_PaintLi@4
  00374	00 00 00 00	 DD	 $LN6@CC_PaintLi@4
  00378	00 00 00 00	 DD	 $LN5@CC_PaintLi@4
  0037c	00 00 00 00	 DD	 $LN4@CC_PaintLi@4
$LN26@CC_PaintLi@4:
  00380	00		 DB	 0
  00381	0a		 DB	 10			; 0000000aH
  00382	0a		 DB	 10			; 0000000aH
  00383	0a		 DB	 10			; 0000000aH
  00384	0a		 DB	 10			; 0000000aH
  00385	0a		 DB	 10			; 0000000aH
  00386	0a		 DB	 10			; 0000000aH
  00387	0a		 DB	 10			; 0000000aH
  00388	0a		 DB	 10			; 0000000aH
  00389	0a		 DB	 10			; 0000000aH
  0038a	0a		 DB	 10			; 0000000aH
  0038b	0a		 DB	 10			; 0000000aH
  0038c	0a		 DB	 10			; 0000000aH
  0038d	0a		 DB	 10			; 0000000aH
  0038e	0a		 DB	 10			; 0000000aH
  0038f	0a		 DB	 10			; 0000000aH
  00390	0a		 DB	 10			; 0000000aH
  00391	0a		 DB	 10			; 0000000aH
  00392	0a		 DB	 10			; 0000000aH
  00393	0a		 DB	 10			; 0000000aH
  00394	0a		 DB	 10			; 0000000aH
  00395	0a		 DB	 10			; 0000000aH
  00396	0a		 DB	 10			; 0000000aH
  00397	0a		 DB	 10			; 0000000aH
  00398	0a		 DB	 10			; 0000000aH
  00399	0a		 DB	 10			; 0000000aH
  0039a	0a		 DB	 10			; 0000000aH
  0039b	0a		 DB	 10			; 0000000aH
  0039c	0a		 DB	 10			; 0000000aH
  0039d	0a		 DB	 10			; 0000000aH
  0039e	0a		 DB	 10			; 0000000aH
  0039f	0a		 DB	 10			; 0000000aH
  003a0	0a		 DB	 10			; 0000000aH
  003a1	0a		 DB	 10			; 0000000aH
  003a2	0a		 DB	 10			; 0000000aH
  003a3	0a		 DB	 10			; 0000000aH
  003a4	0a		 DB	 10			; 0000000aH
  003a5	0a		 DB	 10			; 0000000aH
  003a6	0a		 DB	 10			; 0000000aH
  003a7	0a		 DB	 10			; 0000000aH
  003a8	0a		 DB	 10			; 0000000aH
  003a9	0a		 DB	 10			; 0000000aH
  003aa	0a		 DB	 10			; 0000000aH
  003ab	0a		 DB	 10			; 0000000aH
  003ac	0a		 DB	 10			; 0000000aH
  003ad	0a		 DB	 10			; 0000000aH
  003ae	0a		 DB	 10			; 0000000aH
  003af	0a		 DB	 10			; 0000000aH
  003b0	0a		 DB	 10			; 0000000aH
  003b1	0a		 DB	 10			; 0000000aH
  003b2	01		 DB	 1
  003b3	0a		 DB	 10			; 0000000aH
  003b4	02		 DB	 2
  003b5	03		 DB	 3
  003b6	04		 DB	 4
  003b7	0a		 DB	 10			; 0000000aH
  003b8	0a		 DB	 10			; 0000000aH
  003b9	0a		 DB	 10			; 0000000aH
  003ba	0a		 DB	 10			; 0000000aH
  003bb	0a		 DB	 10			; 0000000aH
  003bc	0a		 DB	 10			; 0000000aH
  003bd	0a		 DB	 10			; 0000000aH
  003be	0a		 DB	 10			; 0000000aH
  003bf	0a		 DB	 10			; 0000000aH
  003c0	0a		 DB	 10			; 0000000aH
  003c1	0a		 DB	 10			; 0000000aH
  003c2	0a		 DB	 10			; 0000000aH
  003c3	0a		 DB	 10			; 0000000aH
  003c4	0a		 DB	 10			; 0000000aH
  003c5	0a		 DB	 10			; 0000000aH
  003c6	0a		 DB	 10			; 0000000aH
  003c7	0a		 DB	 10			; 0000000aH
  003c8	0a		 DB	 10			; 0000000aH
  003c9	0a		 DB	 10			; 0000000aH
  003ca	0a		 DB	 10			; 0000000aH
  003cb	0a		 DB	 10			; 0000000aH
  003cc	0a		 DB	 10			; 0000000aH
  003cd	0a		 DB	 10			; 0000000aH
  003ce	0a		 DB	 10			; 0000000aH
  003cf	0a		 DB	 10			; 0000000aH
  003d0	0a		 DB	 10			; 0000000aH
  003d1	05		 DB	 5
  003d2	06		 DB	 6
  003d3	07		 DB	 7
  003d4	08		 DB	 8
  003d5	0a		 DB	 10			; 0000000aH
  003d6	0a		 DB	 10			; 0000000aH
  003d7	0a		 DB	 10			; 0000000aH
  003d8	0a		 DB	 10			; 0000000aH
  003d9	0a		 DB	 10			; 0000000aH
  003da	0a		 DB	 10			; 0000000aH
  003db	0a		 DB	 10			; 0000000aH
  003dc	0a		 DB	 10			; 0000000aH
  003dd	0a		 DB	 10			; 0000000aH
  003de	0a		 DB	 10			; 0000000aH
  003df	0a		 DB	 10			; 0000000aH
  003e0	0a		 DB	 10			; 0000000aH
  003e1	0a		 DB	 10			; 0000000aH
  003e2	0a		 DB	 10			; 0000000aH
  003e3	0a		 DB	 10			; 0000000aH
  003e4	0a		 DB	 10			; 0000000aH
  003e5	0a		 DB	 10			; 0000000aH
  003e6	0a		 DB	 10			; 0000000aH
  003e7	0a		 DB	 10			; 0000000aH
  003e8	0a		 DB	 10			; 0000000aH
  003e9	0a		 DB	 10			; 0000000aH
  003ea	0a		 DB	 10			; 0000000aH
  003eb	0a		 DB	 10			; 0000000aH
  003ec	0a		 DB	 10			; 0000000aH
  003ed	0a		 DB	 10			; 0000000aH
  003ee	0a		 DB	 10			; 0000000aH
  003ef	0a		 DB	 10			; 0000000aH
  003f0	0a		 DB	 10			; 0000000aH
  003f1	0a		 DB	 10			; 0000000aH
  003f2	0a		 DB	 10			; 0000000aH
  003f3	0a		 DB	 10			; 0000000aH
  003f4	0a		 DB	 10			; 0000000aH
  003f5	0a		 DB	 10			; 0000000aH
  003f6	0a		 DB	 10			; 0000000aH
  003f7	0a		 DB	 10			; 0000000aH
  003f8	0a		 DB	 10			; 0000000aH
  003f9	0a		 DB	 10			; 0000000aH
  003fa	0a		 DB	 10			; 0000000aH
  003fb	0a		 DB	 10			; 0000000aH
  003fc	0a		 DB	 10			; 0000000aH
  003fd	0a		 DB	 10			; 0000000aH
  003fe	0a		 DB	 10			; 0000000aH
  003ff	0a		 DB	 10			; 0000000aH
  00400	0a		 DB	 10			; 0000000aH
  00401	0a		 DB	 10			; 0000000aH
  00402	0a		 DB	 10			; 0000000aH
  00403	0a		 DB	 10			; 0000000aH
  00404	0a		 DB	 10			; 0000000aH
  00405	0a		 DB	 10			; 0000000aH
  00406	0a		 DB	 10			; 0000000aH
  00407	0a		 DB	 10			; 0000000aH
  00408	0a		 DB	 10			; 0000000aH
  00409	0a		 DB	 10			; 0000000aH
  0040a	0a		 DB	 10			; 0000000aH
  0040b	0a		 DB	 10			; 0000000aH
  0040c	09		 DB	 9
?CC_PaintLine@@YAXPAUHWND__@@PAUTCCChar@@PAUHDC__@@PAUtagRECT@@H@Z ENDP ; CC_PaintLine
_TEXT	ENDS
PUBLIC	?VBI_DecodeLine_CC@@YAHPAEW4eCCMode@@H@Z	; VBI_DecodeLine_CC
; Function compile flags: /Odtp
;	COMDAT ?VBI_DecodeLine_CC@@YAHPAEW4eCCMode@@H@Z
_TEXT	SEGMENT
tv92 = -8						; size = 4
tv69 = -4						; size = 4
_vbiline$ = 8						; size = 4
_CCMode$ = 12						; size = 4
_IsOdd$ = 16						; size = 4
?VBI_DecodeLine_CC@@YAHPAEW4eCCMode@@H@Z PROC		; VBI_DecodeLine_CC, COMDAT

; 803  : {

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

; 804  :     if (CCMode == CCMODE_OFF)

  00006	83 7d 0c 00	 cmp	 DWORD PTR _CCMode$[ebp], 0
  0000a	75 15		 jne	 SHORT $LN17@VBI_Decode@3

; 805  :     {
; 806  :          CCdecode(-2, TRUE, 0);

  0000c	6a 00		 push	 0
  0000e	6a 01		 push	 1
  00010	6a fe		 push	 -2			; fffffffeH
  00012	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  00017	83 c4 0c	 add	 esp, 12			; 0000000cH

; 807  :         return 0;

  0001a	33 c0		 xor	 eax, eax
  0001c	e9 23 01 00 00	 jmp	 $LN18@VBI_Decode@3
$LN17@VBI_Decode@3:

; 808  :     }
; 809  : 
; 810  :     if(!IsOdd)

  00021	83 7d 10 00	 cmp	 DWORD PTR _IsOdd$[ebp], 0
  00025	0f 85 8e 00 00
	00		 jne	 $LN16@VBI_Decode@3

; 811  :     {
; 812  :         switch(CCMode)

  0002b	8b 45 0c	 mov	 eax, DWORD PTR _CCMode$[ebp]
  0002e	89 45 fc	 mov	 DWORD PTR tv69[ebp], eax
  00031	8b 4d fc	 mov	 ecx, DWORD PTR tv69[ebp]
  00034	83 e9 01	 sub	 ecx, 1
  00037	89 4d fc	 mov	 DWORD PTR tv69[ebp], ecx
  0003a	83 7d fc 05	 cmp	 DWORD PTR tv69[ebp], 5
  0003e	77 74		 ja	 SHORT $LN14@VBI_Decode@3
  00040	8b 55 fc	 mov	 edx, DWORD PTR tv69[ebp]
  00043	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN20@VBI_Decode@3[edx*4]
$LN13@VBI_Decode@3:

; 813  :         {
; 814  :         case CCMODE_CC1:
; 815  :             CCdecode(decode(vbiline), TRUE, 0);

  0004a	6a 00		 push	 0
  0004c	6a 01		 push	 1
  0004e	8b 45 08	 mov	 eax, DWORD PTR _vbiline$[ebp]
  00051	50		 push	 eax
  00052	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  00057	83 c4 04	 add	 esp, 4
  0005a	50		 push	 eax
  0005b	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  00060	83 c4 0c	 add	 esp, 12			; 0000000cH

; 816  :             break;

  00063	eb 4f		 jmp	 SHORT $LN14@VBI_Decode@3
$LN12@VBI_Decode@3:

; 817  :         case CCMODE_CC2:
; 818  :             CCdecode(decode(vbiline), TRUE, 1);

  00065	6a 01		 push	 1
  00067	6a 01		 push	 1
  00069	8b 4d 08	 mov	 ecx, DWORD PTR _vbiline$[ebp]
  0006c	51		 push	 ecx
  0006d	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  00072	83 c4 04	 add	 esp, 4
  00075	50		 push	 eax
  00076	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  0007b	83 c4 0c	 add	 esp, 12			; 0000000cH

; 819  :             break;

  0007e	eb 34		 jmp	 SHORT $LN14@VBI_Decode@3
$LN11@VBI_Decode@3:

; 820  :         case CCMODE_TEXT1:
; 821  :             CCdecode(decode(vbiline), FALSE, 0);

  00080	6a 00		 push	 0
  00082	6a 00		 push	 0
  00084	8b 55 08	 mov	 edx, DWORD PTR _vbiline$[ebp]
  00087	52		 push	 edx
  00088	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  0008d	83 c4 04	 add	 esp, 4
  00090	50		 push	 eax
  00091	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  00096	83 c4 0c	 add	 esp, 12			; 0000000cH

; 822  :             break;

  00099	eb 19		 jmp	 SHORT $LN14@VBI_Decode@3
$LN10@VBI_Decode@3:

; 823  :         case CCMODE_TEXT2:
; 824  :             CCdecode(decode(vbiline), FALSE, 1);

  0009b	6a 01		 push	 1
  0009d	6a 00		 push	 0
  0009f	8b 45 08	 mov	 eax, DWORD PTR _vbiline$[ebp]
  000a2	50		 push	 eax
  000a3	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  000a8	83 c4 04	 add	 esp, 4
  000ab	50		 push	 eax
  000ac	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  000b1	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN14@VBI_Decode@3:

; 825  :             break;
; 826  :         default:
; 827  :             break;
; 828  :         }
; 829  :     }
; 830  :     else

  000b4	e9 89 00 00 00	 jmp	 $LN8@VBI_Decode@3
$LN16@VBI_Decode@3:

; 831  :     {
; 832  :         switch(CCMode)

  000b9	8b 4d 0c	 mov	 ecx, DWORD PTR _CCMode$[ebp]
  000bc	89 4d f8	 mov	 DWORD PTR tv92[ebp], ecx
  000bf	8b 55 f8	 mov	 edx, DWORD PTR tv92[ebp]
  000c2	83 ea 03	 sub	 edx, 3
  000c5	89 55 f8	 mov	 DWORD PTR tv92[ebp], edx
  000c8	83 7d f8 05	 cmp	 DWORD PTR tv92[ebp], 5
  000cc	77 74		 ja	 SHORT $LN8@VBI_Decode@3
  000ce	8b 45 f8	 mov	 eax, DWORD PTR tv92[ebp]
  000d1	ff 24 85 00 00
	00 00		 jmp	 DWORD PTR $LN21@VBI_Decode@3[eax*4]
$LN5@VBI_Decode@3:

; 833  :         {
; 834  :         case CCMODE_CC3:
; 835  :             CCdecode(decode(vbiline), TRUE, 0);

  000d8	6a 00		 push	 0
  000da	6a 01		 push	 1
  000dc	8b 4d 08	 mov	 ecx, DWORD PTR _vbiline$[ebp]
  000df	51		 push	 ecx
  000e0	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  000e5	83 c4 04	 add	 esp, 4
  000e8	50		 push	 eax
  000e9	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  000ee	83 c4 0c	 add	 esp, 12			; 0000000cH

; 836  :             break;

  000f1	eb 4f		 jmp	 SHORT $LN8@VBI_Decode@3
$LN4@VBI_Decode@3:

; 837  :         case CCMODE_CC4:
; 838  :             CCdecode(decode(vbiline), TRUE, 1);

  000f3	6a 01		 push	 1
  000f5	6a 01		 push	 1
  000f7	8b 55 08	 mov	 edx, DWORD PTR _vbiline$[ebp]
  000fa	52		 push	 edx
  000fb	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  00100	83 c4 04	 add	 esp, 4
  00103	50		 push	 eax
  00104	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  00109	83 c4 0c	 add	 esp, 12			; 0000000cH

; 839  :             break;

  0010c	eb 34		 jmp	 SHORT $LN8@VBI_Decode@3
$LN3@VBI_Decode@3:

; 840  :         case CCMODE_TEXT3:
; 841  :             CCdecode(decode(vbiline), FALSE, 0);

  0010e	6a 00		 push	 0
  00110	6a 00		 push	 0
  00112	8b 45 08	 mov	 eax, DWORD PTR _vbiline$[ebp]
  00115	50		 push	 eax
  00116	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  0011b	83 c4 04	 add	 esp, 4
  0011e	50		 push	 eax
  0011f	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  00124	83 c4 0c	 add	 esp, 12			; 0000000cH

; 842  :             break;

  00127	eb 19		 jmp	 SHORT $LN8@VBI_Decode@3
$LN2@VBI_Decode@3:

; 843  :         case CCMODE_TEXT4:
; 844  :             CCdecode(decode(vbiline), FALSE, 1);

  00129	6a 01		 push	 1
  0012b	6a 00		 push	 0
  0012d	8b 4d 08	 mov	 ecx, DWORD PTR _vbiline$[ebp]
  00130	51		 push	 ecx
  00131	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  00136	83 c4 04	 add	 esp, 4
  00139	50		 push	 eax
  0013a	e8 00 00 00 00	 call	 ?CCdecode@@YAHHHH@Z	; CCdecode
  0013f	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN8@VBI_Decode@3:

; 845  :             break;
; 846  :         default:
; 847  :             break;
; 848  :         }
; 849  :     }
; 850  :     return 0;

  00142	33 c0		 xor	 eax, eax
$LN18@VBI_Decode@3:

; 851  : }

  00144	8b e5		 mov	 esp, ebp
  00146	5d		 pop	 ebp
  00147	c3		 ret	 0
$LN20@VBI_Decode@3:
  00148	00 00 00 00	 DD	 $LN13@VBI_Decode@3
  0014c	00 00 00 00	 DD	 $LN12@VBI_Decode@3
  00150	00 00 00 00	 DD	 $LN14@VBI_Decode@3
  00154	00 00 00 00	 DD	 $LN14@VBI_Decode@3
  00158	00 00 00 00	 DD	 $LN11@VBI_Decode@3
  0015c	00 00 00 00	 DD	 $LN10@VBI_Decode@3
$LN21@VBI_Decode@3:
  00160	00 00 00 00	 DD	 $LN5@VBI_Decode@3
  00164	00 00 00 00	 DD	 $LN4@VBI_Decode@3
  00168	00 00 00 00	 DD	 $LN8@VBI_Decode@3
  0016c	00 00 00 00	 DD	 $LN8@VBI_Decode@3
  00170	00 00 00 00	 DD	 $LN3@VBI_Decode@3
  00174	00 00 00 00	 DD	 $LN2@VBI_Decode@3
?VBI_DecodeLine_CC@@YAHPAEW4eCCMode@@H@Z ENDP		; VBI_DecodeLine_CC
_TEXT	ENDS
PUBLIC	__real@3fe0189374bc6a7f
PUBLIC	?CC_Init_Data@@YAXN@Z				; CC_Init_Data
;	COMDAT __real@3fe0189374bc6a7f
CONST	SEGMENT
__real@3fe0189374bc6a7f DQ 03fe0189374bc6a7fr	; 0.503
; Function compile flags: /Odtp
CONST	ENDS
;	COMDAT ?CC_Init_Data@@YAXN@Z
_TEXT	SEGMENT
tv67 = -8						; size = 4
_TVFormat$ = -4						; size = 4
_VBI_Frequency$ = 8					; size = 8
?CC_Init_Data@@YAXN@Z PROC				; CC_Init_Data, COMDAT

; 62   : {

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

; 63   :     TTVFormat* TVFormat = GetTVFormat(Providers_GetCurrentSource()->GetFormat());

  00006	e8 00 00 00 00	 call	 ?Providers_GetCurrentSource@@YAPAVCSource@@XZ ; Providers_GetCurrentSource
  0000b	89 45 f8	 mov	 DWORD PTR tv67[ebp], eax
  0000e	8b 45 f8	 mov	 eax, DWORD PTR tv67[ebp]
  00011	8b 10		 mov	 edx, DWORD PTR [eax]
  00013	8b 4d f8	 mov	 ecx, DWORD PTR tv67[ebp]
  00016	8b 42 64	 mov	 eax, DWORD PTR [edx+100]
  00019	ff d0		 call	 eax
  0001b	50		 push	 eax
  0001c	e8 00 00 00 00	 call	 ?GetTVFormat@@YAPAUTTVFormat@@W4eVideoFormat@@@Z ; GetTVFormat
  00021	83 c4 04	 add	 esp, 4
  00024	89 45 fc	 mov	 DWORD PTR _TVFormat$[ebp], eax

; 64   :     // there are two different CC frequencies
; 65   :     // one for PAL type and one for NTSC type formats
; 66   :     if(TVFormat->wCropHeight == 576)

  00027	8b 4d fc	 mov	 ecx, DWORD PTR _TVFormat$[ebp]
  0002a	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  0002d	81 fa 40 02 00
	00		 cmp	 edx, 576		; 00000240H
  00033	75 3a		 jne	 SHORT $LN2@CC_Init_Da

; 67   :     {
; 68   :         CC_Clock = (int)(VBI_Frequency / 0.5 + 0.5);

  00035	dd 45 08	 fld	 QWORD PTR _VBI_Frequency$[ebp]
  00038	dc 35 00 00 00
	00		 fdiv	 QWORD PTR __real@3fe0000000000000
  0003e	dc 05 00 00 00
	00		 fadd	 QWORD PTR __real@3fe0000000000000
  00044	e8 00 00 00 00	 call	 __ftol2_sse
  00049	a3 00 00 00 00	 mov	 DWORD PTR ?CC_Clock@@3HA, eax ; CC_Clock

; 69   :         CC_Gap = (int)(VBI_Frequency * 9 / 0.5 + 0.5);

  0004e	dd 45 08	 fld	 QWORD PTR _VBI_Frequency$[ebp]
  00051	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@4022000000000000
  00057	dc 35 00 00 00
	00		 fdiv	 QWORD PTR __real@3fe0000000000000
  0005d	dc 05 00 00 00
	00		 fadd	 QWORD PTR __real@3fe0000000000000
  00063	e8 00 00 00 00	 call	 __ftol2_sse
  00068	a3 00 00 00 00	 mov	 DWORD PTR ?CC_Gap@@3HA, eax ; CC_Gap

; 70   :     }
; 71   :     else

  0006d	eb 38		 jmp	 SHORT $LN1@CC_Init_Da
$LN2@CC_Init_Da:

; 72   :     {
; 73   :         CC_Clock = (int)(VBI_Frequency / 0.503 + 0.5);

  0006f	dd 45 08	 fld	 QWORD PTR _VBI_Frequency$[ebp]
  00072	dc 35 00 00 00
	00		 fdiv	 QWORD PTR __real@3fe0189374bc6a7f
  00078	dc 05 00 00 00
	00		 fadd	 QWORD PTR __real@3fe0000000000000
  0007e	e8 00 00 00 00	 call	 __ftol2_sse
  00083	a3 00 00 00 00	 mov	 DWORD PTR ?CC_Clock@@3HA, eax ; CC_Clock

; 74   :         CC_Gap = (int)(VBI_Frequency * 9 / 0.503 + 0.5);

  00088	dd 45 08	 fld	 QWORD PTR _VBI_Frequency$[ebp]
  0008b	dc 0d 00 00 00
	00		 fmul	 QWORD PTR __real@4022000000000000
  00091	dc 35 00 00 00
	00		 fdiv	 QWORD PTR __real@3fe0189374bc6a7f
  00097	dc 05 00 00 00
	00		 fadd	 QWORD PTR __real@3fe0000000000000
  0009d	e8 00 00 00 00	 call	 __ftol2_sse
  000a2	a3 00 00 00 00	 mov	 DWORD PTR ?CC_Gap@@3HA, eax ; CC_Gap
$LN1@CC_Init_Da:

; 75   :     }
; 76   : }

  000a7	8b e5		 mov	 esp, ebp
  000a9	5d		 pop	 ebp
  000aa	c3		 ret	 0
?CC_Init_Data@@YAXN@Z ENDP				; CC_Init_Data
PUBLIC	?CC_PaintScreen@@YAXPAUHWND__@@PAUTCCScreen@@PAUHDC__@@PAUtagRECT@@@Z ; CC_PaintScreen
; Function compile flags: /Odtp
;	COMDAT ?CC_PaintScreen@@YAXPAUHWND__@@PAUTCCScreen@@PAUHDC__@@PAUtagRECT@@@Z
_TEXT	SEGMENT
_nFontsize$ = -24					; size = 4
_i$ = -20						; size = 4
_LineRect$ = -16					; size = 16
_hWnd$ = 8						; size = 4
_Screen$ = 12						; size = 4
_hDC$ = 16						; size = 4
_PaintRect$ = 20					; size = 4
?CC_PaintScreen@@YAXPAUHWND__@@PAUTCCScreen@@PAUHDC__@@PAUtagRECT@@@Z PROC ; CC_PaintScreen, COMDAT

; 1020 : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 18	 sub	 esp, 24			; 00000018H

; 1021 :     int i;
; 1022 :     RECT LineRect;
; 1023 :     int nFontsize;
; 1024 : 
; 1025 :     if (hDC != NULL)

  00006	83 7d 10 00	 cmp	 DWORD PTR _hDC$[ebp], 0
  0000a	0f 84 c5 00 00
	00		 je	 $LN6@CC_PaintSc

; 1026 :     {
; 1027 :         nFontsize = (PaintRect->bottom - PaintRect->top) / 17;

  00010	8b 45 14	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  00013	8b 4d 14	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  00016	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  00019	2b 41 04	 sub	 eax, DWORD PTR [ecx+4]
  0001c	99		 cdq
  0001d	b9 11 00 00 00	 mov	 ecx, 17			; 00000011H
  00022	f7 f9		 idiv	 ecx
  00024	89 45 e8	 mov	 DWORD PTR _nFontsize$[ebp], eax

; 1028 :         if(nFontsize <= 1)

  00027	83 7d e8 01	 cmp	 DWORD PTR _nFontsize$[ebp], 1
  0002b	7f 05		 jg	 SHORT $LN4@CC_PaintSc

; 1029 :         {
; 1030 :             return;

  0002d	e9 a3 00 00 00	 jmp	 $LN6@CC_PaintSc
$LN4@CC_PaintSc:

; 1031 :         }
; 1032 : 
; 1033 :         for(i = 0; i < 15; i++)

  00032	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _i$[ebp], 0
  00039	eb 09		 jmp	 SHORT $LN3@CC_PaintSc
$LN2@CC_PaintSc:
  0003b	8b 55 ec	 mov	 edx, DWORD PTR _i$[ebp]
  0003e	83 c2 01	 add	 edx, 1
  00041	89 55 ec	 mov	 DWORD PTR _i$[ebp], edx
$LN3@CC_PaintSc:
  00044	83 7d ec 0f	 cmp	 DWORD PTR _i$[ebp], 15	; 0000000fH
  00048	0f 8d 87 00 00
	00		 jge	 $LN6@CC_PaintSc

; 1034 :         {
; 1035 :             LineRect.top = PaintRect->top + ((PaintRect->bottom - PaintRect->top) * (i + 1)) / 17;

  0004e	8b 45 14	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  00051	8b 4d 14	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  00054	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  00057	2b 41 04	 sub	 eax, DWORD PTR [ecx+4]
  0005a	8b 55 ec	 mov	 edx, DWORD PTR _i$[ebp]
  0005d	83 c2 01	 add	 edx, 1
  00060	0f af c2	 imul	 eax, edx
  00063	99		 cdq
  00064	b9 11 00 00 00	 mov	 ecx, 17			; 00000011H
  00069	f7 f9		 idiv	 ecx
  0006b	8b 55 14	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  0006e	03 42 04	 add	 eax, DWORD PTR [edx+4]
  00071	89 45 f4	 mov	 DWORD PTR _LineRect$[ebp+4], eax

; 1036 :             LineRect.bottom = PaintRect->top + ((PaintRect->bottom - PaintRect->top) * (i + 2)) / 17;

  00074	8b 45 14	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  00077	8b 4d 14	 mov	 ecx, DWORD PTR _PaintRect$[ebp]
  0007a	8b 40 0c	 mov	 eax, DWORD PTR [eax+12]
  0007d	2b 41 04	 sub	 eax, DWORD PTR [ecx+4]
  00080	8b 55 ec	 mov	 edx, DWORD PTR _i$[ebp]
  00083	83 c2 02	 add	 edx, 2
  00086	0f af c2	 imul	 eax, edx
  00089	99		 cdq
  0008a	b9 11 00 00 00	 mov	 ecx, 17			; 00000011H
  0008f	f7 f9		 idiv	 ecx
  00091	8b 55 14	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  00094	03 42 04	 add	 eax, DWORD PTR [edx+4]
  00097	89 45 fc	 mov	 DWORD PTR _LineRect$[ebp+12], eax

; 1037 :             LineRect.left = PaintRect->left;

  0009a	8b 45 14	 mov	 eax, DWORD PTR _PaintRect$[ebp]
  0009d	8b 08		 mov	 ecx, DWORD PTR [eax]
  0009f	89 4d f0	 mov	 DWORD PTR _LineRect$[ebp], ecx

; 1038 :             LineRect.right = PaintRect->right;

  000a2	8b 55 14	 mov	 edx, DWORD PTR _PaintRect$[ebp]
  000a5	8b 42 08	 mov	 eax, DWORD PTR [edx+8]
  000a8	89 45 f8	 mov	 DWORD PTR _LineRect$[ebp+8], eax

; 1039 :             CC_PaintLine(hWnd, &Screen->ScreenData[i][0], hDC, &LineRect, nFontsize);

  000ab	8b 4d e8	 mov	 ecx, DWORD PTR _nFontsize$[ebp]
  000ae	51		 push	 ecx
  000af	8d 55 f0	 lea	 edx, DWORD PTR _LineRect$[ebp]
  000b2	52		 push	 edx
  000b3	8b 45 10	 mov	 eax, DWORD PTR _hDC$[ebp]
  000b6	50		 push	 eax
  000b7	8b 4d ec	 mov	 ecx, DWORD PTR _i$[ebp]
  000ba	69 c9 40 05 00
	00		 imul	 ecx, 1344		; 00000540H
  000c0	03 4d 0c	 add	 ecx, DWORD PTR _Screen$[ebp]
  000c3	51		 push	 ecx
  000c4	8b 55 08	 mov	 edx, DWORD PTR _hWnd$[ebp]
  000c7	52		 push	 edx
  000c8	e8 00 00 00 00	 call	 ?CC_PaintLine@@YAXPAUHWND__@@PAUTCCChar@@PAUHDC__@@PAUtagRECT@@H@Z ; CC_PaintLine
  000cd	83 c4 14	 add	 esp, 20			; 00000014H

; 1040 :         }

  000d0	e9 66 ff ff ff	 jmp	 $LN2@CC_PaintSc
$LN6@CC_PaintSc:

; 1041 :     }
; 1042 : }

  000d5	8b e5		 mov	 esp, ebp
  000d7	5d		 pop	 ebp
  000d8	c3		 ret	 0
?CC_PaintScreen@@YAXPAUHWND__@@PAUTCCScreen@@PAUHDC__@@PAUtagRECT@@@Z ENDP ; CC_PaintScreen
PUBLIC	__$ArrayPad$
PUBLIC	?webtv_check@@YAXPA_WH@Z			; webtv_check
; Function compile flags: /Odtp
;	COMDAT ?webtv_check@@YAXPA_WH@Z
_TEXT	SEGMENT
_nwords$ = -40						; size = 4
_nbytes$ = -36						; size = 4
_sum$ = -32						; size = 4
_csum$ = -28						; size = 2
_temp$ = -24						; size = 18
__$ArrayPad$ = -4					; size = 4
_buf$ = 8						; size = 4
_len$ = 12						; size = 4
?webtv_check@@YAXPA_WH@Z PROC				; webtv_check, COMDAT

; 317  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 28	 sub	 esp, 40			; 00000028H
  00006	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000b	33 c5		 xor	 eax, ebp
  0000d	89 45 fc	 mov	 DWORD PTR __$ArrayPad$[ebp], eax

; 318  :     unsigned long   sum;
; 319  :     unsigned long   nwords;
; 320  :     unsigned short  csum=0;

  00010	33 c0		 xor	 eax, eax
  00012	66 89 45 e4	 mov	 WORD PTR _csum$[ebp], ax

; 321  :     TCHAR temp[9];
; 322  :     int nbytes=0;

  00016	c7 45 dc 00 00
	00 00		 mov	 DWORD PTR _nbytes$[ebp], 0
$LN14@webtv_chec:

; 323  : 
; 324  :     while (buf[0]!='<' && len > 6)  //search for the start

  0001d	8b 4d 08	 mov	 ecx, DWORD PTR _buf$[ebp]
  00020	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  00023	83 fa 3c	 cmp	 edx, 60			; 0000003cH
  00026	74 1a		 je	 SHORT $LN13@webtv_chec
  00028	83 7d 0c 06	 cmp	 DWORD PTR _len$[ebp], 6
  0002c	7e 14		 jle	 SHORT $LN13@webtv_chec

; 325  :     {
; 326  :         buf++; len--;

  0002e	8b 45 08	 mov	 eax, DWORD PTR _buf$[ebp]
  00031	83 c0 02	 add	 eax, 2
  00034	89 45 08	 mov	 DWORD PTR _buf$[ebp], eax
  00037	8b 4d 0c	 mov	 ecx, DWORD PTR _len$[ebp]
  0003a	83 e9 01	 sub	 ecx, 1
  0003d	89 4d 0c	 mov	 DWORD PTR _len$[ebp], ecx

; 327  :     }

  00040	eb db		 jmp	 SHORT $LN14@webtv_chec
$LN13@webtv_chec:

; 328  : 
; 329  :     if (len == 6) //failure to find start

  00042	83 7d 0c 06	 cmp	 DWORD PTR _len$[ebp], 6
  00046	75 05		 jne	 SHORT $LN11@webtv_chec

; 330  :         return;

  00048	e9 50 01 00 00	 jmp	 $LN15@webtv_chec
$LN11@webtv_chec:

; 331  : 
; 332  : 
; 333  :     while (nbytes+6 <= len)

  0004d	8b 55 dc	 mov	 edx, DWORD PTR _nbytes$[ebp]
  00050	83 c2 06	 add	 edx, 6
  00053	3b 55 0c	 cmp	 edx, DWORD PTR _len$[ebp]
  00056	7f 3e		 jg	 SHORT $LN10@webtv_chec

; 334  :     {
; 335  :         //look for end of object checksum, it's enclosed in []'s and there shouldn't be any [' after
; 336  :         if (buf[nbytes] == '[' && buf[nbytes+5] == ']' && buf[nbytes+6] != '[')

  00058	8b 45 dc	 mov	 eax, DWORD PTR _nbytes$[ebp]
  0005b	8b 4d 08	 mov	 ecx, DWORD PTR _buf$[ebp]
  0005e	0f b7 14 41	 movzx	 edx, WORD PTR [ecx+eax*2]
  00062	83 fa 5b	 cmp	 edx, 91			; 0000005bH
  00065	75 24		 jne	 SHORT $LN9@webtv_chec
  00067	8b 45 dc	 mov	 eax, DWORD PTR _nbytes$[ebp]
  0006a	8b 4d 08	 mov	 ecx, DWORD PTR _buf$[ebp]
  0006d	0f b7 54 41 0a	 movzx	 edx, WORD PTR [ecx+eax*2+10]
  00072	83 fa 5d	 cmp	 edx, 93			; 0000005dH
  00075	75 14		 jne	 SHORT $LN9@webtv_chec
  00077	8b 45 dc	 mov	 eax, DWORD PTR _nbytes$[ebp]
  0007a	8b 4d 08	 mov	 ecx, DWORD PTR _buf$[ebp]
  0007d	0f b7 54 41 0c	 movzx	 edx, WORD PTR [ecx+eax*2+12]
  00082	83 fa 5b	 cmp	 edx, 91			; 0000005bH
  00085	74 04		 je	 SHORT $LN9@webtv_chec

; 337  :             break;

  00087	eb 0d		 jmp	 SHORT $LN10@webtv_chec

; 338  :         else

  00089	eb 09		 jmp	 SHORT $LN8@webtv_chec
$LN9@webtv_chec:

; 339  :             nbytes++;

  0008b	8b 45 dc	 mov	 eax, DWORD PTR _nbytes$[ebp]
  0008e	83 c0 01	 add	 eax, 1
  00091	89 45 dc	 mov	 DWORD PTR _nbytes$[ebp], eax
$LN8@webtv_chec:

; 340  :     }

  00094	eb b7		 jmp	 SHORT $LN11@webtv_chec
$LN10@webtv_chec:

; 341  :     if (nbytes+6>len) //failure to find end

  00096	8b 4d dc	 mov	 ecx, DWORD PTR _nbytes$[ebp]
  00099	83 c1 06	 add	 ecx, 6
  0009c	3b 4d 0c	 cmp	 ecx, DWORD PTR _len$[ebp]
  0009f	7e 05		 jle	 SHORT $LN7@webtv_chec

; 342  :         return;

  000a1	e9 f7 00 00 00	 jmp	 $LN15@webtv_chec
$LN7@webtv_chec:

; 343  : 
; 344  :     nwords = nbytes >> 1; sum = 0;

  000a6	8b 55 dc	 mov	 edx, DWORD PTR _nbytes$[ebp]
  000a9	d1 fa		 sar	 edx, 1
  000ab	89 55 d8	 mov	 DWORD PTR _nwords$[ebp], edx
  000ae	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR _sum$[ebp], 0
$LN6@webtv_chec:

; 345  : 
; 346  :     //add up all two byte words
; 347  :     while (nwords-- > 0) {

  000b5	8b 45 d8	 mov	 eax, DWORD PTR _nwords$[ebp]
  000b8	8b 4d d8	 mov	 ecx, DWORD PTR _nwords$[ebp]
  000bb	83 e9 01	 sub	 ecx, 1
  000be	89 4d d8	 mov	 DWORD PTR _nwords$[ebp], ecx
  000c1	85 c0		 test	 eax, eax
  000c3	76 2f		 jbe	 SHORT $LN5@webtv_chec

; 348  :         sum += *buf++ << 8;

  000c5	8b 55 08	 mov	 edx, DWORD PTR _buf$[ebp]
  000c8	0f b7 02	 movzx	 eax, WORD PTR [edx]
  000cb	c1 e0 08	 shl	 eax, 8
  000ce	03 45 e0	 add	 eax, DWORD PTR _sum$[ebp]
  000d1	89 45 e0	 mov	 DWORD PTR _sum$[ebp], eax
  000d4	8b 4d 08	 mov	 ecx, DWORD PTR _buf$[ebp]
  000d7	83 c1 02	 add	 ecx, 2
  000da	89 4d 08	 mov	 DWORD PTR _buf$[ebp], ecx

; 349  :         sum += *buf++;

  000dd	8b 55 08	 mov	 edx, DWORD PTR _buf$[ebp]
  000e0	0f b7 02	 movzx	 eax, WORD PTR [edx]
  000e3	03 45 e0	 add	 eax, DWORD PTR _sum$[ebp]
  000e6	89 45 e0	 mov	 DWORD PTR _sum$[ebp], eax
  000e9	8b 4d 08	 mov	 ecx, DWORD PTR _buf$[ebp]
  000ec	83 c1 02	 add	 ecx, 2
  000ef	89 4d 08	 mov	 DWORD PTR _buf$[ebp], ecx

; 350  :     }

  000f2	eb c1		 jmp	 SHORT $LN6@webtv_chec
$LN5@webtv_chec:

; 351  :     if (nbytes & 1) {

  000f4	8b 55 dc	 mov	 edx, DWORD PTR _nbytes$[ebp]
  000f7	83 e2 01	 and	 edx, 1
  000fa	74 0f		 je	 SHORT $LN4@webtv_chec

; 352  :         sum += *buf << 8;

  000fc	8b 45 08	 mov	 eax, DWORD PTR _buf$[ebp]
  000ff	0f b7 08	 movzx	 ecx, WORD PTR [eax]
  00102	c1 e1 08	 shl	 ecx, 8
  00105	03 4d e0	 add	 ecx, DWORD PTR _sum$[ebp]
  00108	89 4d e0	 mov	 DWORD PTR _sum$[ebp], ecx
$LN4@webtv_chec:

; 353  :     }
; 354  :     csum = (unsigned short)(sum >> 16);

  0010b	8b 55 e0	 mov	 edx, DWORD PTR _sum$[ebp]
  0010e	c1 ea 10	 shr	 edx, 16			; 00000010H
  00111	66 89 55 e4	 mov	 WORD PTR _csum$[ebp], dx
$LN3@webtv_chec:

; 355  :     while(csum !=0) {

  00115	0f b7 45 e4	 movzx	 eax, WORD PTR _csum$[ebp]
  00119	85 c0		 test	 eax, eax
  0011b	74 1e		 je	 SHORT $LN2@webtv_chec

; 356  :         sum = csum + (sum & 0xffff);

  0011d	0f b7 4d e4	 movzx	 ecx, WORD PTR _csum$[ebp]
  00121	8b 55 e0	 mov	 edx, DWORD PTR _sum$[ebp]
  00124	81 e2 ff ff 00
	00		 and	 edx, 65535		; 0000ffffH
  0012a	03 ca		 add	 ecx, edx
  0012c	89 4d e0	 mov	 DWORD PTR _sum$[ebp], ecx

; 357  :         csum = (unsigned short)(sum >> 16);

  0012f	8b 45 e0	 mov	 eax, DWORD PTR _sum$[ebp]
  00132	c1 e8 10	 shr	 eax, 16			; 00000010H
  00135	66 89 45 e4	 mov	 WORD PTR _csum$[ebp], ax

; 358  :     }

  00139	eb da		 jmp	 SHORT $LN3@webtv_chec
$LN2@webtv_chec:

; 359  :     _stprintf(temp,_T("%04X\n"),(int)~sum&0xffff);

  0013b	8b 4d e0	 mov	 ecx, DWORD PTR _sum$[ebp]
  0013e	f7 d1		 not	 ecx
  00140	81 e1 ff ff 00
	00		 and	 ecx, 65535		; 0000ffffH
  00146	51		 push	 ecx
  00147	68 00 00 00 00	 push	 OFFSET ??_C@_1M@OCKMCADJ@?$AA?$CF?$AA0?$AA4?$AAX?$AA?6?$AA?$AA@
  0014c	8d 55 e8	 lea	 edx, DWORD PTR _temp$[ebp]
  0014f	52		 push	 edx
  00150	e8 00 00 00 00	 call	 __swprintf
  00155	83 c4 0c	 add	 esp, 12			; 0000000cH

; 360  :     buf++;

  00158	8b 45 08	 mov	 eax, DWORD PTR _buf$[ebp]
  0015b	83 c0 02	 add	 eax, 2
  0015e	89 45 08	 mov	 DWORD PTR _buf$[ebp], eax

; 361  :     if(!_tcsncmp(buf,temp,4))

  00161	6a 04		 push	 4
  00163	8d 4d e8	 lea	 ecx, DWORD PTR _temp$[ebp]
  00166	51		 push	 ecx
  00167	8b 55 08	 mov	 edx, DWORD PTR _buf$[ebp]
  0016a	52		 push	 edx
  0016b	e8 00 00 00 00	 call	 _wcsncmp
  00170	83 c4 0c	 add	 esp, 12			; 0000000cH
  00173	85 c0		 test	 eax, eax
  00175	75 26		 jne	 SHORT $LN15@webtv_chec

; 362  :     {
; 363  :         buf[5]=0;

  00177	33 c0		 xor	 eax, eax
  00179	8b 4d 08	 mov	 ecx, DWORD PTR _buf$[ebp]
  0017c	66 89 41 0a	 mov	 WORD PTR [ecx+10], ax

; 364  :         LOG(5, _T("\33[35mWEBTV: %s\33[0m\n"),buf-nbytes-1);

  00180	8b 55 dc	 mov	 edx, DWORD PTR _nbytes$[ebp]
  00183	d1 e2		 shl	 edx, 1
  00185	8b 45 08	 mov	 eax, DWORD PTR _buf$[ebp]
  00188	2b c2		 sub	 eax, edx
  0018a	83 e8 02	 sub	 eax, 2
  0018d	50		 push	 eax
  0018e	68 00 00 00 00	 push	 OFFSET ??_C@_1CI@NGPGBM@?$AA?$BL?$AA?$FL?$AA3?$AA5?$AAm?$AAW?$AAE?$AAB?$AAT?$AAV?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@
  00193	6a 05		 push	 5
  00195	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0019a	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN15@webtv_chec:

; 365  :     }
; 366  : }

  0019d	8b 4d fc	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  001a0	33 cd		 xor	 ecx, ebp
  001a2	e8 00 00 00 00	 call	 @__security_check_cookie@4
  001a7	8b e5		 mov	 esp, ebp
  001a9	5d		 pop	 ebp
  001aa	c3		 ret	 0
?webtv_check@@YAXPA_WH@Z ENDP				; webtv_check
_TEXT	ENDS
PUBLIC	?XDSdecode@@YAHH@Z				; XDSdecode
; Function compile flags: /Odtp
;	COMDAT ?XDSdecode@@YAHH@Z
_TEXT	SEGMENT
tv157 = -16						; size = 4
_b1$ = -12						; size = 4
_b2$ = -8						; size = 4
_length$ = -4						; size = 4
_data$ = 8						; size = 4
?XDSdecode@@YAHH@Z PROC					; XDSdecode, COMDAT

; 206  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 10	 sub	 esp, 16			; 00000010H

; 207  :     int b1, b2, length;
; 208  :     if (data == -1)

  00006	83 7d 08 ff	 cmp	 DWORD PTR _data$[ebp], -1
  0000a	75 08		 jne	 SHORT $LN28@XDSdecode

; 209  :         return -1;

  0000c	83 c8 ff	 or	 eax, -1
  0000f	e9 4a 05 00 00	 jmp	 $LN29@XDSdecode
$LN28@XDSdecode:

; 210  : 
; 211  :     b1 = data & 0x7F;

  00014	8b 45 08	 mov	 eax, DWORD PTR _data$[ebp]
  00017	83 e0 7f	 and	 eax, 127		; 0000007fH
  0001a	89 45 f4	 mov	 DWORD PTR _b1$[ebp], eax

; 212  :     b2 = (data>>8) & 0x7F;

  0001d	8b 4d 08	 mov	 ecx, DWORD PTR _data$[ebp]
  00020	c1 f9 08	 sar	 ecx, 8
  00023	83 e1 7f	 and	 ecx, 127		; 0000007fH
  00026	89 4d f8	 mov	 DWORD PTR _b2$[ebp], ecx

; 213  : 
; 214  :     if (b1 < 15) // start packet

  00029	83 7d f4 0f	 cmp	 DWORD PTR _b1$[ebp], 15	; 0000000fH
  0002d	7d 6c		 jge	 SHORT $LN27@XDSdecode

; 215  :     {
; 216  :         Mode = b1;

  0002f	8b 55 f4	 mov	 edx, DWORD PTR _b1$[ebp]
  00032	89 15 00 00 00
	00		 mov	 DWORD PTR ?Mode@@3HA, edx ; Mode

; 217  :         Type = b2;

  00038	8b 45 f8	 mov	 eax, DWORD PTR _b2$[ebp]
  0003b	a3 00 00 00 00	 mov	 DWORD PTR ?Type@@3HA, eax ; Type

; 218  :         InfoCheckSum = b1 + b2 + 15;

  00040	8b 4d f8	 mov	 ecx, DWORD PTR _b2$[ebp]
  00043	8b 55 f4	 mov	 edx, DWORD PTR _b1$[ebp]
  00046	8d 44 0a 0f	 lea	 eax, DWORD PTR [edx+ecx+15]
  0004a	a2 00 00 00 00	 mov	 BYTE PTR ?InfoCheckSum@@3DA, al ; InfoCheckSum

; 219  :         if (Mode > 8 || Type > 20)

  0004f	83 3d 00 00 00
	00 08		 cmp	 DWORD PTR ?Mode@@3HA, 8	; Mode
  00056	7f 09		 jg	 SHORT $LN25@XDSdecode
  00058	83 3d 00 00 00
	00 14		 cmp	 DWORD PTR ?Type@@3HA, 20 ; Type, 00000014H
  0005f	7e 14		 jle	 SHORT $LN26@XDSdecode
$LN25@XDSdecode:

; 220  :         {
; 221  : //          LOG(5, _T("%% Unsupported Mode %s(%d) [%d]\n"),Modes[(Mode-1)>>1],Mode,Type);
; 222  :             Mode=0; Type=0;

  00061	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?Mode@@3HA, 0	; Mode
  0006b	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?Type@@3HA, 0	; Type
$LN26@XDSdecode:

; 223  :         }
; 224  :         pInfo = NewInfo[Mode][Type];

  00075	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?Mode@@3HA ; Mode
  0007b	69 c9 00 32 00
	00		 imul	 ecx, 12800		; 00003200H
  00081	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?Type@@3HA ; Type
  00087	c1 e2 09	 shl	 edx, 9
  0008a	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?NewInfo@@3PAY1BJ@BAA@_WA[ecx+edx]
  00091	a3 00 00 00 00	 mov	 DWORD PTR ?pInfo@@3PA_WA, eax ; pInfo
  00096	e9 c1 04 00 00	 jmp	 $LN24@XDSdecode
$LN27@XDSdecode:

; 225  :     }
; 226  :     else if (b1 == 15) // eof (next byte is checksum)

  0009b	83 7d f4 0f	 cmp	 DWORD PTR _b1$[ebp], 15	; 0000000fH
  0009f	0f 85 3d 04 00
	00		 jne	 $LN23@XDSdecode

; 227  :     {
; 228  : #if 0 //debug
; 229  :         if (Mode == 0)
; 230  :         {
; 231  :             length=pInfo - NewInfo[0][0];
; 232  :             pInfo[1]=0;
; 233  :             LOG(5, _T("LEN: %d\n"),length);
; 234  :             for (y=0;y<length;y++)
; 235  :                 LOG(5, _T(" %03d"),NewInfo[0][0][y]);
; 236  :             LOG(5, _T(" --- %s\n"),NewInfo[0][0]);
; 237  :         }
; 238  : #endif
; 239  :         if (Mode == 0) return 0;

  000a5	83 3d 00 00 00
	00 00		 cmp	 DWORD PTR ?Mode@@3HA, 0	; Mode
  000ac	75 07		 jne	 SHORT $LN22@XDSdecode
  000ae	33 c0		 xor	 eax, eax
  000b0	e9 a9 04 00 00	 jmp	 $LN29@XDSdecode
$LN22@XDSdecode:

; 240  :         if (b2 != 128-((InfoCheckSum%128)&0x7F)) return 0;

  000b5	0f be 0d 00 00
	00 00		 movsx	 ecx, BYTE PTR ?InfoCheckSum@@3DA ; InfoCheckSum
  000bc	81 e1 7f 00 00
	80		 and	 ecx, -2147483521	; 8000007fH
  000c2	79 05		 jns	 SHORT $LN33@XDSdecode
  000c4	49		 dec	 ecx
  000c5	83 c9 80	 or	 ecx, -128		; ffffff80H
  000c8	41		 inc	 ecx
$LN33@XDSdecode:
  000c9	83 e1 7f	 and	 ecx, 127		; 0000007fH
  000cc	ba 80 00 00 00	 mov	 edx, 128		; 00000080H
  000d1	2b d1		 sub	 edx, ecx
  000d3	39 55 f8	 cmp	 DWORD PTR _b2$[ebp], edx
  000d6	74 07		 je	 SHORT $LN21@XDSdecode
  000d8	33 c0		 xor	 eax, eax
  000da	e9 7f 04 00 00	 jmp	 $LN29@XDSdecode
$LN21@XDSdecode:

; 241  : 
; 242  :         length = pInfo - NewInfo[Mode][Type];

  000df	a1 00 00 00 00	 mov	 eax, DWORD PTR ?Mode@@3HA ; Mode
  000e4	69 c0 00 32 00
	00		 imul	 eax, 12800		; 00003200H
  000ea	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?Type@@3HA ; Type
  000f0	c1 e1 09	 shl	 ecx, 9
  000f3	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?NewInfo@@3PAY1BJ@BAA@_WA[eax+ecx]
  000fa	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  000ff	2b c2		 sub	 eax, edx
  00101	d1 f8		 sar	 eax, 1
  00103	89 45 fc	 mov	 DWORD PTR _length$[ebp], eax

; 243  : 
; 244  :         //don't bug the user with repeated data
; 245  :         //only parse it if it's different
; 246  :         if (_tcsncmp(Info[Mode][Type],NewInfo[Mode][Type],length-1))

  00106	8b 4d fc	 mov	 ecx, DWORD PTR _length$[ebp]
  00109	83 e9 01	 sub	 ecx, 1
  0010c	51		 push	 ecx
  0010d	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?Mode@@3HA ; Mode
  00113	69 d2 00 32 00
	00		 imul	 edx, 12800		; 00003200H
  00119	a1 00 00 00 00	 mov	 eax, DWORD PTR ?Type@@3HA ; Type
  0011e	c1 e0 09	 shl	 eax, 9
  00121	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?NewInfo@@3PAY1BJ@BAA@_WA[edx+eax]
  00128	51		 push	 ecx
  00129	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?Mode@@3HA ; Mode
  0012f	69 d2 00 32 00
	00		 imul	 edx, 12800		; 00003200H
  00135	a1 00 00 00 00	 mov	 eax, DWORD PTR ?Type@@3HA ; Type
  0013a	c1 e0 09	 shl	 eax, 9
  0013d	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Info@@3PAY1BJ@BAA@_WA[edx+eax]
  00144	51		 push	 ecx
  00145	e8 00 00 00 00	 call	 _wcsncmp
  0014a	83 c4 0c	 add	 esp, 12			; 0000000cH
  0014d	85 c0		 test	 eax, eax
  0014f	0f 84 77 03 00
	00		 je	 $LN20@XDSdecode

; 247  :         {
; 248  :             pInfo = Info[Mode][Type];

  00155	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?Mode@@3HA ; Mode
  0015b	69 d2 00 32 00
	00		 imul	 edx, 12800		; 00003200H
  00161	a1 00 00 00 00	 mov	 eax, DWORD PTR ?Type@@3HA ; Type
  00166	c1 e0 09	 shl	 eax, 9
  00169	8d 8c 02 00 00
	00 00		 lea	 ecx, DWORD PTR ?Info@@3PAY1BJ@BAA@_WA[edx+eax]
  00170	89 0d 00 00 00
	00		 mov	 DWORD PTR ?pInfo@@3PA_WA, ecx ; pInfo

; 249  :             memcpy(Info[Mode][Type],NewInfo[Mode][Type],length+1);

  00176	8b 55 fc	 mov	 edx, DWORD PTR _length$[ebp]
  00179	83 c2 01	 add	 edx, 1
  0017c	52		 push	 edx
  0017d	a1 00 00 00 00	 mov	 eax, DWORD PTR ?Mode@@3HA ; Mode
  00182	69 c0 00 32 00
	00		 imul	 eax, 12800		; 00003200H
  00188	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?Type@@3HA ; Type
  0018e	c1 e1 09	 shl	 ecx, 9
  00191	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?NewInfo@@3PAY1BJ@BAA@_WA[eax+ecx]
  00198	52		 push	 edx
  00199	a1 00 00 00 00	 mov	 eax, DWORD PTR ?Mode@@3HA ; Mode
  0019e	69 c0 00 32 00
	00		 imul	 eax, 12800		; 00003200H
  001a4	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?Type@@3HA ; Type
  001aa	c1 e1 09	 shl	 ecx, 9
  001ad	8d 94 08 00 00
	00 00		 lea	 edx, DWORD PTR ?Info@@3PAY1BJ@BAA@_WA[eax+ecx]
  001b4	52		 push	 edx
  001b5	e8 00 00 00 00	 call	 _memcpy
  001ba	83 c4 0c	 add	 esp, 12			; 0000000cH

; 250  :             LOG(5, _T("\33[33m%%"));

  001bd	68 00 00 00 00	 push	 OFFSET ??_C@_1BA@KMJLPCNF@?$AA?$BL?$AA?$FL?$AA3?$AA3?$AAm?$AA?$CF?$AA?$CF?$AA?$AA@
  001c2	6a 05		 push	 5
  001c4	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001c9	83 c4 08	 add	 esp, 8

; 251  :             switch ((Mode<<8) + Type)

  001cc	a1 00 00 00 00	 mov	 eax, DWORD PTR ?Mode@@3HA ; Mode
  001d1	c1 e0 08	 shl	 eax, 8
  001d4	03 05 00 00 00
	00		 add	 eax, DWORD PTR ?Type@@3HA ; Type
  001da	89 45 f0	 mov	 DWORD PTR tv157[ebp], eax
  001dd	81 7d f0 17 01
	00 00		 cmp	 DWORD PTR tv157[ebp], 279 ; 00000117H
  001e4	7f 2d		 jg	 SHORT $LN31@XDSdecode
  001e6	81 7d f0 10 01
	00 00		 cmp	 DWORD PTR tv157[ebp], 272 ; 00000110H
  001ed	0f 8d a5 02 00
	00		 jge	 $LN3@XDSdecode
  001f3	8b 4d f0	 mov	 ecx, DWORD PTR tv157[ebp]
  001f6	81 e9 01 01 00
	00		 sub	 ecx, 257		; 00000101H
  001fc	89 4d f0	 mov	 DWORD PTR tv157[ebp], ecx
  001ff	83 7d f0 04	 cmp	 DWORD PTR tv157[ebp], 4
  00203	0f 87 b4 02 00
	00		 ja	 $LN18@XDSdecode
  00209	8b 55 f0	 mov	 edx, DWORD PTR tv157[ebp]
  0020c	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN34@XDSdecode[edx*4]
$LN31@XDSdecode:
  00213	81 7d f0 01 07
	00 00		 cmp	 DWORD PTR tv157[ebp], 1793 ; 00000701H
  0021a	7f 2c		 jg	 SHORT $LN32@XDSdecode
  0021c	81 7d f0 01 07
	00 00		 cmp	 DWORD PTR tv157[ebp], 1793 ; 00000701H
  00223	0f 84 f5 01 00
	00		 je	 $LN6@XDSdecode
  00229	81 7d f0 01 05
	00 00		 cmp	 DWORD PTR tv157[ebp], 1281 ; 00000501H
  00230	0f 84 95 01 00
	00		 je	 $LN8@XDSdecode
  00236	81 7d f0 02 05
	00 00		 cmp	 DWORD PTR tv157[ebp], 1282 ; 00000502H
  0023d	0f 84 b1 01 00
	00		 je	 $LN7@XDSdecode
  00243	e9 75 02 00 00	 jmp	 $LN18@XDSdecode
$LN32@XDSdecode:
  00248	81 7d f0 04 07
	00 00		 cmp	 DWORD PTR tv157[ebp], 1796 ; 00000704H
  0024f	0f 84 23 02 00
	00		 je	 $LN5@XDSdecode
  00255	e9 63 02 00 00	 jmp	 $LN18@XDSdecode
$LN17@XDSdecode:

; 252  :             {
; 253  :                 case 0x0101:
; 254  :                     LOG(5, _T("TIMECODE: %d/%02d %d:%02d"),
; 255  :                     pInfo[3]&0x0f,pInfo[2]&0x1f,pInfo[1]&0x1f,pInfo[0]&0x3f);

  0025a	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  0025f	0f b7 08	 movzx	 ecx, WORD PTR [eax]
  00262	83 e1 3f	 and	 ecx, 63			; 0000003fH
  00265	51		 push	 ecx
  00266	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  0026c	0f b7 42 02	 movzx	 eax, WORD PTR [edx+2]
  00270	83 e0 1f	 and	 eax, 31			; 0000001fH
  00273	50		 push	 eax
  00274	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  0027a	0f b7 51 04	 movzx	 edx, WORD PTR [ecx+4]
  0027e	83 e2 1f	 and	 edx, 31			; 0000001fH
  00281	52		 push	 edx
  00282	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00287	0f b7 48 06	 movzx	 ecx, WORD PTR [eax+6]
  0028b	83 e1 0f	 and	 ecx, 15			; 0000000fH
  0028e	51		 push	 ecx
  0028f	68 00 00 00 00	 push	 OFFSET ??_C@_1DE@MIKPHIAB@?$AAT?$AAI?$AAM?$AAE?$AAC?$AAO?$AAD?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?$AA@
  00294	6a 05		 push	 5
  00296	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0029b	83 c4 18	 add	 esp, 24			; 00000018H
$LN16@XDSdecode:

; 256  :                 case 0x0102:
; 257  :                     if ((pInfo[1]&0x3f)>5)

  0029e	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  002a4	0f b7 42 02	 movzx	 eax, WORD PTR [edx+2]
  002a8	83 e0 3f	 and	 eax, 63			; 0000003fH
  002ab	83 f8 05	 cmp	 eax, 5
  002ae	7e 05		 jle	 SHORT $LN15@XDSdecode

; 258  :                         break;

  002b0	e9 08 02 00 00	 jmp	 $LN18@XDSdecode
$LN15@XDSdecode:

; 259  :                     LOG(5, _T("LENGTH: %d:%02d:%02d of %d:%02d:00"),
; 260  :                     pInfo[3]&0x3f,pInfo[2]&0x3f,pInfo[4]&0x3f,pInfo[1]&0x3f,pInfo[0]&0x3f);

  002b5	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  002bb	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  002be	83 e2 3f	 and	 edx, 63			; 0000003fH
  002c1	52		 push	 edx
  002c2	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  002c7	0f b7 48 02	 movzx	 ecx, WORD PTR [eax+2]
  002cb	83 e1 3f	 and	 ecx, 63			; 0000003fH
  002ce	51		 push	 ecx
  002cf	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  002d5	0f b7 42 08	 movzx	 eax, WORD PTR [edx+8]
  002d9	83 e0 3f	 and	 eax, 63			; 0000003fH
  002dc	50		 push	 eax
  002dd	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  002e3	0f b7 51 04	 movzx	 edx, WORD PTR [ecx+4]
  002e7	83 e2 3f	 and	 edx, 63			; 0000003fH
  002ea	52		 push	 edx
  002eb	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  002f0	0f b7 48 06	 movzx	 ecx, WORD PTR [eax+6]
  002f4	83 e1 3f	 and	 ecx, 63			; 0000003fH
  002f7	51		 push	 ecx
  002f8	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@BOAKNFKF@?$AAL?$AAE?$AAN?$AAG?$AAT?$AAH?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AAo?$AAf?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?3@
  002fd	6a 05		 push	 5
  002ff	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00304	83 c4 1c	 add	 esp, 28			; 0000001cH

; 261  :                     break;

  00307	e9 b1 01 00 00	 jmp	 $LN18@XDSdecode
$LN14@XDSdecode:

; 262  :                 case 0x0103:
; 263  :                     pInfo[length] = 0;

  0030c	33 d2		 xor	 edx, edx
  0030e	8b 45 fc	 mov	 eax, DWORD PTR _length$[ebp]
  00311	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00317	66 89 14 41	 mov	 WORD PTR [ecx+eax*2], dx

; 264  :                     LOG(5, _T("TITLE: %s"),pInfo);

  0031b	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00321	52		 push	 edx
  00322	68 00 00 00 00	 push	 OFFSET ??_C@_1BE@FONPCFBK@?$AAT?$AAI?$AAT?$AAL?$AAE?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
  00327	6a 05		 push	 5
  00329	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0032e	83 c4 0c	 add	 esp, 12			; 0000000cH

; 265  :                     break;

  00331	e9 87 01 00 00	 jmp	 $LN18@XDSdecode
$LN13@XDSdecode:

; 266  :                 case 0x0105:
; 267  :                     LOG(5, _T("RATING: %s (%d)"),Ratings[pInfo[0]&0x07],pInfo[0]);

  00336	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  0033b	0f b7 08	 movzx	 ecx, WORD PTR [eax]
  0033e	51		 push	 ecx
  0033f	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00345	0f b7 02	 movzx	 eax, WORD PTR [edx]
  00348	83 e0 07	 and	 eax, 7
  0034b	8b 0c 85 00 00
	00 00		 mov	 ecx, DWORD PTR ?Ratings@@3PAPA_WA[eax*4]
  00352	51		 push	 ecx
  00353	68 00 00 00 00	 push	 OFFSET ??_C@_1CA@MPLMOKLI@?$AAR?$AAA?$AAT?$AAI?$AAN?$AAG?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?5?$AA?$CI?$AA?$CF?$AAd?$AA?$CJ?$AA?$AA@
  00358	6a 05		 push	 5
  0035a	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0035f	83 c4 10	 add	 esp, 16			; 00000010H

; 268  :                     if ((pInfo[0]&0x07)>0)

  00362	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00368	0f b7 02	 movzx	 eax, WORD PTR [edx]
  0036b	83 e0 07	 and	 eax, 7
  0036e	7e 56		 jle	 SHORT $LN12@XDSdecode

; 269  :                     {
; 270  :                         if (pInfo[0]&0x20) LOG(5, _T("VIOLENCE"));

  00370	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00376	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  00379	83 e2 20	 and	 edx, 32			; 00000020H
  0037c	74 0f		 je	 SHORT $LN11@XDSdecode
  0037e	68 00 00 00 00	 push	 OFFSET ??_C@_1BC@LCHFCNOL@?$AAV?$AAI?$AAO?$AAL?$AAE?$AAN?$AAC?$AAE?$AA?$AA@
  00383	6a 05		 push	 5
  00385	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0038a	83 c4 08	 add	 esp, 8
$LN11@XDSdecode:

; 271  :                         if (pInfo[0]&0x10) LOG(5, _T("SEXUAL"));

  0038d	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00392	0f b7 08	 movzx	 ecx, WORD PTR [eax]
  00395	83 e1 10	 and	 ecx, 16			; 00000010H
  00398	74 0f		 je	 SHORT $LN10@XDSdecode
  0039a	68 00 00 00 00	 push	 OFFSET ??_C@_1O@HPCNKNMM@?$AAS?$AAE?$AAX?$AAU?$AAA?$AAL?$AA?$AA@
  0039f	6a 05		 push	 5
  003a1	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  003a6	83 c4 08	 add	 esp, 8
$LN10@XDSdecode:

; 272  :                         if (pInfo[0]&0x08) LOG(5, _T("LANGUAGE"));

  003a9	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  003af	0f b7 02	 movzx	 eax, WORD PTR [edx]
  003b2	83 e0 08	 and	 eax, 8
  003b5	74 0f		 je	 SHORT $LN12@XDSdecode
  003b7	68 00 00 00 00	 push	 OFFSET ??_C@_1BC@HEMCLPBJ@?$AAL?$AAA?$AAN?$AAG?$AAU?$AAA?$AAG?$AAE?$AA?$AA@
  003bc	6a 05		 push	 5
  003be	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  003c3	83 c4 08	 add	 esp, 8
$LN12@XDSdecode:

; 273  :                     }
; 274  :                     break;

  003c6	e9 f2 00 00 00	 jmp	 $LN18@XDSdecode
$LN8@XDSdecode:

; 275  :                 case 0x0501:
; 276  :                     pInfo[length] = 0;

  003cb	33 c9		 xor	 ecx, ecx
  003cd	8b 55 fc	 mov	 edx, DWORD PTR _length$[ebp]
  003d0	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  003d5	66 89 0c 50	 mov	 WORD PTR [eax+edx*2], cx

; 277  :                     LOG(5, _T("NETWORK: %s"),pInfo);

  003d9	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  003df	51		 push	 ecx
  003e0	68 00 00 00 00	 push	 OFFSET ??_C@_1BI@PIIKNFKL@?$AAN?$AAE?$AAT?$AAW?$AAO?$AAR?$AAK?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
  003e5	6a 05		 push	 5
  003e7	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  003ec	83 c4 0c	 add	 esp, 12			; 0000000cH

; 278  :                     break;

  003ef	e9 c9 00 00 00	 jmp	 $LN18@XDSdecode
$LN7@XDSdecode:

; 279  :                 case 0x0502:
; 280  :                     pInfo[length] = 0;

  003f4	33 d2		 xor	 edx, edx
  003f6	8b 45 fc	 mov	 eax, DWORD PTR _length$[ebp]
  003f9	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  003ff	66 89 14 41	 mov	 WORD PTR [ecx+eax*2], dx

; 281  :                     LOG(5, _T("CALL: %s"),pInfo);

  00403	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00409	52		 push	 edx
  0040a	68 00 00 00 00	 push	 OFFSET ??_C@_1BC@LOJAINCG@?$AAC?$AAA?$AAL?$AAL?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
  0040f	6a 05		 push	 5
  00411	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00416	83 c4 0c	 add	 esp, 12			; 0000000cH

; 282  :                     break;

  00419	e9 9f 00 00 00	 jmp	 $LN18@XDSdecode
$LN6@XDSdecode:

; 283  :                 case 0x0701:
; 284  :                     LOG(5, _T("CUR.TIME: %d:%02d %d/%02d/%04d UTC"),pInfo[1]&0x1F,pInfo[0]&0x3f,pInfo[3]&0x0f,pInfo[2]&0x1f,(pInfo[5]&0x3f)+1990);

  0041e	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00423	0f b7 48 0a	 movzx	 ecx, WORD PTR [eax+10]
  00427	83 e1 3f	 and	 ecx, 63			; 0000003fH
  0042a	81 c1 c6 07 00
	00		 add	 ecx, 1990		; 000007c6H
  00430	51		 push	 ecx
  00431	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00437	0f b7 42 04	 movzx	 eax, WORD PTR [edx+4]
  0043b	83 e0 1f	 and	 eax, 31			; 0000001fH
  0043e	50		 push	 eax
  0043f	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00445	0f b7 51 06	 movzx	 edx, WORD PTR [ecx+6]
  00449	83 e2 0f	 and	 edx, 15			; 0000000fH
  0044c	52		 push	 edx
  0044d	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00452	0f b7 08	 movzx	 ecx, WORD PTR [eax]
  00455	83 e1 3f	 and	 ecx, 63			; 0000003fH
  00458	51		 push	 ecx
  00459	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  0045f	0f b7 42 02	 movzx	 eax, WORD PTR [edx+2]
  00463	83 e0 1f	 and	 eax, 31			; 0000001fH
  00466	50		 push	 eax
  00467	68 00 00 00 00	 push	 OFFSET ??_C@_1EG@GPMDOPJI@?$AAC?$AAU?$AAR?$AA?4?$AAT?$AAI?$AAM?$AAE?$AA?3?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?$CF?$AA0?$AA2?$AAd?$AA?5?$AA?$CF?$AAd?$AA?1?$AA?$CF?$AA0?$AA2?$AAd?$AA?1?$AA?$CF?$AA0?$AA4?$AAd?$AA?5?$AAU@
  0046c	6a 05		 push	 5
  0046e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00473	83 c4 1c	 add	 esp, 28			; 0000001cH

; 285  :                     break;

  00476	eb 45		 jmp	 SHORT $LN18@XDSdecode
$LN5@XDSdecode:

; 286  :                 case 0x0704: //timezone
; 287  :                     LOG(5, _T("TIMEZONE: UTC-%d"),pInfo[0]&0x1f);

  00478	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  0047e	0f b7 11	 movzx	 edx, WORD PTR [ecx]
  00481	83 e2 1f	 and	 edx, 31			; 0000001fH
  00484	52		 push	 edx
  00485	68 00 00 00 00	 push	 OFFSET ??_C@_1CC@JFPGMOCH@?$AAT?$AAI?$AAM?$AAE?$AAZ?$AAO?$AAN?$AAE?$AA?3?$AA?5?$AAU?$AAT?$AAC?$AA?9?$AA?$CF?$AAd?$AA?$AA@
  0048a	6a 05		 push	 5
  0048c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00491	83 c4 0c	 add	 esp, 12			; 0000000cH

; 288  :                     break;

  00494	eb 27		 jmp	 SHORT $LN18@XDSdecode

; 289  :                 case 0x0104: //program genere
; 290  :                     break;

  00496	eb 25		 jmp	 SHORT $LN18@XDSdecode
$LN3@XDSdecode:

; 291  :                 case 0x0110:
; 292  :                 case 0x0111:
; 293  :                 case 0x0112:
; 294  :                 case 0x0113:
; 295  :                 case 0x0114:
; 296  :                 case 0x0115:
; 297  :                 case 0x0116:
; 298  :                 case 0x0117:
; 299  :                     pInfo[length+1] = 0;

  00498	33 c0		 xor	 eax, eax
  0049a	8b 4d fc	 mov	 ecx, DWORD PTR _length$[ebp]
  0049d	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  004a3	66 89 44 4a 02	 mov	 WORD PTR [edx+ecx*2+2], ax

; 300  :                     LOG(5, _T("DESC: %s"),pInfo);

  004a8	a1 00 00 00 00	 mov	 eax, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  004ad	50		 push	 eax
  004ae	68 00 00 00 00	 push	 OFFSET ??_C@_1BC@MJDNNMCO@?$AAD?$AAE?$AAS?$AAC?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?$AA@
  004b3	6a 05		 push	 5
  004b5	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  004ba	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN18@XDSdecode:

; 301  :                     break;
; 302  :             }
; 303  :             LOG(5, _T("\33[0m\n"));

  004bd	68 00 00 00 00	 push	 OFFSET ??_C@_1M@OGEOKCEA@?$AA?$BL?$AA?$FL?$AA0?$AAm?$AA?6?$AA?$AA@
  004c2	6a 05		 push	 5
  004c4	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  004c9	83 c4 08	 add	 esp, 8
$LN20@XDSdecode:

; 304  :         }
; 305  :         Mode = 0; Type = 0;

  004cc	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?Mode@@3HA, 0	; Mode
  004d6	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?Type@@3HA, 0	; Type
  004e0	eb 7a		 jmp	 SHORT $LN24@XDSdecode
$LN23@XDSdecode:

; 306  :     }
; 307  :     else if( (pInfo - NewInfo[Mode][Type]) < 250 ) // must be a data packet, check if we're in a supported Mode

  004e2	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?Mode@@3HA ; Mode
  004e8	69 c9 00 32 00
	00		 imul	 ecx, 12800		; 00003200H
  004ee	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?Type@@3HA ; Type
  004f4	c1 e2 09	 shl	 edx, 9
  004f7	8d 84 11 00 00
	00 00		 lea	 eax, DWORD PTR ?NewInfo@@3PAY1BJ@BAA@_WA[ecx+edx]
  004fe	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00504	2b c8		 sub	 ecx, eax
  00506	d1 f9		 sar	 ecx, 1
  00508	81 f9 fa 00 00
	00		 cmp	 ecx, 250		; 000000faH
  0050e	7d 4c		 jge	 SHORT $LN24@XDSdecode

; 308  :     {
; 309  :         pInfo[0] = b1; pInfo++;

  00510	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00516	66 8b 45 f4	 mov	 ax, WORD PTR _b1$[ebp]
  0051a	66 89 02	 mov	 WORD PTR [edx], ax
  0051d	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00523	83 c1 02	 add	 ecx, 2
  00526	89 0d 00 00 00
	00		 mov	 DWORD PTR ?pInfo@@3PA_WA, ecx ; pInfo

; 310  :         pInfo[0] = b2; pInfo++;

  0052c	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  00532	66 8b 45 f8	 mov	 ax, WORD PTR _b2$[ebp]
  00536	66 89 02	 mov	 WORD PTR [edx], ax
  00539	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?pInfo@@3PA_WA ; pInfo
  0053f	83 c1 02	 add	 ecx, 2
  00542	89 0d 00 00 00
	00		 mov	 DWORD PTR ?pInfo@@3PA_WA, ecx ; pInfo

; 311  :         InfoCheckSum += b1 + b2;

  00548	8b 55 f4	 mov	 edx, DWORD PTR _b1$[ebp]
  0054b	03 55 f8	 add	 edx, DWORD PTR _b2$[ebp]
  0054e	0f be 05 00 00
	00 00		 movsx	 eax, BYTE PTR ?InfoCheckSum@@3DA ; InfoCheckSum
  00555	03 c2		 add	 eax, edx
  00557	a2 00 00 00 00	 mov	 BYTE PTR ?InfoCheckSum@@3DA, al ; InfoCheckSum
$LN24@XDSdecode:

; 312  :     }
; 313  :     return 0;

  0055c	33 c0		 xor	 eax, eax
$LN29@XDSdecode:

; 314  : }

  0055e	8b e5		 mov	 esp, ebp
  00560	5d		 pop	 ebp
  00561	c3		 ret	 0
  00562	8b ff		 npad	 2
$LN34@XDSdecode:
  00564	00 00 00 00	 DD	 $LN17@XDSdecode
  00568	00 00 00 00	 DD	 $LN16@XDSdecode
  0056c	00 00 00 00	 DD	 $LN14@XDSdecode
  00570	00 00 00 00	 DD	 $LN18@XDSdecode
  00574	00 00 00 00	 DD	 $LN13@XDSdecode
?XDSdecode@@YAHH@Z ENDP					; XDSdecode
PUBLIC	?XDS_DecodeLine@@YAHPAE@Z			; XDS_DecodeLine
; Function compile flags: /Odtp
;	COMDAT ?XDS_DecodeLine@@YAHPAE@Z
_TEXT	SEGMENT
_vbiline$ = 8						; size = 4
?XDS_DecodeLine@@YAHPAE@Z PROC				; XDS_DecodeLine, COMDAT

; 854  : {

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

; 855  :     XDSdecode(decode(vbiline));

  00003	8b 45 08	 mov	 eax, DWORD PTR _vbiline$[ebp]
  00006	50		 push	 eax
  00007	e8 00 00 00 00	 call	 ?decode@@YAHPAE@Z	; decode
  0000c	83 c4 04	 add	 esp, 4
  0000f	50		 push	 eax
  00010	e8 00 00 00 00	 call	 ?XDSdecode@@YAHH@Z	; XDSdecode
  00015	83 c4 04	 add	 esp, 4

; 856  :     return 0;

  00018	33 c0		 xor	 eax, eax

; 857  : }

  0001a	5d		 pop	 ebp
  0001b	c3		 ret	 0
?XDS_DecodeLine@@YAHPAE@Z ENDP				; XDS_DecodeLine
END
