Function at 0x481cb0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x14
mov edx, dword [esp + 0x18]
push ebx
push ebp
push esi
mov esi, ecx
mov ebx, dword [esi + 0x88]
mov eax, dword [ebx + 0x2dc]
mov ebp, dword [esi + 0x1a8]
mov dword [esp + 0x14], eax
imul eax, eax, 0x3e8
sub eax, ebp
add eax, edx
cdq
idiv dword [esp + 0x14]
mov ecx, dword [ebx + 0x2e0]
push edi
mov edi, dword [esi + 0x164]
mov dword [esp + 0x20], eax
mov eax, ecx
imul eax, eax, 0x3e8
mov ebp, edx
sub eax, dword [esi + 0x1ac]
add eax, dword [esp + 0x2c]
cdq
idiv ecx
lea eax, [edx + edx*4]
lea edx, [ebp + eax*4]
movzx eax, word [ebx + edx*2 + 0x84]
mov dword [esp + 0x20], eax
xor eax, eax
cmp ecx, eax
mov byte [esp + 0x13], al
jle 0x481e00
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x18]
test ecx, ecx
jle 0x481d77
mov edx, dword [esi + 0x88]
mov eax, dword [esp + 0x14]
lea ebp, [edx + eax + 0x84]
jmp 0x481d50
movzx eax, word [ebp]
cmp eax, 0x30
jl 0x481d71
cmp eax, 0x180
jge 0x481d71
cdq
mov ebx, 0x30
idiv ebx
test edx, edx
jle 0x481d71
mov byte [esp + 0x13], 1
add ebp, 2
dec ecx
jne 0x481d50
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
add ecx, 0x28
dec eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
jne 0x481d32
mov al, byte [esp + 0x13]
test al, al
je 0x481e00
mov edx, dword [esp + 0x28]
test edx, edx
mov ecx, dword [esi + 0x16c]
mov eax, dword [esi + 0x170]
jl 0x481f2c
cmp edx, ecx
jge 0x481f2c
mov ebp, dword [esp + 0x2c]
test ebp, ebp
jl 0x481f2c
cmp ebp, eax
jge 0x481f2c
test edi, edi
jl 0x481f2c
cmp edi, dword [esi + 0x174]
jge 0x481f2c
imul eax, edi
add eax, ebp
imul eax, ecx
mov ecx, dword [esi + 0x178]
pop edi
pop esi
add eax, edx
mov dx, word [esp + 0x18]
pop ebp
mov word [ecx + eax*2], dx
pop ebx
add esp, 0x14
ret 8
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x28]
push 0xff
push eax
push edi
push ebx
push ebp
mov ecx, esi
call fcn.00481a80
push 0x10
call dword [sym.imp.user32.dll_GetKeyState]
test ax, ax
jl 0x481f2c
push 0x8c
push edi
dec ebx
push ebx
push ebp
mov ecx, esi
call fcn.004819b0
push eax
push edi
push ebx
push ebp
mov ecx, esi
call fcn.00481a80
mov ecx, dword [esp + 0x2c]
push 0x46
push edi
push ecx
dec ebp
push ebp
mov ecx, esi
call fcn.004819b0
mov edx, dword [esp + 0x30]
push eax
push edi
push edx
push ebp
mov ecx, esi
call fcn.00481a80
mov eax, dword [esp + 0x2c]
push 0x23
inc eax
push edi
push eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x34]
push eax
mov ecx, esi
call fcn.004819b0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
push eax
push edi
push ecx
push edx
mov ecx, esi
call fcn.00481a80
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
push 0x19
push edi
inc eax
push ecx
push eax
mov ecx, esi
mov dword [esp + 0x38], eax
call fcn.004819b0
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x30]
push edi
push edx
push eax
mov ecx, esi
call fcn.00481a80
mov ecx, dword [esp + 0x28]
push 8
push edi
push ebx
push ecx
mov ecx, esi
call fcn.004819b0
mov edx, dword [esp + 0x2c]
push eax
push edi
push ebx
push edx
mov ecx, esi
call fcn.00481a80
push 4
push edi
push ebx
push ebp
mov ecx, esi
call fcn.004819b0
push eax
push edi
push ebx
push ebp
mov ecx, esi
call fcn.00481a80
mov ebx, dword [esp + 0x20]
push 2
push edi
push ebx
push ebp
mov ecx, esi
call fcn.004819b0
push eax
push edi
push ebx
push ebp
mov ecx, esi
call fcn.00481a80
mov ebp, dword [esp + 0x28]
push 1
push edi
push ebx
push ebp
mov ecx, esi
call fcn.004819b0
push eax
push edi
push ebx
push ebp
mov ecx, esi
call fcn.00481a80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 8