Function at 0x472810
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb4
push ebx
push esi
push edi
mov dword [ebp - 4], eax
lea edi, [ebp - 0x32]
mov byte [ebp - 5], 1
xor edx, edx
push ebp
push 0x472ef4
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov byte [eax + 0x45], 1
mov eax, dword [0x4b1d30]
mov eax, dword [eax]
xor edx, edx
call fcn.00453bd4
push eax
call sub.user32.dll_SetCursor
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.004704f0
test eax, eax
jle 0x47289c
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x30]
mov eax, ebx
call fcn.004704f0
mov edx, eax
dec edx
mov eax, ebx
call fcn.004704f8
mov edx, dword [ebp - 4]
mov dword [edx + 0x40], eax
mov eax, dword [ebp - 4]
call fcn.00472614
lea eax, [ebp - 0xe]
push eax
call sub.user32.dll_GetCursorPos
lea edx, [ebp - 0xe]
mov eax, dword [ebp - 4]
call fcn.00472124
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x38]
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x3c]
test ebx, ebx
je 0x4728b2
mov eax, ebx
call fcn.0043c4b4
call fcn.00456fc4
mov byte [ebp - 6], 1
jmp 0x472ecb
cmp byte [ebp - 6], 0
jne 0x4728c6
call sub.user32.dll_WaitMessage
mov byte [ebp - 6], 0
jmp 0x472eaa
mov eax, dword [edi + 4]
sub eax, 0x12
je 0x4729e6
sub eax, 0x34
je 0x4728f8
add eax, 0xffffffa5
sub eax, 9
jb 0x4729e6
sub eax, 0x157
je 0x472909
jmp 0x4729f2
push ebp
call fcn.004727bc
pop ecx
call fcn.00403e88
jmp 0x472efb
lea edx, [ebp - 0xe]
mov eax, dword [edi + 0xc]
call fcn.0040733c
lea eax, [ebp - 0xe]
push eax
mov eax, dword [edi]
push eax
call sub.user32.dll_ClientToScreen
mov eax, dword [ebp - 0xe]
mov dword [ebp - 0x16], eax
mov eax, dword [ebp - 0xa]
mov dword [ebp - 0x12], eax
lea ecx, [ebp - 0x3c]
lea edx, [ebp - 0xe]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.004358c8
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0xe], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0xa], eax
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x40]
test ebx, ebx
je 0x47298f
push dword [ebp - 0xa]
push dword [ebp - 0xe]
lea ecx, [ebp - 0x4c]
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.004721e0
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_PtInRect
test eax, eax
je 0x47298f
push 0
push 0xd
push pe_nt_image_headers32
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
jmp 0x4729f2
mov esi, dword [ebp - 4]
xor ebx, ebx
jmp 0x4729c9
lea ecx, [ebp - 0xe]
lea edx, [ebp - 0x16]
mov eax, dword [esi + 0x3c]
call fcn.004358c8
push dword [ebp - 0xa]
push dword [ebp - 0xe]
lea ecx, [ebp - 0x4c]
mov edx, dword [esi + 0x40]
mov eax, esi
call fcn.004721e0
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_PtInRect
test eax, eax
je 0x4729c6
mov bl, 1
mov esi, dword [esi + 0x48]
test esi, esi
je 0x4729d1
test bl, bl
je 0x472996
test bl, bl
jne 0x4729f2
push ebp
call fcn.004727bc
pop ecx
call fcn.00403e88
jmp 0x472efb
push ebp
call fcn.004727bc
pop ecx
jmp 0x472eaa
push 3
push 0
push 0
push 0
push edi
call sub.user32.dll_PeekMessageA
test eax, eax
je 0x472eaa
mov eax, dword [edi + 4]
sub eax, 0x7b
je 0x472eaa
add eax, 0xffffff7b
sub eax, 9
jb 0x472a44
add eax, 0xffffff09
sub eax, 0xb
jb 0x472ce8
sub eax, 0x264
jne 0x472ea4
mov eax, dword [ebp - 4]
call fcn.00472558
jmp 0x472eaa
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x472eaa
mov eax, dword [edi + 4]
sub eax, 0x100
je 0x472a7a
sub eax, 2
je 0x472c97
sub eax, 2
je 0x472a7a
sub eax, 2
je 0x472c97
jmp 0x472eaa
mov eax, dword [edi + 8]
cmp eax, 0x25
jg 0x472abd
je 0x472b6f
cmp eax, 0x12
jg 0x472aa6
je 0x472c80
sub eax, 9
je 0x472eaa
sub eax, 4
je 0x472ae2
jmp 0x472c8c
sub eax, 0x1b
je 0x472b47
sub eax, 5
je 0x472eaa
jmp 0x472c8c
sub eax, 0x26
je 0x472c43
dec eax
je 0x472bd9
dec eax
je 0x472c5d
sub eax, 0x51
je 0x472c80
jmp 0x472c8c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x40]
test eax, eax
je 0x472af5
mov si, 0xffef
call fcn.0040380c
mov eax, dword [ebp - 4]
call fcn.00472558
test al, al
jne 0x472eaa
mov eax, dword [ebp - 4]
cmp dword [eax + 0x40], 0
je 0x472eaa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x40]
mov eax, dword [eax + 0x30]
mov edx, 0x472f10
call fcn.00404778
je 0x472eaa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x40]
cmp byte [eax + 0x35], 0
je 0x472eaa
push ebp
call fcn.004727bc
pop ecx
jmp 0x472eaa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x48]
test eax, eax
je 0x472b55
mov byte [eax + 0x44], 0
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x40], edx
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x38]
call fcn.00403e88
jmp 0x472efb
mov eax, dword [ebp - 4]
cmp byte [eax + 0x34], 0
je 0x472b85
mov eax, dword [ebp - 4]
call fcn.004726e0
jmp 0x472eaa
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x48]
test ebx, ebx
je 0x472eaa
cmp byte [ebx + 0x34], 0
je 0x472bba
push 0
push 0x25
push pe_nt_image_headers32
mov eax, dword [ebx + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
call fcn.00403e88
jmp 0x472efb
push 0
push 0x1b
push pe_nt_image_headers32
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
jmp 0x472eaa
mov eax, dword [ebp - 4]
cmp byte [eax + 0x34], 0
je 0x472bef
mov eax, dword [ebp - 4]
call fcn.00472614
jmp 0x472eaa
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x48]
test ebx, ebx
je 0x472eaa
cmp byte [ebx + 0x34], 0
je 0x472c24
push 0
push 0x27
push pe_nt_image_headers32
mov eax, dword [ebx + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
call fcn.00403e88
jmp 0x472efb
push 0
push 0x1b
push pe_nt_image_headers32
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
jmp 0x472eaa
mov eax, dword [ebp - 4]
cmp byte [eax + 0x34], 0
jne 0x472eaa
mov eax, dword [ebp - 4]
call fcn.004726e0
jmp 0x472eaa
mov eax, dword [ebp - 4]
cmp byte [eax + 0x34], 0
jne 0x472c73
mov eax, dword [ebp - 4]
call fcn.00472614
jmp 0x472eaa
mov eax, dword [ebp - 4]
call fcn.00472558
jmp 0x472eaa
push ebp
call fcn.004727bc
pop ecx
jmp 0x472eaa
push edi
call sub.user32.dll_TranslateMessage
jmp 0x472eaa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov dl, byte [edi + 8]
call fcn.004718a4
test eax, eax
je 0x472eaa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov dl, byte [edi + 8]
call fcn.004718a4
mov edx, dword [ebp - 4]
mov dword [edx + 0x40], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x38]
push 0
push 0xd
push pe_nt_image_headers32
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
jmp 0x472eaa
mov eax, dword [edi + 4]
sub eax, 0x200
je 0x472d00
sub eax, 2
je 0x472dcf
jmp 0x472eaa
lea edx, [ebp - 0xe]
mov eax, dword [edi + 0xc]
call fcn.0040733c
lea eax, [ebp - 0xe]
push eax
mov eax, dword [edi]
push eax
call sub.user32.dll_ClientToScreen
mov eax, dword [ebp - 0xe]
cmp eax, dword [0x4b2cf8]
jne 0x472d31
mov eax, dword [ebp - 0xa]
cmp eax, dword [0x4b2cfc]
je 0x472eaa
mov esi, dword [ebp - 4]
jmp 0x472d38
mov esi, eax
mov eax, dword [esi + 0x48]
test eax, eax
jne 0x472d36
test esi, esi
je 0x472da7
mov ebx, dword [esi + 0x40]
lea edx, [ebp - 0xe]
mov eax, esi
call fcn.00472124
cmp ebx, dword [esi + 0x40]
je 0x472da0
cmp esi, dword [ebp - 4]
je 0x472da0
mov ebx, dword [ebp - 4]
cmp esi, ebx
je 0x472d7f
push 0
push 0x1b
push pe_nt_image_headers32
mov eax, dword [ebx + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
mov ebx, dword [ebx + 0x48]
cmp esi, ebx
jne 0x472d61
push 0
push 0
push 0x46f
mov eax, dword [esi + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
call fcn.00403e88
jmp 0x472efb
mov esi, dword [esi + 0x4c]
test esi, esi
jne 0x472d43
mov eax, dword [ebp - 4]
cmp byte [eax + 0x34], 0
jne 0x472db8
mov eax, dword [ebp - 4]
call fcn.00472558
mov eax, dword [ebp - 0xe]
mov dword [0x4b2cf8], eax
mov eax, dword [ebp - 0xa]
mov dword [0x4b2cfc], eax
jmp 0x472eaa
lea edx, [ebp - 0xe]
mov eax, dword [edi + 0xc]
call fcn.0040733c
lea eax, [ebp - 0xe]
push eax
mov eax, dword [edi]
push eax
call sub.user32.dll_ClientToScreen
mov eax, dword [ebp - 0xe]
mov dword [ebp - 0x16], eax
mov eax, dword [ebp - 0xa]
mov dword [ebp - 0x12], eax
lea ecx, [ebp - 0x3c]
lea edx, [ebp - 0xe]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.004358c8
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0xe], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0xa], eax
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x40]
test ebx, ebx
je 0x472e55
push dword [ebp - 0xa]
push dword [ebp - 0xe]
lea ecx, [ebp - 0x4c]
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.004721e0
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_PtInRect
test eax, eax
je 0x472e55
push 0
push 0xd
push pe_nt_image_headers32
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3c]
call fcn.0043c4b4
push eax
call sub.user32.dll_PostMessageA
jmp 0x472eaa
mov esi, dword [ebp - 4]
xor ebx, ebx
jmp 0x472e8f
lea ecx, [ebp - 0xe]
lea edx, [ebp - 0x16]
mov eax, dword [esi + 0x3c]
call fcn.004358c8
push dword [ebp - 0xa]
push dword [ebp - 0xe]
lea ecx, [ebp - 0x4c]
mov edx, dword [esi + 0x40]
mov eax, esi
call fcn.004721e0
lea eax, [ebp - 0x4c]
push eax
call sub.user32.dll_PtInRect
test eax, eax
je 0x472e8c
mov bl, 1
mov esi, dword [esi + 0x48]
test esi, esi
je 0x472e97
test bl, bl
je 0x472e5c
test bl, bl
jne 0x472eaa
push ebp
call fcn.004727bc
pop ecx
jmp 0x472eaa
push edi
call sub.user32.dll_DispatchMessageA
push ebp
call fcn.004727e8
pop ecx
test al, al
je 0x472ecb
push 0
push 0
push 0
push 0
push edi
call sub.user32.dll_PeekMessageA
test eax, eax
jne 0x4728cf
push ebp
call fcn.004727e8
pop ecx
test al, al
jne 0x4728bb
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x472efb
mov eax, dword [ebp - 4]
mov byte [eax + 0x45], 0
call fcn.00456fe4
ret
mov al, byte [ebp - 5]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret