Function at 0x510660
Capabilities:
Log keystrokes via polling

Disassembly:
mov edx, dword [esp + 4]
sub esp, 0x48
push ebx
mov ebx, dword [esp + 0x54]
push ebp
push esi
mov esi, eax
mov eax, dword [0x6a376c]
test eax, eax
push edi
mov edi, dword [esi + 0x48]
jne 0x5106ec
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
call dword [sym.imp.USER32.dll_GetDoubleClickTime]
mov ecx, eax
shl ecx, 1
mov eax, 0xaaaaaaab
mul ecx
mov ecx, dword [0x6a3770]
shr edx, 1
sub ebx, ecx
cmp ebx, edx
jae 0x5106da
mov edx, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov ebp, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
push 0x44
sub ebp, edx
sub ebx, ecx
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, eax
mov eax, ebp
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jge 0x5106da
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jl 0x510b35
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
mov dword [0x6a376c], 1
test byte [edi + 0x28], 8
je 0x5107cf
xor eax, eax
xor ebp, ebp
test edx, edx
setle al
xor ecx, ecx
dec eax
and edx, eax
mov eax, dword [edi + 0x1c]
test ebx, ebx
setle cl
dec ecx
and ebx, ecx
test eax, eax
jl 0x510762
mov ecx, dword [edi + 0x14]
mov dword [esp + 0x28], ecx
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x18]
cmp eax, ecx
lea ebp, [esp + 0x28]
jge 0x510732
mov dword [esp + 0x30], ecx
jmp 0x510742
mov ecx, dword [esi + 0x20]
dec ecx
cmp eax, ecx
mov dword [esp + 0x30], ecx
jg 0x510742
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0x20]
mov ecx, dword [esi + 0x1c]
cmp eax, ecx
jge 0x510752
mov dword [esp + 0x34], ecx
jmp 0x510762
mov ecx, dword [esi + 0x24]
dec ecx
cmp eax, ecx
mov dword [esp + 0x34], ecx
jg 0x510762
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x18]
cmp edx, eax
mov dword [esp + 0x1c], ecx
jge 0x51077d
mov dword [esp + 0x20], eax
jmp 0x51078d
mov eax, dword [esi + 0x20]
dec eax
cmp edx, eax
mov dword [esp + 0x20], eax
jg 0x51078d
mov dword [esp + 0x20], edx
mov eax, dword [esi + 0x1c]
cmp ebx, eax
jge 0x51079a
mov dword [esp + 0x24], eax
jmp 0x5107ac
mov esi, dword [esi + 0x24]
lea eax, [esi - 1]
cmp ebx, eax
mov dword [esp + 0x24], eax
jg 0x5107ac
mov dword [esp + 0x24], ebx
mov dword [edi + 0x1c], edx
mov edx, dword [edi]
mov dword [edi + 0x20], ebx
push edx
lea edi, [esp + 0x1c]
mov ebx, ebp
call fcn.0050c870
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x48
ret 8
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x510806
mov eax, dword [esi + 0x3c]
test eax, eax
mov ebp, dword [ecx]
jl 0x5107ec
dec ebp
cmp eax, ebp
jg 0x5107ec
mov ecx, dword [ecx + 8]
mov ebp, dword [ecx + eax*4]
jmp 0x5107ee
xor ebp, ebp
test ebp, ebp
je 0x510806
test byte [ebp + 0xc], 4
jne 0x510806
mov eax, dword [ebp + 0x30]
mov eax, dword [eax]
cmp dword [edi + 8], eax
mov dword [esp + 0x14], eax
jb 0x510812
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x48
ret 8
mov ecx, dword [edi + 0xc]
lea eax, [ecx + edx]
mov ecx, dword [esi + 0x18]
cmp eax, ecx
jge 0x510825
mov dword [esp + 0x18], ecx
jmp 0x510834
mov ecx, dword [esi + 0x20]
cmp eax, ecx
mov dword [esp + 0x18], ecx
jg 0x510834
mov dword [esp + 0x18], eax
mov edx, dword [edi + 0x10]
lea eax, [edx + ebx]
mov ebx, dword [esi + 0x1c]
cmp eax, ebx
jl 0x51084a
mov ebx, dword [esi + 0x24]
cmp eax, ebx
jg 0x51084a
mov ebx, eax
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x38]
push eax
push ebx
push ecx
push ebp
push esi
call fcn.0050d0b0
mov eax, dword [ebp + 0x30]
mov eax, dword [eax + 8]
mov ecx, dword [esi + 0x40]
mov edx, dword [esp + 0x18]
shl ecx, 4
add ecx, eax
mov dword [esp + 0x28], edx
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov dword [esp + 0x48], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x4c], eax
mov eax, dword [ecx + 0xc]
test byte [edi + 0x28], 4
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x50], edx
je 0x51089f
test eax, eax
mov dword [esp + 0x5c], 1
je 0x5108a7
mov dword [esp + 0x5c], 0
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
xor ecx, ecx
test ax, ax
mov eax, dword [edi + 0x28]
setl cl
test al, 1
mov dword [esp + 0x10], ecx
je 0x510939
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x14]
lea edx, [esp + 0x48]
push edx
push eax
push ecx
push ebp
push esi
call fcn.0050d0b0
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x48]
mov dword [edi + 0x14], edx
mov edx, dword [esp + 0x4c]
push 1
mov dword [edi + 0x18], ebx
fld dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
fsub dword [esp + 0x54]
mov ebx, dword [esi + 0x40]
sub esp, 8
sub eax, ecx
fstp qword [esp]
mov ecx, dword [esp + 0x48]
sbb ecx, edx
push ecx
push eax
push ebp
push esi
call fcn.0050ea50
mov edx, dword [esi + 0x40]
sub edx, ebx
mov ebx, dword [edi + 8]
add ebx, edx
mov dword [edi + 8], ebx
mov ecx, dword [esp + 0x38]
mov eax, ebx
mov ebx, dword [esp + 0x3c]
push ebx
push ecx
push eax
push ebp
call fcn.0050cdc0
fstp dword [esp + 0x40]
jmp 0x510ad6
test al, 4
je 0x5109e4
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x5109e4
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x14]
lea edx, [esp + 0x48]
push edx
push eax
push ecx
push ebp
push esi
call fcn.0050d0b0
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
mov dword [edi + 0x18], ebx
mov dword [esp + 0x3c], eax
cmp dword [esi + 0x44], 1
mov dword [esp + 0x38], edx
jne 0x51098c
mov eax, dword [ebp + 0x30]
mov ecx, dword [esi + 0x40]
mov edx, dword [eax + 8]
shl ecx, 4
fld dword [edx + ecx + 8]
jmp 0x510990
fld dword [esp + 0x50]
mov eax, dword [esp + 0x10]
fld dword [esp + 0x40]
mov ebx, dword [esi + 0x40]
fsub st(1)
push eax
sub esp, 8
fstp qword [esp]
push 0
push 0
push ebp
fstp st(0)
push esi
call fcn.0050ea50
mov ecx, dword [esi + 0x40]
mov edx, dword [edi + 8]
sub ecx, ebx
add edx, ecx
mov dword [edi + 8], edx
cmp dword [esi + 0x44], 1
mov ebx, dword [esp + 0x3c]
mov eax, edx
jbe 0x510ad6
mov edx, dword [esp + 0x38]
push ebx
push edx
push eax
push ebp
call fcn.0050cdc0
fstp dword [esp + 0x40]
jmp 0x510ad6
fld dword [esp + 0x40]
mov eax, dword [ebp + 0x30]
fcomp dword [ebp + 0x1c]
mov edx, dword [eax + 8]
mov ecx, dword [edi + 8]
fnstsw ax
test ah, 5
jp 0x510a00
fld dword [ebp + 0x1c]
jmp 0x510a17
fld dword [esp + 0x40]
fcomp dword [ebp + 0x20]
fnstsw ax
test ah, 0x41
jne 0x510a13
fld dword [ebp + 0x20]
jmp 0x510a17
fld dword [esp + 0x40]
mov eax, ecx
shl eax, 4
add eax, edx
test ecx, ecx
fstp dword [eax + 8]
jbe 0x510abb
mov edx, dword [esp + 0x5c]
test edx, edx
jne 0x510abb
mov edx, dword [esp + 0x14]
dec edx
cmp ecx, edx
jae 0x510a78
mov edx, dword [eax - 0x10]
mov ecx, dword [eax - 0xc]
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x38]
add edx, 1
adc ecx, 0
cmp ebx, ecx
jg 0x510a5c
jl 0x510ab6
cmp ebp, edx
jb 0x510ab6
mov edx, dword [eax + 0x10]
mov ecx, dword [eax + 0x14]
sub edx, 1
sbb ecx, 0
cmp ebx, ecx
jl 0x510a72
jg 0x510ab6
cmp ebp, edx
ja 0x510ab6
mov edx, ebp
mov ecx, ebx
jmp 0x510ab6
jne 0x510abb
mov edx, dword [eax - 0x10]
mov ecx, dword [eax - 0xc]
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esi + 8]
add edx, 1
adc ecx, 0
cmp ebp, ecx
jg 0x510a9d
jl 0x510ab6
cmp dword [esp + 0x38], edx
jb 0x510ab6
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esi + 0xc]
cmp ebp, ecx
jl 0x510ab0
jg 0x510aac
cmp dword [esp + 0x38], ebx
jbe 0x510ab0
mov edx, ebx
jmp 0x510ab6
mov edx, dword [esp + 0x38]
mov ecx, ebp
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [eax]
mov dword [esp + 0x38], ecx
mov ebx, dword [eax + 4]
mov dword [esp + 0x3c], ebx
mov edx, dword [eax + 8]
mov dword [esp + 0x40], edx
mov eax, dword [eax + 0xc]
mov dword [esp + 0x44], eax
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x34]
mov ebp, dword [esi + 0x18]
mov edx, eax
or edx, ecx
je 0x510b06
push ecx
mov ecx, dword [esi + 0x28]
push eax
mov eax, dword [esi + 0x20]
sub eax, ebp
cdq
push edx
mov edx, dword [esi + 0x2c]
push eax
mov eax, dword [esp + 0x48]
sub eax, ecx
sbb ebx, edx
push ebx
push eax
call fcn.00511d20
add ebp, eax
mov eax, dword [esp + 0x2c]
mov cl, byte [edi + 0x28]
add eax, 0x12
test cl, 5
je 0x510b18
add eax, 8
push eax
push ebp
lea edx, [esp + 0x40]
call fcn.0050cbb0
push 0
lea eax, [esi + 0x18]
push eax
mov eax, dword [esi + 0x48]
mov ecx, dword [eax]
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x48
ret 8