ModernEndScreen

Redesigns the end-question-screen of the engine's default menu to more resemble how it is in RPGXP/VX/Ace by adding a shutdown-command to it which uses the same vocab-string as shutdown in the title-screen's choice.

Can be extended with the MES-version of RemoveQuitQuestion.

Originally made and first released by KotatsuAkira.

RPG2000
1.00UNKNOWN2000-05-072000-06-192000-07-112000-11-132000-11-152000-12-27
1.07
2001-05-05
1.10
2003-03-27
1.50
2003-06-25
1.51/1.52
2015-07-05
1.60
2015-09-15
1.61
2017-09-14
1.62
RPG2003
1.00UNKNOWN1UNKNOWN21.0.2.1
1.0.2.1
1.0.3.0
1.0.4.0
1.0.5.0
1.0.5.0
1.0.6.0
1.0.6.0
1.0.7.0
1.0.7.0
1.0.8.0
1.0.8.0
1.0.9.1
1.0.9.1
1.101.111.12mp210414

Segment 1/2

Offsets

RPG2000
2000-12-27
1.07
2017-09-14
1.62
0047B3E8h
0007A7E8h
00481C68h
00081068h
RPG2003
1.0.8.0
1.0.8.0
1.0.9.1
1.0.9.1
1.101.111.12mp210414
004A31CCh
000A25CCh
004A2500h
000A1900h

Sourcecode

PROC__0047B3E8h:
			PUSH EBX
			PUSH ESI
			MOV ESI, [0049ABA4h]			; TLcfgSystem
			MOV EBX, EAX
			MOV EAX, [EBX+30h]
			MOV EDX, [EAX]
			CALL [EDX+2Ch]
			MOV EAX, [0049AA04h]			; TMultiInput
			MOV EAX, [EAX]
			MOV AL, BYTE PTR [EAX+15Eh]
			TEST AL, 10h				; CONFIRM BUTTON
			JNZ __ProcessConfirm
			TEST AL, 20h				; CANCEL BUTTON
			JNZ __ProcessCancel
			JMP __Finish
__ProcessConfirm:
			MOV EAX, [ESI]
			CALL PROC__0046A4A0h			; TLcfgSystem.SoundGetDecision
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0046A0A8h			; TLcfgSystem.SoundPlay
			MOV EAX, [EBX+30h]
			CMP DWORD PTR [EAX+44h], 0
			JNZ __CheckCloseGame
			MOV EAX, [ESI]				; Index 0 [Go To Title]
			MOV EDX, 400
			CALL PROC__0046A048h			; TLcfgSystem.MusicFadeOut
			MOV EAX, EBX
			CALL PROC__00479C40h
			MOV EAX, [0049AA48h]			; TAuroraDraw
			MOV EAX, [EAX]
			CALL PROC__00455E44h			; TAuroraDraw.Reset
			JMP __Finish
__CheckCloseGame:
			CMP DWORD PTR [EAX+44h], 1
			JNZ __BackToMenu			; Index 2 [Cancel]
			POP ESI
			JMP __0046E4AFh				; Index 1 [Shutdown]
__ProcessCancel:
			MOV EAX, [ESI]
			CALL PROC__0046A588h			; TLcfgSystem.SoundGetCancel
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0046A0A8h			; TLcfgSystem.SoundPlay
__BackToMenu:
			MOV EAX, EBX
			CALL PROC__00479C80h
__Finish:
			POP ESI
			POP EBX
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
PROC__00481C68h:
			PUSH EBX
			PUSH ESI
			MOV ESI, [004A0B8Ch]			; TLcfgSystem
			MOV EBX, EAX
			MOV EAX, [EBX+30h]
			MOV EDX, [EAX]
			CALL [EDX+2Ch]
			MOV EAX, [004A0A04h]			; TMultiInput
			MOV EAX, [EAX]
			MOV AL, BYTE PTR [EAX+15Eh]
			TEST AL, 10h				; CONFIRM BUTTON
			JNZ __ProcessConfirm
			TEST AL, 20h				; CANCEL BUTTON
			JNZ __ProcessCancel
			JMP __Finish
