Function at 0x4f3271
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
mov eax, dword [0x5836e0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
push ebx
mov ebx, ecx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0x1c]
push esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 8]
push edi
lea edi, [ebx + 8]
mov dword [ebx], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x60], ebx
mov dword [ebx + 4], eax
cmp esi, edi
je 0x4f32b7
push 5
pop ecx
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor ecx, ecx
xor edx, edx
inc ecx
cmp word [ebx + 0x14a], dx
jne 0x4f32e4
movsx eax, word [ebx + 0x14]
movsx ecx, word [ebx + 0x18]
sub ecx, eax
movsx eax, word [ebx + 0xa]
add ecx, 0xa
cmp eax, ecx
jle 0x4f32e1
xor ecx, ecx
inc ecx
mov al, cl
jmp 0x4f32e6
xor ecx, ecx
inc ecx
mov al, dl
mov byte [ebx + 0x1e], al
cmp byte [0x5b2aa0], dl
jne 0x4f3974
xor eax, eax
mov dword [ebx + 0x24], ecx
mov dword [ebx + 0x40], edx
lea edi, [ebx + 0x28]
mov dword [ebx + 0x20], edx
stosd dword es:[edi], eax
push 0xf
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov esi, dword [ebx]
mov ecx, dword [ebx + 4]
mov dword [ebx + 0x3c], edx
pop edi
movzx eax, byte [esi + 0x29]
shr eax, 4
mov dword [ebx + 0x195c], eax
mov eax, dword [ecx + eax*4]
mov dword [ebx + 0x1960], eax
movzx eax, byte [esi + 0x26]
shr eax, 4
mov dword [ebx + 0x1964], eax
mov eax, dword [ecx + eax*4]
mov dword [ebx + 0x1968], eax
movzx eax, byte [esi + 0x25]
shr eax, 4
mov eax, dword [ecx + eax*4]
mov dword [ebx + 0x196c], eax
movzx eax, byte [esi + 0x25]
and eax, edi
mov eax, dword [ecx + eax*4]
mov dword [ebx + 0x1970], eax
movzx eax, byte [esi + 0x2a]
shr eax, 4
mov eax, dword [ecx + eax*4]
mov dword [ebx + 0x1974], eax
movzx eax, byte [esi + 0x2a]
and eax, edi
mov eax, dword [ecx + eax*4]
mov dword [ebx + 0x1978], eax
movzx eax, byte [esi + 0x28]
shr eax, 4
mov dword [ebx + 0x197c], eax
movzx eax, byte [esi + 0x28]
and eax, edi
mov dword [ebx + 0x1980], eax
movzx eax, byte [esi + 0x27]
shr eax, 4
mov dword [ebx + 0x1984], eax
movzx eax, byte [esi + 0x27]
and eax, edi
mov dword [ebx + 0x1988], eax
xor eax, eax
cmp dword [esi + 0x1ac], edx
setne al
mov dword [ebx + 0x1994], eax
mov eax, dword [esi + 0x1b0]
cmp eax, 0xffffffff
je 0x4f33de
sar eax, 4
and eax, edi
mov dword [ebx + 0x198c], eax
movzx eax, byte [esi + 0x1b0]
jmp 0x4f33ef
movzx eax, byte [esi + 0x20]
shr eax, 4
mov dword [ebx + 0x198c], eax
movzx eax, byte [esi + 0x20]
and eax, edi
mov dword [ebx + 0x1990], eax
mov ecx, dword [esi + 0x120]
shl ecx, 0x1c
sar ecx, 0x1f
test ecx, ecx
setne al
mov byte [ebx + 0x1998], al
xor eax, eax
test ecx, ecx
setne al
inc eax
mov dword [ebx + 0x199c], eax
mov ecx, dword [esi + 0x120]
shl ecx, 0x1b
sar ecx, 0x1f
test ecx, ecx
setne al
mov byte [ebx + 0x19a0], al
test ecx, ecx
je 0x4f343b
or dword [ebx + 0x40], 8
xor eax, eax
mov byte [ebp - 0x21], dl
test ecx, ecx
setne al
mov dword [ebx + 0x19a4], eax
mov eax, dword [esi + 0x138]
mov dword [ebp - 0x4c], eax
test eax, eax
je 0x4f34c8
add esi, 0x148
lea edi, [ebp - 0x5c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
test eax, eax
je 0x4f34c8
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x54]
movzx eax, dl
push 1
lea edi, [esi - 1]
cmp ecx, edi
pop edx
cmove eax, edx
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x50]
cmp ecx, esi
jge 0x4f3490
mov edi, dword [ebp + 0x20]
cmp eax, edi
jl 0x4f34a2
jmp 0x4f3498
mov ecx, edi
mov edi, dword [ebp + 0x20]
mov dword [ebp - 0x54], ecx
cmp eax, edi
jl 0x4f34a2
lea eax, [edi - 1]
mov dword [ebp - 0x50], eax
push 0xffffffffffffffff
push edx
push edx
push eax
push ecx
push dword [ebp - 0x58]
mov ecx, ebx
push dword [ebp - 0x5c]
push edi
push esi
push dword [ebp - 0x20]
push dword [ebp - 0x34]
call fcn.004f2ab7
mov eax, dword [ebx]
xor edx, edx
cmp byte [ebp - 0x28], dl
jne 0x4f3528
jmp 0x4f34d0
mov edi, dword [ebp + 0x20]
mov esi, dword [ebp - 0x30]
mov eax, dword [ebx]
cmp dword [eax + 0x13c], edx
je 0x4f3528
lea esi, [eax + 0x178]
xor edx, edx
lea edi, [ebp - 0x5c]
inc edx
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x21], dl
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x54]
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x50]
mov edi, dword [ebp + 0x20]
cmp ecx, esi
jge 0x4f3501
cmp eax, edi
jl 0x4f350b
jmp 0x4f3504
lea ecx, [esi - 1]
cmp eax, edi
jl 0x4f350b
lea eax, [edi - 1]
push 0xffffffffffffffff
push edx
push edx
push eax
push ecx
push dword [ebp - 0x58]
mov ecx, ebx
push dword [ebp - 0x5c]
push edi
push esi
push dword [ebp - 0x20]
push dword [ebp - 0x34]
call fcn.004f2ab7
xor edx, edx
cmp byte [ebx + 0x19a0], 0
mov dword [ebx + 0x24], 1
jne 0x4f356e
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 4]
and eax, 0xffffff
cmp eax, dword [ebx + 0x1968]
jne 0x4f3588
mov eax, dword [ebp - 0x34]
push 0x20
pop ecx
cmp word [eax], cx
jne 0x4f3588
cmp word [eax + 2], cx
jne 0x4f3588
cmp word [eax + 4], cx
jne 0x4f3588
cmp word [eax + 6], cx
jne 0x4f3588
cmp word [eax + 8], cx
je 0x4f3588
push 8
push edx
push edx
push edx
lea eax, [esi - 1]
mov ecx, ebx
push eax
push edx
push edx
push edi
push esi
push dword [ebp - 0x20]
push dword [ebp - 0x34]
call fcn.004f2ab7
mov eax, dword [ebx]
xor esi, esi
cmp dword [eax + 0x1a0], esi
je 0x4f35c0
test dword [ebx + 0x40], 7
jne 0x4f35c0
mov ecx, dword [ebp - 0x30]
lea eax, [edi - 1]
push 0x80
push esi
push esi
push eax
lea eax, [ecx - 1]
push eax
push esi
push esi
push edi
push ecx
push dword [ebp - 0x20]
mov ecx, ebx
push dword [ebp - 0x34]
call fcn.004f2ab7
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x38], eax
xor eax, eax
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x18], 0x2510250c
mov dword [ebp - 0x14], 0x25182514
mov dword [ebp - 0x10], 0x25572554
mov dword [ebp - 0xc], 0x255d255a
mov word [ebp - 8], ax
mov dword [ebp - 0x1c], eax
test edi, edi
jle 0x4f389b
mov ecx, dword [ebp - 0x30]
imul edx, ecx, 0x18
mov dword [ebp - 0x44], edx
cmp eax, dword [ebx + 0x19a4]
jl 0x4f3883
mov eax, edi
sub eax, dword [ebx + 0x199c]
cmp dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
jge 0x4f3883
cmp eax, dword [ebx + 0x19a4]
jne 0x4f372b
cmp dword [ebx + 0x40], 0
je 0x4f363e
cmp dword [ebx + 0x40], 8
jne 0x4f372b
mov eax, dword [ebp - 0x38]
movzx eax, word [eax]
mov dword [ebp - 0x3c], eax
cmp eax, 0x5b
jne 0x4f3674
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 4]
and eax, 0xffffff
cmp eax, dword [ebx + 0x1974]
jne 0x4f3671
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax]
and eax, 0xffffff
cmp eax, dword [ebx + 0x1978]
je 0x4f36cf
mov eax, dword [ebp - 0x3c]
cmp dword [ebp - 0x1c], 0
jne 0x4f3728
cmp ax, 0x50
jne 0x4f36aa
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 8]
mov dword [ebp - 0x28], eax
and eax, 0x70000
cmp eax, 0x20000
jne 0x4f3728
mov eax, dword [ebp - 0x28]
shr eax, 8
cmp al, 0xf
je 0x4f36cf
mov eax, dword [ebp - 0x3c]
cmp ax, 0x52
jne 0x4f3728
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 8]
mov dword [ebp - 0x28], eax
and eax, 0x70000
cmp eax, 0x40000
jne 0x4f3728
mov eax, dword [ebp - 0x28]
shr eax, 8
cmp al, 0xf
jne 0x4f3728
mov eax, dword [ebp - 0x38]
mov edx, 0x2551
cmp word [eax + ecx*2], dx
jne 0x4f3728
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x2c]
mov eax, dword [edx + eax + 4]
mov edx, dword [ebp - 0x20]
and eax, 0xffffff
cmp eax, dword [ebx + 0x196c]
jne 0x4f3728
mov edi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x2c]
mov eax, dword [edi + eax]
mov edi, dword [ebp + 0x20]
and eax, 0xffffff
cmp eax, dword [ebx + 0x1970]
mov eax, dword [ebp - 0x1c]
jne 0x4f372b
push esi
push esi
inc eax
push eax
push esi
push edi
push ecx
push edx
push dword [ebp - 0x34]
mov ecx, ebx
call fcn.004f1270
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x38]
mov edx, edi
mov dword [ebp - 0x40], edx
lea edi, [edi + ecx*2]
mov dword [ebp - 0x3c], edi
cmp edx, edi
mov edi, dword [ebp + 0x20]
jae 0x4f3883
mov eax, dword [ebp - 0x3c]
movzx ecx, word [eax]
mov dword [ebp - 0x48], ecx
xor ecx, ecx
mov word [eax], cx
lea eax, [ebp - 0x18]
push eax
push edx
call fcn.004fd1eb
pop ecx
pop ecx
mov ecx, eax
mov dword [ebp - 0x28], ecx
test ecx, ecx
jne 0x4f379e
mov esi, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x3c]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [esi + eax*2]
add esi, 2
cmp esi, ebx
jae 0x4f3793
lea eax, [ebp - 0x18]
push eax
push esi
call fcn.004fd1eb
mov edi, eax
mov dword [ebp - 0x28], edi
pop ecx
pop ecx
test edi, edi
je 0x4f376d
mov ebx, dword [ebp - 0x60]
xor esi, esi
mov edi, dword [ebp + 0x20]
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x48]
mov word [eax], dx
test ecx, ecx
je 0x4f387d
mov edi, dword [ebp - 0x2c]
lea edx, [ecx + 2]
sub ecx, dword [ebp - 0x38]
sar ecx, 1
imul eax, ecx, 0x18
mov dword [ebp - 0x40], edx
mov eax, dword [eax + edi + 8]
mov edi, eax
shr edi, 8
mov dword [ebp - 0x64], edi
mov edi, eax
shr edi, 0x10
mov dword [ebp - 0x48], edi
mov edi, dword [ebp + 0x20]
test al, 8
jne 0x4f3872
mov eax, dword [ebp - 0x38]
movzx eax, word [eax + ecx*2]
cmp eax, 0x2554
ja 0x4f3807
je 0x4f3818
sub eax, 0x250c
je 0x4f3818
sub eax, 4
je 0x4f3818
sub eax, 4
je 0x4f3818
sub eax, 4
je 0x4f3818
jmp 0x4f3872
sub eax, 0x2557
je 0x4f3818
sub eax, 3
je 0x4f3818
sub eax, 3
jne 0x4f3872
test byte [ebx + 0x40], 0x80
je 0x4f3858
mov eax, dword [ebp - 0x48]
movzx eax, al
mov dword [ebp - 0x28], eax
mov edi, eax
mov eax, dword [ebp - 0x64]
cmp edi, dword [ebx + 0x197c]
mov edi, dword [ebp + 0x20]
movzx eax, al
jne 0x4f3842
cmp eax, dword [ebx + 0x1980]
je 0x4f3858
mov edi, dword [ebp - 0x28]
cmp edi, dword [ebx + 0x1984]
mov edi, dword [ebp + 0x20]
jne 0x4f3872
cmp eax, dword [ebx + 0x1988]
jne 0x4f3872
push esi
push esi
push dword [ebp - 0x1c]
push ecx
push edi
push dword [ebp - 0x30]
mov ecx, ebx
push dword [ebp - 0x20]
push dword [ebp - 0x34]
call fcn.004f1270
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x3c]
cmp edx, eax
jb 0x4f3747
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x1c]
lea edx, [ecx + ecx]
add dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x44]
add dword [ebp - 0x2c], edx
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, edi
jl 0x4f3602
cmp byte [ebx + 0x1e], 0
jne 0x4f396b
cmp byte [ebp - 0x21], 0
jne 0x4f38eb
cmp dword [ebp - 0x4c], 0
jne 0x4f38eb
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x4f38eb
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x4f38eb
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x4f396b
test edi, edi
jle 0x4f396b
cmp byte [ebx + 0x1f], 0
je 0x4f396b
imul ecx, dword [ebp - 0x30], 0x18
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x4c], ecx
lea eax, [ecx + edx]
cmp edx, eax
jae 0x4f3961
cmp esi, dword [ebx + 0x19a4]
jl 0x4f3961
mov eax, edi
sub eax, dword [ebx + 0x199c]
cmp esi, eax
jge 0x4f3961
push 0x18
lea edi, [edx + 7]
xor edx, edx
lea eax, [ecx - 1]
pop ecx
div ecx
push ecx
lea edx, [eax + 1]
pop eax
mov ecx, dword [edi - 3]
test ecx, 0x3000000
jne 0x4f3951
mov eax, ecx
and eax, 0xffffff
cmp eax, dword [ebx + 0x1960]
push 0x18
pop eax
jne 0x4f3951
shr ecx, 0x18
or cl, 0x10
mov byte [edi], cl
add edi, eax
sub edx, 1
jne 0x4f392c
mov edi, dword [ebp + 0x20]
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x20]
add edx, ecx
inc esi
mov dword [ebp - 0x20], edx
cmp esi, edi
jl 0x4f38ff
mov eax, dword [ebx + 0x40]
mov dword [ebx + 0x134], eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004f4166
leave
ret 0x1c