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

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

INCLUDELIB OLDNAMES

PUBLIC	??_C@_0N@FIFNGJBO@?5?5?5?5?$DP?$DP?$DP?$DP?5?5?5?5?$AA@ ; `string'
PUBLIC	??_C@_0O@KOOGCIAC@Subtitle?5page?$AA@		; `string'
PUBLIC	??_C@_0BN@LOGAJGFL@Multi?9page?5with?5?$CFd?5sub?9pages?$AA@ ; `string'
PUBLIC	??_C@_0BC@BFKLMFFP@Page?5not?5included?$AA@	; `string'
PUBLIC	??_C@_0M@KGIJCNFD@Please?5wait?$AA@		; `string'
PUBLIC	?m_WaitMessage@CVTTopText@@0PADA		; CVTTopText::m_WaitMessage
PUBLIC	?m_NoneMessage@CVTTopText@@0PADA		; CVTTopText::m_NoneMessage
PUBLIC	?m_MultiMessage@CVTTopText@@0PADA		; CVTTopText::m_MultiMessage
PUBLIC	?m_SubtitleMessage@CVTTopText@@0PADA		; CVTTopText::m_SubtitleMessage
PUBLIC	?m_EmptyTitleText@CVTTopText@@0PADA		; CVTTopText::m_EmptyTitleText
;	COMDAT ??_C@_0N@FIFNGJBO@?5?5?5?5?$DP?$DP?$DP?$DP?5?5?5?5?$AA@
CONST	SEGMENT
??_C@_0N@FIFNGJBO@?5?5?5?5?$DP?$DP?$DP?$DP?5?5?5?5?$AA@ DB '    ????    ', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0O@KOOGCIAC@Subtitle?5page?$AA@
CONST	SEGMENT
??_C@_0O@KOOGCIAC@Subtitle?5page?$AA@ DB 'Subtitle page', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BN@LOGAJGFL@Multi?9page?5with?5?$CFd?5sub?9pages?$AA@
CONST	SEGMENT
??_C@_0BN@LOGAJGFL@Multi?9page?5with?5?$CFd?5sub?9pages?$AA@ DB 'Multi-pa'
	DB	'ge with %d sub-pages', 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_0BC@BFKLMFFP@Page?5not?5included?$AA@
CONST	SEGMENT
??_C@_0BC@BFKLMFFP@Page?5not?5included?$AA@ DB 'Page not included', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0M@KGIJCNFD@Please?5wait?$AA@
CONST	SEGMENT
??_C@_0M@KGIJCNFD@Please?5wait?$AA@ DB 'Please wait', 00H ; `string'
?m_WaitMessage@CVTTopText@@0PADA DD FLAT:??_C@_0M@KGIJCNFD@Please?5wait?$AA@ ; CVTTopText::m_WaitMessage
?m_NoneMessage@CVTTopText@@0PADA DD FLAT:??_C@_0BC@BFKLMFFP@Page?5not?5included?$AA@ ; CVTTopText::m_NoneMessage
?m_MultiMessage@CVTTopText@@0PADA DD FLAT:??_C@_0BN@LOGAJGFL@Multi?9page?5with?5?$CFd?5sub?9pages?$AA@ ; CVTTopText::m_MultiMessage
?m_SubtitleMessage@CVTTopText@@0PADA DD FLAT:??_C@_0O@KOOGCIAC@Subtitle?5page?$AA@ ; CVTTopText::m_SubtitleMessage
?m_EmptyTitleText@CVTTopText@@0PADA DD FLAT:??_C@_0N@FIFNGJBO@?5?5?5?5?$DP?$DP?$DP?$DP?5?5?5?5?$AA@ ; CVTTopText::m_EmptyTitleText
PUBLIC	?Page2PageHex@CVTTopText@@AAEGF@Z		; CVTTopText::Page2PageHex
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\vttoptext.cpp
;	COMDAT ?Page2PageHex@CVTTopText@@AAEGF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_wPageHex$ = -4						; size = 2
_Page$ = 8						; size = 2
?Page2PageHex@CVTTopText@@AAEGF@Z PROC			; CVTTopText::Page2PageHex, COMDAT
; _this$ = ecx

; 649  : {

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

; 650  :     if (Page < 0 || Page > 799)

  00009	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0000d	85 c0		 test	 eax, eax
  0000f	7c 0c		 jl	 SHORT $LN1@Page2PageH
  00011	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00015	81 f9 1f 03 00
	00		 cmp	 ecx, 799		; 0000031fH
  0001b	7e 04		 jle	 SHORT $LN2@Page2PageH
$LN1@Page2PageH:

; 651  :     {
; 652  :         return 0;

  0001d	33 c0		 xor	 eax, eax
  0001f	eb 61		 jmp	 SHORT $LN3@Page2PageH
$LN2@Page2PageH:

; 653  :     }
; 654  : 
; 655  :     WORD wPageHex = 0;

  00021	33 d2		 xor	 edx, edx
  00023	66 89 55 fc	 mov	 WORD PTR _wPageHex$[ebp], dx

; 656  : 
; 657  :     wPageHex |= Page / 100 * 0x100 + 0x100;

  00027	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0002b	99		 cdq
  0002c	b9 64 00 00 00	 mov	 ecx, 100		; 00000064H
  00031	f7 f9		 idiv	 ecx
  00033	c1 e0 08	 shl	 eax, 8
  00036	05 00 01 00 00	 add	 eax, 256		; 00000100H
  0003b	0f b7 55 fc	 movzx	 edx, WORD PTR _wPageHex$[ebp]
  0003f	0b d0		 or	 edx, eax
  00041	66 89 55 fc	 mov	 WORD PTR _wPageHex$[ebp], dx

; 658  :     wPageHex |= Page % 100 / 10 * 0x10;

  00045	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  00049	99		 cdq
  0004a	b9 64 00 00 00	 mov	 ecx, 100		; 00000064H
  0004f	f7 f9		 idiv	 ecx
  00051	8b c2		 mov	 eax, edx
  00053	99		 cdq
  00054	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  00059	f7 f9		 idiv	 ecx
  0005b	c1 e0 04	 shl	 eax, 4
  0005e	0f b7 55 fc	 movzx	 edx, WORD PTR _wPageHex$[ebp]
  00062	0b d0		 or	 edx, eax
  00064	66 89 55 fc	 mov	 WORD PTR _wPageHex$[ebp], dx

; 659  :     wPageHex |= Page % 10;

  00068	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0006c	99		 cdq
  0006d	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  00072	f7 f9		 idiv	 ecx
  00074	0f b7 45 fc	 movzx	 eax, WORD PTR _wPageHex$[ebp]
  00078	0b c2		 or	 eax, edx
  0007a	66 89 45 fc	 mov	 WORD PTR _wPageHex$[ebp], ax

; 660  : 
; 661  :     return wPageHex;

  0007e	66 8b 45 fc	 mov	 ax, WORD PTR _wPageHex$[ebp]
$LN3@Page2PageH:

; 662  : }

  00082	8b e5		 mov	 esp, ebp
  00084	5d		 pop	 ebp
  00085	c2 04 00	 ret	 4
?Page2PageHex@CVTTopText@@AAEGF@Z ENDP			; CVTTopText::Page2PageHex
_TEXT	ENDS
PUBLIC	?PageHex2Page@CVTTopText@@AAEFG@Z		; CVTTopText::PageHex2Page
; Function compile flags: /Odtp
;	COMDAT ?PageHex2Page@CVTTopText@@AAEFG@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_Page$ = -4						; size = 2
_wPageHex$ = 8						; size = 2
?PageHex2Page@CVTTopText@@AAEFG@Z PROC			; CVTTopText::PageHex2Page, COMDAT
; _this$ = ecx

; 629  : {

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

; 630  :     if ((wPageHex & 0xF00) < 0x100 ||
; 631  :         (wPageHex & 0xF00) > 0x800 ||
; 632  :         (wPageHex & 0x0F0) > 0x090 ||
; 633  :         (wPageHex & 0x00F) > 0x009)

  00009	0f b7 45 08	 movzx	 eax, WORD PTR _wPageHex$[ebp]
  0000d	25 00 0f 00 00	 and	 eax, 3840		; 00000f00H
  00012	3d 00 01 00 00	 cmp	 eax, 256		; 00000100H
  00017	7c 30		 jl	 SHORT $LN1@PageHex2Pa
  00019	0f b7 4d 08	 movzx	 ecx, WORD PTR _wPageHex$[ebp]
  0001d	81 e1 00 0f 00
	00		 and	 ecx, 3840		; 00000f00H
  00023	81 f9 00 08 00
	00		 cmp	 ecx, 2048		; 00000800H
  00029	7f 1e		 jg	 SHORT $LN1@PageHex2Pa
  0002b	0f b7 55 08	 movzx	 edx, WORD PTR _wPageHex$[ebp]
  0002f	81 e2 f0 00 00
	00		 and	 edx, 240		; 000000f0H
  00035	81 fa 90 00 00
	00		 cmp	 edx, 144		; 00000090H
  0003b	7f 0c		 jg	 SHORT $LN1@PageHex2Pa
  0003d	0f b7 45 08	 movzx	 eax, WORD PTR _wPageHex$[ebp]
  00041	83 e0 0f	 and	 eax, 15			; 0000000fH
  00044	83 f8 09	 cmp	 eax, 9
  00047	7e 05		 jle	 SHORT $LN2@PageHex2Pa
$LN1@PageHex2Pa:

; 634  :     {
; 635  :         return -1;

  00049	83 c8 ff	 or	 eax, -1
  0004c	eb 46		 jmp	 SHORT $LN3@PageHex2Pa
$LN2@PageHex2Pa:

; 636  :     }
; 637  : 
; 638  :     short Page;
; 639  : 
; 640  :     Page = (((wPageHex & 0xF00) >> 8) * 100) - 100;

  0004e	0f b7 4d 08	 movzx	 ecx, WORD PTR _wPageHex$[ebp]
  00052	81 e1 00 0f 00
	00		 and	 ecx, 3840		; 00000f00H
  00058	c1 f9 08	 sar	 ecx, 8
  0005b	6b c9 64	 imul	 ecx, 100		; 00000064H
  0005e	83 e9 64	 sub	 ecx, 100		; 00000064H
  00061	66 89 4d fc	 mov	 WORD PTR _Page$[ebp], cx

; 641  :     Page += ((wPageHex & 0x0F0) >> 4) * 10;

  00065	0f b7 55 08	 movzx	 edx, WORD PTR _wPageHex$[ebp]
  00069	81 e2 f0 00 00
	00		 and	 edx, 240		; 000000f0H
  0006f	c1 fa 04	 sar	 edx, 4
  00072	6b d2 0a	 imul	 edx, 10			; 0000000aH
  00075	0f bf 45 fc	 movsx	 eax, WORD PTR _Page$[ebp]
  00079	03 c2		 add	 eax, edx
  0007b	66 89 45 fc	 mov	 WORD PTR _Page$[ebp], ax

; 642  :     Page += ((wPageHex & 0x00F));

  0007f	0f b7 4d 08	 movzx	 ecx, WORD PTR _wPageHex$[ebp]
  00083	83 e1 0f	 and	 ecx, 15			; 0000000fH
  00086	0f bf 55 fc	 movsx	 edx, WORD PTR _Page$[ebp]
  0008a	03 d1		 add	 edx, ecx
  0008c	66 89 55 fc	 mov	 WORD PTR _Page$[ebp], dx

; 643  : 
; 644  :     return Page;

  00090	66 8b 45 fc	 mov	 ax, WORD PTR _Page$[ebp]
$LN3@PageHex2Pa:

; 645  : }

  00094	8b e5		 mov	 esp, ebp
  00096	5d		 pop	 ebp
  00097	c2 04 00	 ret	 4
?PageHex2Page@CVTTopText@@AAEFG@Z ENDP			; CVTTopText::PageHex2Page
_TEXT	ENDS
PUBLIC	?GetNextPage@CVTTopText@@AAEFFPAF@Z		; CVTTopText::GetNextPage
; Function compile flags: /Odtp
;	COMDAT ?GetNextPage@CVTTopText@@AAEFFPAF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$ = -4						; size = 4
_Page$ = 8						; size = 2
_MissingPage$ = 12					; size = 4
?GetNextPage@CVTTopText@@AAEFFPAF@Z PROC		; CVTTopText::GetNextPage, COMDAT
; _this$ = ecx

; 573  : {

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

; 574  :     int i = Page;

  00009	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0000d	89 45 fc	 mov	 DWORD PTR _i$[ebp], eax
$LN5@GetNextPag:

; 575  : 
; 576  :     while ((i = (i + 1) % 800) != Page)

  00010	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00013	83 c0 01	 add	 eax, 1
  00016	99		 cdq
  00017	b9 20 03 00 00	 mov	 ecx, 800		; 00000320H
  0001c	f7 f9		 idiv	 ecx
  0001e	89 55 fc	 mov	 DWORD PTR _i$[ebp], edx
  00021	0f bf 55 08	 movsx	 edx, WORD PTR _Page$[ebp]
  00025	39 55 fc	 cmp	 DWORD PTR _i$[ebp], edx
  00028	74 45		 je	 SHORT $LN4@GetNextPag

; 577  :     {
; 578  :         if (m_BTTable[i] & TOP_UNRECEIVED)

  0002a	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0002d	03 45 fc	 add	 eax, DWORD PTR _i$[ebp]
  00030	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00033	83 e1 10	 and	 ecx, 16			; 00000010H
  00036	74 17		 je	 SHORT $LN3@GetNextPag

; 579  :         {
; 580  :             if (MissingPage != NULL)

  00038	83 7d 0c 00	 cmp	 DWORD PTR _MissingPage$[ebp], 0
  0003c	74 0a		 je	 SHORT $LN2@GetNextPag

; 581  :             {
; 582  :                 *MissingPage = i;

  0003e	8b 55 0c	 mov	 edx, DWORD PTR _MissingPage$[ebp]
  00041	66 8b 45 fc	 mov	 ax, WORD PTR _i$[ebp]
  00045	66 89 02	 mov	 WORD PTR [edx], ax
$LN2@GetNextPag:

; 583  :             }
; 584  :             return -1;

  00048	b8 ff ff ff ff	 mov	 eax, -1
  0004d	eb 24		 jmp	 SHORT $LN6@GetNextPag
$LN3@GetNextPag:

; 585  :         }
; 586  : 
; 587  :         if (m_BTTable[i] >= TOPLEVEL_SUBTITLE &&
; 588  :             m_BTTable[i] <= TOPLEVEL_LASTLEVEL)

  0004f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00052	03 4d fc	 add	 ecx, DWORD PTR _i$[ebp]
  00055	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  00058	83 fa 01	 cmp	 edx, 1
  0005b	7c 10		 jl	 SHORT $LN1@GetNextPag
  0005d	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00060	03 45 fc	 add	 eax, DWORD PTR _i$[ebp]
  00063	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00066	83 f9 0b	 cmp	 ecx, 11			; 0000000bH
  00069	7f 02		 jg	 SHORT $LN1@GetNextPag

; 589  :         {
; 590  :             break;

  0006b	eb 02		 jmp	 SHORT $LN4@GetNextPag
$LN1@GetNextPag:

; 591  :         }
; 592  :     }

  0006d	eb a1		 jmp	 SHORT $LN5@GetNextPag
$LN4@GetNextPag:

; 593  : 
; 594  :     return i;

  0006f	66 8b 45 fc	 mov	 ax, WORD PTR _i$[ebp]
$LN6@GetNextPag:

; 595  : }

  00073	8b e5		 mov	 esp, ebp
  00075	5d		 pop	 ebp
  00076	c2 08 00	 ret	 8
?GetNextPage@CVTTopText@@AAEFFPAF@Z ENDP		; CVTTopText::GetNextPage
_TEXT	ENDS
PUBLIC	?GetNextGroup@CVTTopText@@AAEFFPAF@Z		; CVTTopText::GetNextGroup
; Function compile flags: /Odtp
;	COMDAT ?GetNextGroup@CVTTopText@@AAEFFPAF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$ = -4						; size = 4
_Page$ = 8						; size = 2
_MissingPage$ = 12					; size = 4
?GetNextGroup@CVTTopText@@AAEFFPAF@Z PROC		; CVTTopText::GetNextGroup, COMDAT
; _this$ = ecx

; 517  : {

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

; 518  :     int i = Page;

  00009	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0000d	89 45 fc	 mov	 DWORD PTR _i$[ebp], eax
$LN5@GetNextGro:

; 519  : 
; 520  :     while ((i = (i + 1) % 800) != Page)

  00010	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00013	83 c0 01	 add	 eax, 1
  00016	99		 cdq
  00017	b9 20 03 00 00	 mov	 ecx, 800		; 00000320H
  0001c	f7 f9		 idiv	 ecx
  0001e	89 55 fc	 mov	 DWORD PTR _i$[ebp], edx
  00021	0f bf 55 08	 movsx	 edx, WORD PTR _Page$[ebp]
  00025	39 55 fc	 cmp	 DWORD PTR _i$[ebp], edx
  00028	74 45		 je	 SHORT $LN4@GetNextGro

; 521  :     {
; 522  :         if (m_BTTable[i] & TOP_UNRECEIVED)

  0002a	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0002d	03 45 fc	 add	 eax, DWORD PTR _i$[ebp]
  00030	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00033	83 e1 10	 and	 ecx, 16			; 00000010H
  00036	74 17		 je	 SHORT $LN3@GetNextGro

; 523  :         {
; 524  :             if (MissingPage != NULL)

  00038	83 7d 0c 00	 cmp	 DWORD PTR _MissingPage$[ebp], 0
  0003c	74 0a		 je	 SHORT $LN2@GetNextGro

; 525  :             {
; 526  :                 *MissingPage = i;

  0003e	8b 55 0c	 mov	 edx, DWORD PTR _MissingPage$[ebp]
  00041	66 8b 45 fc	 mov	 ax, WORD PTR _i$[ebp]
  00045	66 89 02	 mov	 WORD PTR [edx], ax
$LN2@GetNextGro:

; 527  :             }
; 528  :             return -1;

  00048	b8 ff ff ff ff	 mov	 eax, -1
  0004d	eb 24		 jmp	 SHORT $LN6@GetNextGro
$LN3@GetNextGro:

; 529  :         }
; 530  : 
; 531  :         if (m_BTTable[i] >= TOPLEVEL_PROGRAM &&
; 532  :             m_BTTable[i] < TOPLEVEL_NORMAL)

  0004f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00052	03 4d fc	 add	 ecx, DWORD PTR _i$[ebp]
  00055	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  00058	83 fa 02	 cmp	 edx, 2
  0005b	7c 10		 jl	 SHORT $LN1@GetNextGro
  0005d	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00060	03 45 fc	 add	 eax, DWORD PTR _i$[ebp]
  00063	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00066	83 f9 08	 cmp	 ecx, 8
  00069	7d 02		 jge	 SHORT $LN1@GetNextGro

; 533  :         {
; 534  :             break;

  0006b	eb 02		 jmp	 SHORT $LN4@GetNextGro
$LN1@GetNextGro:

; 535  :         }
; 536  :     }

  0006d	eb a1		 jmp	 SHORT $LN5@GetNextGro
$LN4@GetNextGro:

; 537  : 
; 538  :     return i;

  0006f	66 8b 45 fc	 mov	 ax, WORD PTR _i$[ebp]
$LN6@GetNextGro:

; 539  : }

  00073	8b e5		 mov	 esp, ebp
  00075	5d		 pop	 ebp
  00076	c2 08 00	 ret	 8
?GetNextGroup@CVTTopText@@AAEFFPAF@Z ENDP		; CVTTopText::GetNextGroup
_TEXT	ENDS
PUBLIC	?GetNextBlock@CVTTopText@@AAEFFPAF@Z		; CVTTopText::GetNextBlock
; Function compile flags: /Odtp
;	COMDAT ?GetNextBlock@CVTTopText@@AAEFFPAF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$ = -4						; size = 4
_Page$ = 8						; size = 2
_MissingPage$ = 12					; size = 4
?GetNextBlock@CVTTopText@@AAEFFPAF@Z PROC		; CVTTopText::GetNextBlock, COMDAT
; _this$ = ecx

; 491  : {

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

; 492  :     int i = Page;

  00009	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0000d	89 45 fc	 mov	 DWORD PTR _i$[ebp], eax
$LN5@GetNextBlo:

; 493  : 
; 494  :     while ((i = (i + 1) % 800) != Page)

  00010	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00013	83 c0 01	 add	 eax, 1
  00016	99		 cdq
  00017	b9 20 03 00 00	 mov	 ecx, 800		; 00000320H
  0001c	f7 f9		 idiv	 ecx
  0001e	89 55 fc	 mov	 DWORD PTR _i$[ebp], edx
  00021	0f bf 55 08	 movsx	 edx, WORD PTR _Page$[ebp]
  00025	39 55 fc	 cmp	 DWORD PTR _i$[ebp], edx
  00028	74 45		 je	 SHORT $LN4@GetNextBlo

; 495  :     {
; 496  :         if (m_BTTable[i] & TOP_UNRECEIVED)

  0002a	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0002d	03 45 fc	 add	 eax, DWORD PTR _i$[ebp]
  00030	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00033	83 e1 10	 and	 ecx, 16			; 00000010H
  00036	74 17		 je	 SHORT $LN3@GetNextBlo

; 497  :         {
; 498  :             if (MissingPage != NULL)

  00038	83 7d 0c 00	 cmp	 DWORD PTR _MissingPage$[ebp], 0
  0003c	74 0a		 je	 SHORT $LN2@GetNextBlo

; 499  :             {
; 500  :                 *MissingPage = i;

  0003e	8b 55 0c	 mov	 edx, DWORD PTR _MissingPage$[ebp]
  00041	66 8b 45 fc	 mov	 ax, WORD PTR _i$[ebp]
  00045	66 89 02	 mov	 WORD PTR [edx], ax
$LN2@GetNextBlo:

; 501  :             }
; 502  :             return -1;

  00048	b8 ff ff ff ff	 mov	 eax, -1
  0004d	eb 24		 jmp	 SHORT $LN6@GetNextBlo
$LN3@GetNextBlo:

; 503  :         }
; 504  : 
; 505  :         if (m_BTTable[i] >= TOPLEVEL_PROGRAM &&
; 506  :             m_BTTable[i] < TOPLEVEL_GROUP)

  0004f	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00052	03 4d fc	 add	 ecx, DWORD PTR _i$[ebp]
  00055	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  00058	83 fa 02	 cmp	 edx, 2
  0005b	7c 10		 jl	 SHORT $LN1@GetNextBlo
  0005d	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00060	03 45 fc	 add	 eax, DWORD PTR _i$[ebp]
  00063	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00066	83 f9 06	 cmp	 ecx, 6
  00069	7d 02		 jge	 SHORT $LN1@GetNextBlo

; 507  :         {
; 508  :             break;

  0006b	eb 02		 jmp	 SHORT $LN4@GetNextBlo
$LN1@GetNextBlo:

; 509  :         }
; 510  :     }

  0006d	eb a1		 jmp	 SHORT $LN5@GetNextBlo
$LN4@GetNextBlo:

; 511  : 
; 512  :     return i;

  0006f	66 8b 45 fc	 mov	 ax, WORD PTR _i$[ebp]
$LN6@GetNextBlo:

; 513  : }

  00073	8b e5		 mov	 esp, ebp
  00075	5d		 pop	 ebp
  00076	c2 08 00	 ret	 8
