Function at 0x4c40e7
Capabilities:
Log keystrokes via application hook
Read .ini file

Disassembly:
mov eax, 0x5facf4
call fcn.0059d590
sub esp, 0x8c
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
cmp dword [esi + 0xac958], ebx
lea eax, [esi + 0xac958]
jne 0x4c4112
mov dword [eax], 1
cmp dword [esi + 0xac95c], ebx
mov edi, dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [esi + 0xac95c]
jne 0x4c4a80
mov dword [eax], 1
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0xacc74]
call edi
cmp dword [0x691ccc], ebx
mov eax, dword [ebp - 0x18]
je 0x4c4157
mov ecx, dword [0x68157c]
sub ecx, eax
add ecx, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
jmp 0x4c415a
mov dword [ebp - 0x24], ebx
mov ecx, dword [ebp - 0x14]
sub eax, dword [ebp - 0x20]
sub ecx, dword [ebp - 0x1c]
push 1
lea ebx, [esi + 0xacc54]
push ecx
push eax
call fcn.004a71f6
mov ecx, eax
call fcn.0053e92a
mov ecx, dword [0x681580]
sub ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x1c]
sub ecx, eax
sub ecx, 0x8c
push ecx
mov ecx, ebx
push dword [ebp - 0x24]
call sub.MFC42.DLL_CWnd::MoveWindow
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0x20]
call edi
push 0
push 0
push 1
push str.Slider0
push dword [ebp - 0x1c]
mov ecx, ebx
push dword [ebp - 0x20]
call fcn.004df08d
mov ebx, 0x12c
lea ecx, [esi + 0xacc54]
push ebx
call fcn.004df055
push ebx
lea ecx, [esi + 0xacc54]
call fcn.004df061
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 + 0xacb1c]
push eax
call sub.MFC42.DLL_CWnd::MoveWindow
push 1
push 0x10
push 0x10
push 4
call ebx
sub eax, 0x14
lea ebx, [esi + 0xacbb8]
push eax
mov ecx, ebx
call sub.MFC42.DLL_CWnd::MoveWindow
push 0
push 0
push str.Button01
lea ecx, [esi + 0xacb1c]
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
call fcn.004a887c
push 0
push 0
push str.Button02
mov ecx, ebx
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
call fcn.004a887c
push esi
push 0xad
lea ecx, [esi + 0xaa928]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x9e
lea ecx, [esi + 0x8ceb0]
call sub.MFC42.DLL_CDialog::Create
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c426f
mov eax, dword [eax + 4]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
push 1
push eax
push 0x30
push dword [esi + 0x8d510]
call ebx
push esi
push 0x17c
lea ecx, [esi + 0xaa198]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0xda
lea ecx, [esi + 0xab358]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x14b
lea ecx, [esi + 0xa9864]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x13e
lea ecx, [esi + 0xa89d0]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x13d
lea ecx, [esi + 0xa8760]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x14d
lea ecx, [esi + 0x91ac0]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x14c
lea ecx, [esi + 0xa7ff0]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x14e
lea ecx, [esi + 0x8dd38]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x128
lea ecx, [esi + 0x91468]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x12a
lea ecx, [esi + 0xa94bc]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x12b
lea ecx, [esi + 0xa9b7c]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x125
lea ecx, [esi + 0xa91b8]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x12e
lea ecx, [esi + 0xaa61c]
call sub.MFC42.DLL_CDialog::Create
push esi
push 0x134
lea ecx, [esi + 0xa9de8]
call sub.MFC42.DLL_CDialog::Create
push esi
lea ecx, [esi + 0x4c8]
push 0x82
call sub.MFC42.DLL_CDialog::Create
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0x4e8]
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 + 0x4c8]
push eax
push 0
call sub.MFC42.DLL_CWnd::MoveWindow
push esi
push 0x127
lea ecx, [esi + 0xa84d4]
call sub.MFC42.DLL_CDialog::Create
mov eax, dword [esi + 0xac9e4]
cmp eax, 2
je 0x4c43d5
cmp eax, 3
jne 0x4c43e2
push 1
lea ecx, [esi + 0x23de8]
call fcn.00492636
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c43ef
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0xaaea4]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c4409
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x34eec]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c4423
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x8392c]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c443d
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x31dec]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c4457
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x31eac]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c4471
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x2394c]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c448b
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x49ef8]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c44a5
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x4e7a8]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c44bf
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x47030]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c44d9
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x4ff14]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c44f3
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x5b24c]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c450d
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x50a7c]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c4527
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x4900c]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c4541
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x495c0]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c455b
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0x873dc]
call ebx
mov eax, dword [esi + 0xacab8]
test eax, eax
je 0x4c4575
mov eax, dword [eax + 4]
push 1
push eax
push 0x30
push dword [esi + 0xac848]
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 dword [sym.imp.MSVCRT.dll__stricmp]
pop ecx
test eax, eax
pop ecx
jne 0x4c4645
xor ebx, ebx
lea ecx, [esi + 0xaae84]
push ebx
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x34ecc]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x8390c]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x31dcc]
call fcn.004b23b7
push ebx
lea ecx, [esi + 0x31e8c]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x2392c]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x49ed8]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x4e788]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x47010]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x4fef4]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x50a5c]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x5b22c]
call fcn.004af5ab
push ebx
lea ecx, [esi + 0x873bc]
call fcn.004af5ab
jmp 0x4c4647
xor ebx, ebx
lea eax, [ebp - 0x44]
push eax
push dword [esi + 0x4e8]
call edi
push str.ini_Info.ini
push ebx
push 0x676e5c
push str.MainDlgRgnChg
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push str.ini_Info.ini
push ebx
push 0x676e58
push str.MainDlgRgnChg
mov dword [ebp - 0x10], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push str.ini_Info.ini
push 0x64
push 0x676e54
push str.MainDlgRgnChg
mov dword [ebp - 0x58], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push str.ini_Info.ini
push 0x5a
push str.hwyx
push str.MainDlgRgnChg
mov dword [ebp - 0x24], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp dword [0x691ccc], ebx
mov dword [ebp - 0x50], eax
je 0x4c46cf
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
sub eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x10]
jmp 0x4c46d2
mov eax, dword [ebp - 0x10]
cmp dword [0x691ccc], ebx
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x84], eax
je 0x4c46f4
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
sub eax, dword [ebp - 0x10]
jmp 0x4c46fc
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x10]
add eax, ecx
cmp dword [0x691ccc], ebx
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x7c], eax
je 0x4c4718
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
sub eax, dword [ebp - 0x10]
jmp 0x4c4720
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x10]
add eax, ecx
cmp dword [0x691ccc], ebx
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x74], eax
je 0x4c4736
mov dword [ebp - 0x70], ebx
jmp 0x4c473f
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x50]
cmp dword [0x691ccc], ebx
mov dword [ebp - 0x6c], eax
je 0x4c4752
mov dword [ebp - 0x68], ebx
jmp 0x4c475b
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x38]
mov ecx, eax
sub ecx, dword [ebp - 0x40]
cmp dword [0x691ccc], ebx
mov dword [ebp - 0x64], ecx
je 0x4c4782
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
sub eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x10]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x38]
jmp 0x4c4788
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x60], ecx
sub eax, dword [ebp - 0x40]
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x4c], 0x60f41c
mov dword [ebp - 0x5c], eax
push 1
lea eax, [ebp - 0x88]
push 6
push eax
mov dword [ebp - 4], ebx
call dword [sym.imp.GDI32.dll_CreatePolygonRgn]
push eax
lea ecx, [ebp - 0x4c]
call sub.MFC42.DLL_CGdiObject::Attach
lea eax, [ebp - 0x4c]
push 1
neg eax
sbb eax, eax
and eax, dword [ebp - 0x48]
push eax
push dword [esi + 0x4e8]
call dword [sym.imp.USER32.dll_SetWindowRgn]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.GDI32.dll_CreateRectRgn]
push eax
mov dword [ebp - 0x10], eax
push dword [esi + 0x4e8]
call dword [sym.imp.USER32.dll_GetWindowRgn]
lea eax, [ebp - 0x44]
push eax
push dword [esi + 0x8c738]
call edi
lea eax, [ebp - 0x44]
lea ecx, [esi + 0x4c8]
push eax
call sub.MFC42.DLL_CWnd::ScreenToClient
mov ebx, dword [sym.imp.GDI32.dll_CreateRectRgnIndirect]
lea eax, [ebp - 0x44]
push 2
push eax
call ebx
push eax
push dword [ebp - 0x10]
push dword [ebp - 0x10]
call dword [sym.imp.GDI32.dll_CombineRgn]
lea eax, [ebp - 0x44]
push eax
push dword [esi + 0x8c820]
call edi
lea eax, [ebp - 0x44]
lea ecx, [esi + 0x4c8]
push eax
call sub.MFC42.DLL_CWnd::ScreenToClient
lea eax, [ebp - 0x44]
push 2
push eax
call ebx
push eax
push dword [ebp - 0x10]
push dword [ebp - 0x10]
call dword [sym.imp.GDI32.dll_CombineRgn]
lea eax, [ebp - 0x44]
push eax
push dword [esi + 0x8c7ac]
call edi
lea eax, [ebp - 0x44]
lea ecx, [esi + 0x4c8]
push eax
call sub.MFC42.DLL_CWnd::ScreenToClient
lea eax, [ebp - 0x44]
push 2
push eax
call ebx
push eax
push dword [ebp - 0x10]
push dword [ebp - 0x10]
call dword [sym.imp.GDI32.dll_CombineRgn]
lea eax, [ebp - 0x44]
push eax
push dword [esi + 0x8c6c4]
call edi
lea eax, [ebp - 0x44]
lea ecx, [esi + 0x4c8]
push eax
call sub.MFC42.DLL_CWnd::ScreenToClient
lea eax, [ebp - 0x44]
push 2
push eax
call ebx
mov ebx, dword [ebp - 0x10]
push eax
push ebx
push ebx
call dword [sym.imp.GDI32.dll_CombineRgn]
push 1
push ebx
push dword [esi + 0x4e8]
call dword [sym.imp.USER32.dll_SetWindowRgn]
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
push 5
lea ecx, [esi + 0x4c8]
call sub.MFC42.DLL_CWnd::ShowWindow
lea eax, [ebp - 0x20]
push eax
push dword [esi + 0x20]
call edi
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c430]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
push 0x14
pop ebx
mov dword [esi + 0xac978], ecx
sub eax, ebx
mov dword [esi + 0xac97c], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c738]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sub eax, ebx
mov dword [esi + 0xac980], ecx
mov dword [esi + 0xac984], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c650]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sub eax, ebx
mov dword [esi + 0xac988], ecx
mov dword [esi + 0xac98c], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c6c4]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sub eax, ebx
mov dword [esi + 0xac990], ecx
mov dword [esi + 0xac994], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c7ac]
call edi
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x34]
sub eax, ebx
sub ecx, dword [ebp - 0x20]
mov dword [esi + 0xac998], ecx
mov dword [esi + 0xac99c], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c820]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sub eax, ebx
mov dword [esi + 0xac9a0], ecx
mov dword [esi + 0xac9a4], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c4b8]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sub eax, ebx
mov dword [esi + 0xac9a8], ecx
mov dword [esi + 0xac9ac], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c540]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sub eax, ebx
mov dword [esi + 0xac9b0], ecx
mov dword [esi + 0xac9b4], eax
lea eax, [ebp - 0x34]
push eax
push dword [esi + 0x8c5c8]
call edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub eax, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sub eax, ebx
mov dword [esi + 0xac9b8], ecx
mov dword [esi + 0xac9bc], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
push 0
push 0x4c3cea
push 2
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
test eax, eax
mov dword [0x6901b4], eax
je 0x4c4a62
lea eax, [esi + 0x4c8]
mov dword [0x690394], esi
mov dword [0x690390], eax
mov dword [ebp - 0x4c], 0x60f408
lea ecx, [ebp - 0x4c]
mov dword [ebp - 4], 1
call sub.MFC42.DLL_CGdiObject::DeleteObject
or dword [ebp - 4], 0xffffffff
xor ebx, ebx
jmp 0x4c4a8b
lea ecx, [esi + 0x2e418]
call fcn.0044001d
lea eax, [ebp - 0x98]
mov dword [esi + 0xacaa0], ebx
push eax
mov dword [esi + 0xaca7c], ebx
push dword [esi + 0x8c6c4]
call edi
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x94]
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x54]
push 8
push eax
push 0x6904f0
mov dword [ebp - 0x50], ecx
call sub.MSVCRT.dll_memcpy
lea edi, [esi + 0x6cfa0]
add esp, 0xc
cmp edi, ebx
je 0x4c4af2
cmp dword [edi + 0x20], ebx
je 0x4c4af2
push dword [esi + 0x6cfc0]
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x4c4af2
push ebx
mov ecx, edi
call sub.MFC42.DLL_CWnd::ShowWindow
call fcn.0041d828
mov ecx, eax
call fcn.00546ab6
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