Function at 0x4a8080
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.0046f2e0
test eax, eax
jne 0x4a873a
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 0x4a818d
push 0x10
call ebp
test ax, ax
jge 0x4a80e3
push edi
push 0x8185
mov ecx, esi
call fcn.0049a120
mov ecx, esi
call fcn.004a3e10
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x1c
ret 0xc
mov ecx, dword [0x5ed0c0]
cmp dword [ecx + 0x1850], edi
je 0x4a8101
cmp dword [0x5ed704], edi
je 0x4a8101
mov dword [esp + 0x20], 1
xor eax, eax
push eax
push ebx
mov ecx, esi
call fcn.0049a120
cmp ebx, 0xa
jne 0x4a812c
push edi
mov ecx, esi
mov dword [esi + 0x58], edi
call fcn.004a2f90
mov ebx, 0xd
mov dword [esi + 0x58], 1
mov dword [esp + 0x30], ebx
mov eax, dword [esi + 0xa0]
cmp dword [eax + 0x7c], edi
je 0x4a86db
cmp ebx, 0xd
jne 0x4a86db
cmp dword [eax + 0x100], edi
jne 0x4a86db
cmp dword [0x5b4800], edi
jne 0x4a81c4
mov edx, dword [eax + 0x2e8]
mov ecx, dword [esi + 0x74]
dec edx
cmp ecx, edx
jge 0x4a81c4
mov eax, dword [eax + 0x334]
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 0x4a8187
cmp ax, 9
jne 0x4a81b2
inc edi
add ecx, 2
jmp 0x4a8178
cmp ebx, 8
je 0x4a810c
cmp ebx, 0xd
je 0x4a8101
cmp ebx, 0x3c
je 0x4a8101
mov eax, 1
jmp 0x4a8103
push 0
push 0
push edi
push edx
mov ecx, esi
call fcn.00494920
jmp 0x4a85be
mov ecx, dword [esi + 0x74]
mov edi, dword [eax + 0x334]
lea edx, [ecx + ecx*8]
mov edx, dword [edi + edx*4]
dec edx
test edx, edx
jle 0x4a84d1
cmp dword [eax + 0xac], 0
movzx edx, byte [eax + 0x2a4]
mov ebp, dword [esi + 0x70]
mov byte [esp + 0x11], dl
movzx edx, byte [eax + 0x2a5]
mov byte [esp + 0x12], dl
mov dl, byte [eax + 0x2a6]
mov byte [esp + 0x13], dl
je 0x4a8274
mov edi, dword [eax + 0xec]
mov ebx, edi
imul ebx, ebx, 0x190
cmp dword [ebx + 0x5bd3d8], 0
jne 0x4a822c
mov dword [esp + 0x18], 0
jmp 0x4a82b4
mov ebx, dword [eax + 0xcc]
mov edx, dword [eax + 0x334]
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.00471780
add esp, 0x20
test eax, 0xff0000
jne 0x4a8274
mov dl, byte [esp + 0x13]
mov dword [esp + 0x18], 0
jmp 0x4a82b4
mov eax, dword [esi + 0x74]
mov ecx, dword [esi + 0xa0]
lea edx, [eax + eax*8]
mov eax, dword [ecx + 0x334]
mov eax, dword [eax + edx*4 + 0xc]
push eax
mov dword [esp + 0x1c], 1
call fcn.0046f4d0
lea eax, [eax + eax*2]
shl eax, 6
add eax, 0x5ba558
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 + 0x14], ebx
test dl, dl
je 0x4a8384
cmp dword [esp + 0x18], ebx
je 0x4a8384
push eax
push ebp
mov ecx, esi
call fcn.00489b10
test eax, eax
je 0x4a82e8
mov ebx, 1
mov dword [esp + 0x14], ebx
lea edi, [ebp - 1]
mov dword [esp + 0x1c], ebp
test edi, edi
jl 0x4a832b
lea ebx, [edi + edi*8]
add ebx, ebx
add ebx, ebx
lea ebx, [ebx]
mov eax, dword [esi + 0xa0]
mov ecx, dword [eax + 0x334]
mov eax, dword [ebx + ecx]
dec eax
push eax
push edi
mov ecx, esi
call fcn.00489b10
test eax, eax
je 0x4a8327
mov ebp, edi
dec edi
sub ebx, 0x24
test edi, edi
jge 0x4a8300
mov ebx, dword [esp + 0x14]
test ebx, ebx
jne 0x4a8335
cmp ebp, dword [esp + 0x1c]
jge 0x4a8384
mov edx, dword [esi + 0xa0]
mov ecx, dword [edx + 0x334]
lea eax, [ebp + ebp*8]
mov edx, dword [ecx + eax*4]
movzx ax, byte [esp + 0x11]
dec edx
mov dword [esp + 0x14], edx
movzx dx, byte [esp + 0x12]
push 0
movzx ecx, ax
push 1
push ecx
movzx eax, dx
push eax
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x3c]
push edx
mov ecx, esi
mov dword [esp + 0x40], ebp
call fcn.00488540
test eax, eax
jne 0x4a8384
mov ebp, dword [esp + 0x1c]
xor ebx, ebx
mov ecx, dword [esi + 0xa0]
push 0
push 1
push ebp
call fcn.00478330
cmp byte [esp + 0x11], 0
mov dword [esp + 0x14], eax
je 0x4a84bb
test ebx, ebx
jne 0x4a84bf
cmp dword [esp + 0x18], ebx
je 0x4a84d8
mov ecx, dword [esi + 0xa0]
mov ebp, dword [esi + 0x74]
mov edx, dword [ecx + 0x334]
lea eax, [ebp + ebp*8]
mov edi, dword [edx + eax*4 + 8]
mov eax, dword [esi + 0x70]
test eax, eax
jle 0x4a84d8
dec eax
test eax, eax
jle 0x4a83fd
lea esp, [esp]
movzx edx, word [edi + eax*2]
mov ebx, 0x20
cmp bx, dx
je 0x4a83f8
mov ebx, 9
cmp bx, dx
jne 0x4a83fd
dec eax
test eax, eax
jg 0x4a83e0
movzx bx, byte [esp + 0x11]
xor edx, edx
cmp bx, word [edi + eax*2]
sete dl
mov eax, edx
test eax, eax
jne 0x4a847c
lea eax, [esp + 0x28]
push eax
push ebp
call fcn.0046cc70
mov ecx, dword [esp + 0x28]
test ecx, ecx
jle 0x4a84d8
mov edx, dword [eax + ecx*8 - 8]
mov eax, dword [eax + ecx*8 - 4]
cmp dl, 5
je 0x4a843f
cmp dl, 6
jne 0x4a84d8
test eax, eax
jle 0x4a84d8
dec eax
test eax, eax
jle 0x4a846d
lea esp, [esp]
movzx ecx, word [edi + eax*2]
mov edx, 0x20
cmp dx, cx
je 0x4a8468
mov edx, 9
cmp dx, cx
jne 0x4a846d
dec eax
test eax, eax
jg 0x4a8450
xor ecx, ecx
cmp bx, word [edi + eax*2]
sete cl
mov eax, ecx
test eax, eax
je 0x4a84d8
mov dl, byte [esp + 0x12]
test dl, dl
je 0x4a84bf
mov ecx, dword [esi + 0x70]
movzx eax, word [edi + ecx*2]
test ax, ax
je 0x4a84af
mov ebx, 0x20
cmp bx, ax
je 0x4a84a4
mov ebx, 9
cmp bx, ax
jne 0x4a84af
movzx eax, word [edi + ecx*2 + 2]
inc ecx
test ax, ax
jne 0x4a8490
movzx dx, dl
cmp dx, word [edi + ecx*2]
jne 0x4a84bf
jmp 0x4a84d8
test ebx, ebx
je 0x4a84d8
mov eax, dword [esi + 0xa0]
mov ecx, dword [eax + 0x110]
add dword [esp + 0x14], ecx
jmp 0x4a84d8
mov edx, dword [esi + 0x78]
mov dword [esp + 0x14], edx
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0x74]
mov edx, dword [ecx + 0x334]
lea eax, [eax + eax*8]
mov eax, dword [edx + eax*4]
dec eax
cmp dword [esi + 0x70], eax
jge 0x4a8687
mov edx, dword [esp + 0x14]
push 0
push edx
push 0
call fcn.0046f200
mov edi, eax
add edi, 2
xor ecx, ecx
lea ebx, [edi + 1]
mov eax, ebx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004ff95f
push 2
push 0x577c10
mov ebp, eax
push ebx
push ebp
call fcn.0044c530
mov eax, dword [esp + 0x28]
add esp, 0x14
push 0
push eax
lea ecx, [ebp + 4]
push ecx
mov ecx, dword [esi + 0xa0]
call fcn.0046f200
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0x74]
mov ebx, dword [ecx + 0x334]
lea edx, [eax + eax*8]
mov edx, dword [ebx + edx*4 + 8]
mov dword [esp + 0x28], edx
mov edx, dword [esi + 0x70]
jmp 0x4a8570
mov ebx, dword [esp + 0x28]
movzx ebx, word [ebx + edx*2]
cmp bx, 0x20
je 0x4a8584
cmp bx, 9
jne 0x4a8587
inc edx
jmp 0x4a8570
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.00480ee0
push ebp
call fcn.004ff96a
add esp, 4
push 0
push 0
push 1
mov ecx, esi
call fcn.00495900
mov ebx, dword [esp + 0x30]
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
push 0x10
call ebp
test ax, ax
jl 0x4a85eb
push 0x5b
call ebp
test ax, ax
jl 0x4a85eb
cmp ebx, 0x20
jne 0x4a85e3
push 0
push 0x81fb
mov ecx, esi
call fcn.0049a120
push ebx
mov ecx, esi
call fcn.004a3ab0
cmp dword [esp + 0x20], 0
je 0x4a8730
mov ecx, dword [esi + 0x70]
cmp dword [esp + 0x24], ecx
jge 0x4a8730
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.00480770
push 0
push 0
push 1
mov ecx, esi
mov ebx, eax
call fcn.00495900
mov ecx, dword [esi + 0xa0]
push 1
call fcn.0046e520
mov ecx, dword [str.expand_abbreviation]
push 1
push ecx
mov ecx, dword [0x5ed0c0]
mov edi, eax
call fcn.00467620
mov ecx, dword [esi + 0xa0]
push 1
call fcn.0046e520
cmp edi, eax
jge 0x4a8723
mov ecx, dword [esi + 0xa0]
push 1
inc ebx
push ebx
call fcn.0046ee20
mov ecx, esi
call fcn.005031d8
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x1c
ret 0xc
mov ecx, esi
call fcn.00485e60
push 0xd
push 1
mov ecx, esi
call fcn.004a6730
mov ecx, dword [0x5c3218]
imul ecx, dword [esp + 0x14]
mov edi, dword [0x5ed83c]
mov dword [0x5ed83c], 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.00496250
mov ecx, esi
mov dword [0x5ed83c], edi
call fcn.0048b270
jmp 0x4a85b4
mov edi, dword [esi + 0x16c]
push ebx
push 1
mov ecx, esi
call fcn.004a6730
cmp dword [0x5ed720], 0
je 0x4a86fa
mov dword [esi + 0x16c], edi
cmp ebx, 0x20
je 0x4a85be
cmp ebx, 0xd
je 0x4a85be
cmp ebx, 0x2e
je 0x4a85c7
cmp ebx, 0x28
jne 0x4a85eb
jmp 0x4a85c7
test ebx, ebx
jle 0x4a8730
push 1
mov ecx, esi
call fcn.004966c0
mov ecx, esi
call fcn.005031d8
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x1c
ret 0xc