Function at 0x4a8250
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x1c
push esi
mov esi, ecx
mov ecx, dword [esi + 0xa0]
call fcn.00470860
test eax, eax
jne 0x4a88fa
mov eax, dword [esi + 0x70]
push ebx
mov ebx, dword [esp + 0x28]
push ebp
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
push edi
xor edi, edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
cmp ebx, 9
jne 0x4a835d
push 0x10
call ebp
test ax, ax
jge 0x4a82b3
push edi
push 0x8185
mov ecx, esi
call fcn.0049a200
mov ecx, esi
call fcn.004a3fb0
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x1c
ret 0xc
mov ecx, dword [0x5ed04c]
cmp dword [ecx + 0x1770], edi
je 0x4a82d1
cmp dword [0x5ed694], edi
je 0x4a82d1
mov dword [esp + 0x20], 1
xor eax, eax
push eax
push ebx
mov ecx, esi
call fcn.0049a200
cmp ebx, 0xa
jne 0x4a82fc
push edi
mov ecx, esi
mov dword [esi + 0x58], edi
call fcn.004a3130
mov ebx, 0xd
mov dword [esi + 0x58], 1
mov dword [esp + 0x30], ebx
mov eax, dword [esi + 0xa0]
cmp dword [eax + 0x7c], edi
je 0x4a889b
cmp ebx, 0xd
jne 0x4a889b
cmp dword [eax + 0x100], edi
jne 0x4a889b
cmp dword [0x5b46e8], edi
jne 0x4a8394
mov edx, dword [eax + 0x2d0]
mov ecx, dword [esi + 0x74]
dec edx
cmp ecx, edx
jge 0x4a8394
mov eax, dword [eax + 0x31c]
lea edx, [ecx + 1]
lea ecx, [edx + edx*8]
mov ecx, dword [eax + ecx*4 + 8]
xor edi, edi
movzx eax, word [ecx]
cmp ax, 0x20
je 0x4a8357
cmp ax, 9
jne 0x4a8382
inc edi
add ecx, 2
jmp 0x4a8348
cmp ebx, 8
je 0x4a82dc
cmp ebx, 0xd
je 0x4a82d1
cmp ebx, 0x3c
je 0x4a82d1
mov eax, 1
jmp 0x4a82d3
push 0
push 0
push edi
push edx
mov ecx, esi
call fcn.004948e0
jmp 0x4a877e
mov ecx, dword [esi + 0x74]
mov edi, dword [eax + 0x31c]
lea edx, [ecx + ecx*8]
mov edx, dword [edi + edx*4]
dec edx
test edx, edx
jle 0x4a86a1
cmp dword [eax + 0xac], 0
movzx edx, byte [eax + 0x28c]
mov ebp, dword [esi + 0x70]
mov byte [esp + 0x11], dl
movzx edx, byte [eax + 0x28d]
mov byte [esp + 0x12], dl
mov dl, byte [eax + 0x28e]
mov byte [esp + 0x13], dl
je 0x4a8444
mov edi, dword [eax + 0xec]
mov ebx, edi
imul ebx, ebx, 0x190
cmp dword [ebx + 0x5bd350], 0
jne 0x4a83fc
mov dword [esp + 0x14], 0
jmp 0x4a8484
mov ebx, dword [eax + 0xcc]
mov edx, dword [eax + 0x31c]
mov eax, dword [eax + 0x8c]
push 1
push ebx
lea ecx, [ecx + ecx*8]
lea ecx, [edx + ecx*4]
mov edx, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
lea ebx, [esp + 0x30]
push ebx
push eax
push ecx
push edi
push ebp
push edx
call fcn.004727c0
add esp, 0x20
test eax, 0xff0000
jne 0x4a8444
mov dl, byte [esp + 0x13]
mov dword [esp + 0x14], 0
jmp 0x4a8484
mov eax, dword [esi + 0x74]
mov ecx, dword [esi + 0xa0]
lea edx, [eax + eax*8]
mov eax, dword [ecx + 0x31c]
mov eax, dword [eax + edx*4 + 0xc]
push eax
mov dword [esp + 0x18], 1
call fcn.00470a50
lea eax, [eax + eax*2]
shl eax, 6
add eax, 0x5ba4d0
movzx edx, byte [eax + 2]
mov cl, byte [eax]
mov byte [esp + 0x12], dl
mov dl, byte [eax + 4]
mov byte [esp + 0x11], cl
mov ebp, dword [esi + 0x74]
mov eax, dword [esi + 0x70]
xor ebx, ebx
mov dword [esp + 0x18], ebx
test dl, dl
je 0x4a8554
cmp dword [esp + 0x14], ebx
je 0x4a8554
push eax
push ebp
mov ecx, esi
call fcn.00489450
test eax, eax
je 0x4a84b8
mov ebx, 1
mov dword [esp + 0x18], ebx
lea edi, [ebp - 1]
mov dword [esp + 0x1c], ebp
test edi, edi
jl 0x4a84fb
lea ebx, [edi + edi*8]
add ebx, ebx
add ebx, ebx
lea ebx, [ebx]
mov eax, dword [esi + 0xa0]
mov ecx, dword [eax + 0x31c]
mov eax, dword [ebx + ecx]
dec eax
push eax
push edi
mov ecx, esi
call fcn.00489450
test eax, eax
je 0x4a84f7
mov ebp, edi
dec edi
sub ebx, 0x24
test edi, edi
jge 0x4a84d0
mov ebx, dword [esp + 0x18]
test ebx, ebx
jne 0x4a8505
cmp ebp, dword [esp + 0x1c]
jge 0x4a8554
mov edx, dword [esi + 0xa0]
mov ecx, dword [edx + 0x31c]
lea eax, [ebp + ebp*8]
mov edx, dword [ecx + eax*4]
movzx ax, byte [esp + 0x11]
dec edx
mov dword [esp + 0x18], edx
movzx dx, byte [esp + 0x12]
push 0
movzx ecx, ax
push 1
push ecx
movzx eax, dx
push eax
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x3c]
push edx
mov ecx, esi
mov dword [esp + 0x40], ebp
call fcn.00487e40
test eax, eax
jne 0x4a8554
mov ebp, dword [esp + 0x1c]
xor ebx, ebx
mov ecx, dword [esi + 0xa0]
push 0
push 1
push ebp
call fcn.00478da0
cmp byte [esp + 0x11], 0
mov dword [esp + 0x18], eax
je 0x4a868b
test ebx, ebx
jne 0x4a868f
cmp dword [esp + 0x14], ebx
je 0x4a86a8
mov ecx, dword [esi + 0xa0]
mov ebp, dword [esi + 0x74]
mov edx, dword [ecx + 0x31c]
lea eax, [ebp + ebp*8]
mov edi, dword [edx + eax*4 + 8]
mov eax, dword [esi + 0x70]
test eax, eax
jle 0x4a86a8
dec eax
test eax, eax
jle 0x4a85cd
lea esp, [esp]
movzx edx, word [edi + eax*2]
mov ebx, 0x20
cmp bx, dx
je 0x4a85c8
mov ebx, 9
cmp bx, dx
jne 0x4a85cd
dec eax
test eax, eax
jg 0x4a85b0
movzx bx, byte [esp + 0x11]
xor edx, edx
cmp bx, word [edi + eax*2]
sete dl
mov eax, edx
test eax, eax
jne 0x4a864c
lea eax, [esp + 0x28]
push eax
push ebp
call fcn.0046dbb0
mov ecx, dword [esp + 0x28]
test ecx, ecx
jle 0x4a86a8
mov edx, dword [eax + ecx*8 - 8]
mov eax, dword [eax + ecx*8 - 4]
cmp dl, 5
je 0x4a860f
cmp dl, 6
jne 0x4a86a8
test eax, eax
jle 0x4a86a8
dec eax
test eax, eax
jle 0x4a863d
lea esp, [esp]
movzx ecx, word [edi + eax*2]
mov edx, 0x20
cmp dx, cx
je 0x4a8638
mov edx, 9
cmp dx, cx
jne 0x4a863d
dec eax
test eax, eax
jg 0x4a8620
xor ecx, ecx
cmp bx, word [edi + eax*2]
sete cl
mov eax, ecx
test eax, eax
je 0x4a86a8
mov dl, byte [esp + 0x12]
test dl, dl
je 0x4a868f
mov ecx, dword [esi + 0x70]
movzx eax, word [edi + ecx*2]
test ax, ax
je 0x4a867f
mov ebx, 0x20
cmp bx, ax
je 0x4a8674
mov ebx, 9
cmp bx, ax
jne 0x4a867f
movzx eax, word [edi + ecx*2 + 2]
inc ecx
test ax, ax
jne 0x4a8660
movzx dx, dl
cmp dx, word [edi + ecx*2]
jne 0x4a868f
jmp 0x4a86a8
test ebx, ebx
je 0x4a86a8
mov eax, dword [esi + 0xa0]
mov ecx, dword [eax + 0x110]
add dword [esp + 0x18], ecx
jmp 0x4a86a8
mov edx, dword [esi + 0x78]
mov dword [esp + 0x18], edx
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0x74]
mov edx, dword [ecx + 0x31c]
lea eax, [eax + eax*8]
mov eax, dword [edx + eax*4]
dec eax
cmp dword [esi + 0x70], eax
jge 0x4a8847
mov ebx, dword [esp + 0x18]
push 0
push ebx
push 0
call fcn.00470780
mov edi, eax
add edi, 2
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004ff272
add esp, 4
mov ebp, eax
push 0
push ebx
lea eax, [ebp + 4]
mov dword [ebp], 0xa000d
mov ecx, dword [esi + 0xa0]
push eax
call fcn.00470780
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0x74]
mov ebx, dword [ecx + 0x31c]
lea edx, [eax + eax*8]
mov edx, dword [ebx + edx*4 + 8]
mov dword [esp + 0x28], edx
mov edx, dword [esi + 0x70]
lea ecx, [ecx]
mov ebx, dword [esp + 0x28]
movzx ebx, word [ebx + edx*2]
cmp bx, 0x20
je 0x4a8744
cmp bx, 9
jne 0x4a8747
inc edx
jmp 0x4a8730
mov ebx, dword [esi + 0x8c]
push 0
push ebx
push edi
push ebp
push eax
push edx
push eax
mov eax, dword [esi + 0x70]
push eax
call fcn.00481920
push ebp
call fcn.004ff267
add esp, 4
push 0
push 0
push 1
mov ecx, esi
call fcn.004958c0
mov ebx, dword [esp + 0x30]
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call ebp
test ax, ax
jl 0x4a87ab
push 0x5b
call ebp
test ax, ax
jl 0x4a87ab
cmp ebx, 0x20
jne 0x4a87a3
push 0
push 0x81fb
mov ecx, esi
call fcn.0049a200
push ebx
mov ecx, esi
call fcn.004a3c50
cmp dword [esp + 0x20], 0
je 0x4a88f0
mov ecx, dword [esi + 0x70]
cmp dword [esp + 0x24], ecx
jge 0x4a88f0
mov eax, dword [esi + 0x74]
mov edx, dword [esi + 0x8c]
push edx
push eax
push ecx
mov ecx, dword [esi + 0xa0]
push eax
mov eax, dword [esp + 0x34]
push eax
call fcn.004811b0
push 0
push 0
push 1
mov ecx, esi
mov ebx, eax
call fcn.004958c0
mov ecx, dword [esi + 0xa0]
push 1
call fcn.0046f3f0
mov ecx, dword [str.expand_abbreviation]
push 1
push ecx
mov ecx, dword [0x5ed04c]
mov edi, eax
call fcn.00468540
mov ecx, dword [esi + 0xa0]
push 1
call fcn.0046f3f0
cmp edi, eax
jge 0x4a88e3
mov ecx, dword [esi + 0xa0]
push 1
inc ebx
push ebx
call fcn.004703a0
mov ecx, esi
call fcn.00502ae3
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x1c
ret 0xc
mov ecx, esi
call fcn.00485920
push 0xd
push 1
mov ecx, esi
call fcn.004a68c0
mov ecx, dword [0x5c3198]
imul ecx, dword [esp + 0x18]
mov edi, dword [0x5ed7cc]
mov dword [0x5ed7cc], 1
mov eax, dword [esi + 0x160]
add eax, dword [esi + 0x68]
add ecx, dword [esi + 0x64]
push eax
push ecx
mov ecx, esi
call fcn.00496210
mov ecx, esi
mov dword [0x5ed7cc], edi
call fcn.0048bd40
jmp 0x4a8774
mov edi, dword [esi + 0x16c]
push ebx
push 1
mov ecx, esi
call fcn.004a68c0
cmp dword [0x5ed6ac], 0
je 0x4a88ba
mov dword [esi + 0x16c], edi
cmp ebx, 0x20
je 0x4a877e
cmp ebx, 0xd
je 0x4a877e
cmp ebx, 0x2e
je 0x4a8787
cmp ebx, 0x28
jne 0x4a87ab
jmp 0x4a8787
test ebx, ebx
jle 0x4a88f0
push 1
mov ecx, esi
call fcn.00496680
mov ecx, esi
call fcn.00502ae3
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x1c
ret 0xc