__ProcessConfirm:
			MOV EAX, [ESI]
			CALL PROC__0046FD58h			; TLcfgSystem.SoundGetDecision
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0046F96Ch			; TLcfgSystem.SoundPlay
			MOV EAX, [EBX+30h]
			CMP DWORD PTR [EAX+44h], 0
			JNZ __CheckCloseGame
			MOV EAX, [ESI]				; Index 0 [Go To Title]
			MOV EDX, 400
			CALL PROC__0046F914h			; TLcfgSystem.MusicFadeOut
			MOV EAX, EBX
			CALL PROC__004804C0h
			MOV EAX, [004A0A3Ch]			; TAuroraDraw
			MOV EAX, [EAX]
			CALL PROC__00456710h			; TAuroraDraw.Reset
			JMP __Finish
__CheckCloseGame:
			CMP DWORD PTR [EAX+44h], 1
			JNZ __BackToMenu			; Index 2 [Cancel]
			POP ESI
			JMP __004749E3h				; Index 1 [Shutdown]
__ProcessCancel:
			MOV EAX, [ESI]
			CALL PROC__0046FE38h			; TLcfgSystem.SoundGetCancel
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0046F96Ch			; TLcfgSystem.SoundPlay
__BackToMenu:
			MOV EAX, EBX
			CALL PROC__00480500h
__Finish:
			POP ESI
			POP EBX
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
PROC__004A31CCh:
			PUSH EBX
			PUSH ESI
			MOV ESI, [004CDC7Ch]			; TLcfgSystem
			MOV EBX, EAX
			MOV EAX, [EBX+30h]
			MOV EDX, [EAX]
			CALL [EDX+30h]
			MOV EAX, [004CDAECh]			; TMultiInput
			MOV EAX, [EAX]
			MOV AL, BYTE PTR [EAX+344h]
			TEST AL, 10h				; CONFIRM BUTTON
			JNZ __ProcessConfirm
			TEST AL, 20h				; CANCEL BUTTON
			JNZ __ProcessCancel
			JMP __Finish
__ProcessConfirm:
			MOV EAX, [ESI]
			CALL PROC__0048B924h			; TLcfgSystem.SoundGetDecision
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0048B538h			; TLcfgSystem.SoundPlay
			MOV EAX, [EBX+30h]
			CMP DWORD PTR [EAX+44h], 0
			JNZ __CheckCloseGame
			MOV EAX, [ESI]				; Index 0 [Go To Title]
			MOV EDX, 400
			CALL PROC__0048B4E0h			; TLcfgSystem.MusicFadeOut
			MOV EAX, EBX
			CALL PROC__004A1094h
			MOV EAX, [004CDB24h]			; TAuroraDraw
			MOV EAX, [EAX]
			CALL PROC__0046BC00h			; TAuroraDraw.Reset
			JMP __Finish
__CheckCloseGame:
			CMP DWORD PTR [EAX+44h], 1
			JNZ __BackToMenu				; Index 2 [Cancel]
			POP ESI
			JMP __00490AF7h				; Index 1 [Shutdown]
__ProcessCancel:
			MOV EAX, [ESI]
			CALL PROC__0048BA04h			; TLcfgSystem.SoundGetCancel
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0048B538h			; TLcfgSystem.SoundPlay
__BackToMenu:
			MOV EAX, EBX
			CALL PROC__004A10D4h
__Finish:
			POP ESI
			POP EBX
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
PROC__004A2500h:
			PUSH EBX
			PUSH ESI
			MOV ESI, [004CDC7Ch]			; TLcfgSystem
			MOV EBX, EAX
			MOV EAX, [EBX+30h]
			MOV EDX, [EAX]
			CALL [EDX+30h]
			MOV EAX, [004CDAECh]			; TMultiInput
			MOV EAX, [EAX]
			MOV AL, BYTE PTR [EAX+344h]
			TEST AL, 10h				; CONFIRM BUTTON
			JNZ __ProcessConfirm
			TEST AL, 20h				; CANCEL BUTTON
			JNZ __ProcessCancel
			JMP __Finish