?GetNextBlock@CVTTopText@@AAEFFPAF@Z ENDP		; CVTTopText::GetNextBlock
_TEXT	ENDS
PUBLIC	?GetFirstInGroup@CVTTopText@@AAEFFPAF@Z		; CVTTopText::GetFirstInGroup
; Function compile flags: /Odtp
;	COMDAT ?GetFirstInGroup@CVTTopText@@AAEFFPAF@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Page$ = 8						; size = 2
_MissingPage$ = 12					; size = 4
?GetFirstInGroup@CVTTopText@@AAEFFPAF@Z PROC		; CVTTopText::GetFirstInGroup, COMDAT
; _this$ = ecx

; 467  : {

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

; 468  :     for ( ; Page > 0; Page--)

  00007	eb 0c		 jmp	 SHORT $LN6@GetFirstIn
$LN5@GetFirstIn:
  00009	66 8b 45 08	 mov	 ax, WORD PTR _Page$[ebp]
  0000d	66 83 e8 01	 sub	 ax, 1
  00011	66 89 45 08	 mov	 WORD PTR _Page$[ebp], ax
$LN6@GetFirstIn:
  00015	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00019	85 c9		 test	 ecx, ecx
  0001b	7e 4f		 jle	 SHORT $LN4@GetFirstIn

; 469  :     {
; 470  :         if (m_BTTable[Page] & TOP_UNRECEIVED)

  0001d	0f bf 55 08	 movsx	 edx, WORD PTR _Page$[ebp]
  00021	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00024	0f b6 0c 10	 movzx	 ecx, BYTE PTR [eax+edx]
  00028	83 e1 10	 and	 ecx, 16			; 00000010H
  0002b	74 17		 je	 SHORT $LN3@GetFirstIn

; 471  :         {
; 472  :             if (MissingPage != NULL)

  0002d	83 7d 0c 00	 cmp	 DWORD PTR _MissingPage$[ebp], 0
  00031	74 0a		 je	 SHORT $LN2@GetFirstIn

; 473  :             {
; 474  :                 *MissingPage = Page;

  00033	8b 55 0c	 mov	 edx, DWORD PTR _MissingPage$[ebp]
  00036	66 8b 45 08	 mov	 ax, WORD PTR _Page$[ebp]
  0003a	66 89 02	 mov	 WORD PTR [edx], ax
$LN2@GetFirstIn:

; 475  :             }
; 476  :             return -1;

  0003d	b8 ff ff ff ff	 mov	 eax, -1
  00042	eb 2a		 jmp	 SHORT $LN7@GetFirstIn
$LN3@GetFirstIn:

; 477  :         }
; 478  : 
; 479  :         if (m_BTTable[Page] >= TOPLEVEL_GROUP &&
; 480  :             m_BTTable[Page] < TOPLEVEL_NORMAL)

  00044	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00048	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0004b	0f b6 04 0a	 movzx	 eax, BYTE PTR [edx+ecx]
  0004f	83 f8 06	 cmp	 eax, 6
  00052	7c 16		 jl	 SHORT $LN1@GetFirstIn
  00054	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00058	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0005b	0f b6 04 0a	 movzx	 eax, BYTE PTR [edx+ecx]
  0005f	83 f8 08	 cmp	 eax, 8
  00062	7d 06		 jge	 SHORT $LN1@GetFirstIn

; 481  :         {
; 482  :             return Page;

  00064	66 8b 45 08	 mov	 ax, WORD PTR _Page$[ebp]
  00068	eb 04		 jmp	 SHORT $LN7@GetFirstIn
$LN1@GetFirstIn:

; 483  :         }
; 484  :     }

  0006a	eb 9d		 jmp	 SHORT $LN5@GetFirstIn
$LN4@GetFirstIn:

; 485  : 
; 486  :     return 0;

  0006c	33 c0		 xor	 eax, eax
$LN7@GetFirstIn:

; 487  : }

  0006e	8b e5		 mov	 esp, ebp
  00070	5d		 pop	 ebp
  00071	c2 08 00	 ret	 8
?GetFirstInGroup@CVTTopText@@AAEFFPAF@Z ENDP		; CVTTopText::GetFirstInGroup
_TEXT	ENDS
PUBLIC	?GetFirstInBlock@CVTTopText@@AAEFFPAF@Z		; CVTTopText::GetFirstInBlock
; Function compile flags: /Odtp
;	COMDAT ?GetFirstInBlock@CVTTopText@@AAEFFPAF@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Page$ = 8						; size = 2
_MissingPage$ = 12					; size = 4
?GetFirstInBlock@CVTTopText@@AAEFFPAF@Z PROC		; CVTTopText::GetFirstInBlock, COMDAT
; _this$ = ecx

; 443  : {

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

; 444  :     for ( ; Page > 0; Page--)

  00007	eb 0c		 jmp	 SHORT $LN6@GetFirstIn@2
$LN5@GetFirstIn@2:
  00009	66 8b 45 08	 mov	 ax, WORD PTR _Page$[ebp]
  0000d	66 83 e8 01	 sub	 ax, 1
  00011	66 89 45 08	 mov	 WORD PTR _Page$[ebp], ax
$LN6@GetFirstIn@2:
  00015	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00019	85 c9		 test	 ecx, ecx
  0001b	7e 4f		 jle	 SHORT $LN4@GetFirstIn@2

; 445  :     {
; 446  :         if (m_BTTable[Page] & TOP_UNRECEIVED)

  0001d	0f bf 55 08	 movsx	 edx, WORD PTR _Page$[ebp]
  00021	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00024	0f b6 0c 10	 movzx	 ecx, BYTE PTR [eax+edx]
  00028	83 e1 10	 and	 ecx, 16			; 00000010H
  0002b	74 17		 je	 SHORT $LN3@GetFirstIn@2

; 447  :         {
; 448  :             if (MissingPage != NULL)

  0002d	83 7d 0c 00	 cmp	 DWORD PTR _MissingPage$[ebp], 0
  00031	74 0a		 je	 SHORT $LN2@GetFirstIn@2

; 449  :             {
; 450  :                 *MissingPage = Page;

  00033	8b 55 0c	 mov	 edx, DWORD PTR _MissingPage$[ebp]
  00036	66 8b 45 08	 mov	 ax, WORD PTR _Page$[ebp]
  0003a	66 89 02	 mov	 WORD PTR [edx], ax
$LN2@GetFirstIn@2:

; 451  :             }
; 452  :             return -1;

  0003d	b8 ff ff ff ff	 mov	 eax, -1
  00042	eb 2a		 jmp	 SHORT $LN7@GetFirstIn@2
$LN3@GetFirstIn@2:

; 453  :         }
; 454  : 
; 455  :         if (m_BTTable[Page] >= TOPLEVEL_PROGRAM &&
; 456  :             m_BTTable[Page] < TOPLEVEL_GROUP)

  00044	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00048	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0004b	0f b6 04 0a	 movzx	 eax, BYTE PTR [edx+ecx]
  0004f	83 f8 02	 cmp	 eax, 2
  00052	7c 16		 jl	 SHORT $LN1@GetFirstIn@2
  00054	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00058	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0005b	0f b6 04 0a	 movzx	 eax, BYTE PTR [edx+ecx]
  0005f	83 f8 06	 cmp	 eax, 6
  00062	7d 06		 jge	 SHORT $LN1@GetFirstIn@2

; 457  :         {
; 458  :             return Page;

  00064	66 8b 45 08	 mov	 ax, WORD PTR _Page$[ebp]
  00068	eb 04		 jmp	 SHORT $LN7@GetFirstIn@2
$LN1@GetFirstIn@2:

; 459  :         }
; 460  :     }

  0006a	eb 9d		 jmp	 SHORT $LN5@GetFirstIn@2
$LN4@GetFirstIn@2:

; 461  : 
; 462  :     return 0;

  0006c	33 c0		 xor	 eax, eax
$LN7@GetFirstIn@2:

; 463  : }

  0006e	8b e5		 mov	 esp, ebp
  00070	5d		 pop	 ebp
  00071	c2 08 00	 ret	 8
?GetFirstInBlock@CVTTopText@@AAEFFPAF@Z ENDP		; CVTTopText::GetFirstInBlock
_TEXT	ENDS
PUBLIC	?IsMultiPage@CVTTopText@@AAEHF@Z		; CVTTopText::IsMultiPage
; Function compile flags: /Odtp
;	COMDAT ?IsMultiPage@CVTTopText@@AAEHF@Z
_TEXT	SEGMENT
tv67 = -8						; size = 4
_this$ = -4						; size = 4
_Page$ = 8						; size = 2
?IsMultiPage@CVTTopText@@AAEHF@Z PROC			; CVTTopText::IsMultiPage, COMDAT
; _this$ = ecx

; 428  : {

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

; 429  :     switch (m_BTTable[Page])

  00009	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0000d	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00010	0f b6 14 01	 movzx	 edx, BYTE PTR [ecx+eax]
  00014	89 55 f8	 mov	 DWORD PTR tv67[ebp], edx
  00017	8b 45 f8	 mov	 eax, DWORD PTR tv67[ebp]
  0001a	83 e8 03	 sub	 eax, 3
  0001d	89 45 f8	 mov	 DWORD PTR tv67[ebp], eax
  00020	83 7d f8 08	 cmp	 DWORD PTR tv67[ebp], 8
  00024	77 18		 ja	 SHORT $LN2@IsMultiPag
  00026	8b 4d f8	 mov	 ecx, DWORD PTR tv67[ebp]
  00029	0f b6 91 00 00
	00 00		 movzx	 edx, BYTE PTR $LN6@IsMultiPag[ecx]
  00030	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN7@IsMultiPag[edx*4]
$LN1@IsMultiPag:

; 430  :     {
; 431  :     case 0x03:
; 432  :     case 0x05:
; 433  :     case 0x07:
; 434  :     case 0x0A:
; 435  :     case 0x0B:
; 436  :         return TRUE;

  00037	b8 01 00 00 00	 mov	 eax, 1
  0003c	eb 02		 jmp	 SHORT $LN4@IsMultiPag
$LN2@IsMultiPag:

; 437  :     }
; 438  :     return FALSE;

  0003e	33 c0		 xor	 eax, eax
$LN4@IsMultiPag:

; 439  : }

  00040	8b e5		 mov	 esp, ebp
  00042	5d		 pop	 ebp
  00043	c2 04 00	 ret	 4
  00046	8b ff		 npad	 2
$LN7@IsMultiPag:
  00048	00 00 00 00	 DD	 $LN1@IsMultiPag
  0004c	00 00 00 00	 DD	 $LN2@IsMultiPag
$LN6@IsMultiPag:
  00050	00		 DB	 0
  00051	01		 DB	 1
  00052	00		 DB	 0
  00053	01		 DB	 1
  00054	00		 DB	 0
  00055	01		 DB	 1
  00056	01		 DB	 1
  00057	00		 DB	 0
  00058	00		 DB	 0
?IsMultiPage@CVTTopText@@AAEHF@Z ENDP			; CVTTopText::IsMultiPage
_TEXT	ENDS
PUBLIC	?GetExtraPageType@CVTTopText@@AAEEK@Z		; CVTTopText::GetExtraPageType
; Function compile flags: /Odtp
;	COMDAT ?GetExtraPageType@CVTTopText@@AAEEK@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$ = -4						; size = 4
_dwPageCode$ = 8					; size = 4
?GetExtraPageType@CVTTopText@@AAEEK@Z PROC		; CVTTopText::GetExtraPageType, COMDAT
; _this$ = ecx

; 391  : {

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

; 392  :     int i = m_ExtraPagesHead;

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	0f b6 88 30 16
	00 00		 movzx	 ecx, BYTE PTR [eax+5680]
  00013	89 4d fc	 mov	 DWORD PTR _i$[ebp], ecx
$LN5@GetExtraPa:

; 393  : 
; 394  :     while (1)

  00016	ba 01 00 00 00	 mov	 edx, 1
  0001b	85 d2		 test	 edx, edx
  0001d	74 52		 je	 SHORT $LN4@GetExtraPa

; 395  :     {
; 396  :         i = (TOPMAX_EXTRAPAGES + i - 1) % TOPMAX_EXTRAPAGES;

  0001f	8b 45 fc	 mov	 eax, DWORD PTR _i$[ebp]
  00022	83 c0 09	 add	 eax, 9
  00025	99		 cdq
  00026	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  0002b	f7 f9		 idiv	 ecx
  0002d	89 55 fc	 mov	 DWORD PTR _i$[ebp], edx

; 397  : 
; 398  :         if (m_ExtraTopPages[i].uType == 0xFF)

  00030	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  00033	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00036	0f b6 8c d0 e0
	15 00 00	 movzx	 ecx, BYTE PTR [eax+edx*8+5600]
  0003e	81 f9 ff 00 00
	00		 cmp	 ecx, 255		; 000000ffH
  00044	75 02		 jne	 SHORT $LN3@GetExtraPa

; 399  :         {
; 400  :             break;

  00046	eb 29		 jmp	 SHORT $LN4@GetExtraPa
$LN3@GetExtraPa:

; 401  :         }
; 402  :         if (m_ExtraTopPages[i].dwPageCode == dwPageCode)

  00048	8b 55 fc	 mov	 edx, DWORD PTR _i$[ebp]
  0004b	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0004e	8b 8c d0 e4 15
	00 00		 mov	 ecx, DWORD PTR [eax+edx*8+5604]
  00055	3b 4d 08	 cmp	 ecx, DWORD PTR _dwPageCode$[ebp]
  00058	75 02		 jne	 SHORT $LN2@GetExtraPa

; 403  :         {
; 404  :             break;

  0005a	eb 15		 jmp	 SHORT $LN4@GetExtraPa
$LN2@GetExtraPa:

; 405  :         }
; 406  :         if (i == m_ExtraPagesHead)

  0005c	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0005f	0f b6 82 30 16
	00 00		 movzx	 eax, BYTE PTR [edx+5680]
  00066	39 45 fc	 cmp	 DWORD PTR _i$[ebp], eax
  00069	75 04		 jne	 SHORT $LN1@GetExtraPa

; 407  :         {
; 408  :             return 0xFF;

  0006b	0c ff		 or	 al, 255			; 000000ffH
  0006d	eb 0f		 jmp	 SHORT $LN6@GetExtraPa
$LN1@GetExtraPa:

; 409  :         }
; 410  :     }

  0006f	eb a5		 jmp	 SHORT $LN5@GetExtraPa
$LN4@GetExtraPa:

; 411  : 
; 412  :     return m_ExtraTopPages[i].uType;

  00071	8b 4d fc	 mov	 ecx, DWORD PTR _i$[ebp]
  00074	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00077	8a 84 ca e0 15
	00 00		 mov	 al, BYTE PTR [edx+ecx*8+5600]
$LN6@GetExtraPa:

; 413  : }

  0007e	8b e5		 mov	 esp, ebp
  00080	5d		 pop	 ebp
  00081	c2 04 00	 ret	 4
?GetExtraPageType@CVTTopText@@AAEEK@Z ENDP		; CVTTopText::GetExtraPageType
_TEXT	ENDS
PUBLIC	?IsWaitingMPTPage@CVTTopText@@AAEHF@Z		; CVTTopText::IsWaitingMPTPage
; Function compile flags: /Odtp
;	COMDAT ?IsWaitingMPTPage@CVTTopText@@AAEHF@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_Page$ = 8						; size = 2
?IsWaitingMPTPage@CVTTopText@@AAEHF@Z PROC		; CVTTopText::IsWaitingMPTPage, COMDAT
; _this$ = ecx

; 127  : {

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

; 128  :     if (m_WaitingPage[TOPWAIT_MPT] == Page)

  00007	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0000a	0f bf 88 3c 16
	00 00		 movsx	 ecx, WORD PTR [eax+5692]
  00011	0f bf 55 08	 movsx	 edx, WORD PTR _Page$[ebp]
  00015	3b ca		 cmp	 ecx, edx
  00017	75 07		 jne	 SHORT $LN1@IsWaitingM

; 129  :     {
; 130  :         return TRUE;

  00019	b8 01 00 00 00	 mov	 eax, 1
  0001e	eb 02		 jmp	 SHORT $LN2@IsWaitingM
$LN1@IsWaitingM:

; 131  :     }
; 132  :     return FALSE;

  00020	33 c0		 xor	 eax, eax
$LN2@IsWaitingM:

; 133  : }

  00022	8b e5		 mov	 esp, ebp
  00024	5d		 pop	 ebp
  00025	c2 04 00	 ret	 4
?IsWaitingMPTPage@CVTTopText@@AAEHF@Z ENDP		; CVTTopText::IsWaitingMPTPage
_TEXT	ENDS
PUBLIC	?IsWaitingAITPage@CVTTopText@@AAEHF@Z		; CVTTopText::IsWaitingAITPage
; Function compile flags: /Odtp
;	COMDAT ?IsWaitingAITPage@CVTTopText@@AAEHF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$139780 = -4						; size = 4
_Page$ = 8						; size = 2
?IsWaitingAITPage@CVTTopText@@AAEHF@Z PROC		; CVTTopText::IsWaitingAITPage, COMDAT
; _this$ = ecx

; 114  : {

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

; 115  :     for (int i = TOPWAIT_YELLOW_AIT; i <= TOPWAIT_BLUE_AIT; i++)

  00009	c7 45 fc 03 00
	00 00		 mov	 DWORD PTR _i$139780[ebp], 3
  00010	eb 09		 jmp	 SHORT $LN4@IsWaitingA
$LN3@IsWaitingA:
  00012	8b 45 fc	 mov	 eax, DWORD PTR _i$139780[ebp]
  00015	83 c0 01	 add	 eax, 1
  00018	89 45 fc	 mov	 DWORD PTR _i$139780[ebp], eax
$LN4@IsWaitingA:
  0001b	83 7d fc 04	 cmp	 DWORD PTR _i$139780[ebp], 4
  0001f	7f 1f		 jg	 SHORT $LN2@IsWaitingA

; 116  :     {
; 117  :         if (m_WaitingPage[i] == Page)

  00021	8b 4d fc	 mov	 ecx, DWORD PTR _i$139780[ebp]
  00024	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00027	0f bf 84 4a 32
	16 00 00	 movsx	 eax, WORD PTR [edx+ecx*2+5682]
  0002f	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00033	3b c1		 cmp	 eax, ecx
  00035	75 07		 jne	 SHORT $LN1@IsWaitingA

; 118  :         {
; 119  :             return TRUE;

  00037	b8 01 00 00 00	 mov	 eax, 1
  0003c	eb 04		 jmp	 SHORT $LN5@IsWaitingA
$LN1@IsWaitingA:

; 120  :         }
; 121  :     }

  0003e	eb d2		 jmp	 SHORT $LN3@IsWaitingA
$LN2@IsWaitingA:

; 122  :     return FALSE;

  00040	33 c0		 xor	 eax, eax
$LN5@IsWaitingA:

; 123  : }

  00042	8b e5		 mov	 esp, ebp
  00044	5d		 pop	 ebp
  00045	c2 04 00	 ret	 4
?IsWaitingAITPage@CVTTopText@@AAEHF@Z ENDP		; CVTTopText::IsWaitingAITPage
_TEXT	ENDS
PUBLIC	?IsWaitingBTTPage@CVTTopText@@AAEHF@Z		; CVTTopText::IsWaitingBTTPage
; Function compile flags: /Odtp
;	COMDAT ?IsWaitingBTTPage@CVTTopText@@AAEHF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$139771 = -4						; size = 4
_Page$ = 8						; size = 2
?IsWaitingBTTPage@CVTTopText@@AAEHF@Z PROC		; CVTTopText::IsWaitingBTTPage, COMDAT
; _this$ = ecx

; 101  : {

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

; 102  :     for (int i = TOPWAIT_GREEN; i <= TOPWAIT_BLUE; i++)

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$139771[ebp], 0
  00010	eb 09		 jmp	 SHORT $LN4@IsWaitingB
$LN3@IsWaitingB:
  00012	8b 45 fc	 mov	 eax, DWORD PTR _i$139771[ebp]
  00015	83 c0 01	 add	 eax, 1
  00018	89 45 fc	 mov	 DWORD PTR _i$139771[ebp], eax
$LN4@IsWaitingB:
  0001b	83 7d fc 02	 cmp	 DWORD PTR _i$139771[ebp], 2
  0001f	7f 1f		 jg	 SHORT $LN2@IsWaitingB

; 103  :     {
; 104  :         if (m_WaitingPage[i] == Page)

  00021	8b 4d fc	 mov	 ecx, DWORD PTR _i$139771[ebp]
  00024	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00027	0f bf 84 4a 32
	16 00 00	 movsx	 eax, WORD PTR [edx+ecx*2+5682]
  0002f	0f bf 4d 08	 movsx	 ecx, WORD PTR _Page$[ebp]
  00033	3b c1		 cmp	 eax, ecx
  00035	75 07		 jne	 SHORT $LN1@IsWaitingB

; 105  :         {
; 106  :             return TRUE;

  00037	b8 01 00 00 00	 mov	 eax, 1
  0003c	eb 04		 jmp	 SHORT $LN5@IsWaitingB
$LN1@IsWaitingB:

; 107  :         }
; 108  :     }

  0003e	eb d2		 jmp	 SHORT $LN3@IsWaitingB
$LN2@IsWaitingB:

; 109  :     return FALSE;

  00040	33 c0		 xor	 eax, eax
$LN5@IsWaitingB:

; 110  : }

  00042	8b e5		 mov	 esp, ebp
  00044	5d		 pop	 ebp
  00045	c2 04 00	 ret	 4
?IsWaitingBTTPage@CVTTopText@@AAEHF@Z ENDP		; CVTTopText::IsWaitingBTTPage
_TEXT	ENDS
PUBLIC	?ResetWaitingPages@CVTTopText@@AAEXXZ		; CVTTopText::ResetWaitingPages
; Function compile flags: /Odtp
;	COMDAT ?ResetWaitingPages@CVTTopText@@AAEXXZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$139763 = -4						; size = 4
?ResetWaitingPages@CVTTopText@@AAEXXZ PROC		; CVTTopText::ResetWaitingPages, COMDAT
; _this$ = ecx

; 92   : {

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

; 93   :     for (int i = 0; i < TOPWAIT_LASTONE; i++)

  00009	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$139763[ebp], 0
  00010	eb 09		 jmp	 SHORT $LN3@ResetWaiti
$LN2@ResetWaiti:
  00012	8b 45 fc	 mov	 eax, DWORD PTR _i$139763[ebp]
  00015	83 c0 01	 add	 eax, 1
  00018	89 45 fc	 mov	 DWORD PTR _i$139763[ebp], eax
$LN3@ResetWaiti:
  0001b	83 7d fc 06	 cmp	 DWORD PTR _i$139763[ebp], 6
  0001f	7d 13		 jge	 SHORT $LN4@ResetWaiti

; 94   :     {
; 95   :         m_WaitingPage[i] = -1;

  00021	83 c9 ff	 or	 ecx, -1
  00024	8b 55 fc	 mov	 edx, DWORD PTR _i$139763[ebp]
  00027	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0002a	66 89 8c 50 32
	16 00 00	 mov	 WORD PTR [eax+edx*2+5682], cx
  00032	eb de		 jmp	 SHORT $LN2@ResetWaiti
$LN4@ResetWaiti:

; 96   :     }
; 97   : }

  00034	8b e5		 mov	 esp, ebp
  00036	5d		 pop	 ebp
  00037	c3		 ret	 0
?ResetWaitingPages@CVTTopText@@AAEXXZ ENDP		; CVTTopText::ResetWaitingPages
_TEXT	ENDS
PUBLIC	?Reset@CVTTopText@@QAEXXZ			; CVTTopText::Reset
; Function compile flags: /Odtp
;	COMDAT ?Reset@CVTTopText@@QAEXXZ
_TEXT	SEGMENT
_this$ = -12						; size = 4
$T291347 = -8						; size = 4
_i$139753 = -4						; size = 4
?Reset@CVTTopText@@QAEXXZ PROC				; CVTTopText::Reset, COMDAT
; _this$ = ecx

; 63   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d f4	 mov	 DWORD PTR _this$[ebp], ecx

; 64   :     EnterCriticalSection(&m_IntegrityMutex);

  00009	8b 45 f4	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	05 40 16 00 00	 add	 eax, 5696		; 00001640H
  00011	50		 push	 eax
  00012	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 65   : 
; 66   :     m_ExtraPagesHead = 1;

  00018	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  0001b	c6 81 30 16 00
	00 01		 mov	 BYTE PTR [ecx+5680], 1

; 67   :     m_ExtraTopPages[0].uType = 0xFF;

  00022	8b 55 f4	 mov	 edx, DWORD PTR _this$[ebp]
  00025	c6 82 e0 15 00
	00 ff		 mov	 BYTE PTR [edx+5600], 255 ; 000000ffH

; 68   : 
; 69   :     ResetWaitingPages();

  0002c	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  0002f	e8 00 00 00 00	 call	 ?ResetWaitingPages@CVTTopText@@AAEXXZ ; CVTTopText::ResetWaitingPages

; 70   : 
; 71   :     memset(m_BTTable, TOP_UNRECEIVED, sizeof(BYTE) * 800);

  00034	68 20 03 00 00	 push	 800			; 00000320H
  00039	6a 10		 push	 16			; 00000010H
  0003b	8b 45 f4	 mov	 eax, DWORD PTR _this$[ebp]
  0003e	50		 push	 eax
  0003f	e8 00 00 00 00	 call	 _memset
  00044	83 c4 0c	 add	 esp, 12			; 0000000cH

; 72   :     memset(m_MPTable, 0x00, sizeof(BYTE) * 800);

  00047	68 20 03 00 00	 push	 800			; 00000320H
  0004c	6a 00		 push	 0
  0004e	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00051	81 c1 20 03 00
	00		 add	 ecx, 800		; 00000320H
  00057	51		 push	 ecx
  00058	e8 00 00 00 00	 call	 _memset
  0005d	83 c4 0c	 add	 esp, 12			; 0000000cH

; 73   : 
; 74   :     for (int i = 0; i < 800; i++)

  00060	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _i$139753[ebp], 0
  00067	eb 09		 jmp	 SHORT $LN4@Reset
$LN3@Reset:
  00069	8b 55 fc	 mov	 edx, DWORD PTR _i$139753[ebp]
  0006c	83 c2 01	 add	 edx, 1
  0006f	89 55 fc	 mov	 DWORD PTR _i$139753[ebp], edx
$LN4@Reset:
  00072	81 7d fc 20 03
	00 00		 cmp	 DWORD PTR _i$139753[ebp], 800 ; 00000320H
  00079	7d 4c		 jge	 SHORT $LN2@Reset

; 75   :     {
; 76   :         if (m_AITable[i] != NULL)

  0007b	8b 45 fc	 mov	 eax, DWORD PTR _i$139753[ebp]
  0007e	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  00081	83 bc 81 40 06
	00 00 00	 cmp	 DWORD PTR [ecx+eax*4+1600], 0
  00089	74 1c		 je	 SHORT $LN1@Reset

; 77   :         {
; 78   :             delete [] m_AITable[i];

  0008b	8b 55 fc	 mov	 edx, DWORD PTR _i$139753[ebp]
  0008e	8b 45 f4	 mov	 eax, DWORD PTR _this$[ebp]
  00091	8b 8c 90 40 06
	00 00		 mov	 ecx, DWORD PTR [eax+edx*4+1600]
  00098	89 4d f8	 mov	 DWORD PTR $T291347[ebp], ecx
  0009b	8b 55 f8	 mov	 edx, DWORD PTR $T291347[ebp]
  0009e	52		 push	 edx
  0009f	e8 00 00 00 00	 call	 ??_V@YAXPAX@Z		; operator delete[]
  000a4	83 c4 04	 add	 esp, 4
$LN1@Reset:

; 79   :         }
; 80   :         m_AITable[i] = NULL;

  000a7	8b 45 fc	 mov	 eax, DWORD PTR _i$139753[ebp]
  000aa	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  000ad	c7 84 81 40 06
	00 00 00 00 00
	00		 mov	 DWORD PTR [ecx+eax*4+1600], 0

; 81   :         m_AITReceived[i] = FALSE;

  000b8	8b 55 f4	 mov	 edx, DWORD PTR _this$[ebp]
  000bb	03 55 fc	 add	 edx, DWORD PTR _i$139753[ebp]
  000be	c6 82 c0 12 00
	00 00		 mov	 BYTE PTR [edx+4800], 0

; 82   :     }

  000c5	eb a2		 jmp	 SHORT $LN3@Reset
$LN2@Reset:

; 83   : 
; 84   :     m_LastPageCode = 0UL;

  000c7	8b 45 f4	 mov	 eax, DWORD PTR _this$[ebp]
  000ca	c7 80 58 16 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+5720], 0

; 85   :     memset(m_LastBuffer, 0x00, sizeof(BYTE) * 40);

  000d4	6a 28		 push	 40			; 00000028H
  000d6	6a 00		 push	 0
  000d8	8b 4d f4	 mov	 ecx, DWORD PTR _this$[ebp]
  000db	81 c1 5c 16 00
	00		 add	 ecx, 5724		; 0000165cH
  000e1	51		 push	 ecx
  000e2	e8 00 00 00 00	 call	 _memset
  000e7	83 c4 0c	 add	 esp, 12			; 0000000cH

; 86   : 
; 87   :     LeaveCriticalSection(&m_IntegrityMutex);

  000ea	8b 55 f4	 mov	 edx, DWORD PTR _this$[ebp]
  000ed	81 c2 40 16 00
	00		 add	 edx, 5696		; 00001640H
  000f3	52		 push	 edx
  000f4	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 88   : }

  000fa	8b e5		 mov	 esp, ebp
  000fc	5d		 pop	 ebp
  000fd	c3		 ret	 0
?Reset@CVTTopText@@QAEXXZ ENDP				; CVTTopText::Reset
PUBLIC	__$ArrayPad$
PUBLIC	?GetTopTextDetails@CVTTopText@@QAEHKPAU_VTPage@@H@Z ; CVTTopText::GetTopTextDetails
; Function compile flags: /Odtp
;	COMDAT ?GetTopTextDetails@CVTTopText@@QAEHKPAU_VTPage@@H@Z
_TEXT	SEGMENT
_this$ = -80						; size = 4
_i$140086 = -76						; size = 4
_nLength$140063 = -72					; size = 4
_szBuffer$140052 = -68					; size = 40
__$ArrayPad$ = -28					; size = 4
_nStart$140064 = -24					; size = 4
_MissingPage$ = -20					; size = 2
_pLineInput$ = -16					; size = 4
_pMessage$ = -12					; size = 4
_Page$ = -8						; size = 2
_LinkPage$ = -4						; size = 2
_dwPageCode$ = 8					; size = 4
_pBuffer$ = 12						; size = 4
_bWaitMessage$ = 16					; size = 4
?GetTopTextDetails@CVTTopText@@QAEHKPAU_VTPage@@H@Z PROC ; CVTTopText::GetTopTextDetails, COMDAT
; _this$ = ecx

; 666  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 50	 sub	 esp, 80			; 00000050H
  00006	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0000b	33 c5		 xor	 eax, ebp
  0000d	89 45 e4	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00010	89 4d b0	 mov	 DWORD PTR _this$[ebp], ecx

; 667  :     short   Page;
; 668  :     short   LinkPage;
; 669  :     short   MissingPage;
; 670  :     BYTE*   pLineInput;
; 671  :     char*   pMessage;
; 672  : 
; 673  :     if ((Page = PageHex2Page(LOWORD(dwPageCode))) == -1)

  00013	8b 45 08	 mov	 eax, DWORD PTR _dwPageCode$[ebp]
  00016	25 ff ff 00 00	 and	 eax, 65535		; 0000ffffH
  0001b	50		 push	 eax
  0001c	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  0001f	e8 00 00 00 00	 call	 ?PageHex2Page@CVTTopText@@AAEFG@Z ; CVTTopText::PageHex2Page
  00024	66 89 45 f8	 mov	 WORD PTR _Page$[ebp], ax
  00028	0f bf 4d f8	 movsx	 ecx, WORD PTR _Page$[ebp]
  0002c	83 f9 ff	 cmp	 ecx, -1
  0002f	75 07		 jne	 SHORT $LN39@GetTopText

; 674  :     {
; 675  :         return FALSE;

  00031	33 c0		 xor	 eax, eax
  00033	e9 1d 06 00 00	 jmp	 $LN40@GetTopText
$LN39@GetTopText:

; 676  :     }
; 677  : 
; 678  :     ResetWaitingPages();

  00038	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  0003b	e8 00 00 00 00	 call	 ?ResetWaitingPages@CVTTopText@@AAEXXZ ; CVTTopText::ResetWaitingPages

; 679  : 
; 680  :     m_LastPageCode = dwPageCode;

  00040	8b 55 b0	 mov	 edx, DWORD PTR _this$[ebp]
  00043	8b 45 08	 mov	 eax, DWORD PTR _dwPageCode$[ebp]
  00046	89 82 58 16 00
	00		 mov	 DWORD PTR [edx+5720], eax

; 681  : 
; 682  :     // We can't do much more if we don't have a Basic TOP
; 683  :     if (m_BTTable[Page] == TOP_UNRECEIVED)

  0004c	0f bf 4d f8	 movsx	 ecx, WORD PTR _Page$[ebp]
  00050	8b 55 b0	 mov	 edx, DWORD PTR _this$[ebp]
  00053	0f b6 04 0a	 movzx	 eax, BYTE PTR [edx+ecx]
  00057	83 f8 10	 cmp	 eax, 16			; 00000010H
  0005a	75 34		 jne	 SHORT $LN38@GetTopText

; 684  :     {
; 685  :         m_WaitingPage[TOPWAIT_GREEN] = Page;

  0005c	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  0005f	66 8b 55 f8	 mov	 dx, WORD PTR _Page$[ebp]
  00063	66 89 91 32 16
	00 00		 mov	 WORD PTR [ecx+5682], dx

; 686  : 
; 687  :         // Multi-thread protection
; 688  :         if (m_BTTable[Page] == TOP_UNRECEIVED)

  0006a	0f bf 45 f8	 movsx	 eax, WORD PTR _Page$[ebp]
  0006e	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00071	0f b6 14 01	 movzx	 edx, BYTE PTR [ecx+eax]
  00075	83 fa 10	 cmp	 edx, 16			; 00000010H
  00078	75 09		 jne	 SHORT $LN37@GetTopText

; 689  :         {
; 690  :             return FALSE;

  0007a	33 c0		 xor	 eax, eax
  0007c	e9 d4 05 00 00	 jmp	 $LN40@GetTopText

; 691  :         }
; 692  :         else

  00081	eb 0d		 jmp	 SHORT $LN38@GetTopText
$LN37@GetTopText:

; 693  :         {
; 694  :             m_WaitingPage[TOPWAIT_GREEN] = -1;

  00083	83 c8 ff	 or	 eax, -1
  00086	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00089	66 89 81 32 16
	00 00		 mov	 WORD PTR [ecx+5682], ax
$LN38@GetTopText:

; 695  :         }
; 696  :     }
; 697  : 
; 698  :     // Set the RED Flof key
; 699  :     pBuffer->EditorialLink[VTFLOF_RED] = VTPAGE_PREVIOUS;

  00090	8b 55 0c	 mov	 edx, DWORD PTR _pBuffer$[ebp]
  00093	c7 82 30 04 00
	00 20 00 00 00	 mov	 DWORD PTR [edx+1072], 32 ; 00000020H

; 700  : 
; 701  :     // Get the GREEN Flof link
; 702  :     LinkPage = GetNextPage(Page, &MissingPage);

  0009d	8d 45 ec	 lea	 eax, DWORD PTR _MissingPage$[ebp]
  000a0	50		 push	 eax
  000a1	0f b7 4d f8	 movzx	 ecx, WORD PTR _Page$[ebp]
  000a5	51		 push	 ecx
  000a6	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  000a9	e8 00 00 00 00	 call	 ?GetNextPage@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetNextPage
  000ae	66 89 45 fc	 mov	 WORD PTR _LinkPage$[ebp], ax
$LN35@GetTopText:

; 703  : 
; 704  :     while (LinkPage == -1)

  000b2	0f bf 55 fc	 movsx	 edx, WORD PTR _LinkPage$[ebp]
  000b6	83 fa ff	 cmp	 edx, -1
  000b9	75 44		 jne	 SHORT $LN34@GetTopText

; 705  :     {
; 706  :         m_WaitingPage[TOPWAIT_GREEN] = MissingPage;

  000bb	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  000be	66 8b 4d ec	 mov	 cx, WORD PTR _MissingPage$[ebp]
  000c2	66 89 88 32 16
	00 00		 mov	 WORD PTR [eax+5682], cx

; 707  : 
; 708  :         // Multi-thread protection
; 709  :         if (m_BTTable[MissingPage] == TOP_UNRECEIVED)

  000c9	0f bf 55 ec	 movsx	 edx, WORD PTR _MissingPage$[ebp]
  000cd	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  000d0	0f b6 0c 10	 movzx	 ecx, BYTE PTR [eax+edx]
  000d4	83 f9 10	 cmp	 ecx, 16			; 00000010H
  000d7	75 02		 jne	 SHORT $LN33@GetTopText

; 710  :         {
; 711  :             break;

  000d9	eb 24		 jmp	 SHORT $LN34@GetTopText
$LN33@GetTopText:

; 712  :         }
; 713  : 
; 714  :         m_WaitingPage[TOPWAIT_GREEN] = -1;

  000db	83 ca ff	 or	 edx, -1
  000de	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  000e1	66 89 90 32 16
	00 00		 mov	 WORD PTR [eax+5682], dx

; 715  :         LinkPage = GetNextPage(Page, &MissingPage);

  000e8	8d 4d ec	 lea	 ecx, DWORD PTR _MissingPage$[ebp]
  000eb	51		 push	 ecx
  000ec	0f b7 55 f8	 movzx	 edx, WORD PTR _Page$[ebp]
  000f0	52		 push	 edx
  000f1	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  000f4	e8 00 00 00 00	 call	 ?GetNextPage@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetNextPage
  000f9	66 89 45 fc	 mov	 WORD PTR _LinkPage$[ebp], ax

; 716  :     }

  000fd	eb b3		 jmp	 SHORT $LN35@GetTopText
$LN34@GetTopText:

; 717  : 
; 718  :     // Set the GREEN Flof key
; 719  :     pBuffer->EditorialLink[VTFLOF_GREEN] = Page2PageHex(LinkPage);

  000ff	0f b7 45 fc	 movzx	 eax, WORD PTR _LinkPage$[ebp]
  00103	50		 push	 eax
  00104	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00107	e8 00 00 00 00	 call	 ?Page2PageHex@CVTTopText@@AAEGF@Z ; CVTTopText::Page2PageHex
  0010c	0f b7 c8	 movzx	 ecx, ax
  0010f	8b 55 0c	 mov	 edx, DWORD PTR _pBuffer$[ebp]
  00112	89 8a 34 04 00
	00		 mov	 DWORD PTR [edx+1076], ecx

; 720  : 
; 721  :     pBuffer->bShowRow24 = TRUE;

  00118	8b 45 0c	 mov	 eax, DWORD PTR _pBuffer$[ebp]
  0011b	c7 80 50 04 00
	00 01 00 00 00	 mov	 DWORD PTR [eax+1104], 1

; 722  :     pBuffer->LineState[24] = CACHESTATE_HASDATA;

  00125	8b 4d 0c	 mov	 ecx, DWORD PTR _pBuffer$[ebp]
  00128	c6 81 2e 04 00
	00 01		 mov	 BYTE PTR [ecx+1070], 1

; 723  : 
; 724  :     pLineInput = pBuffer->Frame[24];

  0012f	8b 55 0c	 mov	 edx, DWORD PTR _pBuffer$[ebp]
  00132	81 c2 c6 03 00
	00		 add	 edx, 966		; 000003c6H
  00138	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx

; 725  : 
; 726  :     // See if a wait message is required instead
; 727  :     if (bWaitMessage != FALSE)

  0013b	83 7d 10 00	 cmp	 DWORD PTR _bWaitMessage$[ebp], 0
  0013f	0f 84 67 01 00
	00		 je	 $LN32@GetTopText

; 728  :     {
; 729  :         char   szBuffer[40];
; 730  : 
; 731  :         // Invalidate the YELLOW and BLUE Flof keys
; 732  :         pBuffer->EditorialLink[VTFLOF_YELLOW] = 0UL;

  00145	8b 45 0c	 mov	 eax, DWORD PTR _pBuffer$[ebp]
  00148	c7 80 38 04 00
	00 00 00 00 00	 mov	 DWORD PTR [eax+1080], 0

; 733  :         pBuffer->EditorialLink[VTFLOF_BLUE] = 0UL;

  00152	8b 4d 0c	 mov	 ecx, DWORD PTR _pBuffer$[ebp]
  00155	c7 81 3c 04 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+1084], 0

; 734  : 
; 735  :         if (m_BTTable[Page] == 0x00)

  0015f	0f bf 55 f8	 movsx	 edx, WORD PTR _Page$[ebp]
  00163	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  00166	0f b6 0c 10	 movzx	 ecx, BYTE PTR [eax+edx]
  0016a	85 c9		 test	 ecx, ecx
  0016c	75 0e		 jne	 SHORT $LN31@GetTopText

; 736  :         {
; 737  :             pMessage = m_NoneMessage;

  0016e	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?m_NoneMessage@CVTTopText@@0PADA ; CVTTopText::m_NoneMessage
  00174	89 55 f4	 mov	 DWORD PTR _pMessage$[ebp], edx
  00177	e9 c3 00 00 00	 jmp	 $LN30@GetTopText
$LN31@GetTopText:

; 738  :         }
; 739  :         else if (m_BTTable[Page] == TOPLEVEL_SUBTITLE)

  0017c	0f bf 45 f8	 movsx	 eax, WORD PTR _Page$[ebp]
  00180	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00183	0f b6 14 01	 movzx	 edx, BYTE PTR [ecx+eax]
  00187	83 fa 01	 cmp	 edx, 1
  0018a	75 0d		 jne	 SHORT $LN29@GetTopText

