Function at 0x43a575
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb4
push ebx
push esi
xor ebx, ebx
push edi
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetWindowLongA]
cmp dword [ebp + 0xc], 0xa0
mov esi, eax
je 0x43a5de
cmp dword [ebp + 0xc], 0x1ff
jbe 0x43a675
cmp dword [ebp + 0xc], 0x202
jbe 0x43a5de
cmp dword [ebp + 0xc], 0x203
jbe 0x43a675
cmp dword [ebp + 0xc], 0x205
jbe 0x43a5de
cmp dword [ebp + 0xc], 0x206
jbe 0x43a675
cmp dword [ebp + 0xc], 0x208
ja 0x43a675
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 1
call edi
test ax, ax
jl 0x43a675
push 2
call edi
test ax, ax
jl 0x43a675
push 4
call edi
test ax, ax
jl 0x43a675
call dword [sym.imp.USER32.dll_GetMessagePos]
mov edi, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x5c], eax
call dword [sym.imp.USER32.dll_GetMessageTime]
mov dword [ebp - 0x58], eax
movzx eax, di
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x68]
push eax
push ebx
shr edi, 0x10
push 0x407
mov dword [ebp - 0x50], edi
push dword [esi + 0x48]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
call edi
mov eax, dword [esi + 0x44]
cmp eax, ebx
je 0x43a675
mov ecx, dword [eax + 0xee0]
add eax, 0xee0
cmp ecx, 1
lea edx, [ecx + 1]
mov dword [eax], edx
jne 0x43a675
push ebx
push ebx
push 0x41c
push dword [esi + 0x48]
call edi
mov edi, dword [ebp + 0xc]
mov eax, 0x112
cmp edi, eax
ja 0x43aadd
je 0x43a95d
cmp edi, 0x10
ja 0x43a808
je 0x43a7fa
mov eax, edi
dec eax
dec eax
je 0x43a7ea
dec eax
je 0x43a78f
sub eax, 4
je 0x43a76a
dec eax
je 0x43a747
sub eax, 7
jne 0x43acb6
lea eax, [ebp - 0xb4]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_BeginPaint]
push 0xb
lea eax, [ebp - 0xac]
pop edi
push eax
lea eax, [ebp - 0x1c]
push eax
mov dword [ebp - 0x34], edi
call dword [sym.imp.USER32.dll_CopyRect]
lea eax, [ebp - 4]
push eax
push ebx
push 0x22
push dword [esi + 4]
call fcn.0040b5d8
cmp dword [ebp - 4], 1
je 0x43a71f
lea eax, [ebp - 0x44]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x1c], ecx
add dword [ebp - 0x18], eax
add dword [ebp - 0x14], ecx
add dword [ebp - 0x10], eax
cmp dword [esi + 0x20], ebx
je 0x43a730
lea eax, [ebp - 0x34]
push eax
push edi
push dword [esi]
call fcn.00407813
lea eax, [ebp - 0xb4]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_EndPaint]
xor eax, eax
jmp 0x43acc8
push 0xc
pop edi
push 2
mov dword [ebp - 0x34], edi
push dword [esi + 4]
call fcn.0040b5af
lea ecx, [ebp - 0x34]
push ecx
push edi
push eax
call fcn.0040e176
mov dword [esi + 0x14], ebx
jmp 0x43acb6
mov eax, dword [esi + 0x44]
cmp dword [eax + 0x14], ebx
je 0x43acb6
cmp dword [esi + 0x1c], ebx
je 0x43acb6
push ebx
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x43acb6
mov edi, dword [sym.imp.USER32.dll_GetWindow]
push ebx
push dword [ebp + 8]
call edi
mov esi, eax
cmp esi, ebx
je 0x43acb6
push esi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x43a7e5
push esi
call dword [sym.imp.USER32.dll_GetParent]
cmp eax, dword [ebp + 8]
jne 0x43a7e5
lea eax, [ebp - 0x44]
push eax
push esi
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [ebp + 0x14]
push 0x15
shr eax, 0x10
add eax, dword [ebp - 0x40]
push ebx
push ebx
push eax
movzx eax, word [ebp + 0x14]
add eax, dword [ebp - 0x44]
push eax
push ebx
push esi
call dword [sym.imp.USER32.dll_SetWindowPos]
push 2
push esi
jmp 0x43a799
push ebx
push ebx
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetWindowLongA]
jmp 0x43acb6
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x43a740
mov eax, edi
sub eax, 0x14
je 0x43a740
sub eax, 0x3a
je 0x43a8dc
sub eax, 0xb4
je 0x43a877
sub eax, 0xf
jne 0x43acb6
cmp dword [esi + 0x34], ebx
je 0x43acb6
mov eax, dword [ebp + 0x10]
shr eax, 0x10
test ax, ax
jne 0x43acb6
cmp word [ebp + 0x10], 9
ja 0x43acb6
push ebx
push dword [ebp + 0x10]
push 0x7ec1
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, dword [esi + 0x34]
cmp eax, ebx
je 0x43a86f
push eax
call dword [sym.imp.USER32.dll_DestroyMenu]
mov dword [esi + 0x34], ebx
jmp 0x43a740
cmp esi, ebx
je 0x43acb6
mov eax, dword [ebp + 0x14]
push 0xa
pop edi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], edi
cmp dword [esi + 0x14], ebx
je 0x43a8b4
movzx eax, byte [ebp + 0x10]
shl eax, 8
add dword [esi + 0x28], eax
mov eax, dword [esi + 0x28]
mov dword [esi + 0x14], ebx
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x34]
push eax
push edi
push dword [esi]
call fcn.00407813
jmp 0x43acb6
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x43a8d3
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x14], 1
mov dword [esi + 0x28], eax
jmp 0x43acb6
movzx eax, byte [ebp + 0x10]
mov dword [esi + 0x14], ebx
jmp 0x43a8a0
mov edi, dword [ebp + 0x14]
mov eax, dword [edi + 8]
cmp eax, 0xfffffdf6
je 0x43a94f
cmp eax, 0xfffffdf7
je 0x43a94f
cmp eax, 0xfffffdf8
jne 0x43acb6
push 2
mov dword [edi + 0x60], ebx
push dword [esi + 4]
call fcn.0040b5af
mov esi, eax
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x4c]
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ScreenToClient]
lea eax, [ebp - 0x74]
push ebx
push eax
lea eax, [ebp - 0x4c]
push ebx
push eax
push ebx
push esi
call fcn.0040e00a
cmp eax, ebx
je 0x43acb6
lea ecx, [ebp - 4]
add edi, 0x10
push ecx
push edi
push 0x6d
push eax
call fcn.00416bfa
jmp 0x43acb6
mov eax, dword [esi + 0x44]
mov dword [eax + 0xee0], ebx
jmp 0x43acb6
mov eax, dword [ebp + 0x10]
and eax, 0xfff0
sub eax, 0xf020
je 0x43aa62
sub eax, 0x40
je 0x43aa2d
sub eax, 0xc0
je 0x43a9ab
cmp dword [ebp + 0x10], 0x1000
jne 0x43acb6
push dword [esi + 4]
push sym.DEMO32.EXE_PlayerAbout
push dword [ebp + 8]
push 0x39
push dword [0x46f8a8]
call dword [sym.imp.USER32.dll_DialogBoxParamA]
jmp 0x43a740
mov eax, dword [0x46f78c]
cmp eax, ebx
je 0x43a9c9
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x43a9c9
push 9
push dword [0x46f78c]
jmp 0x43a9ce
push 9
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ShowWindow]
cmp dword [esi + 0x24], ebx
je 0x43aa1f
push 5
push dword [esi + 4]
call fcn.0040b46b
mov edi, eax
lea eax, [ebp - 4]
push eax
push ebx
push 0x36
push dword [esi + 4]
call fcn.0040b5d8
mov eax, dword [ebp - 4]
and eax, 1
push eax
push 0xd
push edi
call fcn.00407a9e
push edi
call fcn.00407ad9
push 0x10
push dword [esi + 4]
call fcn.0040b46b
cmp eax, ebx
je 0x43aa1f
push 3
push eax
call fcn.00415d59
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_UpdateWindow]
jmp 0x43a740
mov eax, dword [0x46f738]
cmp eax, ebx
je 0x43a740
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x43a740
push ebx
push ebx
push dword [0x46f744]
push dword [0x46f738]
call dword [sym.imp.USER32.dll_PostMessageA]
jmp 0x43a740
mov eax, dword [0x46f78c]
cmp eax, ebx
je 0x43aa80
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x43aa80
push 6
push dword [0x46f78c]
jmp 0x43aa85
push 6
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_ShowWindow]
push 5
mov dword [esi + 0x24], ebx
push dword [esi + 4]
call fcn.0040b46b
mov edi, eax
cmp edi, ebx
je 0x43a740
push edi
call fcn.00407a70
cmp eax, 0xa
jne 0x43a740
push edi
mov dword [esi + 0x24], 1
call fcn.00407b0c
push 0x10
push dword [esi + 4]
call fcn.0040b46b
cmp eax, ebx
je 0x43a740
push 3
push eax
call fcn.00415d07
jmp 0x43a740
mov eax, 0x214
cmp edi, eax
ja 0x43abd4
je 0x43abbd
cmp edi, 0x114
je 0x43abb4
cmp edi, 0x115
je 0x43ab8c
cmp edi, 0x11f
je 0x43ab5a
cmp edi, 0x1ff
jbe 0x43acb6
cmp edi, 0x206
ja 0x43acb6
lea eax, [ebp - 4]
push eax
push ebx
push 0x22
push dword [esi + 4]
call fcn.0040b5d8
cmp dword [ebp - 4], 1
jne 0x43ab56
push ebx
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push edi
push dword [ebp + 8]
push esi
call fcn.0043af2a
add esp, 0x18
jmp 0x43acb6
push 1
jmp 0x43ab3e
cmp dword [esi + 0x34], ebx
je 0x43acb6
mov eax, dword [ebp + 0x10]
shr eax, 0x10
cmp ax, 0xffff
jne 0x43acb6
cmp dword [ebp + 0x14], ebx
jne 0x43acb6
push ebx
push 0xffffffffffffffff
push 0x7ec1
push dword [ebp + 8]
jmp 0x43aa57
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push 1
push dword [ebp + 8]
call fcn.0043b13e
add esp, 0x10
push 2
push dword [esi + 4]
call fcn.0040b5af
push eax
call fcn.0040dc01
jmp 0x43acb6
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push ebx
jmp 0x43ab94
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 8]
push esi
call fcn.0043b1d9
add esp, 0x10
jmp 0x43acb6
mov eax, edi
sub eax, 0x311
je 0x43ac76
sub eax, 0xa8
je 0x43ac22
sub eax, 0x54
je 0x43ac15
sub eax, 0x7ab4
jne 0x43acb6
or eax, 0xffffffff
cmp dword [ebp + 0x10], eax
je 0x43ac04
movzx eax, word [ebp + 0x10]
push eax
push dword [esi + 0x3c]
push dword [esi + 0x38]
call fcn.0045ab42
jmp 0x43acb6
push dword [ebp + 0x14]
call fcn.0041b767
jmp 0x43acb6
push 0x10
push dword [esi + 4]
call fcn.0040b46b
cmp eax, ebx
je 0x43ac3f
cmp dword [ebp + 0x10], 1
jne 0x43ac3f
push dword [ebp + 0x14]
push eax
call fcn.00415b7b
push 0x11
push dword [esi + 4]
call fcn.0040b46b
cmp eax, ebx
je 0x43acb6
cmp dword [ebp + 0x10], 1
jne 0x43acb6
push dword [ebp + 0x14]
push eax
call fcn.0041aede
test eax, eax
je 0x43acb6
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebp + 8]
je 0x43acb6
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetFocus]
jmp 0x43acb6
mov edi, dword [ebp + 8]
cmp dword [ebp + 0x10], edi
je 0x43a740
mov eax, dword [esi + 0x44]
mov dword [esi + 0x1c], 1
cmp dword [eax + 0x14], ebx
je 0x43acb6
mov eax, dword [0x46f78c]
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
cmp eax, ebx
je 0x43acb1
push ebx
push ebx
push eax
call esi
push dword [0x46f78c]
call dword [sym.imp.USER32.dll_UpdateWindow]
push ebx
push ebx
push edi
call esi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DefWindowProcA]
pop edi
pop esi
pop ebx
leave
ret 0x10