Function at 0x404ff0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x8b0
mov eax, dword [0x4ce540]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
push 0x3f
lea eax, [ebp - 0x8b]
mov esi, edx
push 0
push eax
mov edi, ecx
mov dword [ebp - 0x89c], esi
mov dword [ebp - 0x8a0], 0
mov dword [ebp - 0x8ac], 1
mov byte [ebp - 0x8c], 0
call fcn.00427b00
add esp, 0xc
push 0x3f
lea ecx, [ebp - 0x4b]
push 0
push ecx
mov byte [ebp - 0x4c], 0
call fcn.00427b00
add esp, 0xc
push 0x7ff
lea edx, [ebp - 0x88b]
push 0
push edx
mov byte [ebp - 0x88c], 0
call fcn.00427b00
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x8a8], eax
mov dword [ebp - 0x8a4], eax
cmp edi, eax
je 0x405556
cmp esi, eax
je 0x405556
cmp ebx, eax
je 0x405556
push ebx
mov eax, esi
mov ecx, edi
call fcn.004049a0
add esp, 4
mov dword [ebp - 0x890], eax
test eax, eax
je 0x405556
mov ecx, dword [edi + 0x68]
mov edx, dword [eax + 0x48]
mov esi, dword [eax + 0x4c]
mov dword [ebp - 0x898], ecx
mov ecx, dword [ebx]
mov dword [ebp - 0x894], edx
cmp ecx, 0x14
ja case.0x4050d3.14
jmp dword [ecx*4 + 0x4055f8]
mov eax, edx
mov edx, dword [eax + 4]
push 0
push 0
mov dword [0x4d4318], edx
mov eax, dword [eax + 4]
push 8
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov esi, dword [ebp - 0x898]
call fcn.004041c0
mov dword [edi + 0x54], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004265ea
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x898]
call fcn.004040b0
mov eax, dword [ebp - 0x894]
mov ecx, dword [eax + 4]
push 0
push 0
mov dword [0x4d4318], ecx
mov edx, dword [eax + 4]
push 7
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x890]
mov dword [edi + 0x54], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004265ea
mov esp, ebp
pop ebp
ret
mov ecx, eax
mov dword [ebx], 0xa
mov eax, dword [ecx + 0x48]
lea edi, [ebx + 0x44]
call fcn.00404210
test eax, eax
je 0x4051bd
test eax, 0x20000000
je 0x4055c2
test eax, eax
jle 0x4055e6
and eax, 0xffff
or eax, 0xa0070000
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004265ea
mov esp, ebp
pop ebp
ret
mov dword [ebx], 0xc
mov eax, dword [eax + 0x48]
mov eax, dword [eax + 0x50c]
test eax, eax
jne 0x4051d0
xor eax, eax
mov dword [ebx + 0x44], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004265ea
mov esp, ebp
pop ebp
ret
mov eax, dword [eax + 0x28]
jmp 0x4051ba
push 0x14
mov dword [ebx], 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
and eax, 1
jmp 0x4051ba
mov edx, dword [ebp - 0x89c]
mov eax, dword [edx + 0x14]
mov esi, dword [eax + 0x10]
test esi, esi
je 0x405556
mov dword [ebx], 0xd
mov ecx, dword [esi]
mov edx, dword [esi + 4]
push ecx
push edx
lea eax, [ebp - 0x8c]
push 0x40
push eax
call fcn.004275d5
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
push ecx
push edx
lea eax, [ebp - 0x4c]
push 0x40
push eax
call fcn.004275d5
add esp, 0x20
lea ecx, [ebp - 0x8a0]
push ecx
lea edx, [ebx + 0x44]
lea ecx, [ebp - 0x4c]
lea esi, [ebp - 0x8c]
call fcn.00409db0
jmp 0x405173
mov eax, dword [esi + 0x14]
mov dword [ebp - 0x898], eax
test eax, eax
je case.0x4050d3.14
mov ecx, dword [esi + 8]
mov dword [ebp - 0x8a0], ecx
cmp ecx, 1
jne 0x40527f
mov ecx, dword [edi + 0x64]
test ecx, ecx
je 0x40527f
mov edi, dword [edi + 0x60]
mov dword [ebp - 0x8a8], edi
mov dword [ebp - 0x8a4], ecx
mov ecx, 2
cmp dword [esi + 0xc], ecx
jne 0x40528f
mov dword [ebp - 0x8ac], ecx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405292
mov ecx, dword [edx + 0x50c]
sub eax, esi
test ecx, ecx
jne 0x4052af
mov eax, 0x80004005
jmp 0x405177
mov edx, dword [ebp - 0x8a8]
push edx
mov edx, dword [ebp - 0x8a4]
push edx
mov edx, dword [ebp - 0x8a0]
add ebx, 0x44
push ebx
push edx
mov edx, dword [ebp - 0x8ac]
push edx
push eax
mov eax, dword [ebp - 0x898]
push eax
push ecx
call fcn.00418500
jmp 0x405173
lea esi, [ebx + 0x44]
call fcn.0040a460
jmp 0x405173
mov esi, edx
call fcn.00409810
test eax, eax
jne 0x405177
mov ecx, dword [ebp - 0x890]
mov dword [ecx + 0x50], eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004265ea
mov esp, ebp
pop ebp
ret
mov edx, dword [edx + 0x50c]
xor eax, eax
test edx, edx
je 0x405327
mov eax, dword [edx + 0x28]
cmp eax, dword [esi + 4]
jg 0x4051b8
cmp eax, dword [esi]
jl 0x4051b8
mov eax, 1
jmp 0x4051ba
mov edx, dword [edx + 0x50c]
mov esi, dword [esi + 0x1c]
test edx, edx
jne 0x405359
mov eax, 0x80004005
jmp 0x405177
lea ecx, [ebx + 0x44]
push esi
call fcn.00417ee0
jmp 0x405173
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x20]
lea ecx, [esi + 0x2c]
lea edi, [esi + 0x24]
push edx
mov dword [ebp - 0x894], ecx
call fcn.0040a0e0
test eax, eax
jne 0x405177
mov eax, dword [ebp - 0x894]
mov edx, dword [ebp - 0x890]
mov ecx, dword [eax]
mov eax, dword [edx + 0x48]
mov edx, dword [eax + 0x50c]
mov esi, dword [esi + 8]
mov edi, dword [edi]
test edx, edx
jne 0x4053b1
mov eax, 0x80004005
jmp 0x405177
add ebx, 0x44
push ebx
push esi
push ecx
mov eax, 1
call fcn.00418130
jmp 0x405173
mov eax, dword [esi + 8]
lea ecx, [esi + 0x2c]
push eax
lea edi, [esi + 0x24]
mov eax, str.devicefingerkey
mov dword [ebp - 0x894], ecx
call fcn.0040a0e0
test eax, eax
jne 0x405177
mov edx, dword [ebp - 0x890]
mov eax, dword [edx + 0x48]
mov edx, dword [eax + 0x50c]
mov ecx, dword [ebp - 0x894]
mov esi, dword [esi + 8]
mov ecx, dword [ecx]
mov edi, dword [edi]
test edx, edx
jne 0x405412
mov eax, 0x80004005
jmp 0x405177
add ebx, 0x44
push ebx
push esi
push ecx
mov eax, 2
call fcn.00418130
jmp 0x405173
mov eax, dword [esi + 8]
lea ecx, [esi + 0x2c]
push eax
lea edi, [esi + 0x24]
mov eax, str.15.999_21
mov dword [ebp - 0x894], ecx
call fcn.0040a0e0
test eax, eax
jne 0x405177
mov edx, dword [ebp - 0x890]
mov eax, dword [edx + 0x48]
mov edx, dword [eax + 0x50c]
mov ecx, dword [ebp - 0x894]
mov esi, dword [esi + 8]
mov ecx, dword [ecx]
mov edi, dword [edi]
test edx, edx
jne 0x405473
mov eax, 0x80004005
jmp 0x405177
add ebx, 0x44
push ebx
push esi
push ecx
mov eax, 3
call fcn.00418130
jmp 0x405173
mov edx, dword [edx + 0x50c]
test edx, edx
jne 0x40549c
mov eax, 0x80004005
jmp 0x405177
add ebx, 0x44
push ebx
mov edi, edx
call fcn.00417b30
jmp 0x405173
mov edx, dword [edx + 0x50c]
test edx, edx
jne 0x4054c0
mov eax, 0x80004005
jmp 0x405177
add ebx, 0x44
push ebx
mov edi, edx
call fcn.00417c60
jmp 0x405173
lea eax, [ebx + 0x44]
mov dword [ebx], 0xb
call fcn.00404f60
jmp 0x405173
mov eax, dword [ebp - 0x89c]
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x405556
mov edx, dword [eax]
mov eax, dword [eax + 4]
push edx
push eax
lea ecx, [ebp - 0x88c]
push 0x800
push ecx
call fcn.004275d5
mov dword [ebx], 0x11
mov edi, dword [esi + 0x14]
mov eax, edi
add esp, 0x10
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405520
sub eax, edx
mov edx, dword [esi + 8]
add ebx, 0x44
push ebx
push edx
push eax
mov eax, dword [ebp - 0x890]
push edi
mov edi, dword [eax + 0x48]
call fcn.00409f00
jmp 0x405173
mov ecx, dword [ebp - 0x89c]
mov edx, dword [ecx + 0x14]
mov eax, dword [edx + 0x10]
test eax, eax
jne 0x40556c
mov eax, 0x80070057
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004265ea
mov esp, ebp
pop ebp
ret
mov ecx, dword [eax]
mov edx, dword [eax + 4]
push ecx
push edx
lea eax, [ebp - 0x88c]
push 0x800
push eax
call fcn.004275d5
mov dword [ebx], 0x13
mov edi, dword [esi + 0x14]
mov eax, edi
add esp, 0x10
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405595
mov ecx, dword [esi + 8]
add ebx, 0x44
push ebx
sub eax, edx
mov edx, dword [ebp - 0x890]
push ecx
push eax
mov eax, dword [edx + 0x48]
push edi
push eax
lea edx, [ebp - 0x88c]
call fcn.0040a020
jmp 0x405173
test eax, eax
jle 0x4055e6
and eax, 0xffff
or eax, 0x80070000
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004265ea
mov esp, ebp
pop ebp
ret
mov eax, 0x80070032
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004265ea
mov esp, ebp
pop ebp
ret