__ProcessConfirm:
			MOV EAX, [ESI]
			CALL PROC__0048B8E0h			; TLcfgSystem.SoundGetDecision
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0048B4F4h			; TLcfgSystem.SoundPlay
			MOV EAX, [EBX+30h]
			CMP DWORD PTR [EAX+44h], 0
			JNZ __CheckCloseGame
			MOV EAX, [ESI]				; Index 0 [Go To Title]
			MOV EDX, 400
			CALL PROC__0048B49Ch			; TLcfgSystem.MusicFadeOut
			MOV EAX, EBX
			CALL PROC__004A03C8h
			MOV EAX, [004CDB24h]			; TAuroraDraw
			MOV EAX, [EAX]
			CALL PROC__0046BC00h			; TAuroraDraw.Reset
			JMP __Finish
__CheckCloseGame:
			CMP DWORD PTR [EAX+44h], 1
			JNZ __BackToMenu				; Index 2 [Cancel]
			POP ESI
			JMP __0048FCEBh				; Index 1 [Shutdown]
__ProcessCancel:
			MOV EAX, [ESI]
			CALL PROC__0048B9C0h			; TLcfgSystem.SoundGetCancel
			MOV EDX, EAX
			MOV EAX, [ESI]
			CALL PROC__0048B4F4h			; TLcfgSystem.SoundPlay
__BackToMenu:
			MOV EAX, EBX
			CALL PROC__004A0408h
__Finish:
			POP ESI
			POP EBX
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP

Bytes

53 56 8B35A4AB4900 89C3 8B4330 8B10 FF522C
A104AA4900 8B00 8A805E010000 A810 7506
A820 7548
EB5D
8B06 E888F0FEFF
89C2 8B06 E887ECFEFF
8B4330 83784400 7521
8B06 BA90010000 E812ECFEFF
89D8 E803E8FFFF
A148AA4900 8B00 E8FBA9FDFF
EB23
83784401 7516
5E E95830FFFF
8B06 E82AF1FEFF
89C2 8B06 E841ECFEFF
89D8 E812E8FFFF
5E 5B C3

90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90
53 56 8B358C0B4A00 89C3 8B4330 8B10 FF522C
A1040A4A00 8B00 8A805E010000 A810 7506
A820 7548
EB5D
8B06 E8C0E0FEFF
89C2 8B06 E8CBDCFEFF
8B4330 83784400 7521
8B06 BA90010000 E85EDCFEFF
89D8 E803E8FFFF
A13C0A4A00 8B00 E8474AFDFF
EB23
83784401 7516
5E E90C2DFFFF
8B06 E85AE1FEFF
89C2 8B06 E885DCFEFF
89D8 E812E8FFFF
5E 5B C3

90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90
53 56 8B357CDC4C00 89C3 8B4330 8B10 FF5230
A1ECDA4C00 8B00 8A8044030000 A810 7506
A820 7548
EB5D
8B06 E82887FEFF
89C2 8B06 E83383FEFF
8B4330 83784400 7521
8B06 BA90010000 E8C682FEFF
89D8 E873DEFFFF
A124DB4C00 8B00 E8D389FCFF
EB23
83784401 7516
5E E9BCD8FEFF
8B06 E8C287FEFF
89C2 8B06 E8ED82FEFF
89D8 E882DEFFFF
5E 5B C3

90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90
53 56 8B357CDC4C00 89C3 8B4330 8B10 FF5230
A1ECDA4C00 8B00 8A8044030000 A810 7506
A820 7548
EB5D
8B06 E8B093FEFF
89C2 8B06 E8BB8FFEFF
8B4330 83784400 7521
8B06 BA90010000 E84E8FFEFF
89D8 E873DEFFFF
A124DB4C00 8B00 E89F96FCFF
EB23
83784401 7516
5E E97CD7FEFF
8B06 E84A94FEFF
89C2 8B06 E8758FFEFF
89D8 E882DEFFFF
5E 5B C3

90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90

Segment 2/2

Offsets

RPG2000
2000-12-27
1.07
2017-09-14
1.62
004796C8h
00078AC8h
0047FF48h
0007F348h
RPG2003
1.0.8.0
1.0.8.0
1.0.9.1
1.0.9.1
1.101.111.12mp210414
004A0978h
0009FD78h
0049FCACh
0009F0ACh

Sourcecode

PROC__004796C8h:
			PUSH EBX
			PUSH ESI
			PUSH EDI
			SUB ESP, 12
			MOV EBX, EAX
			XOR EDX, EDX
			MOV DL, 79				; QUIT Message
			CALL PROC__GetVocabStringLength
			MOV ESI, EAX
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 32
			PUSH 0
			SAR EAX, 1
			JNS __MessageNoCarry
			ADC EAX, 0
__MessageNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 64
			MOV EAX, [EBX+64h]
			CALL PROC__00493C30h
			
			MOV ESI, [EBX+64h]
			XOR EDX, EDX
			MOV DL, 79				; QUIT Message
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			
			XOR EDX, EDX
			MOV DL, 81				; [YES] (GO TO TITLE)
			CALL PROC__GetVocabStringLength
			MOV [ESP], EAX
			XOR EDX, EDX
			MOV DL, 58				; [SHUTDOWN]
			CALL PROC__GetVocabStringLength
			MOV [ESP+04h], EAX
			XOR EDX, EDX
			MOV DL, 82				; [NO] (CANCEL)
			CALL PROC__GetVocabStringLength
			MOV [ESP+08h], EAX
			MOV EAX, ESP
			XOR EDX, EDX
			MOV DL, 2
			CALL PROC__0041EB54h			; HighestValueFromChain
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 64
			PUSH 0
			SAR EAX, 1
			JNS __ChoicesNoCarry
			ADC EAX, 0
__ChoicesNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 112
			MOV EAX, EBX
			CALL PROC__00493C30h
			MOV ESI, EBX
			XOR EDX, EDX
			MOV DL, 81
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 58
			XOR ECX, ECX
			MOV CL, 24
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 82
			XOR ECX, ECX
			MOV CL, 40
			CALL PROC__DrawVocabString
			MOV DL, 01h
			MOV EAX, EBX
			CALL 004946DCh
			ADD ESP, 12
			POP EDI
			POP ESI
			POP EBX
			RETN
PROC__GetVocabString:
			MOV EAX, [0049ABDCh]			; BaseVocab
			MOV EAX, [EAX]
			MOV EAX, [EAX+EDX*4]
			RETN
			NOP
PROC__GetVocabStringLength:
			CALL PROC__GetVocabString
			CALL PROC__00403D4Ch
			RETN
			NOP
PROC__DrawVocabString:
			CALL PROC__GetVocabString
			PUSH EAX
			PUSH 0
			PUSH 1
			XOR EDX, EDX
			MOV DL, 8
			MOV EAX, ESI
			MOV EDI, [EAX]
			CALL [EDI+34h]
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
PROC__0047FF48h:
			PUSH EBX
			PUSH ESI
			PUSH EDI
			SUB ESP, 12
			MOV EBX, EAX
			XOR EDX, EDX
			MOV DL, 79				; QUIT Message
			CALL PROC__GetVocabStringLength
			MOV ESI, EAX
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 32
			PUSH 0
			SAR EAX, 1
			JNS __MessageNoCarry
			ADC EAX, 0
__MessageNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 64
			MOV EAX, [EBX+64h]
			CALL PROC__0049A988h
			
			MOV ESI, [EBX+64h]
			XOR EDX, EDX
			MOV DL, 79				; QUIT Message
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			
			XOR EDX, EDX
			MOV DL, 81				; [YES] (GO TO TITLE)
			CALL PROC__GetVocabStringLength
			MOV [ESP], EAX
			XOR EDX, EDX
			MOV DL, 58				; [SHUTDOWN]
			CALL PROC__GetVocabStringLength
			MOV [ESP+04h], EAX
			XOR EDX, EDX
			MOV DL, 82				; [NO] (CANCEL)
			CALL PROC__GetVocabStringLength
			MOV [ESP+08h], EAX
			MOV EAX, ESP
			XOR EDX, EDX
			MOV DL, 2
			CALL PROC__0041F18Ch			; HighestValueFromChain
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 64
			PUSH 0
			SAR EAX, 1
			JNS __ChoicesNoCarry
			ADC EAX, 0
__ChoicesNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 112
			MOV EAX, EBX
			CALL PROC__0049A988h
			MOV ESI, EBX
			XOR EDX, EDX
			MOV DL, 81
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 58
			XOR ECX, ECX
			MOV CL, 24
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 82
			XOR ECX, ECX
			MOV CL, 40
			CALL PROC__DrawVocabString
			MOV DL, 01h
			MOV EAX, EBX
			CALL PROC__0049B434h
			ADD ESP, 12
			POP EDI
			POP ESI
			POP EBX
			RETN
PROC__GetVocabString:
			MOV EAX, [004A0BC4h]			; BaseVocab
			MOV EAX, [EAX]
			MOV EAX, [EAX+EDX*4]
			RETN
			NOP
PROC__GetVocabStringLength:
			CALL PROC__GetVocabString
			CALL PROC__00403D70h
			RETN
			NOP
PROC__DrawVocabString:
			CALL PROC__GetVocabString
			PUSH EAX
			PUSH 0
			PUSH 1
			XOR EDX, EDX
			MOV DL, 8
			MOV EAX, ESI
			MOV EDI, [EAX]
			CALL [EDI+34h]
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
PROC__004A0978h:
			PUSH EBX
			PUSH ESI
			PUSH EDI
			SUB ESP, 12
			MOV EBX, EAX
			XOR EDX, EDX
			MOV DL, 77				; QUIT Message
			CALL PROC__GetVocabStringLength
			MOV ESI, EAX
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 32
			PUSH 0
			SAR EAX, 1
			JNS __MessageNoCarry
			ADC EAX, 0
__MessageNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 64
			MOV EAX, [EBX+78h]
			CALL PROC__004C63DCh
			
			MOV ESI, [EBX+78h]
			XOR EDX, EDX
			MOV DL, 77				; QUIT Message
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			
			XOR EDX, EDX
			MOV DL, 79				; [YES] (GO TO TITLE)
			CALL PROC__GetVocabStringLength
			MOV [ESP], EAX
			XOR EDX, EDX
			MOV DL, 56				; [SHUTDOWN]
			CALL PROC__GetVocabStringLength
			MOV [ESP+04h], EAX
			XOR EDX, EDX
			MOV DL, 80				; [NO] (CANCEL)
			CALL PROC__GetVocabStringLength
			MOV [ESP+08h], EAX
			MOV EAX, ESP
			XOR EDX, EDX
			MOV DL, 2
			CALL PROC__0042A290h			; HighestValueFromChain
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 64
			PUSH 0
			SAR EAX, 1
			JNS __ChoicesNoCarry
			ADC EAX, 0
__ChoicesNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 112
			MOV EAX, EBX
			CALL PROC__004C63DCh
			MOV ESI, EBX
			XOR EDX, EDX
			MOV DL, 79
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 56
			XOR ECX, ECX
			MOV CL, 24
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 80
			XOR ECX, ECX
			MOV CL, 40
			CALL PROC__DrawVocabString
			MOV DL, 01h
			MOV EAX, EBX
			CALL PROC__004C6FBCh
			ADD ESP, 12
			POP EDI
			POP ESI
			POP EBX
			RETN