; 740  :         {
; 741  :             pMessage = m_SubtitleMessage;

  0018c	a1 00 00 00 00	 mov	 eax, DWORD PTR ?m_SubtitleMessage@CVTTopText@@0PADA ; CVTTopText::m_SubtitleMessage
  00191	89 45 f4	 mov	 DWORD PTR _pMessage$[ebp], eax
  00194	e9 a6 00 00 00	 jmp	 $LN30@GetTopText
$LN29@GetTopText:

; 742  :         }
; 743  :         else if (IsMultiPage(Page))

  00199	0f b7 4d f8	 movzx	 ecx, WORD PTR _Page$[ebp]
  0019d	51		 push	 ecx
  0019e	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  001a1	e8 00 00 00 00	 call	 ?IsMultiPage@CVTTopText@@AAEHF@Z ; CVTTopText::IsMultiPage
  001a6	85 c0		 test	 eax, eax
  001a8	0f 84 88 00 00
	00		 je	 $LN27@GetTopText

; 744  :         {
; 745  :             if (m_MPTable[Page] == 0)

  001ae	0f bf 55 f8	 movsx	 edx, WORD PTR _Page$[ebp]
  001b2	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  001b5	0f b6 8c 10 20
	03 00 00	 movzx	 ecx, BYTE PTR [eax+edx+800]
  001bd	85 c9		 test	 ecx, ecx
  001bf	75 2e		 jne	 SHORT $LN26@GetTopText

; 746  :             {
; 747  :                 m_WaitingPage[TOPWAIT_MPT] = Page;

  001c1	8b 55 b0	 mov	 edx, DWORD PTR _this$[ebp]
  001c4	66 8b 45 f8	 mov	 ax, WORD PTR _Page$[ebp]
  001c8	66 89 82 3c 16
	00 00		 mov	 WORD PTR [edx+5692], ax

; 748  : 
; 749  :                 // Multi-thread protection
; 750  :                 if (m_MPTable[Page] != 0)

  001cf	0f bf 4d f8	 movsx	 ecx, WORD PTR _Page$[ebp]
  001d3	8b 55 b0	 mov	 edx, DWORD PTR _this$[ebp]
  001d6	0f b6 84 0a 20
	03 00 00	 movzx	 eax, BYTE PTR [edx+ecx+800]
  001de	85 c0		 test	 eax, eax
  001e0	74 0d		 je	 SHORT $LN26@GetTopText

; 751  :                 {
; 752  :                     m_WaitingPage[TOPWAIT_MPT] = -1;

  001e2	83 c9 ff	 or	 ecx, -1
  001e5	8b 55 b0	 mov	 edx, DWORD PTR _this$[ebp]
  001e8	66 89 8a 3c 16
	00 00		 mov	 WORD PTR [edx+5692], cx
$LN26@GetTopText:

; 753  :                 }
; 754  :             }
; 755  : 
; 756  :             if (m_MPTable[Page] != 0)

  001ef	0f bf 45 f8	 movsx	 eax, WORD PTR _Page$[ebp]
  001f3	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  001f6	0f b6 94 01 20
	03 00 00	 movzx	 edx, BYTE PTR [ecx+eax+800]
  001fe	85 d2		 test	 edx, edx
  00200	74 2a		 je	 SHORT $LN24@GetTopText

; 757  :             {
; 758  :                 sprintf(szBuffer, m_MultiMessage, m_MPTable[Page]);

  00202	0f bf 45 f8	 movsx	 eax, WORD PTR _Page$[ebp]
  00206	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00209	0f b6 94 01 20
	03 00 00	 movzx	 edx, BYTE PTR [ecx+eax+800]
  00211	52		 push	 edx
  00212	a1 00 00 00 00	 mov	 eax, DWORD PTR ?m_MultiMessage@CVTTopText@@0PADA ; CVTTopText::m_MultiMessage
  00217	50		 push	 eax
  00218	8d 4d bc	 lea	 ecx, DWORD PTR _szBuffer$140052[ebp]
  0021b	51		 push	 ecx
  0021c	e8 00 00 00 00	 call	 _sprintf
  00221	83 c4 0c	 add	 esp, 12			; 0000000cH

; 759  :                 pMessage = szBuffer;

  00224	8d 55 bc	 lea	 edx, DWORD PTR _szBuffer$140052[ebp]
  00227	89 55 f4	 mov	 DWORD PTR _pMessage$[ebp], edx

; 760  :             }
; 761  :             else

  0022a	eb 08		 jmp	 SHORT $LN23@GetTopText
$LN24@GetTopText:

; 762  :             {
; 763  :                 pMessage = m_WaitMessage;

  0022c	a1 00 00 00 00	 mov	 eax, DWORD PTR ?m_WaitMessage@CVTTopText@@0PADA ; CVTTopText::m_WaitMessage
  00231	89 45 f4	 mov	 DWORD PTR _pMessage$[ebp], eax
$LN23@GetTopText:

; 764  :             }
; 765  :         }
; 766  :         else

  00234	eb 09		 jmp	 SHORT $LN30@GetTopText
$LN27@GetTopText:

; 767  :         {
; 768  :             pMessage = m_WaitMessage;

  00236	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?m_WaitMessage@CVTTopText@@0PADA ; CVTTopText::m_WaitMessage
  0023c	89 4d f4	 mov	 DWORD PTR _pMessage$[ebp], ecx
$LN30@GetTopText:

; 769  :         }
; 770  : 
; 771  :         int nLength = strlen(pMessage);

  0023f	8b 55 f4	 mov	 edx, DWORD PTR _pMessage$[ebp]
  00242	52		 push	 edx
  00243	e8 00 00 00 00	 call	 _strlen
  00248	83 c4 04	 add	 esp, 4
  0024b	89 45 b8	 mov	 DWORD PTR _nLength$140063[ebp], eax

; 772  :         int nStart = (40 - nLength) / 2;

  0024e	b8 28 00 00 00	 mov	 eax, 40			; 00000028H
  00253	2b 45 b8	 sub	 eax, DWORD PTR _nLength$140063[ebp]
  00256	99		 cdq
  00257	2b c2		 sub	 eax, edx
  00259	d1 f8		 sar	 eax, 1
  0025b	89 45 e8	 mov	 DWORD PTR _nStart$140064[ebp], eax

; 773  : 
; 774  :         memset(pLineInput, 0x20, nStart);

  0025e	8b 45 e8	 mov	 eax, DWORD PTR _nStart$140064[ebp]
  00261	50		 push	 eax
  00262	6a 20		 push	 32			; 00000020H
  00264	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00267	51		 push	 ecx
  00268	e8 00 00 00 00	 call	 _memset
  0026d	83 c4 0c	 add	 esp, 12			; 0000000cH

; 775  :         memcpy(&pLineInput[nStart], pMessage, nLength);

  00270	8b 55 b8	 mov	 edx, DWORD PTR _nLength$140063[ebp]
  00273	52		 push	 edx
  00274	8b 45 f4	 mov	 eax, DWORD PTR _pMessage$[ebp]
  00277	50		 push	 eax
  00278	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  0027b	03 4d e8	 add	 ecx, DWORD PTR _nStart$140064[ebp]
  0027e	51		 push	 ecx
  0027f	e8 00 00 00 00	 call	 _memcpy
  00284	83 c4 0c	 add	 esp, 12			; 0000000cH

; 776  :         memset(&pLineInput[nStart + nLength], 0x20, 40 - nStart - nLength);

  00287	ba 28 00 00 00	 mov	 edx, 40			; 00000028H
  0028c	2b 55 e8	 sub	 edx, DWORD PTR _nStart$140064[ebp]
  0028f	2b 55 b8	 sub	 edx, DWORD PTR _nLength$140063[ebp]
  00292	52		 push	 edx
  00293	6a 20		 push	 32			; 00000020H
  00295	8b 45 e8	 mov	 eax, DWORD PTR _nStart$140064[ebp]
  00298	03 45 b8	 add	 eax, DWORD PTR _nLength$140063[ebp]
  0029b	03 45 f0	 add	 eax, DWORD PTR _pLineInput$[ebp]
  0029e	50		 push	 eax
  0029f	e8 00 00 00 00	 call	 _memset
  002a4	83 c4 0c	 add	 esp, 12			; 0000000cH

; 777  :     }
; 778  :     else

  002a7	e9 08 03 00 00	 jmp	 $LN21@GetTopText
$LN32@GetTopText:

; 779  :     {
; 780  :         // Red section
; 781  :         *pLineInput++ = 0x11;       // Red Mosaic

  002ac	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  002af	c6 01 11	 mov	 BYTE PTR [ecx], 17	; 00000011H
  002b2	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  002b5	83 c2 01	 add	 edx, 1
  002b8	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx

; 782  :         *pLineInput++ = 0x3C;       // Box Mosaic

  002bb	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  002be	c6 00 3c	 mov	 BYTE PTR [eax], 60	; 0000003cH
  002c1	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  002c4	83 c1 01	 add	 ecx, 1
  002c7	89 4d f0	 mov	 DWORD PTR _pLineInput$[ebp], ecx

; 783  :         *pLineInput++ = 0x01;       // Red text

  002ca	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  002cd	c6 02 01	 mov	 BYTE PTR [edx], 1
  002d0	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  002d3	83 c0 01	 add	 eax, 1
  002d6	89 45 f0	 mov	 DWORD PTR _pLineInput$[ebp], eax

; 784  :         *pLineInput++ = 0x2D;       // '-'

  002d9	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  002dc	c6 01 2d	 mov	 BYTE PTR [ecx], 45	; 0000002dH
  002df	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  002e2	83 c2 01	 add	 edx, 1
  002e5	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx

; 785  :         *pLineInput++ = 0x20;       // Space

  002e8	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  002eb	c6 00 20	 mov	 BYTE PTR [eax], 32	; 00000020H
  002ee	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  002f1	83 c1 01	 add	 ecx, 1
  002f4	89 4d f0	 mov	 DWORD PTR _pLineInput$[ebp], ecx

; 786  : 
; 787  :         // Green section
; 788  :         if (LinkPage != -1)

  002f7	0f bf 55 fc	 movsx	 edx, WORD PTR _LinkPage$[ebp]
  002fb	83 fa ff	 cmp	 edx, -1
  002fe	74 4d		 je	 SHORT $LN20@GetTopText

; 789  :         {
; 790  :             *pLineInput++ = 0x12;       // Green Mosaic

  00300	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00303	c6 00 12	 mov	 BYTE PTR [eax], 18	; 00000012H
  00306	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00309	83 c1 01	 add	 ecx, 1
  0030c	89 4d f0	 mov	 DWORD PTR _pLineInput$[ebp], ecx

; 791  :             *pLineInput++ = 0x3C;       // Box Mosaic

  0030f	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00312	c6 02 3c	 mov	 BYTE PTR [edx], 60	; 0000003cH
  00315	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00318	83 c0 01	 add	 eax, 1
  0031b	89 45 f0	 mov	 DWORD PTR _pLineInput$[ebp], eax

; 792  :             *pLineInput++ = 0x02;       // Green text

  0031e	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00321	c6 01 02	 mov	 BYTE PTR [ecx], 2
  00324	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00327	83 c2 01	 add	 edx, 1
  0032a	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx

; 793  :             *pLineInput++ = 0x2B;       // '+'

  0032d	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00330	c6 00 2b	 mov	 BYTE PTR [eax], 43	; 0000002bH
  00333	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00336	83 c1 01	 add	 ecx, 1
  00339	89 4d f0	 mov	 DWORD PTR _pLineInput$[ebp], ecx

; 794  :             *pLineInput++ = 0x20;       // Space

  0033c	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  0033f	c6 02 20	 mov	 BYTE PTR [edx], 32	; 00000020H
  00342	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00345	83 c0 01	 add	 eax, 1
  00348	89 45 f0	 mov	 DWORD PTR _pLineInput$[ebp], eax

; 795  :         }
; 796  :         else

  0034b	eb 19		 jmp	 SHORT $LN19@GetTopText
$LN20@GetTopText:

; 797  :         {
; 798  :             memset(pLineInput, 0x20, 5);

  0034d	6a 05		 push	 5
  0034f	6a 20		 push	 32			; 00000020H
  00351	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00354	51		 push	 ecx
  00355	e8 00 00 00 00	 call	 _memset
  0035a	83 c4 0c	 add	 esp, 12			; 0000000cH

; 799  :             pLineInput += 5;

  0035d	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00360	83 c2 05	 add	 edx, 5
  00363	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx
$LN19@GetTopText:

; 800  :         }
; 801  : 
; 802  :         // Yellow Flof link
; 803  :         LinkPage = GetNextGroup(Page, &MissingPage);

  00366	8d 45 ec	 lea	 eax, DWORD PTR _MissingPage$[ebp]
  00369	50		 push	 eax
  0036a	0f b7 4d f8	 movzx	 ecx, WORD PTR _Page$[ebp]
  0036e	51		 push	 ecx
  0036f	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00372	e8 00 00 00 00	 call	 ?GetNextGroup@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetNextGroup
  00377	66 89 45 fc	 mov	 WORD PTR _LinkPage$[ebp], ax
$LN18@GetTopText:

; 804  : 
; 805  :         while (LinkPage == -1)

  0037b	0f bf 55 fc	 movsx	 edx, WORD PTR _LinkPage$[ebp]
  0037f	83 fa ff	 cmp	 edx, -1
  00382	75 44		 jne	 SHORT $LN17@GetTopText

; 806  :         {
; 807  :             m_WaitingPage[TOPWAIT_YELLOW] = MissingPage;

  00384	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  00387	66 8b 4d ec	 mov	 cx, WORD PTR _MissingPage$[ebp]
  0038b	66 89 88 34 16
	00 00		 mov	 WORD PTR [eax+5684], cx

; 808  : 
; 809  :             // Multi-thread protection
; 810  :             if (m_BTTable[MissingPage] == TOP_UNRECEIVED)

  00392	0f bf 55 ec	 movsx	 edx, WORD PTR _MissingPage$[ebp]
  00396	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  00399	0f b6 0c 10	 movzx	 ecx, BYTE PTR [eax+edx]
  0039d	83 f9 10	 cmp	 ecx, 16			; 00000010H
  003a0	75 02		 jne	 SHORT $LN16@GetTopText

; 811  :             {
; 812  :                 break;

  003a2	eb 24		 jmp	 SHORT $LN17@GetTopText
$LN16@GetTopText:

; 813  :             }
; 814  : 
; 815  :             m_WaitingPage[TOPWAIT_YELLOW] = -1;

  003a4	83 ca ff	 or	 edx, -1
  003a7	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  003aa	66 89 90 34 16
	00 00		 mov	 WORD PTR [eax+5684], dx

; 816  :             LinkPage = GetNextGroup(Page, &MissingPage);

  003b1	8d 4d ec	 lea	 ecx, DWORD PTR _MissingPage$[ebp]
  003b4	51		 push	 ecx
  003b5	0f b7 55 f8	 movzx	 edx, WORD PTR _Page$[ebp]
  003b9	52		 push	 edx
  003ba	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  003bd	e8 00 00 00 00	 call	 ?GetNextGroup@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetNextGroup
  003c2	66 89 45 fc	 mov	 WORD PTR _LinkPage$[ebp], ax

; 817  :         }

  003c6	eb b3		 jmp	 SHORT $LN18@GetTopText
$LN17@GetTopText:

; 818  : 
; 819  :         pBuffer->EditorialLink[VTFLOF_YELLOW] = Page2PageHex(LinkPage);

  003c8	0f b7 45 fc	 movzx	 eax, WORD PTR _LinkPage$[ebp]
  003cc	50		 push	 eax
  003cd	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  003d0	e8 00 00 00 00	 call	 ?Page2PageHex@CVTTopText@@AAEGF@Z ; CVTTopText::Page2PageHex
  003d5	0f b7 c8	 movzx	 ecx, ax
  003d8	8b 55 0c	 mov	 edx, DWORD PTR _pBuffer$[ebp]
  003db	89 8a 38 04 00
	00		 mov	 DWORD PTR [edx+1080], ecx

; 820  : 
; 821  :         if (LinkPage != -1)

  003e1	0f bf 45 fc	 movsx	 eax, WORD PTR _LinkPage$[ebp]
  003e5	83 f8 ff	 cmp	 eax, -1
  003e8	0f 84 86 00 00
	00		 je	 $LN15@GetTopText

; 822  :         {
; 823  :             m_WaitingPage[TOPWAIT_YELLOW_AIT] = LinkPage;

  003ee	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  003f1	66 8b 55 fc	 mov	 dx, WORD PTR _LinkPage$[ebp]
  003f5	66 89 91 38 16
	00 00		 mov	 WORD PTR [ecx+5688], dx

; 824  : 
; 825  :             if (m_AITReceived[LinkPage] != FALSE)

  003fc	0f bf 45 fc	 movsx	 eax, WORD PTR _LinkPage$[ebp]
  00400	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00403	0f b6 94 01 c0
	12 00 00	 movzx	 edx, BYTE PTR [ecx+eax+4800]
  0040b	85 d2		 test	 edx, edx
  0040d	74 13		 je	 SHORT $LN14@GetTopText

; 826  :             {
; 827  :                 pMessage = (char*)m_AITable[LinkPage];

  0040f	0f bf 45 fc	 movsx	 eax, WORD PTR _LinkPage$[ebp]
  00413	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00416	8b 94 81 40 06
	00 00		 mov	 edx, DWORD PTR [ecx+eax*4+1600]
  0041d	89 55 f4	 mov	 DWORD PTR _pMessage$[ebp], edx

; 828  :             }
; 829  :             else

  00420	eb 08		 jmp	 SHORT $LN13@GetTopText
$LN14@GetTopText:

; 830  :             {
; 831  :                 pMessage = m_EmptyTitleText;

  00422	a1 00 00 00 00	 mov	 eax, DWORD PTR ?m_EmptyTitleText@CVTTopText@@0PADA ; CVTTopText::m_EmptyTitleText
  00427	89 45 f4	 mov	 DWORD PTR _pMessage$[ebp], eax
$LN13@GetTopText:

; 832  :             }
; 833  : 
; 834  :             *pLineInput++ = 0x13;       // Yellow Mosaic

  0042a	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  0042d	c6 01 13	 mov	 BYTE PTR [ecx], 19	; 00000013H
  00430	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00433	83 c2 01	 add	 edx, 1
  00436	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx

; 835  :             *pLineInput++ = 0x3C;       // Box Mosaic

  00439	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  0043c	c6 00 3c	 mov	 BYTE PTR [eax], 60	; 0000003cH
  0043f	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00442	83 c1 01	 add	 ecx, 1
  00445	89 4d f0	 mov	 DWORD PTR _pLineInput$[ebp], ecx

; 836  :             *pLineInput++ = 0x03;       // Yellow text

  00448	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  0044b	c6 02 03	 mov	 BYTE PTR [edx], 3
  0044e	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00451	83 c0 01	 add	 eax, 1
  00454	89 45 f0	 mov	 DWORD PTR _pLineInput$[ebp], eax

; 837  : 
; 838  :             memcpy(pLineInput, pMessage, 12);

  00457	6a 0c		 push	 12			; 0000000cH
  00459	8b 4d f4	 mov	 ecx, DWORD PTR _pMessage$[ebp]
  0045c	51		 push	 ecx
  0045d	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00460	52		 push	 edx
  00461	e8 00 00 00 00	 call	 _memcpy
  00466	83 c4 0c	 add	 esp, 12			; 0000000cH

; 839  :             pLineInput += 12;

  00469	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  0046c	83 c0 0c	 add	 eax, 12			; 0000000cH
  0046f	89 45 f0	 mov	 DWORD PTR _pLineInput$[ebp], eax

; 840  :         }
; 841  :         else

  00472	eb 19		 jmp	 SHORT $LN12@GetTopText
$LN15@GetTopText:

; 842  :         {
; 843  :             memset(pLineInput, 0x20, 15);

  00474	6a 0f		 push	 15			; 0000000fH
  00476	6a 20		 push	 32			; 00000020H
  00478	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  0047b	51		 push	 ecx
  0047c	e8 00 00 00 00	 call	 _memset
  00481	83 c4 0c	 add	 esp, 12			; 0000000cH

; 844  :             pLineInput += 15;

  00484	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00487	83 c2 0f	 add	 edx, 15			; 0000000fH
  0048a	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx
$LN12@GetTopText:

; 845  :         }
; 846  : 
; 847  :         // Blue section
; 848  :         LinkPage = GetNextBlock(Page, &MissingPage);

  0048d	8d 45 ec	 lea	 eax, DWORD PTR _MissingPage$[ebp]
  00490	50		 push	 eax
  00491	0f b7 4d f8	 movzx	 ecx, WORD PTR _Page$[ebp]
  00495	51		 push	 ecx
  00496	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00499	e8 00 00 00 00	 call	 ?GetNextBlock@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetNextBlock
  0049e	66 89 45 fc	 mov	 WORD PTR _LinkPage$[ebp], ax
$LN11@GetTopText:

; 849  : 
; 850  :         while (LinkPage == -1)

  004a2	0f bf 55 fc	 movsx	 edx, WORD PTR _LinkPage$[ebp]
  004a6	83 fa ff	 cmp	 edx, -1
  004a9	75 44		 jne	 SHORT $LN10@GetTopText

; 851  :         {
; 852  :             m_WaitingPage[TOPWAIT_BLUE] = MissingPage;

  004ab	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  004ae	66 8b 4d ec	 mov	 cx, WORD PTR _MissingPage$[ebp]
  004b2	66 89 88 36 16
	00 00		 mov	 WORD PTR [eax+5686], cx

; 853  : 
; 854  :             // Multi-thread protection
; 855  :             if (m_BTTable[MissingPage] == TOP_UNRECEIVED)

  004b9	0f bf 55 ec	 movsx	 edx, WORD PTR _MissingPage$[ebp]
  004bd	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  004c0	0f b6 0c 10	 movzx	 ecx, BYTE PTR [eax+edx]
  004c4	83 f9 10	 cmp	 ecx, 16			; 00000010H
  004c7	75 02		 jne	 SHORT $LN9@GetTopText

; 856  :             {
; 857  :                 break;

  004c9	eb 24		 jmp	 SHORT $LN10@GetTopText
$LN9@GetTopText:

; 858  :             }
; 859  : 
; 860  :             m_WaitingPage[TOPWAIT_BLUE] = -1;

  004cb	83 ca ff	 or	 edx, -1
  004ce	8b 45 b0	 mov	 eax, DWORD PTR _this$[ebp]
  004d1	66 89 90 36 16
	00 00		 mov	 WORD PTR [eax+5686], dx

; 861  :             LinkPage = GetNextBlock(Page, &MissingPage);

  004d8	8d 4d ec	 lea	 ecx, DWORD PTR _MissingPage$[ebp]
  004db	51		 push	 ecx
  004dc	0f b7 55 f8	 movzx	 edx, WORD PTR _Page$[ebp]
  004e0	52		 push	 edx
  004e1	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  004e4	e8 00 00 00 00	 call	 ?GetNextBlock@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetNextBlock
  004e9	66 89 45 fc	 mov	 WORD PTR _LinkPage$[ebp], ax

; 862  :         }

  004ed	eb b3		 jmp	 SHORT $LN11@GetTopText
$LN10@GetTopText:

; 863  : 
; 864  :         pBuffer->EditorialLink[VTFLOF_BLUE] = Page2PageHex(LinkPage);

  004ef	0f b7 45 fc	 movzx	 eax, WORD PTR _LinkPage$[ebp]
  004f3	50		 push	 eax
  004f4	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  004f7	e8 00 00 00 00	 call	 ?Page2PageHex@CVTTopText@@AAEGF@Z ; CVTTopText::Page2PageHex
  004fc	0f b7 c8	 movzx	 ecx, ax
  004ff	8b 55 0c	 mov	 edx, DWORD PTR _pBuffer$[ebp]
  00502	89 8a 3c 04 00
	00		 mov	 DWORD PTR [edx+1084], ecx

; 865  : 
; 866  :         if (LinkPage != -1)

  00508	0f bf 45 fc	 movsx	 eax, WORD PTR _LinkPage$[ebp]
  0050c	83 f8 ff	 cmp	 eax, -1
  0050f	0f 84 86 00 00
	00		 je	 $LN8@GetTopText

; 867  :         {
; 868  :             m_WaitingPage[TOPWAIT_BLUE_AIT] = LinkPage;

  00515	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00518	66 8b 55 fc	 mov	 dx, WORD PTR _LinkPage$[ebp]
  0051c	66 89 91 3a 16
	00 00		 mov	 WORD PTR [ecx+5690], dx

; 869  : 
; 870  :             if (m_AITReceived[LinkPage] != FALSE)

  00523	0f bf 45 fc	 movsx	 eax, WORD PTR _LinkPage$[ebp]
  00527	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  0052a	0f b6 94 01 c0
	12 00 00	 movzx	 edx, BYTE PTR [ecx+eax+4800]
  00532	85 d2		 test	 edx, edx
  00534	74 13		 je	 SHORT $LN7@GetTopText

; 871  :             {
; 872  :                 pMessage = (char*)m_AITable[LinkPage];

  00536	0f bf 45 fc	 movsx	 eax, WORD PTR _LinkPage$[ebp]
  0053a	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  0053d	8b 94 81 40 06
	00 00		 mov	 edx, DWORD PTR [ecx+eax*4+1600]
  00544	89 55 f4	 mov	 DWORD PTR _pMessage$[ebp], edx

; 873  :             }
; 874  :             else

  00547	eb 08		 jmp	 SHORT $LN6@GetTopText
$LN7@GetTopText:

; 875  :             {
; 876  :                 pMessage = m_EmptyTitleText;

  00549	a1 00 00 00 00	 mov	 eax, DWORD PTR ?m_EmptyTitleText@CVTTopText@@0PADA ; CVTTopText::m_EmptyTitleText
  0054e	89 45 f4	 mov	 DWORD PTR _pMessage$[ebp], eax
$LN6@GetTopText:

; 877  :             }
; 878  : 
; 879  :             *pLineInput++ = 0x16;       // Cyan Mosaic

  00551	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00554	c6 01 16	 mov	 BYTE PTR [ecx], 22	; 00000016H
  00557	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  0055a	83 c2 01	 add	 edx, 1
  0055d	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx

; 880  :             *pLineInput++ = 0x3C;       // Box Mosaic

  00560	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00563	c6 00 3c	 mov	 BYTE PTR [eax], 60	; 0000003cH
  00566	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  00569	83 c1 01	 add	 ecx, 1
  0056c	89 4d f0	 mov	 DWORD PTR _pLineInput$[ebp], ecx

; 881  :             *pLineInput++ = 0x06;       // Cyan text

  0056f	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00572	c6 02 06	 mov	 BYTE PTR [edx], 6
  00575	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00578	83 c0 01	 add	 eax, 1
  0057b	89 45 f0	 mov	 DWORD PTR _pLineInput$[ebp], eax

; 882  : 
; 883  :             memcpy(pLineInput, pMessage, 12);

  0057e	6a 0c		 push	 12			; 0000000cH
  00580	8b 4d f4	 mov	 ecx, DWORD PTR _pMessage$[ebp]
  00583	51		 push	 ecx
  00584	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  00587	52		 push	 edx
  00588	e8 00 00 00 00	 call	 _memcpy
  0058d	83 c4 0c	 add	 esp, 12			; 0000000cH

; 884  :             pLineInput += 12;

  00590	8b 45 f0	 mov	 eax, DWORD PTR _pLineInput$[ebp]
  00593	83 c0 0c	 add	 eax, 12			; 0000000cH
  00596	89 45 f0	 mov	 DWORD PTR _pLineInput$[ebp], eax

; 885  :         }
; 886  :         else

  00599	eb 19		 jmp	 SHORT $LN21@GetTopText
$LN8@GetTopText:

; 887  :         {
; 888  :             memset(pLineInput, 0x20, 15);

  0059b	6a 0f		 push	 15			; 0000000fH
  0059d	6a 20		 push	 32			; 00000020H
  0059f	8b 4d f0	 mov	 ecx, DWORD PTR _pLineInput$[ebp]
  005a2	51		 push	 ecx
  005a3	e8 00 00 00 00	 call	 _memset
  005a8	83 c4 0c	 add	 esp, 12			; 0000000cH

; 889  :             pLineInput += 15;

  005ab	8b 55 f0	 mov	 edx, DWORD PTR _pLineInput$[ebp]
  005ae	83 c2 0f	 add	 edx, 15			; 0000000fH
  005b1	89 55 f0	 mov	 DWORD PTR _pLineInput$[ebp], edx
$LN21@GetTopText:

; 890  :         }
; 891  :     }
; 892  : 
; 893  :     pBuffer->EditorialLink[VTFLOF_INDEX] = 0x0100;

  005b4	8b 45 0c	 mov	 eax, DWORD PTR _pBuffer$[ebp]
  005b7	c7 80 40 04 00
	00 00 01 00 00	 mov	 DWORD PTR [eax+1088], 256 ; 00000100H

