Function at 0x4580c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
mov ebx, ecx
lea ecx, [ebp - 8]
push esi
push edi
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebx]
mov dword [ebp - 8], eax
mov dword [ebp - 0x20], eax
cmp byte [eax + 0x4d], 0
jne 0x4580ee
lea ecx, [ebp - 0x20]
call fcn.004582b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [eax + 0x40]
mov edi, dword [eax + 0x44]
cmp esi, edi
je 0x45811a
mov eax, dword [esi + 4]
cmp eax, 0xffffffff
jne 0x458104
xor eax, eax
jmp 0x45810c
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0xf
test al, 1
je 0x458150
add esi, 0x20
cmp esi, edi
jne 0x4580f8
mov byte [ebp - 1], 1
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll_clock]
cdq
mov ecx, edx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebx]
mov dword [ebp - 0x28], eax
mov al, byte [ebp - 1]
mov byte [ebp - 0x20], al
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 8]
je 0x458156
movups xmm0, xmmword [ebp - 0x28]
movups xmmword [eax], xmm0
add dword [ecx + 4], 0x10
jmp 0x458160
mov byte [ebp - 1], 0
jmp 0x45811e
lea edx, [ebp - 0x28]
push edx
push eax
call fcn.0047c460
mov ecx, dword [ebx]
imul eax, dword [ecx + 0x50], 0x7d
mov esi, dword [ecx]
cdq
mov dword [ebp - 0x1c], eax
mov eax, dword [ecx + 4]
sub eax, esi
mov dword [ebp - 0x14], edx
sar eax, 4
test eax, eax
je 0x4581c2
mov edi, ecx
nop dword [eax]
mov edx, dword [ebp - 0xc]
mov ecx, edi
sub edx, dword [esi]
mov eax, dword [ebp - 0x10]
sbb eax, dword [esi + 4]
cmp eax, dword [ebp - 0x14]
jl 0x4581c2
jg 0x458199
cmp edx, dword [ebp - 0x1c]
jbe 0x4581c2
mov eax, dword [edi + 4]
lea ecx, [esi + 0x10]
sub eax, ecx
push eax
push ecx
push esi
call sub.VCRUNTIME140.dll_memmove
add dword [edi + 4], 0xfffffff0
add esp, 0xc
mov ecx, dword [ebx]
mov edi, ecx
mov eax, dword [ecx + 4]
mov esi, dword [ecx]
sub eax, esi
sar eax, 4
test eax, eax
jne 0x458180
mov eax, esi
xor dh, dh
xor edi, edi
cmp eax, dword [ecx + 4]
je 0x4581e6
nop dword [eax]
mov dl, byte [eax + 8]
cmp dl, dh
je 0x4581dc
test dl, dl
je 0x4581dc
inc edi
add eax, 0x10
mov dh, dl
cmp eax, dword [ecx + 4]
jne 0x4581d0
mov eax, dword [ecx + 0x54]
test eax, eax
jne 0x458225
cmp byte [ecx + 0x3c], al
je 0x458212
mov dword [ecx + 4], esi
cmp byte [ebp - 1], al
je 0x458203
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx]
mov byte [eax + 0x3c], 0
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, dword [ecx + 0x50]
jl 0x458209
mov al, byte [ebp - 1]
mov byte [ecx + 0x3c], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 1
jne 0x458209
cmp edi, dword [ecx + 0x50]
jl 0x45823e
mov dword [ecx + 4], esi
mov ecx, dword [ebx]
cmp byte [ecx + 0x3c], 0
sete al
mov byte [ecx + 0x3c], al
mov eax, dword [ebp - 8]
mov esi, dword [eax + 0x40]
mov edi, dword [eax + 0x44]
cmp esi, edi
je 0x45828f
nop dword [eax + eax]
mov eax, dword [esi + 4]
cmp eax, 0xffffffff
jne 0x45825c
xor eax, eax
jmp 0x458264
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0xf
test al, 1
je 0x458274
add esi, 0x20
cmp esi, edi
jne 0x458250
jmp 0x45828f
mov ecx, dword [ebx]
cmp byte [ecx + 0x59], 0
je 0x45828f
mov eax, dword [ecx]
mov dword [ecx + 4], eax
mov eax, dword [ebx]
mov byte [eax + 0x59], 0
mov ecx, dword [ebx]
mov al, byte [ecx + 0x3c]
mov byte [ecx + 0x5a], al
mov ecx, dword [ebx]
mov al, byte [ecx + 0x5a]
cmp al, byte [ecx + 0x3c]
je 0x45829d
mov byte [ecx + 0x59], 1
mov eax, dword [ebx]
pop edi
pop esi
pop ebx
mov al, byte [eax + 0x3c]
mov esp, ebp
pop ebp
ret