PROC__GetVocabString:
			MOV EAX, [004CDCB4h]			; BaseVocab
			MOV EAX, [EAX]
			MOV EAX, [EAX+EDX*4]
			RETN
			NOP
PROC__GetVocabStringLength:
			CALL PROC__GetVocabString
			CALL PROC__004047A4h
			RETN
			NOP
PROC__DrawVocabString:
			CALL PROC__GetVocabString
			PUSH EAX
			PUSH 0
			PUSH 1
			XOR EDX, EDX
			MOV DL, 8
			MOV EAX, ESI
			MOV EDI, [EAX]
			CALL [EDI+38h]
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
PROC__0049FCACh:
			PUSH EBX
			PUSH ESI
			PUSH EDI
			SUB ESP, 12
			MOV EBX, EAX
			XOR EDX, EDX
			MOV DL, 77				; QUIT Message
			CALL PROC__GetVocabStringLength
			MOV ESI, EAX
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 32
			PUSH 0
			SAR EAX, 1
			JNS __MessageNoCarry
			ADC EAX, 0
__MessageNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 64
			MOV EAX, [EBX+78h]
			CALL PROC__004C5708h
			
			MOV ESI, [EBX+78h]
			XOR EDX, EDX
			MOV DL, 77				; QUIT Message
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			
			XOR EDX, EDX
			MOV DL, 79				; [YES] (GO TO TITLE)
			CALL PROC__GetVocabStringLength
			MOV [ESP], EAX
			XOR EDX, EDX
			MOV DL, 56				; [SHUTDOWN]
			CALL PROC__GetVocabStringLength
			MOV [ESP+04h], EAX
			XOR EDX, EDX
			MOV DL, 80				; [NO] (CANCEL)
			CALL PROC__GetVocabStringLength
			MOV [ESP+08h], EAX
			MOV EAX, ESP
			XOR EDX, EDX
			MOV DL, 2
			CALL PROC__0042A290h			; HighestValueFromChain
			ADD EAX, EAX
			LEA EAX, [EAX+EAX*2]
			ADD EAX, 16
			PUSH EAX
			PUSH 64
			PUSH 0
			SAR EAX, 1
			JNS __ChoicesNoCarry
			ADC EAX, 0
__ChoicesNoCarry:
			XOR EDX, EDX
			MOV DL, 160
			SUB EDX, EAX
			XOR ECX, ECX
			MOV CL, 112
			MOV EAX, EBX
			CALL PROC__004C5708h
			MOV ESI, EBX
			XOR EDX, EDX
			MOV DL, 79
			XOR ECX, ECX
			MOV CL, 8
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 56
			XOR ECX, ECX
			MOV CL, 24
			CALL PROC__DrawVocabString
			XOR EDX, EDX
			MOV DL, 80
			XOR ECX, ECX
			MOV CL, 40
			CALL PROC__DrawVocabString
			MOV DL, 01h
			MOV EAX, EBX
			CALL PROC__004C62F0h
			ADD ESP, 12
			POP EDI
			POP ESI
			POP EBX
			RETN
PROC__GetVocabString:
			MOV EAX, [004CDCB4h]			; BaseVocab
			MOV EAX, [EAX]
			MOV EAX, [EAX+EDX*4]
			RETN
PROC__GetVocabStringLength:
			CALL PROC__GetVocabString
			CALL PROC__004047A4h
			RETN
PROC__DrawVocabString:
			CALL PROC__GetVocabString
			PUSH EAX
			PUSH 0
			PUSH 1
			XOR EDX, EDX
			MOV DL, 8
			MOV EAX, ESI
			MOV EDI, [EAX]
			CALL [EDI+38h]
			RETN
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP
			NOP

Bytes

53 56 57 83EC0C 89C3 31D2 B24F E8D3000000
89C6 01C0 8D0440 83C010 50 6A20 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B140 8B4364 E82FA50100
8B7364 31D2 B24F 31C9 B108 E8A7000000
31D2 B251 E892000000
890424 31D2 B23A E886000000
89442404 31D2 B252 E879000000
89442408 89E0 31D2 B202 E81254FAFF
01C0 8D0440 83C010 50 6A40 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B170 89D8 E8C9A40100
89DE 31D2 B251 31C9 B108 E842000000
31D2 B23A 31C9 B118 E835000000
31D2 B252 31C9 B128 E828000000
B201 89D8 E843AF0100
83C40C 5F 5E 5B C3

A1DCAB4900 8B00 8B0490 C3 90

E8EFFFFFFF
E896A5F8FF
C3 90

E8E3FFFFFF
50 6A00 6A01 31D2 B208 89F0 8B38 FF5734 C3

90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90
53 56 57 83EC0C 89C3 31D2 B24F E8D3000000
89C6 01C0 8D0440 83C010 50 6A20 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B140 8B4364 E807AA0100
8B7364 31D2 B24F 31C9 B108 E8A7000000
31D2 B251 E892000000
890424 31D2 B23A E886000000
89442404 31D2 B252 E879000000
89442408 89E0 31D2 B202 E8CAF1F9FF
01C0 8D0440 83C010 50 6A40 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B170 89D8 E8A1A90100
89DE 31D2 B251 31C9 B108 E842000000
31D2 B23A 31C9 B118 E835000000
31D2 B252 31C9 B128 E828000000
B201 89D8 E81BB40100
83C40C 5F 5E 5B C3

A1C40B4A00 8B00 8B0490 C3 90

E8EFFFFFFF
E83A3DF8FF
C3 90

E8E3FFFFFF
50 6A00 6A01 31D2 B208 89F0 8B38 FF5734 C3

90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90
53 56 57 83EC0C 89C3 31D2 B24D E8D3000000
89C6 01C0 8D0440 83C010 50 6A20 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B140 8B4378 E82B5A0200
8B7378 31D2 B24D 31C9 B108 E8A7000000
31D2 B24F E892000000
890424 31D2 B238 E886000000
89442404 31D2 B250 E879000000
89442408 89E0 31D2 B202 E89E98F8FF
01C0 8D0440 83C010 50 6A40 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B170 89D8 E8C5590200
89DE 31D2 B24F 31C9 B108 E842000000
31D2 B238 31C9 B118 E835000000
31D2 B250 31C9 B128 E828000000
B201 89D8 E873650200
83C40C 5F 5E 5B C3

A1B4DC4C00 8B00 8B0490 C3 90

E8EFFFFFFF
E83E3DF6FF
C3 90

E8E3FFFFFF
50 6A00 6A01 31D2 B208 89F0 8B38 FF5738 C3

90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90
53 56 57 83EC0C 89C3 31D2 B24D E8D2000000
89C6 01C0 8D0440 83C010 50 6A20 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B140 8B4378 E8235A0200
8B7378 31D2 B24D 31C9 B108 E8A5000000
31D2 B24F E891000000
890424 31D2 B238 E885000000
89442404 31D2 B250 E878000000
89442408 89E0 31D2 B202 E86AA5F8FF
01C0 8D0440 83C010 50 6A40 6A00 D1F8 7903
83D000 31D2 B2A0 29C2 31C9 B170 89D8 E8BD590200
89DE 31D2 B24F 31C9 B108 E840000000
31D2 B238 31C9 B118 E833000000
31D2 B250 31C9 B128 E826000000
B201 89D8 E873650200
83C40C 5F 5E 5B C3

A1B4DC4C00 8B00 8B0490 C3

E8F0FFFFFF
E80B4AF6FF
C3

E8E5FFFFFF
50 6A00 6A01 31D2 B208 89F0 8B38 FF5738 C3

90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90