; 894  : 
; 895  :     for (int i = VTFLOF_RED; i <= VTFLOF_INDEX; i++)

  005c1	c7 45 b4 00 00
	00 00		 mov	 DWORD PTR _i$140086[ebp], 0
  005c8	eb 09		 jmp	 SHORT $LN4@GetTopText
$LN3@GetTopText:
  005ca	8b 4d b4	 mov	 ecx, DWORD PTR _i$140086[ebp]
  005cd	83 c1 01	 add	 ecx, 1
  005d0	89 4d b4	 mov	 DWORD PTR _i$140086[ebp], ecx
$LN4@GetTopText:
  005d3	83 7d b4 04	 cmp	 DWORD PTR _i$140086[ebp], 4
  005d7	7f 22		 jg	 SHORT $LN2@GetTopText

; 896  :     {
; 897  :         // All TOP-Text pages have unspecified subcodes
; 898  :         pBuffer->EditorialLink[i] |= (0x3F7F << 16);

  005d9	8b 55 b4	 mov	 edx, DWORD PTR _i$140086[ebp]
  005dc	8b 45 0c	 mov	 eax, DWORD PTR _pBuffer$[ebp]
  005df	8b 8c 90 30 04
	00 00		 mov	 ecx, DWORD PTR [eax+edx*4+1072]
  005e6	81 c9 00 00 7f
	3f		 or	 ecx, 1065287680		; 3f7f0000H
  005ec	8b 55 b4	 mov	 edx, DWORD PTR _i$140086[ebp]
  005ef	8b 45 0c	 mov	 eax, DWORD PTR _pBuffer$[ebp]
  005f2	89 8c 90 30 04
	00 00		 mov	 DWORD PTR [eax+edx*4+1072], ecx

; 899  :     }

  005f9	eb cf		 jmp	 SHORT $LN3@GetTopText
$LN2@GetTopText:

; 900  : 
; 901  :     if (memcmp(pBuffer->Frame[24], m_LastBuffer, 40) != 0)

  005fb	6a 28		 push	 40			; 00000028H
  005fd	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  00600	81 c1 5c 16 00
	00		 add	 ecx, 5724		; 0000165cH
  00606	51		 push	 ecx
  00607	8b 55 0c	 mov	 edx, DWORD PTR _pBuffer$[ebp]
  0060a	81 c2 c6 03 00
	00		 add	 edx, 966		; 000003c6H
  00610	52		 push	 edx
  00611	e8 00 00 00 00	 call	 _memcmp
  00616	83 c4 0c	 add	 esp, 12			; 0000000cH
  00619	85 c0		 test	 eax, eax
  0061b	74 33		 je	 SHORT $LN1@GetTopText

; 902  :     {
; 903  :         memcpy(m_LastBuffer, pBuffer->Frame[24], 40);

  0061d	6a 28		 push	 40			; 00000028H
  0061f	8b 45 0c	 mov	 eax, DWORD PTR _pBuffer$[ebp]
  00622	05 c6 03 00 00	 add	 eax, 966		; 000003c6H
  00627	50		 push	 eax
  00628	8b 4d b0	 mov	 ecx, DWORD PTR _this$[ebp]
  0062b	81 c1 5c 16 00
	00		 add	 ecx, 5724		; 0000165cH
  00631	51		 push	 ecx
  00632	e8 00 00 00 00	 call	 _memcpy
  00637	83 c4 0c	 add	 esp, 12			; 0000000cH

; 904  :         pBuffer->LineState[24] |= CACHESTATE_UPDATED;

  0063a	8b 55 0c	 mov	 edx, DWORD PTR _pBuffer$[ebp]
  0063d	0f b6 82 2e 04
	00 00		 movzx	 eax, BYTE PTR [edx+1070]
  00644	83 c8 02	 or	 eax, 2
  00647	8b 4d 0c	 mov	 ecx, DWORD PTR _pBuffer$[ebp]
  0064a	88 81 2e 04 00
	00		 mov	 BYTE PTR [ecx+1070], al
$LN1@GetTopText:

; 905  :     }
; 906  : 
; 907  :     return TRUE;

  00650	b8 01 00 00 00	 mov	 eax, 1
$LN40@GetTopText:

; 908  : }

  00655	8b 4d e4	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  00658	33 cd		 xor	 ecx, ebp
  0065a	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0065f	8b e5		 mov	 esp, ebp
  00661	5d		 pop	 ebp
  00662	c2 0c 00	 ret	 12			; 0000000cH
?GetTopTextDetails@CVTTopText@@QAEHKPAU_VTPage@@H@Z ENDP ; CVTTopText::GetTopTextDetails
_TEXT	ENDS
PUBLIC	?GetNextPageInGroup@CVTTopText@@AAEFFPAF@Z	; CVTTopText::GetNextPageInGroup
; Function compile flags: /Odtp
;	COMDAT ?GetNextPageInGroup@CVTTopText@@AAEFFPAF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$140008 = -4						; size = 4
_Page$ = 8						; size = 2
_MissingPage$ = 12					; size = 4
?GetNextPageInGroup@CVTTopText@@AAEFFPAF@Z PROC		; CVTTopText::GetNextPageInGroup, COMDAT
; _this$ = ecx

; 599  : {

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

; 600  :     for (int i = Page + 1; i < 800; i++)

  00009	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0000d	83 c0 01	 add	 eax, 1
  00010	89 45 fc	 mov	 DWORD PTR _i$140008[ebp], eax
  00013	eb 09		 jmp	 SHORT $LN7@GetNextPag@2
$LN6@GetNextPag@2:
  00015	8b 4d fc	 mov	 ecx, DWORD PTR _i$140008[ebp]
  00018	83 c1 01	 add	 ecx, 1
  0001b	89 4d fc	 mov	 DWORD PTR _i$140008[ebp], ecx
$LN7@GetNextPag@2:
  0001e	81 7d fc 20 03
	00 00		 cmp	 DWORD PTR _i$140008[ebp], 800 ; 00000320H
  00025	7d 65		 jge	 SHORT $LN5@GetNextPag@2

; 601  :     {
; 602  :         if (m_BTTable[i] & TOP_UNRECEIVED)

  00027	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0002a	03 55 fc	 add	 edx, DWORD PTR _i$140008[ebp]
  0002d	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  00030	83 e0 10	 and	 eax, 16			; 00000010H
  00033	74 15		 je	 SHORT $LN4@GetNextPag@2

; 603  :         {
; 604  :             if (MissingPage != NULL)

  00035	83 7d 0c 00	 cmp	 DWORD PTR _MissingPage$[ebp], 0
  00039	74 0a		 je	 SHORT $LN3@GetNextPag@2

; 605  :             {
; 606  :                 *MissingPage = i;

  0003b	8b 4d 0c	 mov	 ecx, DWORD PTR _MissingPage$[ebp]
  0003e	66 8b 55 fc	 mov	 dx, WORD PTR _i$140008[ebp]
  00042	66 89 11	 mov	 WORD PTR [ecx], dx
$LN3@GetNextPag@2:

; 607  :             }
; 608  :             return -1;

  00045	83 c8 ff	 or	 eax, -1
  00048	eb 53		 jmp	 SHORT $LN8@GetNextPag@2
$LN4@GetNextPag@2:

; 609  :         }
; 610  : 
; 611  :         if (m_BTTable[i] >= TOPLEVEL_SUBTITLE &&
; 612  :             m_BTTable[i] < TOPLEVEL_NORMAL)

  0004a	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0004d	03 45 fc	 add	 eax, DWORD PTR _i$140008[ebp]
  00050	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00053	83 f9 01	 cmp	 ecx, 1
  00056	7c 10		 jl	 SHORT $LN2@GetNextPag@2
  00058	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0005b	03 55 fc	 add	 edx, DWORD PTR _i$140008[ebp]
  0005e	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  00061	83 f8 08	 cmp	 eax, 8
  00064	7d 02		 jge	 SHORT $LN2@GetNextPag@2

; 613  :         {
; 614  :             break;

  00066	eb 24		 jmp	 SHORT $LN5@GetNextPag@2
$LN2@GetNextPag@2:

; 615  :         }
; 616  : 
; 617  :         if (m_BTTable[i] >= TOPLEVEL_NORMAL &&
; 618  :             m_BTTable[i] <= TOPLEVEL_LASTLEVEL)

  00068	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0006b	03 4d fc	 add	 ecx, DWORD PTR _i$140008[ebp]
  0006e	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  00071	83 fa 08	 cmp	 edx, 8
  00074	7c 14		 jl	 SHORT $LN1@GetNextPag@2
  00076	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00079	03 45 fc	 add	 eax, DWORD PTR _i$140008[ebp]
  0007c	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  0007f	83 f9 0b	 cmp	 ecx, 11			; 0000000bH
  00082	7f 06		 jg	 SHORT $LN1@GetNextPag@2

; 619  :         {
; 620  :             return i;

  00084	66 8b 45 fc	 mov	 ax, WORD PTR _i$140008[ebp]
  00088	eb 13		 jmp	 SHORT $LN8@GetNextPag@2
$LN1@GetNextPag@2:

; 621  :         }
; 622  :     }

  0008a	eb 89		 jmp	 SHORT $LN6@GetNextPag@2
$LN5@GetNextPag@2:

; 623  : 
; 624  :     return GetFirstInGroup(Page, MissingPage);

  0008c	8b 55 0c	 mov	 edx, DWORD PTR _MissingPage$[ebp]
  0008f	52		 push	 edx
  00090	0f b7 45 08	 movzx	 eax, WORD PTR _Page$[ebp]
  00094	50		 push	 eax
  00095	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00098	e8 00 00 00 00	 call	 ?GetFirstInGroup@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetFirstInGroup
$LN8@GetNextPag@2:

; 625  : }

  0009d	8b e5		 mov	 esp, ebp
  0009f	5d		 pop	 ebp
  000a0	c2 08 00	 ret	 8
?GetNextPageInGroup@CVTTopText@@AAEFFPAF@Z ENDP		; CVTTopText::GetNextPageInGroup
_TEXT	ENDS
PUBLIC	?GetNextGroupInBlock@CVTTopText@@AAEFFPAF@Z	; CVTTopText::GetNextGroupInBlock
; Function compile flags: /Odtp
;	COMDAT ?GetNextGroupInBlock@CVTTopText@@AAEFFPAF@Z
_TEXT	SEGMENT
_this$ = -8						; size = 4
_i$139983 = -4						; size = 4
_Page$ = 8						; size = 2
_MissingPage$ = 12					; size = 4
?GetNextGroupInBlock@CVTTopText@@AAEFFPAF@Z PROC	; CVTTopText::GetNextGroupInBlock, COMDAT
; _this$ = ecx

; 543  : {

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

; 544  :     for (int i = Page + 1; i < 800; i++)

  00009	0f bf 45 08	 movsx	 eax, WORD PTR _Page$[ebp]
  0000d	83 c0 01	 add	 eax, 1
  00010	89 45 fc	 mov	 DWORD PTR _i$139983[ebp], eax
  00013	eb 09		 jmp	 SHORT $LN7@GetNextGro@2
$LN6@GetNextGro@2:
  00015	8b 4d fc	 mov	 ecx, DWORD PTR _i$139983[ebp]
  00018	83 c1 01	 add	 ecx, 1
  0001b	89 4d fc	 mov	 DWORD PTR _i$139983[ebp], ecx
$LN7@GetNextGro@2:
  0001e	81 7d fc 20 03
	00 00		 cmp	 DWORD PTR _i$139983[ebp], 800 ; 00000320H
  00025	7d 65		 jge	 SHORT $LN5@GetNextGro@2

; 545  :     {
; 546  :         if (m_BTTable[i] & TOP_UNRECEIVED)

  00027	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0002a	03 55 fc	 add	 edx, DWORD PTR _i$139983[ebp]
  0002d	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  00030	83 e0 10	 and	 eax, 16			; 00000010H
  00033	74 15		 je	 SHORT $LN4@GetNextGro@2

; 547  :         {
; 548  :             if (MissingPage != NULL)

  00035	83 7d 0c 00	 cmp	 DWORD PTR _MissingPage$[ebp], 0
  00039	74 0a		 je	 SHORT $LN3@GetNextGro@2

; 549  :             {
; 550  :                 *MissingPage = i;

  0003b	8b 4d 0c	 mov	 ecx, DWORD PTR _MissingPage$[ebp]
  0003e	66 8b 55 fc	 mov	 dx, WORD PTR _i$139983[ebp]
  00042	66 89 11	 mov	 WORD PTR [ecx], dx
$LN3@GetNextGro@2:

; 551  :             }
; 552  :             return -1;

  00045	83 c8 ff	 or	 eax, -1
  00048	eb 53		 jmp	 SHORT $LN8@GetNextGro@2
$LN4@GetNextGro@2:

; 553  :         }
; 554  : 
; 555  :         if (m_BTTable[i] >= TOPLEVEL_SUBTITLE &&
; 556  :             m_BTTable[i] < TOPLEVEL_GROUP)

  0004a	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0004d	03 45 fc	 add	 eax, DWORD PTR _i$139983[ebp]
  00050	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  00053	83 f9 01	 cmp	 ecx, 1
  00056	7c 10		 jl	 SHORT $LN2@GetNextGro@2
  00058	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  0005b	03 55 fc	 add	 edx, DWORD PTR _i$139983[ebp]
  0005e	0f b6 02	 movzx	 eax, BYTE PTR [edx]
  00061	83 f8 06	 cmp	 eax, 6
  00064	7d 02		 jge	 SHORT $LN2@GetNextGro@2

; 557  :         {
; 558  :             break;

  00066	eb 24		 jmp	 SHORT $LN5@GetNextGro@2
$LN2@GetNextGro@2:

; 559  :         }
; 560  : 
; 561  :         if (m_BTTable[i] >= TOPLEVEL_GROUP &&
; 562  :             m_BTTable[i] < TOPLEVEL_NORMAL)

  00068	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0006b	03 4d fc	 add	 ecx, DWORD PTR _i$139983[ebp]
  0006e	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  00071	83 fa 06	 cmp	 edx, 6
  00074	7c 14		 jl	 SHORT $LN1@GetNextGro@2
  00076	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  00079	03 45 fc	 add	 eax, DWORD PTR _i$139983[ebp]
  0007c	0f b6 08	 movzx	 ecx, BYTE PTR [eax]
  0007f	83 f9 08	 cmp	 ecx, 8
  00082	7d 06		 jge	 SHORT $LN1@GetNextGro@2

; 563  :         {
; 564  :             return i;

  00084	66 8b 45 fc	 mov	 ax, WORD PTR _i$139983[ebp]
  00088	eb 13		 jmp	 SHORT $LN8@GetNextGro@2
$LN1@GetNextGro@2:

; 565  :         }
; 566  :     }

  0008a	eb 89		 jmp	 SHORT $LN6@GetNextGro@2
$LN5@GetNextGro@2:

; 567  : 
; 568  :     return GetFirstInBlock(Page, MissingPage);

  0008c	8b 55 0c	 mov	 edx, DWORD PTR _MissingPage$[ebp]
  0008f	52		 push	 edx
  00090	0f b7 45 08	 movzx	 eax, WORD PTR _Page$[ebp]
  00094	50		 push	 eax
  00095	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00098	e8 00 00 00 00	 call	 ?GetFirstInBlock@CVTTopText@@AAEFFPAF@Z ; CVTTopText::GetFirstInBlock
$LN8@GetNextGro@2:

; 569  : }

  0009d	8b e5		 mov	 esp, ebp
  0009f	5d		 pop	 ebp
  000a0	c2 08 00	 ret	 8
?GetNextGroupInBlock@CVTTopText@@AAEFFPAF@Z ENDP	; CVTTopText::GetNextGroupInBlock
_TEXT	ENDS
PUBLIC	?IsTopTextPage@CVTTopText@@QAEHK@Z		; CVTTopText::IsTopTextPage
; Function compile flags: /Odtp
;	COMDAT ?IsTopTextPage@CVTTopText@@QAEHK@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_dwPageCode$ = 8					; size = 4
?IsTopTextPage@CVTTopText@@QAEHK@Z PROC			; CVTTopText::IsTopTextPage, COMDAT
; _this$ = ecx

; 417  : {

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

; 418  :     if (LOWORD(dwPageCode) == 0x1F0)

  00007	8b 45 08	 mov	 eax, DWORD PTR _dwPageCode$[ebp]
  0000a	25 ff ff 00 00	 and	 eax, 65535		; 0000ffffH
  0000f	0f b7 c8	 movzx	 ecx, ax
  00012	81 f9 f0 01 00
	00		 cmp	 ecx, 496		; 000001f0H
  00018	75 07		 jne	 SHORT $LN1@IsTopTextP

; 419  :     {
; 420  :         return TRUE;

  0001a	b8 01 00 00 00	 mov	 eax, 1
  0001f	eb 1b		 jmp	 SHORT $LN2@IsTopTextP
$LN1@IsTopTextP:

; 421  :     }
; 422  : 
; 423  :     return GetExtraPageType(dwPageCode) != 0xFF;

  00021	8b 55 08	 mov	 edx, DWORD PTR _dwPageCode$[ebp]
  00024	52		 push	 edx
  00025	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  00028	e8 00 00 00 00	 call	 ?GetExtraPageType@CVTTopText@@AAEEK@Z ; CVTTopText::GetExtraPageType
  0002d	0f b6 c0	 movzx	 eax, al
  00030	33 c9		 xor	 ecx, ecx
  00032	3d ff 00 00 00	 cmp	 eax, 255		; 000000ffH
  00037	0f 95 c1	 setne	 cl
  0003a	8b c1		 mov	 eax, ecx
$LN2@IsTopTextP:

; 424  : }

  0003c	8b e5		 mov	 esp, ebp
  0003e	5d		 pop	 ebp
  0003f	c2 04 00	 ret	 4
?IsTopTextPage@CVTTopText@@QAEHK@Z ENDP			; CVTTopText::IsTopTextPage
_TEXT	ENDS
PUBLIC	?DecodeMPTPageRow@CVTTopText@@AAEHEPAE@Z	; CVTTopText::DecodeMPTPageRow
; Function compile flags: /Odtp
;	COMDAT ?DecodeMPTPageRow@CVTTopText@@AAEHEPAE@Z
_TEXT	SEGMENT
_this$ = -24						; size = 4
_uPages$139867 = -17					; size = 1
_Page$139863 = -16					; size = 4
_i$139862 = -12						; size = 4
_bLastPageUpdated$ = -8					; size = 4
_bError$ = -4						; size = 4
_nRow$ = 8						; size = 1
_pData$ = 12						; size = 4
?DecodeMPTPageRow@CVTTopText@@AAEHEPAE@Z PROC		; CVTTopText::DecodeMPTPageRow, COMDAT
; _this$ = ecx

; 273  : {

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

; 274  :     BOOL    bError;
; 275  :     BOOL    bLastPageUpdated = FALSE;

  00009	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _bLastPageUpdated$[ebp], 0

; 276  : 
; 277  :     EnterCriticalSection(&m_IntegrityMutex);

  00010	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  00013	05 40 16 00 00	 add	 eax, 5696		; 00001640H
  00018	50		 push	 eax
  00019	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 278  : 
; 279  :     if (nRow >= 1 && nRow <= 20)

  0001f	0f b6 4d 08	 movzx	 ecx, BYTE PTR _nRow$[ebp]
  00023	83 f9 01	 cmp	 ecx, 1
  00026	0f 8c 94 00 00
	00		 jl	 $LN6@DecodeMPTP
  0002c	0f b6 55 08	 movzx	 edx, BYTE PTR _nRow$[ebp]
  00030	83 fa 14	 cmp	 edx, 20			; 00000014H
  00033	0f 8f 87 00 00
	00		 jg	 $LN6@DecodeMPTP

; 280  :     {
; 281  :         for (int i = 0, Page = (nRow - 1) * 40; i < 40; i++, Page++)

  00039	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _i$139862[ebp], 0
  00040	0f b6 45 08	 movzx	 eax, BYTE PTR _nRow$[ebp]
  00044	83 e8 01	 sub	 eax, 1
  00047	6b c0 28	 imul	 eax, 40			; 00000028H
  0004a	89 45 f0	 mov	 DWORD PTR _Page$139863[ebp], eax
  0004d	eb 12		 jmp	 SHORT $LN5@DecodeMPTP
$LN4@DecodeMPTP:
  0004f	8b 4d f4	 mov	 ecx, DWORD PTR _i$139862[ebp]
  00052	83 c1 01	 add	 ecx, 1
  00055	89 4d f4	 mov	 DWORD PTR _i$139862[ebp], ecx
  00058	8b 55 f0	 mov	 edx, DWORD PTR _Page$139863[ebp]
  0005b	83 c2 01	 add	 edx, 1
  0005e	89 55 f0	 mov	 DWORD PTR _Page$139863[ebp], edx
$LN5@DecodeMPTP:
  00061	83 7d f4 28	 cmp	 DWORD PTR _i$139862[ebp], 40 ; 00000028H
  00065	7d 59		 jge	 SHORT $LN6@DecodeMPTP

; 282  :         {
; 283  :             BYTE uPages = Unham84(pData[i], &(bError = FALSE));

  00067	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0
  0006e	8d 45 fc	 lea	 eax, DWORD PTR _bError$[ebp]
  00071	50		 push	 eax
  00072	8b 4d 0c	 mov	 ecx, DWORD PTR _pData$[ebp]
  00075	03 4d f4	 add	 ecx, DWORD PTR _i$139862[ebp]
  00078	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  0007b	52		 push	 edx
  0007c	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  00081	83 c4 08	 add	 esp, 8
  00084	88 45 ef	 mov	 BYTE PTR _uPages$139867[ebp], al

; 284  : 
; 285  :             if (bError != FALSE)

  00087	83 7d fc 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0008b	74 02		 je	 SHORT $LN2@DecodeMPTP

; 286  :             {
; 287  :                 continue;

  0008d	eb c0		 jmp	 SHORT $LN4@DecodeMPTP
$LN2@DecodeMPTP:

; 288  :             }
; 289  : 
; 290  :             m_MPTable[Page] = uPages;

  0008f	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  00092	03 45 f0	 add	 eax, DWORD PTR _Page$139863[ebp]
  00095	8a 4d ef	 mov	 cl, BYTE PTR _uPages$139867[ebp]
  00098	88 88 20 03 00
	00		 mov	 BYTE PTR [eax+800], cl

; 291  : 
; 292  :             if (IsWaitingMPTPage(Page))

  0009e	0f b7 55 f0	 movzx	 edx, WORD PTR _Page$139863[ebp]
  000a2	52		 push	 edx
  000a3	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  000a6	e8 00 00 00 00	 call	 ?IsWaitingMPTPage@CVTTopText@@AAEHF@Z ; CVTTopText::IsWaitingMPTPage
  000ab	85 c0		 test	 eax, eax
  000ad	74 0f		 je	 SHORT $LN1@DecodeMPTP

; 293  :             {
; 294  :                 ResetWaitingPages();

  000af	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  000b2	e8 00 00 00 00	 call	 ?ResetWaitingPages@CVTTopText@@AAEXXZ ; CVTTopText::ResetWaitingPages

; 295  :                 bLastPageUpdated = TRUE;

  000b7	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _bLastPageUpdated$[ebp], 1
$LN1@DecodeMPTP:

; 296  :             }
; 297  :         }

  000be	eb 8f		 jmp	 SHORT $LN4@DecodeMPTP
$LN6@DecodeMPTP:

; 298  :     }
; 299  : 
; 300  :     LeaveCriticalSection(&m_IntegrityMutex);

  000c0	8b 45 e8	 mov	 eax, DWORD PTR _this$[ebp]
  000c3	05 40 16 00 00	 add	 eax, 5696		; 00001640H
  000c8	50		 push	 eax
  000c9	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 301  : 
; 302  :     return bLastPageUpdated;

  000cf	8b 45 f8	 mov	 eax, DWORD PTR _bLastPageUpdated$[ebp]

; 303  : }

  000d2	8b e5		 mov	 esp, ebp
  000d4	5d		 pop	 ebp
  000d5	c2 08 00	 ret	 8
?DecodeMPTPageRow@CVTTopText@@AAEHEPAE@Z ENDP		; CVTTopText::DecodeMPTPageRow
_TEXT	ENDS
PUBLIC	??1CVTTopText@@QAE@XZ				; CVTTopText::~CVTTopText
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??1CVTTopText@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1CVTTopText@@QAE@XZ$0
__ehfuncinfo$??1CVTTopText@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??1CVTTopText@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??1CVTTopText@@QAE@XZ
_TEXT	SEGMENT
_this$ = -24						; size = 4
$T303247 = -20						; size = 4
_i$139742 = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1CVTTopText@@QAE@XZ PROC				; CVTTopText::~CVTTopText, COMDAT
; _this$ = ecx

; 49   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??1CVTTopText@@QAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	50		 push	 eax
  0001c	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001f	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00025	89 4d e8	 mov	 DWORD PTR _this$[ebp], ecx
  00028	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 50   :     for (int i(0); i < 800; i++)

  0002f	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _i$139742[ebp], 0
  00036	eb 09		 jmp	 SHORT $LN4@CVTTopText
$LN3@CVTTopText:
  00038	8b 45 f0	 mov	 eax, DWORD PTR _i$139742[ebp]
  0003b	83 c0 01	 add	 eax, 1
  0003e	89 45 f0	 mov	 DWORD PTR _i$139742[ebp], eax
$LN4@CVTTopText:
  00041	81 7d f0 20 03
	00 00		 cmp	 DWORD PTR _i$139742[ebp], 800 ; 00000320H
  00048	7d 2e		 jge	 SHORT $LN2@CVTTopText

; 51   :     {
; 52   :         if (m_AITable[i] != NULL)

  0004a	8b 4d f0	 mov	 ecx, DWORD PTR _i$139742[ebp]
  0004d	8b 55 e8	 mov	 edx, DWORD PTR _this$[ebp]
  00050	83 bc 8a 40 06
	00 00 00	 cmp	 DWORD PTR [edx+ecx*4+1600], 0
  00058	74 1c		 je	 SHORT $LN1@CVTTopText

; 53   :         {
; 54   :             delete [] m_AITable[i];

  0005a	8b 45 f0	 mov	 eax, DWORD PTR _i$139742[ebp]
  0005d	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00060	8b 94 81 40 06
	00 00		 mov	 edx, DWORD PTR [ecx+eax*4+1600]
  00067	89 55 ec	 mov	 DWORD PTR $T303247[ebp], edx
  0006a	8b 45 ec	 mov	 eax, DWORD PTR $T303247[ebp]
  0006d	50		 push	 eax
  0006e	e8 00 00 00 00	 call	 ??_V@YAXPAX@Z		; operator delete[]
  00073	83 c4 04	 add	 esp, 4
$LN1@CVTTopText:

; 55   :         }
; 56   :     }

  00076	eb c0		 jmp	 SHORT $LN3@CVTTopText
$LN2@CVTTopText:

; 57   : 
; 58   :     DeleteCriticalSection(&m_IntegrityMutex);

  00078	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  0007b	81 c1 40 16 00
	00		 add	 ecx, 5696		; 00001640H
  00081	51		 push	 ecx
  00082	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DeleteCriticalSection@4

; 59   : }

  00088	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0008f	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00092	e8 00 00 00 00	 call	 ??1CVTCommon@@QAE@XZ	; CVTCommon::~CVTCommon
  00097	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0009a	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  000a1	59		 pop	 ecx
  000a2	8b e5		 mov	 esp, ebp
  000a4	5d		 pop	 ebp
  000a5	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1CVTTopText@@QAE@XZ$0:
  00000	8b 4d e8	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1CVTCommon@@QAE@XZ	; CVTCommon::~CVTCommon
__ehhandler$??1CVTTopText@@QAE@XZ:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a f0	 mov	 ecx, DWORD PTR [edx-16]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??1CVTTopText@@QAE@XZ
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??1CVTTopText@@QAE@XZ ENDP				; CVTTopText::~CVTTopText
PUBLIC	??0CVTTopText@@QAE@XZ				; CVTTopText::CVTTopText
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0CVTTopText@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0CVTTopText@@QAE@XZ$0
__ehfuncinfo$??0CVTTopText@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??0CVTTopText@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0CVTTopText@@QAE@XZ
_TEXT	SEGMENT
_this$ = -20						; size = 4
_i$139735 = -16						; size = 4
__$EHRec$ = -12						; size = 12
??0CVTTopText@@QAE@XZ PROC				; CVTTopText::CVTTopText, COMDAT
; _this$ = ecx

; 36   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CVTTopText@@QAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 08	 sub	 esp, 8
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	50		 push	 eax
  0001c	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001f	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00025	89 4d ec	 mov	 DWORD PTR _this$[ebp], ecx
  00028	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  0002b	e8 00 00 00 00	 call	 ??0CVTCommon@@QAE@XZ	; CVTCommon::CVTCommon
  00030	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 37   :     InitializeCriticalSection(&m_IntegrityMutex);

  00037	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  0003a	05 40 16 00 00	 add	 eax, 5696		; 00001640H
  0003f	50		 push	 eax
  00040	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InitializeCriticalSection@4

; 38   : 
; 39   :     for (int i(0); i < 800; i++)

  00046	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _i$139735[ebp], 0
  0004d	eb 09		 jmp	 SHORT $LN3@CVTTopText@2
$LN2@CVTTopText@2:
  0004f	8b 4d f0	 mov	 ecx, DWORD PTR _i$139735[ebp]
  00052	83 c1 01	 add	 ecx, 1
  00055	89 4d f0	 mov	 DWORD PTR _i$139735[ebp], ecx
$LN3@CVTTopText@2:
  00058	81 7d f0 20 03
	00 00		 cmp	 DWORD PTR _i$139735[ebp], 800 ; 00000320H
  0005f	7d 13		 jge	 SHORT $LN1@CVTTopText@2

; 40   :     {
; 41   :         m_AITable[i] = NULL;

  00061	8b 55 f0	 mov	 edx, DWORD PTR _i$139735[ebp]
  00064	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00067	c7 84 90 40 06
	00 00 00 00 00
	00		 mov	 DWORD PTR [eax+edx*4+1600], 0

; 42   :     }

  00072	eb db		 jmp	 SHORT $LN2@CVTTopText@2
$LN1@CVTTopText@2:

; 43   : 
; 44   :     Reset();

  00074	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00077	e8 00 00 00 00	 call	 ?Reset@CVTTopText@@QAEXXZ ; CVTTopText::Reset

; 45   : }

  0007c	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00083	8b 45 ec	 mov	 eax, DWORD PTR _this$[ebp]
  00086	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00089	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00090	59		 pop	 ecx
  00091	8b e5		 mov	 esp, ebp
  00093	5d		 pop	 ebp
  00094	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CVTTopText@@QAE@XZ$0:
  00000	8b 4d ec	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1CVTCommon@@QAE@XZ	; CVTCommon::~CVTCommon
__ehhandler$??0CVTTopText@@QAE@XZ:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a f4	 mov	 ecx, DWORD PTR [edx-12]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??0CVTTopText@@QAE@XZ
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CVTTopText@@QAE@XZ ENDP				; CVTTopText::CVTTopText
PUBLIC	?DecodeAITPageRow@CVTTopText@@AAEHEPAE@Z	; CVTTopText::DecodeAITPageRow
; Function compile flags: /Odtp
;	COMDAT ?DecodeAITPageRow@CVTTopText@@AAEHEPAE@Z
_TEXT	SEGMENT
tv167 = -48						; size = 4
tv93 = -44						; size = 4
_this$ = -40						; size = 4
$T318761 = -36						; size = 4
_i$139895 = -32						; size = 4
_n$139883 = -28						; size = 4
_wPageHex$139881 = -24					; size = 2
_Page$139882 = -20					; size = 2
_Magazine$139880 = -14					; size = 1
_uChar$ = -13						; size = 1
_bLastPageUpdated$ = -12				; size = 4
_bError$ = -8						; size = 4
_bTitleChanged$ = -4					; size = 4
_nRow$ = 8						; size = 1
_pData$ = 12						; size = 4
?DecodeAITPageRow@CVTTopText@@AAEHEPAE@Z PROC		; CVTTopText::DecodeAITPageRow, COMDAT
; _this$ = ecx

