Function at 0x1003f640
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x10184080]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1018811e], 0
je 0x1003facd
push esi
lea eax, [ebp - 0x50]
mov byte [ebp - 0x29], 0
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x44], 0
push eax
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x40], 0
xorps xmm3, xmm3
lea edx, [ebp - 0x48]
push eax
movss dword [ebp - 0x38], xmm3
call fcn.10040d00
mov dword [ebp - 0x34], 0
call fcn.100261e0
mov ecx, eax
call fcn.1003fbf0
lea edx, [ebp - 0x34]
mov ecx, eax
call fcn.1003fc90
push dword [ebp - 0x34]
lea ecx, [ebp - 0x40]
call fcn.100289b0
lea ecx, [ebp - 0x44]
call fcn.10029e60
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x44]
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0x28]
call fcn.1003b7a0
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x44]
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x1c]
call fcn.1003b6f0
movss xmm1, dword [0x10188108]
lea ecx, [ebp - 0x3c]
movss xmm0, dword [0x10188114]
add esp, 0x20
subss xmm1, dword [ebp - 0x18]
subss xmm0, dword [ebp - 0x1c]
call fcn.1003be90
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x57
call esi
movss xmm0, dword [0x1017c1b4]
movss dword [ebp - 0x30], xmm0
test ax, ax
jns 0x1003f72a
mov byte [0x10187f37], 0
jmp 0x1003f74a
cmp dword [ebp - 0x48], 0
xorps xmm0, xmm0
mov byte [0x10187f37], 1
movss dword [ebp - 0x34], xmm0
jne 0x1003f776
cmp dword [ebp - 0x4c], 0xffffff81
movss dword [ebp - 0x34], xmm0
jne 0x1003f776
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x1003f788
mov byte [0x10187fc9], 0
movss xmm0, dword [0x1017c1f0]
addss xmm0, dword [0x1017bfe0]
movss dword [ebp - 0x34], xmm0
push 0x53
call esi
test ax, ax
jns 0x1003f7a7
mov byte [0x10187f2f], 0
jmp 0x1003f7ba
mov edx, 7
mov byte [0x10187fc9], 1
call fcn.100311f0
test al, al
jne 0x1003f761
movss xmm0, dword [0x1017c1b4]
jmp 0x1003f769
cmp dword [ebp - 0x48], 0
mov byte [0x10187f2f], 1
jne 0x1003f7e7
cmp dword [ebp - 0x4c], 0x7f
jne 0x1003f7e7
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x1003f7f9
mov byte [0x10187fc9], 0
movss xmm1, dword [0x1017c1f0]
movss xmm0, dword [ebp - 0x34]
subss xmm0, xmm1
movss dword [ebp - 0x34], xmm0
push 0x20
call esi
test ax, ax
jns 0x1003f818
mov byte [0x10187ec9], 0
jmp 0x1003f82d
mov edx, 7
mov byte [0x10187fc9], 1
call fcn.100311f0
test al, al
jne 0x1003f7d1
movss xmm1, dword [0x1017c1b4]
jmp 0x1003f7d9
mov edx, 6
mov byte [0x10187ec9], 1
call fcn.100311f0
test al, al
je 0x1003f859
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x1003f86e
mov byte [0x10187fc9], 0
movss xmm0, dword [0x1017c1f0]
addss xmm0, dword [0x1017bfe0]
movss dword [ebp - 0x38], xmm0
push 0xa2
call esi
test ax, ax
jns 0x1003f88d
mov byte [0x10187fcd], 0
jmp 0x1003f8a2
mov edx, 7
mov byte [0x10187fc9], 1
call fcn.100311f0
test al, al
jne 0x1003f844
movss xmm0, dword [0x1017c1b4]
jmp 0x1003f84c
mov edx, 4
mov byte [0x10187fcd], 1
call fcn.100311f0
test al, al
je 0x1003f8ec
push 0xa0
mov byte [ebp - 0x29], 1
call esi
test ax, ax
jns 0x1003f8bb
mov byte [0x10187fc9], 0
jmp 0x1003f8d0
mov edx, 7
mov byte [0x10187fc9], 1
call fcn.100311f0
test al, al
je 0x1003f8dd
movss xmm0, dword [0x1017c1f0]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x38]
subss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x38], xmm0
movss xmm0, dword [ebp - 0x3c]
subss xmm0, dword [0x1017c1e0]
mov eax, dword [ebp - 0x40]
pop esi
movss dword [ebp - 0x3c], xmm0
test eax, eax
jne 0x1003fa46
mov dword [ebp - 0x30], eax
call fcn.100261e0
mov ecx, eax
call fcn.1003fbf0
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.1003fc90
push dword [ebp - 0x30]
xor cl, cl
call fcn.1002b9e0
mov dword [ebp - 0x30], 0
call fcn.100261e0
mov ecx, eax
call fcn.1003fbf0
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.1003fc90
push dword [ebp - 0x30]
mov cl, 1
call fcn.10026b40
mov dword [ebp - 0x30], 0
call fcn.100261e0
mov ecx, eax
call fcn.1003fbf0
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.1003fc90
push dword [ebp - 0x30]
call fcn.100269f0
add esp, 0xc
cmp byte [ebp - 0x29], 0
je 0x1003fa0b
movss xmm0, dword [ebp - 0x38]
subss xmm0, dword [0x1017c1b0]
mov dword [ebp - 0x30], 0
movss dword [ebp - 0x38], xmm0
call fcn.100261e0
mov ecx, eax
call fcn.1003fbf0
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.1003fc90
movss xmm3, dword [ebp - 0x38]
lea eax, [ebp - 8]
movss xmm2, dword [ebp - 0x34]
lea edx, [ebp - 0xc]
push eax
push dword [ebp - 0x30]
lea ecx, [ebp - 0x10]
xorps xmm1, xmm1
call fcn.100274c0
mov dword [ebp - 0x30], 0
call fcn.100261e0
mov ecx, eax
call fcn.1003fbf0
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.1003fc90
push dword [ebp - 0x30]
movss xmm3, dword [ebp - 8]
movss xmm2, dword [ebp - 0xc]
movss xmm1, dword [ebp - 0x10]
call fcn.10027b50
add esp, 0xc
mov dword [ebp - 0x30], 0
call fcn.100261e0
mov ecx, eax
call fcn.1003fbf0
lea edx, [ebp - 0x30]
mov ecx, eax
call fcn.1003fc90
push dword [ebp - 0x30]
movss xmm1, dword [ebp - 0x3c]
call fcn.10027ca0
add esp, 4
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004ca58
mov esp, ebp
pop ebp
ret
push eax
xor cl, cl
call fcn.1002bb30
add esp, 4
cmp byte [ebp - 0x29], 0
je 0x1003fa98
movss xmm3, dword [ebp - 0x38]
lea eax, [ebp - 8]
subss xmm3, dword [0x1017c144]
movss xmm2, dword [ebp - 0x34]
lea edx, [ebp - 0xc]
push eax
push dword [ebp - 0x40]
lea ecx, [ebp - 0x10]
xorps xmm1, xmm1
call fcn.10028e70
push dword [ebp - 0x40]
movss xmm3, dword [ebp - 8]
movss xmm2, dword [ebp - 0xc]
movss xmm1, dword [ebp - 0x10]
call fcn.10040880
add esp, 0xc
movss xmm1, dword [ebp - 0x3c]
movss xmm0, dword [0x1017c24c]
comiss xmm1, xmm0
jbe 0x1003fac2
subss xmm1, xmm0
andps xmm1, xmmword [0x1017c450]
addss xmm1, dword [0x1017bfe0]
movss dword [ebp - 0x3c], xmm1
push dword [ebp - 0x40]
call fcn.10040930
add esp, 4
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004ca58
mov esp, ebp
pop ebp
ret