Function at 0x4ae360
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5020c0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov eax, dword [ebp + 8]
test eax, eax
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
jne 0x4ae38d
mov dword [ebp - 0x1c], eax
jmp 0x4ae393
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx + 4]
call dword [sym.imp.USER32.dll_GetFocus]
push eax
mov dword [ebp - 0x20], eax
call fcn.004d8a40
cmp ebx, 0x100
mov dword [ebp - 0x14], eax
jb 0x4ae3bb
cmp ebx, 0x109
jbe 0x4ae3d3
cmp ebx, 0x200
jb 0x4ae465
cmp ebx, 0x209
ja 0x4ae465
test eax, eax
je 0x4ae465
mov edi, dword [sym.imp.USER32.dll_GetParent]
mov esi, eax
mov eax, dword [esi + 0x4c]
test eax, eax
jne 0x4ae556
mov edx, dword [esi + 0x1c]
push edx
call edi
push eax
call fcn.004d8a40
cmp eax, dword [ebp + 8]
je 0x4ae556
mov eax, dword [esi + 0x1c]
push eax
call edi
push eax
call fcn.004d8a40
mov esi, eax
test esi, esi
jne 0x4ae3e3
cmp ebx, 0x101
je 0x4ae42d
cmp ebx, 0x100
je 0x4ae42d
cmp ebx, 0x102
jne 0x4ae465
test esi, esi
je 0x4ae465
mov esi, dword [esi + 0x4c]
test esi, esi
je 0x4ae465
mov eax, dword [ebp + 0xc]
mov ax, word [eax + 8]
cmp ax, 0xd
jne 0x4ae452
test byte [esi + 0x80], 1
jne 0x4ae5c8
cmp ax, 0x1b
jne 0x4ae465
test byte [esi + 0x80], 2
jne 0x4ae5c8
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push edx
call fcn.004d8a40
mov esi, eax
mov eax, ebx
sub eax, 0x100
mov dword [ebp - 0x18], 0
mov edi, 2
je 0x4ae60d
sub eax, edi
je 0x4ae596
sub eax, 4
jne case.0x4ae62e.4
mov eax, dword [ebp - 0x14]
test eax, eax
jne 0x4ae4ac
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge case.0x4ae62e.4
mov edi, dword [ebp + 0xc]
cmp word [edi + 8], 0x20
jne 0x4ae599
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x1c]
push edx
push ecx
call dword [sym.imp.USER32.dll_IsDialogMessageA]
mov esi, eax
test esi, esi
je 0x4ae4f7
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.004d8a40
cmp eax, dword [ebp - 0x14]
je 0x4ae4f7
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.004d8a40
push eax
call fcn.004adfa0
add esp, 4
mov edx, dword [ebp - 0x20]
mov edi, dword [sym.imp.USER32.dll_IsWindow]
push edx
call edi
test eax, eax
je 0x4ae541
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.004d8a40
mov ebx, dword [ebp - 0x14]
push eax
push ebx
call fcn.004ae010
mov eax, dword [ebp - 0x1c]
add esp, 8
push eax
call edi
test eax, eax
je 0x4ae541
call dword [sym.imp.USER32.dll_GetFocus]
push eax
call fcn.004d8a40
mov ecx, dword [ebp + 8]
push eax
push ebx
push ecx
call fcn.004ae1d0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x4ae415
mov eax, dword [eax + 0x54]
test eax, eax
je 0x4ae415
mov edx, dword [ebp + 0xc]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x14]
test eax, eax
jne 0x4ae415
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov edi, dword [ebp + 0xc]
push edi
push esi
call fcn.004ada90
cmp ebx, 0x102
jne 0x4ae5b0
test al, 0x84
jne case.0x4ae62e.4
mov cx, word [edi + 8]
cmp cx, 9
jne 0x4ae5c2
test al, 2
jne case.0x4ae62e.4
cmp cx, 0x20
jne 0x4ae5dd
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp + 8]
push edi
push esi
push eax
call fcn.004ade60
test eax, eax
je case.0x4ae62e.4
mov eax, dword [eax + 4]
test eax, eax
je case.0x4ae62e.4
push edi
mov ecx, eax
call fcn.004a6950
mov esi, 1
jmp 0x4ae4f7
mov ebx, dword [ebp + 0xc]
push ebx
push esi
call fcn.004ada90
movzx ecx, word [ebx + 8]
add ecx, 0xfffffffd
cmp ecx, 0x28
ja case.0x4ae62e.4
movzx ecx, byte [ecx + 0x4ae850]
jmp dword [ecx*4 + 0x4ae838]
test al, 2
jne case.0x4ae62e.4
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, dword [ebp + 8]
xor edx, edx
test ax, ax
setl dl
mov edi, edx
push edi
push 0
call fcn.004d50c0
test eax, eax
je case.0x4ae62e.4
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4ae67f
mov edx, dword [ebp + 0xc]
mov eax, dword [ecx]
push edx
call dword [eax + 0xac]
mov esi, 1
jmp 0x4ae4f7
mov eax, dword [eax]
test eax, eax
je 0x4ae68d
push eax
call fcn.004d8a40
jmp 0x4ae697
mov ecx, dword [ebp + 8]
push edi
push esi
call fcn.004a2b10
mov esi, eax
test esi, esi
je 0x4ae6bd
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x48]
push esi
mov dword [ecx + 0x6c], 0
call fcn.004adb40
mov edx, dword [ebp - 0x14]
push esi
push edx
call fcn.004ae010
add esp, 8
mov esi, 1
jmp 0x4ae4f7
mov dword [ebp - 0x18], 1
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x14]
push eax
push ecx
call fcn.004ada90
test al, 1
jne case.0x4ae62e.4
mov eax, dword [ebp - 0x18]
test eax, eax
mov ecx, dword [ebp + 8]
push 0
je 0x4ae6f6
call fcn.004d51d0
jmp 0x4ae6fb
call fcn.004d52d0
mov esi, eax
test esi, esi
je case.0x4ae62e.4
mov eax, dword [esi + 8]
test eax, eax
je 0x4ae715
mov ecx, dword [ebp + 8]
push esi
call fcn.004d53d0
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4ae732
mov eax, dword [ebp + 0xc]
mov edx, dword [ecx]
push eax
call dword [edx + 0xac]
mov esi, 1
jmp 0x4ae4f7
mov eax, dword [esi]
test eax, eax
je 0x4ae740
push eax
call fcn.004d8a40
jmp 0x4ae750
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
push ecx
mov ecx, dword [ebp + 8]
push edx
call fcn.004adb10
mov edi, eax
test edi, edi
je case.0x4ae62e.4
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x48]
push edi
mov dword [ecx + 0x6c], 0
call fcn.004adb40
mov eax, dword [esi + 8]
test eax, eax
je 0x4ae787
mov edx, dword [edi + 0x1c]
push 0
push 1
push 0xf1
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, 1
jmp 0x4ae4f7
test al, 4
jne case.0x4ae62e.4
mov esi, dword [ebp - 0x14]
push esi
call fcn.004adae0
add esp, 4
test al, 0x10
je 0x4ae7e1
mov ecx, esi
call fcn.004d4dc0
test esi, esi
mov edi, eax
jne 0x4ae7ca
mov ecx, dword [ebp + 8]
push edi
push ecx
call fcn.004ae0a0
mov esi, eax
test esi, esi
je case.0x4ae62e.4
mov ecx, esi
call fcn.004d4e90
test eax, eax
jne 0x4ae7ee
push eax
call dword [sym.imp.USER32.dll_MessageBeep]
jmp case.0x4ae62e.4
mov eax, dword [ebp + 8]
push eax
call fcn.004ae1a0
mov edi, eax
jmp case.0x4ae62e.3
mov eax, dword [esi + 0x4c]
test eax, eax
je case.0x4ae62e.4
push 0
push 0
push 0
push 1
push 0xfffffdd9
push esi
mov dword [ebp - 4], 0
call fcn.004d4f10
add esp, 0x18
mov dword [ebp - 4], 0xffffffff
mov esi, 1
jmp 0x4ae4f7