; 307  : {

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

; 308  :     BOOL    bError;
; 309  :     BOOL    bLastPageUpdated = FALSE;

  00009	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _bLastPageUpdated$[ebp], 0

; 310  :     BOOL    bTitleChanged;
; 311  :     BYTE    uChar;
; 312  : 
; 313  :     EnterCriticalSection(&m_IntegrityMutex);

  00010	8b 45 d8	 mov	 eax, DWORD PTR _this$[ebp]
  00013	05 40 16 00 00	 add	 eax, 5696		; 00001640H
  00018	50		 push	 eax
  00019	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 314  : 
; 315  :     if (nRow >= 1 && nRow <= 22)

  0001f	0f b6 4d 08	 movzx	 ecx, BYTE PTR _nRow$[ebp]
  00023	83 f9 01	 cmp	 ecx, 1
  00026	0f 8c 21 02 00
	00		 jl	 $LN19@DecodeAITP
  0002c	0f b6 55 08	 movzx	 edx, BYTE PTR _nRow$[ebp]
  00030	83 fa 16	 cmp	 edx, 22			; 00000016H
  00033	0f 8f 14 02 00
	00		 jg	 $LN19@DecodeAITP

; 316  :     {
; 317  :         BYTE    Magazine;
; 318  :         WORD    wPageHex;
; 319  :         short   Page;
; 320  : 
; 321  :         for (int n = 0; n < 2; n++)

  00039	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR _n$139883[ebp], 0
  00040	eb 09		 jmp	 SHORT $LN18@DecodeAITP
$LN17@DecodeAITP:
  00042	8b 45 e4	 mov	 eax, DWORD PTR _n$139883[ebp]
  00045	83 c0 01	 add	 eax, 1
  00048	89 45 e4	 mov	 DWORD PTR _n$139883[ebp], eax
$LN18@DecodeAITP:
  0004b	83 7d e4 02	 cmp	 DWORD PTR _n$139883[ebp], 2
  0004f	0f 8d f8 01 00
	00		 jge	 $LN19@DecodeAITP

; 322  :         {
; 323  :             Magazine = Unham84(pData[n*20], &(bError = FALSE));

  00055	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0
  0005c	8d 4d f8	 lea	 ecx, DWORD PTR _bError$[ebp]
  0005f	51		 push	 ecx
  00060	8b 55 e4	 mov	 edx, DWORD PTR _n$139883[ebp]
  00063	6b d2 14	 imul	 edx, 20			; 00000014H
  00066	8b 45 0c	 mov	 eax, DWORD PTR _pData$[ebp]
  00069	0f b6 0c 10	 movzx	 ecx, BYTE PTR [eax+edx]
  0006d	51		 push	 ecx
  0006e	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  00073	83 c4 08	 add	 esp, 8
  00076	88 45 f2	 mov	 BYTE PTR _Magazine$139880[ebp], al

; 324  : 
; 325  :             if (bError != FALSE || Magazine == 0x0F)

  00079	83 7d f8 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0007d	75 09		 jne	 SHORT $LN14@DecodeAITP
  0007f	0f b6 55 f2	 movzx	 edx, BYTE PTR _Magazine$139880[ebp]
  00083	83 fa 0f	 cmp	 edx, 15			; 0000000fH
  00086	75 05		 jne	 SHORT $LN15@DecodeAITP
$LN14@DecodeAITP:

; 326  :             {
; 327  :                 break;

  00088	e9 c0 01 00 00	 jmp	 $LN19@DecodeAITP
$LN15@DecodeAITP:

; 328  :             }
; 329  :             if (Magazine >= 0x08)

  0008d	0f b6 45 f2	 movzx	 eax, BYTE PTR _Magazine$139880[ebp]
  00091	83 f8 08	 cmp	 eax, 8
  00094	7c 02		 jl	 SHORT $LN13@DecodeAITP

; 330  :             {
; 331  :                 continue;

  00096	eb aa		 jmp	 SHORT $LN17@DecodeAITP
$LN13@DecodeAITP:

; 332  :             }
; 333  : 
; 334  :             wPageHex = UnhamTwo84_MSBF(&pData[n*20 + 1], &bError);

  00098	8d 4d f8	 lea	 ecx, DWORD PTR _bError$[ebp]
  0009b	51		 push	 ecx
  0009c	8b 55 e4	 mov	 edx, DWORD PTR _n$139883[ebp]
  0009f	6b d2 14	 imul	 edx, 20			; 00000014H
  000a2	8b 45 0c	 mov	 eax, DWORD PTR _pData$[ebp]
  000a5	8d 4c 10 01	 lea	 ecx, DWORD PTR [eax+edx+1]
  000a9	51		 push	 ecx
  000aa	e8 00 00 00 00	 call	 ?UnhamTwo84_MSBF@CVTCommon@@SAEQAEPAH@Z ; CVTCommon::UnhamTwo84_MSBF
  000af	83 c4 08	 add	 esp, 8
  000b2	66 0f b6 d0	 movzx	 dx, al
  000b6	66 89 55 e8	 mov	 WORD PTR _wPageHex$139881[ebp], dx

; 335  :             wPageHex |= (Magazine == 0 ? 0x800 : Magazine * 0x100);

  000ba	0f b6 45 f2	 movzx	 eax, BYTE PTR _Magazine$139880[ebp]
  000be	85 c0		 test	 eax, eax
  000c0	75 09		 jne	 SHORT $LN22@DecodeAITP
  000c2	c7 45 d4 00 08
	00 00		 mov	 DWORD PTR tv93[ebp], 2048 ; 00000800H
  000c9	eb 0a		 jmp	 SHORT $LN23@DecodeAITP
$LN22@DecodeAITP:
  000cb	0f b6 4d f2	 movzx	 ecx, BYTE PTR _Magazine$139880[ebp]
  000cf	c1 e1 08	 shl	 ecx, 8
  000d2	89 4d d4	 mov	 DWORD PTR tv93[ebp], ecx
$LN23@DecodeAITP:
  000d5	0f b7 55 e8	 movzx	 edx, WORD PTR _wPageHex$139881[ebp]
  000d9	0b 55 d4	 or	 edx, DWORD PTR tv93[ebp]
  000dc	66 89 55 e8	 mov	 WORD PTR _wPageHex$139881[ebp], dx

; 336  : 
; 337  :             if (bError != FALSE || (Page = PageHex2Page(wPageHex)) == -1)

  000e0	83 7d f8 00	 cmp	 DWORD PTR _bError$[ebp], 0
  000e4	75 1a		 jne	 SHORT $LN11@DecodeAITP
  000e6	0f b7 45 e8	 movzx	 eax, WORD PTR _wPageHex$139881[ebp]
  000ea	50		 push	 eax
  000eb	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  000ee	e8 00 00 00 00	 call	 ?PageHex2Page@CVTTopText@@AAEFG@Z ; CVTTopText::PageHex2Page
  000f3	66 89 45 ec	 mov	 WORD PTR _Page$139882[ebp], ax
  000f7	0f bf 4d ec	 movsx	 ecx, WORD PTR _Page$139882[ebp]
  000fb	83 f9 ff	 cmp	 ecx, -1
  000fe	75 05		 jne	 SHORT $LN12@DecodeAITP
$LN11@DecodeAITP:

; 338  :             {
; 339  :                 continue;

  00100	e9 3d ff ff ff	 jmp	 $LN17@DecodeAITP
$LN12@DecodeAITP:

; 340  :             }
; 341  : 
; 342  :             if (m_AITable[Page] == NULL)

  00105	0f bf 55 ec	 movsx	 edx, WORD PTR _Page$139882[ebp]
  00109	8b 45 d8	 mov	 eax, DWORD PTR _this$[ebp]
  0010c	83 bc 90 40 06
	00 00 00	 cmp	 DWORD PTR [eax+edx*4+1600], 0
  00114	75 1e		 jne	 SHORT $LN10@DecodeAITP

; 343  :             {
; 344  :                 m_AITable[Page] = new BYTE[12];

  00116	6a 0c		 push	 12			; 0000000cH
  00118	e8 00 00 00 00	 call	 ??_U@YAPAXI@Z		; operator new[]
  0011d	83 c4 04	 add	 esp, 4
  00120	89 45 dc	 mov	 DWORD PTR $T318761[ebp], eax
  00123	0f bf 4d ec	 movsx	 ecx, WORD PTR _Page$139882[ebp]
  00127	8b 55 d8	 mov	 edx, DWORD PTR _this$[ebp]
  0012a	8b 45 dc	 mov	 eax, DWORD PTR $T318761[ebp]
  0012d	89 84 8a 40 06
	00 00		 mov	 DWORD PTR [edx+ecx*4+1600], eax
$LN10@DecodeAITP:

; 345  :             }
; 346  : 
; 347  :             bTitleChanged = FALSE;

  00134	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bTitleChanged$[ebp], 0

; 348  : 
; 349  :             for (int i = 0; i < 12; i++)

  0013b	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR _i$139895[ebp], 0
  00142	eb 09		 jmp	 SHORT $LN9@DecodeAITP
$LN8@DecodeAITP:
  00144	8b 4d e0	 mov	 ecx, DWORD PTR _i$139895[ebp]
  00147	83 c1 01	 add	 ecx, 1
  0014a	89 4d e0	 mov	 DWORD PTR _i$139895[ebp], ecx
$LN9@DecodeAITP:
  0014d	83 7d e0 0c	 cmp	 DWORD PTR _i$139895[ebp], 12 ; 0000000cH
  00151	0f 8d bc 00 00
	00		 jge	 $LN7@DecodeAITP

; 350  :             {
; 351  :                 uChar = pData[n*20 + 8 + i];

  00157	8b 55 e4	 mov	 edx, DWORD PTR _n$139883[ebp]
  0015a	6b d2 14	 imul	 edx, 20			; 00000014H
  0015d	8b 45 e0	 mov	 eax, DWORD PTR _i$139895[ebp]
  00160	8d 4c 02 08	 lea	 ecx, DWORD PTR [edx+eax+8]
  00164	8b 55 0c	 mov	 edx, DWORD PTR _pData$[ebp]
  00167	8a 04 0a	 mov	 al, BYTE PTR [edx+ecx]
  0016a	88 45 f3	 mov	 BYTE PTR _uChar$[ebp], al

; 352  : 
; 353  :                 if (m_AITReceived[Page] == FALSE)

  0016d	0f bf 4d ec	 movsx	 ecx, WORD PTR _Page$139882[ebp]
  00171	8b 55 d8	 mov	 edx, DWORD PTR _this$[ebp]
  00174	0f b6 84 0a c0
	12 00 00	 movzx	 eax, BYTE PTR [edx+ecx+4800]
  0017c	85 c0		 test	 eax, eax
  0017e	75 3f		 jne	 SHORT $LN6@DecodeAITP

; 354  :                 {
; 355  :                     m_AITable[Page][i] = (uChar & 0x7F) < 0x20 ? 0x20 : (uChar & 0x7F);

  00180	0f b6 4d f3	 movzx	 ecx, BYTE PTR _uChar$[ebp]
  00184	83 e1 7f	 and	 ecx, 127		; 0000007fH
  00187	83 f9 20	 cmp	 ecx, 32			; 00000020H
  0018a	7d 09		 jge	 SHORT $LN24@DecodeAITP
  0018c	c7 45 d0 20 00
	00 00		 mov	 DWORD PTR tv167[ebp], 32 ; 00000020H
  00193	eb 0a		 jmp	 SHORT $LN25@DecodeAITP
$LN24@DecodeAITP:
  00195	0f b6 55 f3	 movzx	 edx, BYTE PTR _uChar$[ebp]
  00199	83 e2 7f	 and	 edx, 127		; 0000007fH
  0019c	89 55 d0	 mov	 DWORD PTR tv167[ebp], edx
$LN25@DecodeAITP:
  0019f	0f bf 45 ec	 movsx	 eax, WORD PTR _Page$139882[ebp]
  001a3	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  001a6	8b 94 81 40 06
	00 00		 mov	 edx, DWORD PTR [ecx+eax*4+1600]
  001ad	8b 45 e0	 mov	 eax, DWORD PTR _i$139895[ebp]
  001b0	8a 4d d0	 mov	 cl, BYTE PTR tv167[ebp]
  001b3	88 0c 02	 mov	 BYTE PTR [edx+eax], cl

; 356  :                     bTitleChanged = TRUE;

  001b6	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bTitleChanged$[ebp], 1

; 357  :                 }
; 358  :                 else

  001bd	eb 4f		 jmp	 SHORT $LN5@DecodeAITP
$LN6@DecodeAITP:

; 359  :                 {
; 360  :                     if (CheckParity(&uChar, 1, TRUE))

  001bf	6a 01		 push	 1
  001c1	6a 01		 push	 1
  001c3	8d 55 f3	 lea	 edx, DWORD PTR _uChar$[ebp]
  001c6	52		 push	 edx
  001c7	e8 00 00 00 00	 call	 ?CheckParity@CVTCommon@@SAHPAEKH@Z ; CVTCommon::CheckParity
  001cc	83 c4 0c	 add	 esp, 12			; 0000000cH
  001cf	85 c0		 test	 eax, eax
  001d1	74 3b		 je	 SHORT $LN5@DecodeAITP

; 361  :                     {
; 362  :                         if (uChar != m_AITable[Page][i])

  001d3	0f b6 45 f3	 movzx	 eax, BYTE PTR _uChar$[ebp]
  001d7	0f bf 4d ec	 movsx	 ecx, WORD PTR _Page$139882[ebp]
  001db	8b 55 d8	 mov	 edx, DWORD PTR _this$[ebp]
  001de	8b 8c 8a 40 06
	00 00		 mov	 ecx, DWORD PTR [edx+ecx*4+1600]
  001e5	8b 55 e0	 mov	 edx, DWORD PTR _i$139895[ebp]
  001e8	0f b6 0c 11	 movzx	 ecx, BYTE PTR [ecx+edx]
  001ec	3b c1		 cmp	 eax, ecx
  001ee	74 1e		 je	 SHORT $LN5@DecodeAITP

; 363  :                         {
; 364  :                             m_AITable[Page][i] = uChar;

  001f0	0f bf 55 ec	 movsx	 edx, WORD PTR _Page$139882[ebp]
  001f4	8b 45 d8	 mov	 eax, DWORD PTR _this$[ebp]
  001f7	8b 8c 90 40 06
	00 00		 mov	 ecx, DWORD PTR [eax+edx*4+1600]
  001fe	8b 55 e0	 mov	 edx, DWORD PTR _i$139895[ebp]
  00201	8a 45 f3	 mov	 al, BYTE PTR _uChar$[ebp]
  00204	88 04 11	 mov	 BYTE PTR [ecx+edx], al

; 365  :                             bTitleChanged = TRUE;

  00207	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _bTitleChanged$[ebp], 1
$LN5@DecodeAITP:

; 366  :                         }
; 367  :                     }
; 368  :                 }
; 369  :             }

  0020e	e9 31 ff ff ff	 jmp	 $LN8@DecodeAITP
$LN7@DecodeAITP:

; 370  : 
; 371  :             m_AITReceived[Page] = TRUE;

  00213	0f bf 4d ec	 movsx	 ecx, WORD PTR _Page$139882[ebp]
  00217	8b 55 d8	 mov	 edx, DWORD PTR _this$[ebp]
  0021a	c6 84 0a c0 12
	00 00 01	 mov	 BYTE PTR [edx+ecx+4800], 1

; 372  : 
; 373  :             if (bTitleChanged != FALSE)

  00222	83 7d fc 00	 cmp	 DWORD PTR _bTitleChanged$[ebp], 0
  00226	74 20		 je	 SHORT $LN2@DecodeAITP

; 374  :             {
; 375  :                 if (IsWaitingAITPage(Page))

  00228	0f b7 45 ec	 movzx	 eax, WORD PTR _Page$139882[ebp]
  0022c	50		 push	 eax
  0022d	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  00230	e8 00 00 00 00	 call	 ?IsWaitingAITPage@CVTTopText@@AAEHF@Z ; CVTTopText::IsWaitingAITPage
  00235	85 c0		 test	 eax, eax
  00237	74 0f		 je	 SHORT $LN2@DecodeAITP

; 376  :                 {
; 377  :                     ResetWaitingPages();

  00239	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  0023c	e8 00 00 00 00	 call	 ?ResetWaitingPages@CVTTopText@@AAEXXZ ; CVTTopText::ResetWaitingPages

; 378  :                     bLastPageUpdated = TRUE;

  00241	c7 45 f4 01 00
	00 00		 mov	 DWORD PTR _bLastPageUpdated$[ebp], 1
$LN2@DecodeAITP:

; 379  :                 }
; 380  :             }
; 381  :         }

  00248	e9 f5 fd ff ff	 jmp	 $LN17@DecodeAITP
$LN19@DecodeAITP:

; 382  :     }
; 383  : 
; 384  :     LeaveCriticalSection(&m_IntegrityMutex);

  0024d	8b 4d d8	 mov	 ecx, DWORD PTR _this$[ebp]
  00250	81 c1 40 16 00
	00		 add	 ecx, 5696		; 00001640H
  00256	51		 push	 ecx
  00257	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 385  : 
; 386  :     return bLastPageUpdated;

  0025d	8b 45 f4	 mov	 eax, DWORD PTR _bLastPageUpdated$[ebp]

; 387  : }

  00260	8b e5		 mov	 esp, ebp
  00262	5d		 pop	 ebp
  00263	c2 08 00	 ret	 8
?DecodeAITPageRow@CVTTopText@@AAEHEPAE@Z ENDP		; CVTTopText::DecodeAITPageRow
_TEXT	ENDS
PUBLIC	?DecodeBTTPageRow@CVTTopText@@AAEHEPAE@Z	; CVTTopText::DecodeBTTPageRow
; Function compile flags: /Odtp
;	COMDAT ?DecodeBTTPageRow@CVTTopText@@AAEHEPAE@Z
_TEXT	SEGMENT
tv182 = -56						; size = 4
_this$ = -52						; size = 4
_dwPageCode$139846 = -48				; size = 4
_n$139836 = -44						; size = 4
_Type$139828 = -37					; size = 1
_wPageSubCode$139831 = -36				; size = 2
_s4$139835 = -29					; size = 1
_wPageHex$139830 = -28					; size = 2
_s1$139832 = -21					; size = 1
_s2$139833 = -20					; size = 1
_Magazine$139829 = -19					; size = 1
_s3$139834 = -18					; size = 1
_uLevel$139823 = -17					; size = 1
_Page$139819 = -16					; size = 4
_i$139818 = -12						; size = 4
_bLastPageUpdated$ = -8					; size = 4
_bError$ = -4						; size = 4
_nRow$ = 8						; size = 1
_pData$ = 12						; size = 4
?DecodeBTTPageRow@CVTTopText@@AAEHEPAE@Z PROC		; CVTTopText::DecodeBTTPageRow, COMDAT
; _this$ = ecx

; 178  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 38	 sub	 esp, 56			; 00000038H
  00006	89 4d cc	 mov	 DWORD PTR _this$[ebp], ecx

; 179  :     BOOL    bError;
; 180  :     BOOL    bLastPageUpdated = FALSE;

  00009	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR _bLastPageUpdated$[ebp], 0

; 181  : 
; 182  :     EnterCriticalSection(&m_IntegrityMutex);

  00010	8b 45 cc	 mov	 eax, DWORD PTR _this$[ebp]
  00013	05 40 16 00 00	 add	 eax, 5696		; 00001640H
  00018	50		 push	 eax
  00019	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EnterCriticalSection@4

; 183  : 
; 184  :     if (nRow >= 1 && nRow <= 20)

  0001f	0f b6 4d 08	 movzx	 ecx, BYTE PTR _nRow$[ebp]
  00023	83 f9 01	 cmp	 ecx, 1
  00026	0f 8c 95 00 00
	00		 jl	 $LN18@DecodeBTTP
  0002c	0f b6 55 08	 movzx	 edx, BYTE PTR _nRow$[ebp]
  00030	83 fa 14	 cmp	 edx, 20			; 00000014H
  00033	0f 8f 88 00 00
	00		 jg	 $LN18@DecodeBTTP

; 185  :     {
; 186  :         for (int i = 0, Page = ((nRow - 1) * 40); i < 40; i++, Page++)

  00039	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _i$139818[ebp], 0
  00040	0f b6 45 08	 movzx	 eax, BYTE PTR _nRow$[ebp]
  00044	83 e8 01	 sub	 eax, 1
  00047	6b c0 28	 imul	 eax, 40			; 00000028H
  0004a	89 45 f0	 mov	 DWORD PTR _Page$139819[ebp], eax
  0004d	eb 12		 jmp	 SHORT $LN17@DecodeBTTP
$LN16@DecodeBTTP:
  0004f	8b 4d f4	 mov	 ecx, DWORD PTR _i$139818[ebp]
  00052	83 c1 01	 add	 ecx, 1
  00055	89 4d f4	 mov	 DWORD PTR _i$139818[ebp], ecx
  00058	8b 55 f0	 mov	 edx, DWORD PTR _Page$139819[ebp]
  0005b	83 c2 01	 add	 edx, 1
  0005e	89 55 f0	 mov	 DWORD PTR _Page$139819[ebp], edx
$LN17@DecodeBTTP:
  00061	83 7d f4 28	 cmp	 DWORD PTR _i$139818[ebp], 40 ; 00000028H
  00065	7d 55		 jge	 SHORT $LN15@DecodeBTTP

; 187  :         {
; 188  :             BYTE uLevel = Unham84(pData[i], &(bError = FALSE));

  00067	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0
  0006e	8d 45 fc	 lea	 eax, DWORD PTR _bError$[ebp]
  00071	50		 push	 eax
  00072	8b 4d 0c	 mov	 ecx, DWORD PTR _pData$[ebp]
  00075	03 4d f4	 add	 ecx, DWORD PTR _i$139818[ebp]
  00078	0f b6 11	 movzx	 edx, BYTE PTR [ecx]
  0007b	52		 push	 edx
  0007c	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  00081	83 c4 08	 add	 esp, 8
  00084	88 45 ef	 mov	 BYTE PTR _uLevel$139823[ebp], al

; 189  : 
; 190  :             if (bError != FALSE)

  00087	83 7d fc 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0008b	74 02		 je	 SHORT $LN14@DecodeBTTP

; 191  :             {
; 192  :                 continue;

  0008d	eb c0		 jmp	 SHORT $LN16@DecodeBTTP
$LN14@DecodeBTTP:

; 193  :             }
; 194  : 
; 195  :             m_BTTable[Page] = uLevel;

  0008f	8b 45 cc	 mov	 eax, DWORD PTR _this$[ebp]
  00092	03 45 f0	 add	 eax, DWORD PTR _Page$139819[ebp]
  00095	8a 4d ef	 mov	 cl, BYTE PTR _uLevel$139823[ebp]
  00098	88 08		 mov	 BYTE PTR [eax], cl

; 196  : 
; 197  :             // See if a missing page was received
; 198  :             if (IsWaitingBTTPage(Page))

  0009a	0f b7 55 f0	 movzx	 edx, WORD PTR _Page$139819[ebp]
  0009e	52		 push	 edx
  0009f	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  000a2	e8 00 00 00 00	 call	 ?IsWaitingBTTPage@CVTTopText@@AAEHF@Z ; CVTTopText::IsWaitingBTTPage
  000a7	85 c0		 test	 eax, eax
  000a9	74 0f		 je	 SHORT $LN13@DecodeBTTP

; 199  :             {
; 200  :                 ResetWaitingPages();

  000ab	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  000ae	e8 00 00 00 00	 call	 ?ResetWaitingPages@CVTTopText@@AAEXXZ ; CVTTopText::ResetWaitingPages

; 201  :                 bLastPageUpdated = TRUE;

  000b3	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR _bLastPageUpdated$[ebp], 1
$LN13@DecodeBTTP:

; 202  :             }
; 203  :         }

  000ba	eb 93		 jmp	 SHORT $LN16@DecodeBTTP
$LN15@DecodeBTTP:

; 204  :     }
; 205  :     else if (nRow >= 21 && nRow <= 22)

  000bc	e9 33 02 00 00	 jmp	 $LN12@DecodeBTTP
$LN18@DecodeBTTP:
  000c1	0f b6 45 08	 movzx	 eax, BYTE PTR _nRow$[ebp]
  000c5	83 f8 15	 cmp	 eax, 21			; 00000015H
  000c8	0f 8c 26 02 00
	00		 jl	 $LN12@DecodeBTTP
  000ce	0f b6 4d 08	 movzx	 ecx, BYTE PTR _nRow$[ebp]
  000d2	83 f9 16	 cmp	 ecx, 22			; 00000016H
  000d5	0f 8f 19 02 00
	00		 jg	 $LN12@DecodeBTTP

