Function at 0x55f510
Capabilities:
Log keystrokes via polling
Open clipboard
Read clipboard data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5fd8a9
mov eax, dword fs:[0]
push eax
sub esp, 0x45c
mov eax, dword [0x6e8da0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov bl, dl
mov edi, ecx
movss dword [ebp - 0x450], xmm1
movaps xmm2, xmm0
addss xmm2, dword [0x6b1d50]
mov eax, dword [ebp + 8]
lea esi, [ecx + 1]
mov dword [ebp - 0x458], eax
xor edx, edx
mov dword [ebp - 0x468], 0xff000000
movss dword [ebp - 0x44c], xmm2
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55f575
sub ecx, esi
je 0x55f59d
mov ecx, edi
mov byte [ebp + edx - 0x410], 0x2a
inc edx
lea esi, [ecx + 1]
mov edi, edi
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55f590
sub ecx, esi
cmp edx, ecx
jb 0x55f580
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55f5a2
sub ecx, edx
cmp ecx, 0x200
jae 0x55faee
cmp dword [ebp - 0x458], 1
lea esi, [ebp - 0x410]
mov byte [ebp + ecx - 0x410], al
mov edx, 4
cmovne esi, edi
lea eax, [ebp - 0x468]
push esi
push 0x6a6cc0
push eax
xor eax, eax
cmp dword [ebp - 0x458], 1
cmove eax, edx
sub esp, 8
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, xmm1
movss dword [esp + 4], xmm0
movss dword [esp], xmm2
push dword [0x8a9118]
call fcn.005c0780
add esp, 0x18
test bl, bl
je 0x55fa98
mov eax, dword [0x8b7ff0]
test al, 1
jne 0x55f65f
or eax, 1
mov dword [0x8b7ff0], eax
call dword [sym.imp.USER32.dll_GetCaretBlinkTime]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x6b1de0]
mov eax, dword [0x8b7ff0]
cvtpd2ps xmm0, xmm0
divss xmm0, dword [0x6b1d94]
movss dword [0x8b7ff4], xmm0
test al, 2
jne 0x55f684
or eax, 2
mov dword [0x8b7ff0], eax
mov dword [ebp - 4], 0
call fcn.005b6d30
fstp dword [0x8b7ff8]
mov dword [ebp - 4], 0xffffffff
call fcn.005b6d30
movss xmm1, dword [0x8b7ff8]
fstp dword [ebp - 0x454]
movss xmm0, dword [ebp - 0x454]
comiss xmm0, xmm1
jbe 0x55f6c4
addss xmm1, dword [0x8b7ff4]
xor eax, eax
cmp dword [0x8b7fe4], eax
sete al
movss dword [0x8b7ff8], xmm1
mov dword [0x8b7fe4], eax
push esi
lea eax, [ebp - 0x210]
push 0x6a6e88
push eax
call fcn.00562430
movdqa xmm0, xmmword [0x6b1dd0]
lea esi, [ebp - 0x210]
mov ebx, dword [0x8a9118]
lea ecx, [esi + 1]
add esp, 0xc
movdqu xmmword [ebp - 0x438], xmm0
mov al, byte [esi]
inc esi
test al, al
jne 0x55f6f8
sub esi, ecx
cmp dword [ebx + 0x668], 0
jne 0x55f720
push 0
push 0x58
push str.c:warz_srceternityincluded3dFont.h
push str.fnt_pD3DXFont
call fcn.005b72c0
add esp, 0x10
mov eax, dword [ebx + 0x668]
lea edx, [ebp - 0x438]
push 0xffffffffffffffff
push 0x400
push edx
mov ecx, dword [eax]
lea edx, [ebp - 0x210]
push esi
push edx
push 0
push eax
call dword [ecx + 0x38]
mov ebx, dword [0x8a9118]
mov esi, dword [ebp - 0x430]
sub esi, dword [ebp - 0x438]
movdqa xmm0, xmmword [0x6b1dd0]
cmp dword [ebx + 0x668], 0
movdqu xmmword [ebp - 0x448], xmm0
jne 0x55f785
push 0
push 0x58
push str.c:warz_srceternityincluded3dFont.h
push str.fnt_pD3DXFont
call fcn.005b72c0
add esp, 0x10
mov eax, dword [ebx + 0x668]
lea edx, [ebp - 0x448]
push 0xffffffffffffffff
push 0x400
push edx
mov ecx, dword [eax]
push 1
push 0x6a711c
push 0
push eax
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x440]
sub eax, dword [ebp - 0x448]
cmp dword [0x8b7fe4], 0
je 0x55f819
movss xmm0, dword [ebp - 0x450]
lea ecx, [ebp - 0x454]
addss xmm0, dword [0x6b1d48]
push 0
push 0
push ecx
sub esp, 0x10
mov dword [ebp - 0x454], 0xff000000
sub esi, eax
mov dword [esp + 0xc], 0x41800000
mov dword [esp + 8], 0x3f800000
movss dword [esp + 4], xmm0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ebp - 0x44c]
movss dword [esp], xmm0
call fcn.005c4c30
add esp, 0x1c
call dword [sym.imp.USER32.dll_GetFocus]
mov ebx, dword [ebp + 0xc]
cmp eax, dword [0x804ef4]
jne 0x55f90d
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x56
call esi
test al, al
jns 0x55f90d
cmp byte [0x8b7fe0], 0
jne 0x55f90d
push 0x11
mov byte [0x8b7fe0], 1
call esi
test al, al
jns 0x55f914
push 0
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je 0x55f914
push 1
call dword [sym.imp.USER32.dll_GetClipboardData]
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x55f8fe
push eax
lea ecx, [ebp - 0x428]
call fcn.005629a0
lea ecx, [ebp - 0x428]
mov dword [ebp - 4], 1
call fcn.0055f450
mov ecx, eax
call fcn.0055f3c0
lea ecx, [ebp - 0x428]
cmp ecx, eax
je 0x55f8be
push 0xffffffffffffffff
push 0
push eax
call fcn.00562530
cmp dword [ebp - 0x414], 0x10
lea eax, [ebp - 0x428]
cmovae eax, dword [ebp - 0x428]
test ebx, ebx
je 0x55f8f3
cmp ebx, 0x7fffffff
ja 0x55f8ec
push ecx
push eax
push ecx
mov edx, ebx
mov ecx, edi
call fcn.0055c960
jmp 0x55f8f3
test ebx, ebx
je 0x55f8f3
mov byte [edi], 0
lea ecx, [ebp - 0x428]
call fcn.00562a00
push esi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
call dword [sym.imp.USER32.dll_CloseClipboard]
jmp 0x55f914
mov byte [0x8b7fe0], 0
mov eax, dword [0x6ec1c4]
cmp eax, dword [0x6ec1c0]
je 0x55fa98
mov eax, dword [0x6ec1c0]
mov esi, dword [eax]
add dword [0x6ec1c0], 4
cmp dword [0x6ec1c0], 0x8a9890
jb 0x55f949
mov dword [0x6ec1c0], 0x8a9810
test esi, esi
je 0x55fa98
cmp esi, 8
jne 0x55f96d
cmp byte [edi], 0
je 0x55f96d
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55f960
sub ecx, edx
mov byte [ecx + edi - 1], al
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55f972
sub ecx, edx
cmp ecx, ebx
jae 0x55fa98
cmp dword [ebp - 0x458], 2
jne 0x55fab6
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55f995
sub ecx, edx
cmp ecx, 0x13
jge 0x55fa98
cmp ecx, 4
je 0x55fa5f
cmp ecx, 9
je 0x55fa5f
cmp ecx, 0xe
je 0x55fa5f
lea eax, [esi - 0x30]
cmp eax, 9
ja 0x55f9ee
mov ecx, edi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55f9d0
sub ecx, edx
push esi
lea eax, [ecx + edi]
mov dword [ebp - 0x44c], eax
lea eax, [ebp - 0x44c]
jmp 0x55fa8a
lea eax, [esi - 0x61]
cmp eax, 0x19
ja 0x55fa1e
mov ecx, edi
lea edx, [ecx + 1]
jmp 0x55fa00
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55fa00
sub ecx, edx
lea eax, [ecx + edi]
mov dword [ebp - 0x450], eax
lea eax, [esi - 0x20]
push eax
lea eax, [ebp - 0x450]
jmp 0x55fa8a
lea eax, [esi - 0x41]
cmp eax, 0x19
ja 0x55fa4b
mov ecx, edi
lea edx, [ecx + 1]
jmp 0x55fa30
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55fa30
sub ecx, edx
push esi
lea eax, [ecx + edi]
mov dword [ebp - 0x464], eax
lea eax, [ebp - 0x464]
jmp 0x55fa8a
cmp esi, 9
je 0x55faea
cmp esi, 0xd
je 0x55faea
jmp 0x55fa98
cmp esi, 0x2d
jne 0x55fa98
mov ecx, edi
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55fa70
sub ecx, edx
push 0x2d
lea eax, [ecx + edi]
mov dword [ebp - 0x460], eax
lea eax, [ebp - 0x460]
push 0x6a6e8c
push eax
call fcn.00562450
add esp, 0xc
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005dbda3
mov esp, ebp
pop ebp
ret
lea eax, [esi - 0x20]
cmp eax, 0x5f
ja 0x55faea
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x55fac3
sub ecx, edx
push esi
push 0x6a6e8c
lea eax, [ecx + edi]
mov dword [ebp - 0x45c], eax
lea eax, [ebp - 0x45c]
push eax
call fcn.00562450
add esp, 0xc
mov eax, esi
jmp 0x55fa9a
call fcn.005dd147
int3