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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5dd009
mov eax, dword fs:[0]
push eax
sub esp, 0x45c
mov eax, dword [0x6c2da0]
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 [0x68c5d8]
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 0x580395
sub ecx, esi
je 0x5803bd
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 0x5803b0
sub ecx, esi
cmp edx, ecx
jb 0x5803a0
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5803c2
sub ecx, edx
cmp ecx, 0x200
jae 0x58090e
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 0x685b6c
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 [0x8787c8]
call fcn.0059ff20
add esp, 0x18
test bl, bl
je 0x5808b8
mov eax, dword [0x887300]
test al, 1
jne 0x58047f
or eax, 1
mov dword [0x887300], eax
call dword [sym.imp.USER32.dll_GetCaretBlinkTime]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x68c650]
mov eax, dword [0x887300]
cvtpd2ps xmm0, xmm0
divss xmm0, dword [0x68c61c]
movss dword [0x887304], xmm0
test al, 2
jne 0x5804a4
or eax, 2
mov dword [0x887300], eax
mov dword [ebp - 4], 0
call fcn.00596680
fstp dword [0x887308]
mov dword [ebp - 4], 0xffffffff
call fcn.00596680
movss xmm1, dword [0x887308]
fstp dword [ebp - 0x454]
movss xmm0, dword [ebp - 0x454]
comiss xmm0, xmm1
jbe 0x5804e4
addss xmm1, dword [0x887304]
xor eax, eax
cmp dword [0x8872f4], eax
sete al
movss dword [0x887308], xmm1
mov dword [0x8872f4], eax
push esi
lea eax, [ebp - 0x210]
push 0x685ed4
push eax
call fcn.00582f30
movdqa xmm0, xmmword [0x68c640]
lea esi, [ebp - 0x210]
mov ebx, dword [0x8787c8]
lea ecx, [esi + 1]
add esp, 0xc
movdqu xmmword [ebp - 0x438], xmm0
mov al, byte [esi]
inc esi
test al, al
jne 0x580518
sub esi, ecx
cmp dword [ebx + 0x668], 0
jne 0x580540
push 0
push 0x58
push str.c:warz2_srceternityincluded3dFont.h
push str.fnt_pD3DXFont
call fcn.00596c10
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 [0x8787c8]
mov esi, dword [ebp - 0x430]
sub esi, dword [ebp - 0x438]
movdqa xmm0, xmmword [0x68c640]
cmp dword [ebx + 0x668], 0
movdqu xmmword [ebp - 0x448], xmm0
jne 0x5805a5
push 0
push 0x58
push str.c:warz2_srceternityincluded3dFont.h
push str.fnt_pD3DXFont
call fcn.00596c10
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 0x686164
push 0
push eax
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x440]
sub eax, dword [ebp - 0x448]
cmp dword [0x8872f4], 0
je 0x580639
movss xmm0, dword [ebp - 0x450]
lea ecx, [ebp - 0x454]
addss xmm0, dword [0x68c5d0]
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.005a43d0
add esp, 0x1c
call dword [sym.imp.USER32.dll_GetFocus]
mov ebx, dword [ebp + 0xc]
cmp eax, dword [0x7d43f0]
jne 0x58072d
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x56
call esi
test al, al
jns 0x58072d
cmp byte [0x8872f0], 0
jne 0x58072d
push 0x11
mov byte [0x8872f0], 1
call esi
test al, al
jns 0x580734
push 0
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je 0x580734
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 0x58071e
push eax
lea ecx, [ebp - 0x428]
call fcn.005834a0
lea ecx, [ebp - 0x428]
mov dword [ebp - 4], 1
call fcn.00580270
mov ecx, eax
call fcn.005801e0
lea ecx, [ebp - 0x428]
cmp ecx, eax
je 0x5806de
push 0xffffffffffffffff
push 0
push eax
call fcn.00583030
cmp dword [ebp - 0x414], 0x10
lea eax, [ebp - 0x428]
cmovae eax, dword [ebp - 0x428]
test ebx, ebx
je 0x580713
cmp ebx, 0x7fffffff
ja 0x58070c
push ecx
push eax
push ecx
mov edx, ebx
mov ecx, edi
call fcn.0057d600
jmp 0x580713
test ebx, ebx
je 0x580713
mov byte [edi], 0
lea ecx, [ebp - 0x428]
call fcn.00583500
push esi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
call dword [sym.imp.USER32.dll_CloseClipboard]
jmp 0x580734
mov byte [0x8872f0], 0
mov eax, dword [0x6c65b4]
cmp eax, dword [0x6c65b0]
je 0x5808b8
mov eax, dword [0x6c65b0]
mov esi, dword [eax]
add dword [0x6c65b0], 4
cmp dword [0x6c65b0], 0x878ec8
jb 0x580769
mov dword [0x6c65b0], 0x878e48
test esi, esi
je 0x5808b8
cmp esi, 8
jne 0x58078d
cmp byte [edi], 0
je 0x58078d
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x580780
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 0x580792
sub ecx, edx
cmp ecx, ebx
jae 0x5808b8
cmp dword [ebp - 0x458], 2
jne 0x5808d6
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5807b5
sub ecx, edx
cmp ecx, 0x13
jge 0x5808b8
cmp ecx, 4
je 0x58087f
cmp ecx, 9
je 0x58087f
cmp ecx, 0xe
je 0x58087f
lea eax, [esi - 0x30]
cmp eax, 9
ja 0x58080e
mov ecx, edi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5807f0
sub ecx, edx
push esi
lea eax, [ecx + edi]
mov dword [ebp - 0x44c], eax
lea eax, [ebp - 0x44c]
jmp 0x5808aa
lea eax, [esi - 0x61]
cmp eax, 0x19
ja 0x58083e
mov ecx, edi
lea edx, [ecx + 1]
jmp 0x580820
mov al, byte [ecx]
inc ecx
test al, al
jne 0x580820
sub ecx, edx
lea eax, [ecx + edi]
mov dword [ebp - 0x450], eax
lea eax, [esi - 0x20]
push eax
lea eax, [ebp - 0x450]
jmp 0x5808aa
lea eax, [esi - 0x41]
cmp eax, 0x19
ja 0x58086b
mov ecx, edi
lea edx, [ecx + 1]
jmp 0x580850
mov al, byte [ecx]
inc ecx
test al, al
jne 0x580850
sub ecx, edx
push esi
lea eax, [ecx + edi]
mov dword [ebp - 0x464], eax
lea eax, [ebp - 0x464]
jmp 0x5808aa
cmp esi, 9
je 0x58090a
cmp esi, 0xd
je 0x58090a
jmp 0x5808b8
cmp esi, 0x2d
jne 0x5808b8
mov ecx, edi
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x580890
sub ecx, edx
push 0x2d
lea eax, [ecx + edi]
mov dword [ebp - 0x460], eax
lea eax, [ebp - 0x460]
push 0x685ed8
push eax
call fcn.00582f50
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.005bb4c3
mov esp, ebp
pop ebp
ret
lea eax, [esi - 0x20]
cmp eax, 0x5f
ja 0x58090a
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5808e3
sub ecx, edx
push esi
push 0x685ed8
lea eax, [ecx + edi]
mov dword [ebp - 0x45c], eax
lea eax, [ebp - 0x45c]
push eax
call fcn.00582f50
add esp, 0xc
mov eax, esi
jmp 0x5808ba
call fcn.005bceb8
int3