; 206  :     {
; 207  :         BYTE    Type;
; 208  :         BYTE    Magazine;
; 209  :         WORD    wPageHex;
; 210  :         WORD    wPageSubCode;
; 211  :         BYTE    s1, s2, s3, s4;
; 212  : 
; 213  :         for (int n = 0; n < 5; n++)

  000db	c7 45 d4 00 00
	00 00		 mov	 DWORD PTR _n$139836[ebp], 0
  000e2	eb 09		 jmp	 SHORT $LN10@DecodeBTTP
$LN9@DecodeBTTP:
  000e4	8b 55 d4	 mov	 edx, DWORD PTR _n$139836[ebp]
  000e7	83 c2 01	 add	 edx, 1
  000ea	89 55 d4	 mov	 DWORD PTR _n$139836[ebp], edx
$LN10@DecodeBTTP:
  000ed	83 7d d4 05	 cmp	 DWORD PTR _n$139836[ebp], 5
  000f1	0f 8d fd 01 00
	00		 jge	 $LN12@DecodeBTTP

; 214  :         {
; 215  :             Magazine = Unham84(pData[n*8], &(bError = FALSE));

  000f7	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _bError$[ebp], 0
  000fe	8d 45 fc	 lea	 eax, DWORD PTR _bError$[ebp]
  00101	50		 push	 eax
  00102	8b 4d d4	 mov	 ecx, DWORD PTR _n$139836[ebp]
  00105	8b 55 0c	 mov	 edx, DWORD PTR _pData$[ebp]
  00108	0f b6 04 ca	 movzx	 eax, BYTE PTR [edx+ecx*8]
  0010c	50		 push	 eax
  0010d	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  00112	83 c4 08	 add	 esp, 8
  00115	88 45 ed	 mov	 BYTE PTR _Magazine$139829[ebp], al

; 216  : 
; 217  :             if (bError != FALSE || Magazine == 0x0F)

  00118	83 7d fc 00	 cmp	 DWORD PTR _bError$[ebp], 0
  0011c	75 09		 jne	 SHORT $LN6@DecodeBTTP
  0011e	0f b6 4d ed	 movzx	 ecx, BYTE PTR _Magazine$139829[ebp]
  00122	83 f9 0f	 cmp	 ecx, 15			; 0000000fH
  00125	75 05		 jne	 SHORT $LN7@DecodeBTTP
$LN6@DecodeBTTP:

; 218  :             {
; 219  :                 break;

  00127	e9 c8 01 00 00	 jmp	 $LN12@DecodeBTTP
$LN7@DecodeBTTP:

; 220  :             }
; 221  :             if (Magazine >= 0x08)

  0012c	0f b6 55 ed	 movzx	 edx, BYTE PTR _Magazine$139829[ebp]
  00130	83 fa 08	 cmp	 edx, 8
  00133	7c 02		 jl	 SHORT $LN5@DecodeBTTP

; 222  :             {
; 223  :                 continue;

  00135	eb ad		 jmp	 SHORT $LN9@DecodeBTTP
$LN5@DecodeBTTP:

; 224  :             }
; 225  : 
; 226  :             Type = Unham84(pData[n*8 + 7], &bError);

  00137	8d 45 fc	 lea	 eax, DWORD PTR _bError$[ebp]
  0013a	50		 push	 eax
  0013b	8b 4d d4	 mov	 ecx, DWORD PTR _n$139836[ebp]
  0013e	8b 55 0c	 mov	 edx, DWORD PTR _pData$[ebp]
  00141	0f b6 44 ca 07	 movzx	 eax, BYTE PTR [edx+ecx*8+7]
  00146	50		 push	 eax
  00147	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  0014c	83 c4 08	 add	 esp, 8
  0014f	88 45 db	 mov	 BYTE PTR _Type$139828[ebp], al

; 227  : 
; 228  :             if (bError != FALSE ||
; 229  :                 (Type != TOPTYPE_MPT && Type != TOPTYPE_AIT))

  00152	83 7d fc 00	 cmp	 DWORD PTR _bError$[ebp], 0
  00156	75 12		 jne	 SHORT $LN3@DecodeBTTP
  00158	0f b6 4d db	 movzx	 ecx, BYTE PTR _Type$139828[ebp]
  0015c	83 f9 01	 cmp	 ecx, 1
  0015f	74 0e		 je	 SHORT $LN4@DecodeBTTP
  00161	0f b6 55 db	 movzx	 edx, BYTE PTR _Type$139828[ebp]
  00165	83 fa 02	 cmp	 edx, 2
  00168	74 05		 je	 SHORT $LN4@DecodeBTTP
$LN3@DecodeBTTP:

; 230  :             {
; 231  :                 continue;

  0016a	e9 75 ff ff ff	 jmp	 $LN9@DecodeBTTP
$LN4@DecodeBTTP:

; 232  :             }
; 233  : 
; 234  :             // These units are MSB first
; 235  :             wPageHex = UnhamTwo84_MSBF(&pData[n*8 + 1], &bError);

  0016f	8d 45 fc	 lea	 eax, DWORD PTR _bError$[ebp]
  00172	50		 push	 eax
  00173	8b 4d d4	 mov	 ecx, DWORD PTR _n$139836[ebp]
  00176	8b 55 0c	 mov	 edx, DWORD PTR _pData$[ebp]
  00179	8d 44 ca 01	 lea	 eax, DWORD PTR [edx+ecx*8+1]
  0017d	50		 push	 eax
  0017e	e8 00 00 00 00	 call	 ?UnhamTwo84_MSBF@CVTCommon@@SAEQAEPAH@Z ; CVTCommon::UnhamTwo84_MSBF
  00183	83 c4 08	 add	 esp, 8
  00186	66 0f b6 c8	 movzx	 cx, al
  0018a	66 89 4d e4	 mov	 WORD PTR _wPageHex$139830[ebp], cx

; 236  : 
; 237  :             s1 = Unham84(pData[n*8 + 3], &bError);

  0018e	8d 55 fc	 lea	 edx, DWORD PTR _bError$[ebp]
  00191	52		 push	 edx
  00192	8b 45 d4	 mov	 eax, DWORD PTR _n$139836[ebp]
  00195	8b 4d 0c	 mov	 ecx, DWORD PTR _pData$[ebp]
  00198	0f b6 54 c1 03	 movzx	 edx, BYTE PTR [ecx+eax*8+3]
  0019d	52		 push	 edx
  0019e	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  001a3	83 c4 08	 add	 esp, 8
  001a6	88 45 eb	 mov	 BYTE PTR _s1$139832[ebp], al

; 238  :             s2 = Unham84(pData[n*8 + 4], &bError);

  001a9	8d 45 fc	 lea	 eax, DWORD PTR _bError$[ebp]
  001ac	50		 push	 eax
  001ad	8b 4d d4	 mov	 ecx, DWORD PTR _n$139836[ebp]
  001b0	8b 55 0c	 mov	 edx, DWORD PTR _pData$[ebp]
  001b3	0f b6 44 ca 04	 movzx	 eax, BYTE PTR [edx+ecx*8+4]
  001b8	50		 push	 eax
  001b9	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  001be	83 c4 08	 add	 esp, 8
  001c1	88 45 ec	 mov	 BYTE PTR _s2$139833[ebp], al

; 239  :             s3 = Unham84(pData[n*8 + 5], &bError);

  001c4	8d 4d fc	 lea	 ecx, DWORD PTR _bError$[ebp]
  001c7	51		 push	 ecx
  001c8	8b 55 d4	 mov	 edx, DWORD PTR _n$139836[ebp]
  001cb	8b 45 0c	 mov	 eax, DWORD PTR _pData$[ebp]
  001ce	0f b6 4c d0 05	 movzx	 ecx, BYTE PTR [eax+edx*8+5]
  001d3	51		 push	 ecx
  001d4	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  001d9	83 c4 08	 add	 esp, 8
  001dc	88 45 ee	 mov	 BYTE PTR _s3$139834[ebp], al

; 240  :             s4 = Unham84(pData[n*8 + 6], &bError);

  001df	8d 55 fc	 lea	 edx, DWORD PTR _bError$[ebp]
  001e2	52		 push	 edx
  001e3	8b 45 d4	 mov	 eax, DWORD PTR _n$139836[ebp]
  001e6	8b 4d 0c	 mov	 ecx, DWORD PTR _pData$[ebp]
  001e9	0f b6 54 c1 06	 movzx	 edx, BYTE PTR [ecx+eax*8+6]
  001ee	52		 push	 edx
  001ef	e8 00 00 00 00	 call	 ?Unham84@CVTCommon@@SAEEPAH@Z ; CVTCommon::Unham84
  001f4	83 c4 08	 add	 esp, 8
  001f7	88 45 e3	 mov	 BYTE PTR _s4$139835[ebp], al

; 241  : 
; 242  :             if (bError != FALSE)

  001fa	83 7d fc 00	 cmp	 DWORD PTR _bError$[ebp], 0
  001fe	74 05		 je	 SHORT $LN2@DecodeBTTP

; 243  :             {
; 244  :                 continue;

  00200	e9 df fe ff ff	 jmp	 $LN9@DecodeBTTP
$LN2@DecodeBTTP:

; 245  :             }
; 246  : 
; 247  :             wPageHex |= (Magazine == 0 ? 0x800 : Magazine * 0x100);

  00205	0f b6 45 ed	 movzx	 eax, BYTE PTR _Magazine$139829[ebp]
  00209	85 c0		 test	 eax, eax
  0020b	75 09		 jne	 SHORT $LN21@DecodeBTTP
  0020d	c7 45 c8 00 08
	00 00		 mov	 DWORD PTR tv182[ebp], 2048 ; 00000800H
  00214	eb 0a		 jmp	 SHORT $LN22@DecodeBTTP
$LN21@DecodeBTTP:
  00216	0f b6 4d ed	 movzx	 ecx, BYTE PTR _Magazine$139829[ebp]
  0021a	c1 e1 08	 shl	 ecx, 8
  0021d	89 4d c8	 mov	 DWORD PTR tv182[ebp], ecx
$LN22@DecodeBTTP:
  00220	0f b7 55 e4	 movzx	 edx, WORD PTR _wPageHex$139830[ebp]
  00224	0b 55 c8	 or	 edx, DWORD PTR tv182[ebp]
  00227	66 89 55 e4	 mov	 WORD PTR _wPageHex$139830[ebp], dx

; 248  :             wPageSubCode = (s4 | ((s3 & 0x7) << 4));

  0022b	0f b6 45 e3	 movzx	 eax, BYTE PTR _s4$139835[ebp]
  0022f	0f b6 4d ee	 movzx	 ecx, BYTE PTR _s3$139834[ebp]
  00233	83 e1 07	 and	 ecx, 7
  00236	c1 e1 04	 shl	 ecx, 4
  00239	0b c1		 or	 eax, ecx
  0023b	66 89 45 dc	 mov	 WORD PTR _wPageSubCode$139831[ebp], ax

; 249  :             wPageSubCode |= ((s2 << 7) | ((s1 & 0x3) << 11));

  0023f	0f b6 55 ec	 movzx	 edx, BYTE PTR _s2$139833[ebp]
  00243	c1 e2 07	 shl	 edx, 7
  00246	0f b6 45 eb	 movzx	 eax, BYTE PTR _s1$139832[ebp]
  0024a	83 e0 03	 and	 eax, 3
  0024d	c1 e0 0b	 shl	 eax, 11			; 0000000bH
  00250	0b d0		 or	 edx, eax
  00252	0f b7 4d dc	 movzx	 ecx, WORD PTR _wPageSubCode$139831[ebp]
  00256	0b ca		 or	 ecx, edx
  00258	66 89 4d dc	 mov	 WORD PTR _wPageSubCode$139831[ebp], cx

; 250  : 
; 251  :             DWORD dwPageCode = MAKELONG(wPageHex, wPageSubCode);

  0025c	0f b7 55 e4	 movzx	 edx, WORD PTR _wPageHex$139830[ebp]
  00260	81 e2 ff ff 00
	00		 and	 edx, 65535		; 0000ffffH
  00266	0f b7 c2	 movzx	 eax, dx
  00269	0f b7 4d dc	 movzx	 ecx, WORD PTR _wPageSubCode$139831[ebp]
  0026d	81 e1 ff ff 00
	00		 and	 ecx, 65535		; 0000ffffH
  00273	0f b7 d1	 movzx	 edx, cx
  00276	c1 e2 10	 shl	 edx, 16			; 00000010H
  00279	0b c2		 or	 eax, edx
  0027b	89 45 d0	 mov	 DWORD PTR _dwPageCode$139846[ebp], eax

; 252  : 
; 253  :             if (!IsTopTextPage(dwPageCode))

  0027e	8b 45 d0	 mov	 eax, DWORD PTR _dwPageCode$139846[ebp]
  00281	50		 push	 eax
  00282	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  00285	e8 00 00 00 00	 call	 ?IsTopTextPage@CVTTopText@@QAEHK@Z ; CVTTopText::IsTopTextPage
  0028a	85 c0		 test	 eax, eax
  0028c	75 61		 jne	 SHORT $LN1@DecodeBTTP

; 254  :             {
; 255  :                 // Multi-thread protection
; 256  :                 m_ExtraTopPages[m_ExtraPagesHead].uType      = 0xFF;

  0028e	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  00291	0f b6 91 30 16
	00 00		 movzx	 edx, BYTE PTR [ecx+5680]
  00298	8b 45 cc	 mov	 eax, DWORD PTR _this$[ebp]
  0029b	c6 84 d0 e0 15
	00 00 ff	 mov	 BYTE PTR [eax+edx*8+5600], 255 ; 000000ffH

; 257  : 
; 258  :                 m_ExtraTopPages[m_ExtraPagesHead].dwPageCode = dwPageCode;

  002a3	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  002a6	0f b6 91 30 16
	00 00		 movzx	 edx, BYTE PTR [ecx+5680]
  002ad	8b 45 cc	 mov	 eax, DWORD PTR _this$[ebp]
  002b0	8b 4d d0	 mov	 ecx, DWORD PTR _dwPageCode$139846[ebp]
  002b3	89 8c d0 e4 15
	00 00		 mov	 DWORD PTR [eax+edx*8+5604], ecx

; 259  :                 m_ExtraTopPages[m_ExtraPagesHead].uType      = Type;

  002ba	8b 55 cc	 mov	 edx, DWORD PTR _this$[ebp]
  002bd	0f b6 82 30 16
	00 00		 movzx	 eax, BYTE PTR [edx+5680]
  002c4	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  002c7	8a 55 db	 mov	 dl, BYTE PTR _Type$139828[ebp]
  002ca	88 94 c1 e0 15
	00 00		 mov	 BYTE PTR [ecx+eax*8+5600], dl

; 260  : 
; 261  :                 m_ExtraPagesHead = (m_ExtraPagesHead + 1) % TOPMAX_EXTRAPAGES;

  002d1	8b 45 cc	 mov	 eax, DWORD PTR _this$[ebp]
  002d4	0f b6 80 30 16
	00 00		 movzx	 eax, BYTE PTR [eax+5680]
  002db	83 c0 01	 add	 eax, 1
  002de	99		 cdq
  002df	b9 0a 00 00 00	 mov	 ecx, 10			; 0000000aH
  002e4	f7 f9		 idiv	 ecx
  002e6	8b 45 cc	 mov	 eax, DWORD PTR _this$[ebp]
  002e9	88 90 30 16 00
	00		 mov	 BYTE PTR [eax+5680], dl
$LN1@DecodeBTTP:

; 262  :             }
; 263  :         }

  002ef	e9 f0 fd ff ff	 jmp	 $LN9@DecodeBTTP
$LN12@DecodeBTTP:

; 264  :     }
; 265  : 
; 266  :     LeaveCriticalSection(&m_IntegrityMutex);

  002f4	8b 4d cc	 mov	 ecx, DWORD PTR _this$[ebp]
  002f7	81 c1 40 16 00
	00		 add	 ecx, 5696		; 00001640H
  002fd	51		 push	 ecx
  002fe	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LeaveCriticalSection@4

; 267  : 
; 268  :     return bLastPageUpdated;

  00304	8b 45 f8	 mov	 eax, DWORD PTR _bLastPageUpdated$[ebp]

; 269  : }

  00307	8b e5		 mov	 esp, ebp
  00309	5d		 pop	 ebp
  0030a	c2 08 00	 ret	 8
?DecodeBTTPageRow@CVTTopText@@AAEHEPAE@Z ENDP		; CVTTopText::DecodeBTTPageRow
_TEXT	ENDS
PUBLIC	?DecodePageRow@CVTTopText@@QAEKKEPAE@Z		; CVTTopText::DecodePageRow
; Function compile flags: /Odtp
;	COMDAT ?DecodePageRow@CVTTopText@@QAEKKEPAE@Z
_TEXT	SEGMENT
tv80 = -12						; size = 4
_this$ = -8						; size = 4
_Type$ = -1						; size = 1
_dwPageCode$ = 8					; size = 4
_nRow$ = 12						; size = 1
_pData$ = 16						; size = 4
?DecodePageRow@CVTTopText@@QAEKKEPAE@Z PROC		; CVTTopText::DecodePageRow, COMDAT
; _this$ = ecx

; 137  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx

; 138  :     // 0x1F0 is always the Basic TOP page
; 139  :     if (LOWORD(dwPageCode) == 0x1F0)

  00009	8b 45 08	 mov	 eax, DWORD PTR _dwPageCode$[ebp]
  0000c	25 ff ff 00 00	 and	 eax, 65535		; 0000ffffH
  00011	0f b7 c8	 movzx	 ecx, ax
  00014	81 f9 f0 01 00
	00		 cmp	 ecx, 496		; 000001f0H
  0001a	75 24		 jne	 SHORT $LN9@DecodePage

; 140  :     {
; 141  :         if (DecodeBTTPageRow(nRow, pData))

  0001c	8b 55 10	 mov	 edx, DWORD PTR _pData$[ebp]
  0001f	52		 push	 edx
  00020	0f b6 45 0c	 movzx	 eax, BYTE PTR _nRow$[ebp]
  00024	50		 push	 eax
  00025	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00028	e8 00 00 00 00	 call	 ?DecodeBTTPageRow@CVTTopText@@AAEHEPAE@Z ; CVTTopText::DecodeBTTPageRow
  0002d	85 c0		 test	 eax, eax
  0002f	74 0b		 je	 SHORT $LN8@DecodePage

; 142  :         {
; 143  :             return m_LastPageCode;

  00031	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00034	8b 81 58 16 00
	00		 mov	 eax, DWORD PTR [ecx+5720]
  0003a	eb 7a		 jmp	 SHORT $LN10@DecodePage
$LN8@DecodePage:

; 144  :         }
; 145  :         return 0UL;

  0003c	33 c0		 xor	 eax, eax
  0003e	eb 76		 jmp	 SHORT $LN10@DecodePage
$LN9@DecodePage:

; 146  :     }
; 147  : 
; 148  :     // Determine if this page is a TOP page
; 149  :     BYTE Type = GetExtraPageType(dwPageCode);

  00040	8b 55 08	 mov	 edx, DWORD PTR _dwPageCode$[ebp]
  00043	52		 push	 edx
  00044	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00047	e8 00 00 00 00	 call	 ?GetExtraPageType@CVTTopText@@AAEEK@Z ; CVTTopText::GetExtraPageType
  0004c	88 45 ff	 mov	 BYTE PTR _Type$[ebp], al

; 150  : 
; 151  :     if (Type == 0xFF)

  0004f	0f b6 45 ff	 movzx	 eax, BYTE PTR _Type$[ebp]
  00053	3d ff 00 00 00	 cmp	 eax, 255		; 000000ffH
  00058	75 04		 jne	 SHORT $LN7@DecodePage

; 152  :     {
; 153  :         return 0UL;

  0005a	33 c0		 xor	 eax, eax
  0005c	eb 58		 jmp	 SHORT $LN10@DecodePage
$LN7@DecodePage:

; 154  :     }
; 155  : 
; 156  :     switch (Type)

  0005e	8a 4d ff	 mov	 cl, BYTE PTR _Type$[ebp]
  00061	88 4d f4	 mov	 BYTE PTR tv80[ebp], cl
  00064	80 7d f4 01	 cmp	 BYTE PTR tv80[ebp], 1
  00068	74 08		 je	 SHORT $LN4@DecodePage
  0006a	80 7d f4 02	 cmp	 BYTE PTR tv80[ebp], 2
  0006e	74 24		 je	 SHORT $LN2@DecodePage
  00070	eb 42		 jmp	 SHORT $LN5@DecodePage
$LN4@DecodePage:

; 157  :     {
; 158  :     case TOPTYPE_MPT:
; 159  :         if (DecodeMPTPageRow(nRow, pData))

  00072	8b 55 10	 mov	 edx, DWORD PTR _pData$[ebp]
  00075	52		 push	 edx
  00076	0f b6 45 0c	 movzx	 eax, BYTE PTR _nRow$[ebp]
  0007a	50		 push	 eax
  0007b	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0007e	e8 00 00 00 00	 call	 ?DecodeMPTPageRow@CVTTopText@@AAEHEPAE@Z ; CVTTopText::DecodeMPTPageRow
  00083	85 c0		 test	 eax, eax
  00085	74 0b		 je	 SHORT $LN3@DecodePage

; 160  :         {
; 161  :             return m_LastPageCode;

  00087	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  0008a	8b 81 58 16 00
	00		 mov	 eax, DWORD PTR [ecx+5720]
  00090	eb 24		 jmp	 SHORT $LN10@DecodePage
$LN3@DecodePage:

; 162  :         }
; 163  :         break;

  00092	eb 20		 jmp	 SHORT $LN5@DecodePage
$LN2@DecodePage:

; 164  : 
; 165  :     case TOPTYPE_AIT:
; 166  :         if (DecodeAITPageRow(nRow, pData))

  00094	8b 55 10	 mov	 edx, DWORD PTR _pData$[ebp]
  00097	52		 push	 edx
  00098	0f b6 45 0c	 movzx	 eax, BYTE PTR _nRow$[ebp]
  0009c	50		 push	 eax
  0009d	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000a0	e8 00 00 00 00	 call	 ?DecodeAITPageRow@CVTTopText@@AAEHEPAE@Z ; CVTTopText::DecodeAITPageRow
  000a5	85 c0		 test	 eax, eax
  000a7	74 0b		 je	 SHORT $LN5@DecodePage

; 167  :         {
; 168  :             return m_LastPageCode;

  000a9	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  000ac	8b 81 58 16 00
	00		 mov	 eax, DWORD PTR [ecx+5720]
  000b2	eb 02		 jmp	 SHORT $LN10@DecodePage
$LN5@DecodePage:

; 169  :         }
; 170  :         break;
; 171  :     }
; 172  : 
; 173  :     return 0UL;

  000b4	33 c0		 xor	 eax, eax
$LN10@DecodePage:

; 174  : }

  000b6	8b e5		 mov	 esp, ebp
  000b8	5d		 pop	 ebp
  000b9	c2 0c 00	 ret	 12			; 0000000cH
?DecodePageRow@CVTTopText@@QAEKKEPAE@Z ENDP		; CVTTopText::DecodePageRow
END
