Function at 0x451335
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x29c
call sub.WINMM.dll_timeGetTime
sub eax, dword [0x5093e0]
push 1
pop ecx
cmp eax, ecx
jb 0x45135d
call sub.WINMM.dll_timeGetTime
mov ecx, eax
sub ecx, dword [0x5093e0]
mov eax, 0x3e8
xor edx, edx
div ecx
push ebx
push esi
push edi
add eax, dword [0x5093dc]
shr eax, 1
mov dword [0x5093dc], eax
call sub.WINMM.dll_timeGetTime
mov ecx, 0x50bc04
mov dword [0x5093e0], eax
call fcn.004a99bd
mov ecx, 0x50bcc8
mov esi, eax
call fcn.004a99bd
push eax
push esi
mov ecx, 0x50f4a0
call fcn.004a68dc
call sub.WINMM.dll_timeGetTime
mov esi, 0x509408
push 0
mov ecx, esi
call fcn.00465c62
call sub.WINMM.dll_timeGetTime
mov edi, dword [0x50ae84]
mov ebx, dword [0x50ae88]
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenWidth_void_]
push 0xfffffffffffffffe
cdq
pop ecx
idiv ecx
add edi, eax
call dword [sym.imp.graphic.dll_public:_static_int___cdecl_CMyBitmap::GetScreenHeight_void_]
push 0xfffffffffffffffe
cdq
pop ecx
idiv ecx
add ebx, eax
lea eax, [ebp - 0x29c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
mov al, byte [ebp - 0x28a]
and al, 0x80
cmp al, 0x80
jne 0x45140a
cmp dword [0x5093c8], 0
je 0x45140a
push 1
push 1
jmp 0x45140e
push 1
push 0
push ebx
push edi
mov ecx, esi
call fcn.00466668
call fcn.004c6e7e
cmp byte [ebp + 8], 0
jne 0x451473
call sub.WINMM.dll_timeGetTime
xor edi, edi
cmp dword [0x5093cc], edi
jne 0x45143d
mov al, byte [ebp - 0x28c]
and al, 0x80
cmp al, 0x80
jne 0x451441
push 1
jmp 0x451442
push edi
mov ecx, esi
call fcn.00465aa6
mov ecx, 0x50ade8
call fcn.0048da8b
mov al, byte [ebp - 0x28a]
and al, 0x80
cmp al, 0x80
jne 0x451463
push 1
jmp 0x451464
push edi
mov ecx, 0x508d10
call fcn.00461b1c
call sub.WINMM.dll_timeGetTime
mov ecx, 0x50b00c
call fcn.004a99bd
mov ecx, 0x50b0d0
mov dword [ebp - 8], eax
call fcn.004a99bd
mov dword [ebp - 4], eax
mov al, byte [0x508900]
push 0x3f
mov byte [ebp - 0x19c], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x19b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
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 0x4516b6
lea eax, [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
push 0x10
lea eax, [ebp - 0x2c]
push 0
push eax
call sub.MSVCRT.dll_memset
movzx esi, word [ebp - 0x12]
movzx edx, word [ebp - 0x10]
lea ecx, [esi + esi*2]
add esp, 0xc
movzx eax, word [ebp - 0xe]
lea ecx, [edx + ecx*8]
mov dword [ebp - 0x1c], eax
imul ecx, ecx, 0x3c
add ecx, eax
push 7
movzx eax, word [ebp - 0xc]
imul ecx, ecx, 0x3c
add ecx, eax
mov ax, word [ebp - 0x16]
cmp ax, 3
pop edi
jb 0x451591
cmp ax, 0xb
ja 0x451591
cmp ax, 3
jbe 0x451533
cmp ax, 0xb
jae 0x45152f
lea edi, [ecx - 0x6270]
jmp 0x45159c
cmp ax, 3
jne 0x451561
lea eax, [esi - 1]
mov ebx, edi
cdq
idiv ebx
movzx eax, word [ebp - 0x14]
sub eax, edx
add eax, edi
cdq
idiv ebx
mov eax, edi
sub eax, edx
cdq
idiv edi
imul edx, edx, 0x15180
add edx, 0xb18a0
cmp ecx, edx
jge 0x451527
jmp 0x451591
cmp ax, 0xb
jne 0x451599
lea eax, [esi - 1]
mov ebx, edi
cdq
idiv ebx
movzx eax, word [ebp - 0x14]
sub eax, edx
add eax, edi
cdq
idiv ebx
mov eax, edi
sub eax, edx
cdq
idiv edi
imul edx, edx, 0x15180
add edx, 0x1d010
cmp ecx, edx
jl 0x451527
lea edi, [ecx - 0x7080]
jmp 0x45159c
mov edi, dword [ebp + 8]
mov ax, word [ebp - 0xe]
mov ecx, 0x15180
mov word [ebp - 0x22], ax
mov eax, edi
cdq
mov ebx, ecx
push 7
idiv ebx
mov ebx, 0xe10
mov eax, edx
cdq
idiv ebx
mov word [ebp - 0x24], ax
mov eax, edi
cdq
idiv ecx
movzx ecx, word [ebp - 0x14]
lea edi, [ebp - 0x9c]
sub eax, esi
mov esi, str.Sunday
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea eax, [eax + ecx + 7]
pop ecx
cdq
movsb byte es:[edi], byte [esi]
idiv ecx
xor eax, eax
lea edi, [ebp - 0x95]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosb byte es:[edi], al
mov esi, str.Monday
lea edi, [ebp - 0x8c]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
xor eax, eax
lea edi, [ebp - 0x85]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosb byte es:[edi], al
mov eax, dword [str.Tuesday]
lea edi, [ebp - 0x74]
mov dword [ebp - 0x7c], eax
mov eax, dword [0x50446c]
mov dword [ebp - 0x78], eax
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov esi, str.Wednesday
lea edi, [ebp - 0x6c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor eax, eax
lea edi, [ebp - 0x62]
stosd dword es:[edi], eax
stosw word es:[edi], ax
mov esi, str.Thursday
lea edi, [ebp - 0x5c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
xor eax, eax
lea edi, [ebp - 0x53]
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov esi, str.Friday
lea edi, [ebp - 0x4c]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
xor eax, eax
lea edi, [ebp - 0x45]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov word [ebp - 0x28], dx
mov esi, str.Saturday
stosb byte es:[edi], al
lea edi, [ebp - 0x3c]
xor eax, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x33]
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
movzx eax, dx
shl eax, 4
lea eax, [ebp + eax - 0x9c]
push eax
movzx eax, word [ebp - 0x24]
push dword [ebp - 0x1c]
push eax
lea eax, [ebp - 0x19c]
push dword [0x5093dc]
push dword [0x50f080]
push dword [ebp - 4]
push dword [ebp - 8]
push 0x50f2f4
push str.__s____03d__03d__Ping:__04d__Fps:__02d__Time:__02d:_02d___s
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x28
jmp 0x4516e2
push dword [0x5093dc]
lea eax, [ebp - 0x19c]
push dword [0x50f080]
push dword [ebp - 4]
push dword [ebp - 8]
push 0x50f2f4
push str.__s____03d__03d__ping_d__Fps:_d
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x1c
cmp byte [ebp + 8], 0
jne 0x451776
call dword [sym.imp.GraphicData.dll_GameDataSetQuery]
mov esi, eax
lea eax, [ebp - 8]
mov ebx, 0xff000000
push eax
push ebx
push 0
push 0
call fcn.00448a54
mov ecx, eax
call fcn.00407289
push eax
mov eax, dword [esi]
mov edi, 0x2741
mov ecx, esi
push edi
call dword [eax + 0x3c]
mov esi, dword [sym.imp.graphic.dll_public:_static_struct_CMySize___cdecl_CMyBitmap::ShowStringEx_int__int__unsigned_long_int__char_const___char_const___int__int__enum_RENDER_TEXT_STYLE__unsigned_long_int__struct_CMyPos__]
push eax
lea eax, [ebp - 0x19c]
push eax
push 0x7f7f7f
push 3
push 6
call esi
add esp, 0x28
call dword [sym.imp.GraphicData.dll_GameDataSetQuery]
mov dword [ebp + 8], eax
lea eax, [ebp - 8]
push eax
push ebx
push 0
push 0
call fcn.00448a54
mov ecx, eax
call fcn.00407289
mov ecx, dword [ebp + 8]
push eax
push edi
mov eax, dword [ecx]
call dword [eax + 0x3c]
push eax
lea eax, [ebp - 0x19c]
push eax
push 0xffff00
push 2
push 5
call esi
add esp, 0x28
push dword [0x50ae88]
push dword [0x50ae84]
call dword [sym.imp.NDSound.dll__DXProcessSound_8]
mov ecx, 0x50f2d8
call fcn.0049acc8
pop edi
pop esi
pop ebx
leave
ret