Function at 0x46dff9
Capabilities:
Log keystrokes via application hook

Disassembly:
mov eax, 0x51d458
call fcn.004efe80
sub esp, 0x70
push ebx
push esi
mov esi, ecx
push edi
push 1
cmp dword [esi + 0x8ff2c], 0
lea eax, [esi + 0x8ff2c]
pop ebx
jne 0x46e01f
mov dword [eax], ebx
cmp dword [esi + 0x8ff30], 0
mov edi, dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [esi + 0x8ff30]
jne 0x46e6b6
mov dword [eax], ebx
lea eax, [ebp - 0x2c]
push eax
push dword [esi + 0x90320]
call edi
mov eax, dword [ebp - 0x20]
push ebx
sub eax, dword [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x2c]
push eax
call fcn.0045fb57
mov ecx, eax
call fcn.0045fb8c
mov ecx, dword [0x560288]
sub ecx, dword [ebp - 0x20]
add ecx, dword [ebp - 0x28]
sub ecx, eax
sub ecx, 0x8c
push ecx
push 0
lea ecx, [esi + 0x90300]
call sub.MFC42.DLL_CWnd::MoveWindow
lea eax, [ebp - 0x2c]
push eax
push dword [esi + 0x20]
call edi
push ebx
push str.Slider0
push dword [ebp - 0x28]
lea ecx, [esi + 0x90300]
push dword [ebp - 0x2c]
call fcn.0047e2cd
mov ebx, 0x12c
lea ecx, [esi + 0x90300]
push ebx
call fcn.0047e296
push ebx
lea ecx, [esi + 0x90300]
call fcn.0047e2a5
mov ebx, dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
push 1
push 0x10
push 0x10
push 4
call ebx
sub eax, 0x28
lea ecx, [esi + 0x90160]
push eax
call sub.MFC42.DLL_CWnd::MoveWindow
push 1
push 0x10
push 0x10
push 4
call ebx
sub eax, 0x14
lea ebx, [esi + 0x90230]
push eax
mov ecx, ebx
call sub.MFC42.DLL_CWnd::MoveWindow
push 0
push 0
push str.Button01
lea ecx, [esi + 0x90160]
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
call fcn.004606cb
push 0
push 0
push str.Button02
mov ecx, ebx
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
call fcn.004606cb
push esi
push 0xad
lea ecx, [esi + 0x8ca04]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x9e
lea ecx, [esi + 0x6ec68]
call sub.MFC42.DLL_CDialog::Create
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e159
mov eax, dword [eax + 4]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
push 1
push eax
push 0x30
push dword [esi + 0x6f3b0]
call ebx
push esi
push 0x14b
lea ecx, [esi + 0x8bc20]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x13e
lea ecx, [esi + 0x8b0e8]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x13d
lea ecx, [esi + 0x8ae44]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x14d
lea ecx, [esi + 0x73b4c]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x14c
lea ecx, [esi + 0x8a464]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x14e
lea ecx, [esi + 0x6fbb4]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x128
lea ecx, [esi + 0x73458]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x12a
lea ecx, [esi + 0x8b7dc]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x12b
lea ecx, [esi + 0x8bfa0]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x125
lea ecx, [esi + 0x8b470]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x12e
lea ecx, [esi + 0x8c690]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x134
lea ecx, [esi + 0x8c240]
call sub.MFC42.DLL_CDialog::Create
push esi
lea ecx, [esi + 0x7e8]
push 0x82
call sub.MFC42.DLL_CDialog::Create
lea eax, [ebp - 0x2c]
push eax
push dword [esi + 0x808]
call edi
push 1
push 0x8d
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
push eax
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenHeight_void_]
sub eax, 0x8d
lea ecx, [esi + 0x7e8]
push eax
push 0
call sub.MFC42.DLL_CWnd::MoveWindow
push esi
push 0x127
lea ecx, [esi + 0x8aa4c]
call sub.MFC42.DLL_CDialog::Create
mov eax, dword [esi + 0x8ffb8]
cmp eax, 2
je 0x46e29d
cmp eax, 3
jne 0x46e2aa
push 1
lea ecx, [esi + 0x23268]
call fcn.0045553b
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e2b7
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x8f6d0]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e2d1
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x2c380]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e2eb
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x28f54]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e305
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x29010]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e31f
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x22ccc]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e339
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x3d8c0]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e353
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x42efc]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e36d
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x3aa54]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e387
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x44d54]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e3a1
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x457e8]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e3bb
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x3cdb0]
call ebx
mov eax, dword [esi + 0x9008c]
test eax, eax
je 0x46e3d5
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x3d0f4]
call ebx
call dword [sym.imp.GraphicData.dll_GameDataSetQuery]
mov edx, dword [eax]
push str.English
mov ecx, eax
call dword [edx + 0x34]
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
jne 0x46e47c
xor ebx, ebx
lea ecx, [esi + 0x8f6b0]
push ebx
call fcn.00462e60
push ebx
lea ecx, [esi + 0x2c360]
call fcn.00462e60
push ebx
lea ecx, [esi + 0x28f34]
call fcn.00464e5e
push ebx
lea ecx, [esi + 0x28ff0]
call fcn.00462e60
push ebx
lea ecx, [esi + 0x22cac]
call fcn.00462e60
push ebx
lea ecx, [esi + 0x3d8a0]
call fcn.00462e60
push ebx
lea ecx, [esi + 0x42edc]
call fcn.00462e60
push ebx
lea ecx, [esi + 0x3aa34]
call fcn.00462e60
push ebx
lea ecx, [esi + 0x44d34]
call fcn.00462e60
push ebx
lea ecx, [esi + 0x457c8]
call fcn.00462e60
jmp 0x46e47e
xor ebx, ebx
push 0x64
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x78], ebx
pop eax
mov dword [ebp - 0x70], ebx
mov ebx, dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], 0x5a
call ebx
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], 0x5a
call ebx
mov dword [ebp - 0x5c], eax
mov eax, 0x8d
xor ecx, ecx
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x14], 0x527258
push 1
lea eax, [ebp - 0x7c]
push 6
push eax
mov dword [ebp - 4], ecx
call dword [sym.imp.GDI32.dll_CreatePolygonRgn]
push eax
lea ecx, [ebp - 0x14]
call sub.MFC42.DLL_CGdiObject::Attach
lea eax, [ebp - 0x14]
push 1
neg eax
sbb eax, eax
and eax, dword [ebp - 0x10]
push eax
push dword [esi + 0x808]
call dword [sym.imp.USER32.dll_SetWindowRgn]
push 5
lea ecx, [esi + 0x7e8]
call sub.MFC42.DLL_CWnd::ShowWindow
lea eax, [ebp - 0x2c]
push eax
push dword [esi + 0x20]
call edi
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6ddd8]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
push 0x14
pop ebx
mov dword [esi + 0x8ff4c], ecx
sub eax, ebx
mov dword [esi + 0x8ff50], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6e218]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
sub eax, ebx
mov dword [esi + 0x8ff54], ecx
mov dword [esi + 0x8ff58], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6e0c8]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub eax, ebx
sub ecx, dword [ebp - 0x2c]
mov dword [esi + 0x8ff5c], ecx
mov dword [esi + 0x8ff60], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6e170]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
sub eax, ebx
mov dword [esi + 0x8ff64], ecx
mov dword [esi + 0x8ff68], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6e2c0]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
sub eax, ebx
mov dword [esi + 0x8ff6c], ecx
mov dword [esi + 0x8ff70], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6e368]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
sub eax, ebx
mov dword [esi + 0x8ff74], ecx
mov dword [esi + 0x8ff78], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6de94]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
sub eax, ebx
mov dword [esi + 0x8ff7c], ecx
mov dword [esi + 0x8ff80], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6df50]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
sub eax, ebx
mov dword [esi + 0x8ff84], ecx
mov dword [esi + 0x8ff88], eax
lea eax, [ebp - 0x3c]
push eax
push dword [esi + 0x6e00c]
call edi
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x28]
sub ecx, dword [ebp - 0x2c]
sub eax, ebx
mov dword [esi + 0x8ff8c], ecx
mov dword [esi + 0x8ff90], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
push 0
push 0x46dc65
push 2
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
test eax, eax
mov dword [0x56b4f0], eax
je 0x46e69a
lea eax, [esi + 0x7e8]
mov dword [0x56b6c4], esi
mov dword [0x56b6c0], eax
mov dword [ebp - 0x14], 0x525974
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 1
call sub.MFC42.DLL_CGdiObject::DeleteObject
or dword [ebp - 4], 0xffffffff
jmp 0x46e6c1
lea ecx, [esi + 0x25014]
call fcn.0042baaf
and dword [esi + 0x90074], 0
and dword [esi + 0x90050], 0
lea eax, [ebp - 0x4c]
push eax
push dword [esi + 0x6e170]
call edi
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1c]
push 8
push eax
push 0x56b8cc
mov dword [ebp - 0x18], ecx
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov ecx, esi
call sub.MFC42.DLL_CWnd::SetFocus
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret