Function at 0x4d2b60
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56ab19
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
push edi
mov eax, dword [0x5be984]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x14], esi
xor ebx, ebx
mov dword [ebp - 4], 0
mov dword [ebp - 0x10], ebx
mov edi, dword [ebp + 0xc]
cmp edi, 0x20
jne 0x4d2d70
cmp dword [0x5c99e4], 0x80000000
mov eax, dword [0x5c99e8]
jne 0x4d2bbf
mov dword [ebp + 0xc], 0xffffffff
jmp 0x4d2bde
sub eax, dword [ebp + 0x14]
cdq
mov ecx, eax
mov eax, dword [0x5c99e4]
sub eax, dword [ebp + 0x10]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp + 0xc], ecx
call fcn.004a0730
cmp dword [ebp + 0xc], eax
jle 0x4d2c3e
mov eax, dword [0x5c99e0]
test eax, eax
je 0x4d2bfe
mov ecx, dword [eax]
lea eax, [ecx - 8]
neg ecx
sbb ecx, ecx
and ecx, eax
jmp 0x4d2c00
xor ecx, ecx
cmp ecx, esi
jne 0x4d2c3e
mov eax, dword [0x5c99e4]
push 0
sub esp, 8
mov ecx, esp
push 0xc1
mov dword [ecx], eax
mov eax, dword [0x5c99e8]
mov dword [ecx + 4], eax
lea eax, [ebp + 0xc]
push eax
mov ecx, esi
call fcn.004d32e0
lea ecx, [ebp + 0xc]
call fcn.004a8840
mov dword [0x5c99e4], ebx
mov dword [0x5c99e8], ebx
cmp dword [0x5c9a2c], 0x80000000
mov eax, dword [0x5c9a30]
jne 0x4d2c58
mov dword [ebp + 0xc], 0xffffffff
jmp 0x4d2c77
sub eax, dword [ebp + 0x14]
cdq
mov ecx, eax
mov eax, dword [0x5c9a2c]
sub eax, dword [ebp + 0x10]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp + 0xc], ecx
call fcn.004a0730
cmp dword [ebp + 0xc], eax
jle 0x4d2cd7
mov eax, dword [0x5c99e0]
test eax, eax
je 0x4d2c97
mov ecx, dword [eax]
lea eax, [ecx - 8]
neg ecx
sbb ecx, ecx
and ecx, eax
jmp 0x4d2c99
xor ecx, ecx
cmp ecx, esi
jne 0x4d2cd7
mov eax, dword [0x5c9a2c]
push 0
sub esp, 8
mov ecx, esp
push 0xc2
mov dword [ecx], eax
mov eax, dword [0x5c9a30]
mov dword [ecx + 4], eax
lea eax, [ebp + 0xc]
push eax
mov ecx, esi
call fcn.004d32e0
lea ecx, [ebp + 0xc]
call fcn.004a8840
mov dword [0x5c9a2c], ebx
mov dword [0x5c9a30], ebx
cmp dword [0x5c99fc], 0x80000000
mov eax, dword [0x5c9a00]
jne 0x4d2cf1
mov dword [ebp + 0xc], 0xffffffff
jmp 0x4d2d10
sub eax, dword [ebp + 0x14]
cdq
mov ecx, eax
mov eax, dword [0x5c99fc]
sub eax, dword [ebp + 0x10]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp + 0xc], ecx
call fcn.004a0730
cmp dword [ebp + 0xc], eax
jle 0x4d2d70
mov eax, dword [0x5c99e0]
test eax, eax
je 0x4d2d30
mov ecx, dword [eax]
lea eax, [ecx - 8]
neg ecx
sbb ecx, ecx
and ecx, eax
jmp 0x4d2d32
xor ecx, ecx
cmp ecx, esi
jne 0x4d2d70
mov eax, dword [0x5c99fc]
push 0
sub esp, 8
mov ecx, esp
push 0xc0
mov dword [ecx], eax
mov eax, dword [0x5c9a00]
mov dword [ecx + 4], eax
lea eax, [ebp + 0xc]
push eax
mov ecx, esi
call fcn.004d32e0
lea ecx, [ebp + 0xc]
call fcn.004a8840
mov dword [0x5c99fc], ebx
mov dword [0x5c9a00], ebx
mov eax, dword [ebp + 0x10]
mov dword [0x5c9a18], eax
mov eax, dword [ebp + 0x14]
mov dword [0x5c9a1c], eax
cmp edi, 0xa1
jne 0x4d2da8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x5c9a40], eax
mov eax, dword [ebp + 0x10]
mov dword [0x5c9a24], eax
mov eax, dword [ebp + 0x14]
mov dword [0x5c9a28], eax
jmp 0x4d31fe
cmp edi, 0xa2
jne 0x4d2dd0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x5c9a3c], eax
mov eax, dword [ebp + 0x10]
mov dword [0x5c9a34], eax
mov eax, dword [ebp + 0x14]
mov dword [0x5c9a38], eax
jmp 0x4d31fe
cmp edi, 0xa0
jne 0x4d2df8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x5c9a10], eax
mov eax, dword [ebp + 0x10]
mov dword [0x5c99ec], eax
mov eax, dword [ebp + 0x14]
mov dword [0x5c99f0], eax
jmp 0x4d31fe
cmp edi, 0x81
jne 0x4d2f50
push 0x5c9a08
push ecx
mov ebx, esp
mov dword [ebp + 0xc], esp
push 0xc
mov dword [ebp - 0x18], ebx
call fcn.004845cc
add esp, 4
mov dword [ebp - 0x18], eax
test eax, eax
je 0x4d2e39
mov dword [eax + 4], 1
mov dword [eax], vtable.Upp::CallbackFnAction.0
mov dword [eax + 8], 0x4d3b60
jmp 0x4d2e3b
xor eax, eax
mov dword [ebx], eax
mov dword [ebp - 0x10], 2
mov dword [ebp - 4], 1
call fcn.004a07a0
push eax
mov byte [ebp - 4], 0
call fcn.004a2590
add esp, 0xc
push 0x5c9a08
push ecx
mov ebx, esp
mov dword [ebp + 0xc], esp
push 0xc
mov dword [ebp - 0x18], ebx
call fcn.004845cc
add esp, 4
mov dword [ebp - 0x18], eax
test eax, eax
je 0x4d2e92
mov dword [eax + 4], 1
mov dword [eax], vtable.Upp::CallbackFnAction.0
mov dword [eax + 8], 0x4d3aa0
jmp 0x4d2e94
xor eax, eax
mov dword [ebx], eax
mov ebx, 6
mov dword [ebp - 0x10], ebx
mov dword [ebp - 4], 2
call fcn.004a07a0
add eax, eax
mov byte [ebp - 4], 0
push eax
call fcn.004a2590
mov eax, dword [ebp + 0x10]
add esp, 0xc
cmp dword [0x5c9a24], 0x80000000
mov ecx, dword [0x5c9a28]
mov dword [0x5c99e4], eax
mov eax, dword [ebp + 0x14]
mov dword [0x5c99e8], eax
jne 0x4d2ee4
mov dword [ebp + 0xc], SysReAllocStringLen
jmp 0x4d2f04
sub ecx, eax
mov eax, ecx
cdq
mov ecx, eax
mov eax, dword [0x5c9a24]
sub eax, dword [ebp + 0x10]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp + 0xc], ecx
call fcn.004a0730
cmp dword [ebp + 0xc], eax
jge 0x4d2f3a
mov eax, dword [0x5c9a40]
mov dword [ebp + 0xc], eax
cmp eax, 0x80000000
je 0x4d2f3a
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
sub esi, dword [ebp + 0xc]
call fcn.004a0700
cmp esi, eax
mov ecx, 0xe1
mov esi, dword [ebp - 0x14]
cmovl edi, ecx
mov ecx, esi
lea eax, [esi + 8]
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
mov ecx, 0x5c99e0
call fcn.004a1d40
cmp edi, 0x82
jne 0x4d30a7
push 0x5c9a08
push ecx
mov dword [ebp + 0xc], esp
mov dword [ebp - 0x18], esp
push 0xc
call fcn.004845cc
add esp, 4
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x4d2f8f
mov dword [eax + 4], 1
mov dword [eax], vtable.Upp::CallbackFnAction.0
mov dword [eax + 8], 0x4d4930
jmp 0x4d2f91
xor eax, eax
mov ecx, dword [ebp + 0xc]
or ebx, 8
mov dword [ebp - 0x10], ebx
mov dword [ecx], eax
mov dword [ebp - 4], 3
call fcn.004a07a0
push eax
mov byte [ebp - 4], 0
call fcn.004a2590
add esp, 0xc
push 0x5c9a08
push ecx
mov dword [ebp + 0xc], esp
mov dword [ebp - 0x1c], esp
push 0xc
call fcn.004845cc
add esp, 4
mov dword [ebp - 0x18], eax
test eax, eax
je 0x4d2fe8
mov dword [eax + 4], 1
mov dword [eax], vtable.Upp::CallbackFnAction.0
mov dword [eax + 8], 0x4d4870
jmp 0x4d2fea
xor eax, eax
mov ecx, dword [ebp + 0xc]
or ebx, 0x10
mov dword [ebp - 0x10], ebx
mov dword [ecx], eax
mov dword [ebp - 4], 4
call fcn.004a07a0
add eax, eax
mov byte [ebp - 4], 0
push eax
call fcn.004a2590
mov eax, dword [ebp + 0x10]
add esp, 0xc
cmp dword [0x5c9a34], 0x80000000
mov ecx, dword [0x5c9a38]
mov dword [0x5c9a2c], eax
mov eax, dword [ebp + 0x14]
mov dword [0x5c9a30], eax
jne 0x4d303b
mov dword [ebp + 0xc], SysReAllocStringLen
jmp 0x4d305b
sub ecx, eax
mov eax, ecx
cdq
mov ecx, eax
mov eax, dword [0x5c9a34]
sub eax, dword [ebp + 0x10]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp + 0xc], ecx
call fcn.004a0730
cmp dword [ebp + 0xc], eax
jge 0x4d3091
mov eax, dword [0x5c9a3c]
mov dword [ebp + 0xc], eax
cmp eax, 0x80000000
je 0x4d3091
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
sub esi, dword [ebp + 0xc]
call fcn.004a0700
cmp esi, eax
mov ecx, 0xe2
mov esi, dword [ebp - 0x14]
cmovl edi, ecx
mov ecx, esi
lea eax, [esi + 8]
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
mov ecx, 0x5c99e0
call fcn.004a1d40
cmp edi, 0x80
jne 0x4d31fe
push 0x5c9a08
push ecx
mov dword [ebp + 0xc], esp
mov dword [ebp - 0x1c], esp
push 0xc
call fcn.004845cc
add esp, 4
mov dword [ebp - 0x18], eax
test eax, eax
je 0x4d30e6
mov dword [eax + 4], 1
mov dword [eax], vtable.Upp::CallbackFnAction.0
mov dword [eax + 8], 0x4d4040
jmp 0x4d30e8
xor eax, eax
mov ecx, dword [ebp + 0xc]
or ebx, 0x20
mov dword [ebp - 0x10], ebx
mov dword [ecx], eax
mov dword [ebp - 4], 5
call fcn.004a07a0
push eax
mov byte [ebp - 4], 0
call fcn.004a2590
add esp, 0xc
push 0x5c9a08
push ecx
mov dword [ebp + 0xc], esp
mov dword [ebp - 0x1c], esp
push 0xc
call fcn.004845cc
add esp, 4
mov dword [ebp - 0x18], eax
test eax, eax
je 0x4d313f
mov dword [eax + 4], 1
mov dword [eax], vtable.Upp::CallbackFnAction.0
mov dword [eax + 8], 0x4d3f80
jmp 0x4d3141
xor eax, eax
mov ecx, dword [ebp + 0xc]
or ebx, 0x40
mov dword [ebp - 0x10], ebx
mov dword [ecx], eax
mov dword [ebp - 4], 6
call fcn.004a07a0
add eax, eax
mov byte [ebp - 4], 0
push eax
call fcn.004a2590
mov eax, dword [ebp + 0x10]
add esp, 0xc
cmp dword [0x5c99ec], 0x80000000
mov ecx, dword [0x5c99f0]
mov dword [0x5c99fc], eax
mov eax, dword [ebp + 0x14]
mov dword [0x5c9a00], eax
jne 0x4d3192
mov dword [ebp + 0xc], SysReAllocStringLen
jmp 0x4d31b2
sub ecx, eax
mov eax, ecx
cdq
mov ecx, eax
mov eax, dword [0x5c99ec]
sub eax, dword [ebp + 0x10]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovg ecx, eax
mov dword [ebp + 0xc], ecx
call fcn.004a0730
cmp dword [ebp + 0xc], eax
jge 0x4d31e8
mov eax, dword [0x5c9a10]
mov dword [ebp + 0xc], eax
cmp eax, 0x80000000
je 0x4d31e8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
sub esi, dword [ebp + 0xc]
call fcn.004a0700
cmp esi, eax
mov ecx, 0xe0
mov esi, dword [ebp - 0x14]
cmovl edi, ecx
mov ecx, esi
lea eax, [esi + 8]
neg ecx
sbb ecx, ecx
and ecx, eax
push ecx
mov ecx, 0x5c99e0
call fcn.004a1d40
mov eax, dword [0x5c99e0]
test eax, eax
je 0x4d3214
mov ecx, dword [eax]
lea eax, [ecx - 8]
neg ecx
sbb ecx, ecx
and ecx, eax
jmp 0x4d3216
xor ecx, ecx
cmp ecx, esi
je 0x4d3226
push 0
mov ecx, 0x5c99e0
call fcn.004a1d40
cmp edi, 0x91
jne 0x4d3244
mov dword [0x5c99e4], 0
mov dword [0x5c99e8], 0
jmp 0x4d3268
cmp edi, 0x92
je 0x4d3254
cmp edi, 0x90
jne 0x4d326d
mov dword [0x5c9a30], 0
mov dword [0x5c9a2c], 0
call fcn.004d3a40
push dword [ebp + 0x18]
mov eax, dword [ebp + 0x10]
sub esp, 8
mov ecx, esp
push edi
mov edi, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 0x14]
mov dword [ecx + 4], eax
mov ecx, esi
push edi
call fcn.004d32e0
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
or ebx, 1
push 2
mov dword [ebp - 4], 0
mov dword [ebp - 0x10], ebx
call esi
shr eax, 0xf
test al, 1
jne 0x4d32c5
push 4
call esi
shr eax, 0xf
test al, 1
jne 0x4d32c5
push 1
call esi
shr eax, 0xf
test al, 1
jne 0x4d32c5
call fcn.004d4aa0
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14