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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5e5f49
mov eax, dword fs:[0]
push eax
sub esp, 0x45c
mov eax, dword [0x6cdf60]
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 [0x696748]
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 0x5821d5
sub ecx, esi
je 0x5821fd
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 0x5821f0
sub ecx, esi
cmp edx, ecx
jb 0x5821e0
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x582202
sub ecx, edx
cmp ecx, 0x200
jae 0x58274e
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 0x68fcb8
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 [0x88eea8]
call fcn.005a3810
add esp, 0x18
test bl, bl
je 0x5826f8
mov eax, dword [0x89dbe4]
test al, 1
jne 0x5822bf
or eax, 1
mov dword [0x89dbe4], eax
call dword [sym.imp.USER32.dll_GetCaretBlinkTime]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x6967c0]
mov eax, dword [0x89dbe4]
cvtpd2ps xmm0, xmm0
divss xmm0, dword [0x69678c]
movss dword [0x89dbe8], xmm0
test al, 2
jne 0x5822e4
or eax, 2
mov dword [0x89dbe4], eax
mov dword [ebp - 4], 0
call fcn.00599ea0
fstp dword [0x89dbec]
mov dword [ebp - 4], 0xffffffff
call fcn.00599ea0
movss xmm1, dword [0x89dbec]
fstp dword [ebp - 0x454]
movss xmm0, dword [ebp - 0x454]
comiss xmm0, xmm1
jbe 0x582324
addss xmm1, dword [0x89dbe8]
xor eax, eax
cmp dword [0x89dbd4], eax
sete al
movss dword [0x89dbec], xmm1
mov dword [0x89dbd4], eax
push esi
lea eax, [ebp - 0x210]
push 0x69001c
push eax
call fcn.00584d70
movdqa xmm0, xmmword [0x6967b0]
lea esi, [ebp - 0x210]
mov ebx, dword [0x88eea8]
lea ecx, [esi + 1]
add esp, 0xc
movdqu xmmword [ebp - 0x438], xmm0
mov al, byte [esi]
inc esi
test al, al
jne 0x582358
sub esi, ecx
cmp dword [ebx + 0x668], 0
jne 0x582380
push 0
push 0x58
push str.c:warz2_srceternityincluded3dFont.h
push str.fnt_pD3DXFont
call fcn.0059a430
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 [0x88eea8]
mov esi, dword [ebp - 0x430]
sub esi, dword [ebp - 0x438]
movdqa xmm0, xmmword [0x6967b0]
cmp dword [ebx + 0x668], 0
movdqu xmmword [ebp - 0x448], xmm0
jne 0x5823e5
push 0
push 0x58
push str.c:warz2_srceternityincluded3dFont.h
push str.fnt_pD3DXFont
call fcn.0059a430
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 0x6902ac
push 0
push eax
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x440]
sub eax, dword [ebp - 0x448]
cmp dword [0x89dbd4], 0
je 0x582479
movss xmm0, dword [ebp - 0x450]
lea ecx, [ebp - 0x454]
addss xmm0, dword [0x696740]
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.005a7c50
add esp, 0x1c
call dword [sym.imp.USER32.dll_GetFocus]
mov ebx, dword [ebp + 0xc]
cmp eax, dword [0x7ea8b0]
jne 0x58256d
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x56
call esi
test al, al
jns 0x58256d
cmp byte [0x89dbd0], 0
jne 0x58256d
push 0x11
mov byte [0x89dbd0], 1
call esi
test al, al
jns 0x582574
push 0
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je 0x582574
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 0x58255e
push eax
lea ecx, [ebp - 0x428]
call fcn.00580b90
lea ecx, [ebp - 0x428]
mov dword [ebp - 4], 1
call fcn.005820b0
mov ecx, eax
call fcn.00582020
lea ecx, [ebp - 0x428]
cmp ecx, eax
je 0x58251e
push 0xffffffffffffffff
push 0
push eax
call fcn.00580960
cmp dword [ebp - 0x414], 0x10
lea eax, [ebp - 0x428]
cmovae eax, dword [ebp - 0x428]
test ebx, ebx
je 0x582553
cmp ebx, 0x7fffffff
ja 0x58254c
push ecx
push eax
push ecx
mov edx, ebx
mov ecx, edi
call fcn.0057d7d0
jmp 0x582553
test ebx, ebx
je 0x582553
mov byte [edi], 0
lea ecx, [ebp - 0x428]
call fcn.0057eea0
push esi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
call dword [sym.imp.USER32.dll_CloseClipboard]
jmp 0x582574
mov byte [0x89dbd0], 0
mov eax, dword [0x6d1594]
cmp eax, dword [0x6d1590]
je 0x5826f8
mov eax, dword [0x6d1590]
mov esi, dword [eax]
add dword [0x6d1590], 4
cmp dword [0x6d1590], 0x88f5a8
jb 0x5825a9
mov dword [0x6d1590], 0x88f528
test esi, esi
je 0x5826f8
cmp esi, 8
jne 0x5825cd
cmp byte [edi], 0
je 0x5825cd
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5825c0
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 0x5825d2
sub ecx, edx
cmp ecx, ebx
jae 0x5826f8
cmp dword [ebp - 0x458], 2
jne 0x582716
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5825f5
sub ecx, edx
cmp ecx, 0x13
jge 0x5826f8
cmp ecx, 4
je 0x5826bf
cmp ecx, 9
je 0x5826bf
cmp ecx, 0xe
je 0x5826bf
lea eax, [esi - 0x30]
cmp eax, 9
ja 0x58264e
mov ecx, edi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x582630
sub ecx, edx
push esi
lea eax, [ecx + edi]
mov dword [ebp - 0x44c], eax
lea eax, [ebp - 0x44c]
jmp 0x5826ea
lea eax, [esi - 0x61]
cmp eax, 0x19
ja 0x58267e
mov ecx, edi
lea edx, [ecx + 1]
jmp 0x582660
mov al, byte [ecx]
inc ecx
test al, al
jne 0x582660
sub ecx, edx
lea eax, [ecx + edi]
mov dword [ebp - 0x450], eax
lea eax, [esi - 0x20]
push eax
lea eax, [ebp - 0x450]
jmp 0x5826ea
lea eax, [esi - 0x41]
cmp eax, 0x19
ja 0x5826ab
mov ecx, edi
lea edx, [ecx + 1]
jmp 0x582690
mov al, byte [ecx]
inc ecx
test al, al
jne 0x582690
sub ecx, edx
push esi
lea eax, [ecx + edi]
mov dword [ebp - 0x464], eax
lea eax, [ebp - 0x464]
jmp 0x5826ea
cmp esi, 9
je 0x58274a
cmp esi, 0xd
je 0x58274a
jmp 0x5826f8
cmp esi, 0x2d
jne 0x5826f8
mov ecx, edi
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x5826d0
sub ecx, edx
push 0x2d
lea eax, [ecx + edi]
mov dword [ebp - 0x460], eax
lea eax, [ebp - 0x460]
push 0x690020
push eax
call fcn.00584d90
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.005bf536
mov esp, ebp
pop ebp
ret
lea eax, [esi - 0x20]
cmp eax, 0x5f
ja 0x58274a
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x582723
sub ecx, edx
push esi
push 0x690020
lea eax, [ecx + edi]
mov dword [ebp - 0x45c], eax
lea eax, [ebp - 0x45c]
push eax
call fcn.00584d90
add esp, 0xc
mov eax, esi
jmp 0x5826fa
call fcn.005c11d1
int3