Function at 0x1003a4c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101166bd
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x101453b8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x14], edi
mov esi, dword [edi + 0x1c]
mov edx, dword [edi + 4]
mov ecx, dword [edi + 8]
add edx, 0x8c
add ecx, 0x14
mov eax, dword [esi + 0x10]
add eax, edx
mov edx, dword [edi + 0x10]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x14]
add eax, ecx
mov dword [ebp - 0x2c], edx
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0x18], eax
lea eax, [edx + 2]
movd xmm1, eax
mov dword [ebp - 0x34], eax
lea eax, [ecx + 0x14]
movd xmm3, eax
lea esi, [ecx - 8]
mov eax, dword [ebp - 0x18]
lea edi, [ecx - 0x16]
add eax, 0x1b
movd xmm2, esi
cvtdq2ps xmm3, xmm3
add eax, edx
cvtdq2ps xmm1, xmm1
movd xmm0, eax
subss xmm3, xmm1
cvtdq2ps xmm0, xmm0
subss xmm3, dword [0x10135c2c]
cvtdq2ps xmm2, xmm2
addss xmm0, xmm3
movss dword [ebp - 0x28], xmm3
addss xmm0, dword [0x10135c0c]
cvttss2si eax, xmm0
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x1c]
add eax, 0xffffffed
add eax, ecx
mov ecx, dword [ebp - 0x18]
inc ecx
mov dword [ebp - 0x54], eax
cmp byte [0x1028d981], 0
je 0x1003a5b9
mov edx, dword [0x1028e568]
cmp edx, eax
jle 0x1003a5b9
cmp dword [0x1028e56c], ecx
jle 0x1003a5b9
add eax, 0xc
cmp edx, eax
jge 0x1003a5b9
lea eax, [ecx + 0xc]
cmp dword [0x1028e56c], eax
mov eax, dword [ebp - 0x14]
jge 0x1003a5bc
mov byte [eax + 0xb2], 1
jmp 0x1003a5bc
mov eax, dword [ebp - 0x14]
cmp byte [eax + 0x6c], 0
je 0x1003a87a
cvttss2si eax, xmm2
push 1
mov dword [ebp - 0x74], eax
cvttss2si eax, xmm1
mov dword [ebp - 0x24], eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je 0x1003a619
mov eax, dword [ebp - 0x54]
cmp dword [0x1028e568], eax
jle 0x1003a619
mov ecx, dword [ebp - 0x18]
inc ecx
cmp dword [0x1028e56c], ecx
jle 0x1003a619
add eax, dword [ebp - 0x74]
mov edx, dword [0x1028e56c]
cmp dword [0x1028e568], eax
jge 0x1003a619
mov eax, dword [ebp - 0x24]
add eax, ecx
cmp edx, eax
jge 0x1003a619
mov eax, dword [ebp - 0x14]
mov byte [eax + 0x6c], 1
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, dword [ebp - 0x14]
test ax, ax
je 0x1003a632
cmp byte [ecx + 0xb1], 0
je 0x1003a648
cmp byte [ecx + 0xb0], 0
je 0x1003a648
cmp byte [ecx + 0xb3], 0
jne 0x1003a7e3
mov eax, dword [ebp - 0x1c]
movd xmm2, dword [0x1028e568]
add eax, 2
cvtdq2ps xmm2, xmm2
movd xmm0, eax
mov eax, dword [ebp - 0x2c]
add eax, 0x11
add eax, dword [ebp - 0x18]
cvtdq2ps xmm0, xmm0
movd xmm1, eax
comiss xmm2, xmm0
cvtdq2ps xmm1, xmm1
jbe 0x1003a6c0
movd xmm3, edi
mov edi, dword [ebp - 0x34]
cvtdq2ps xmm3, xmm3
addss xmm3, xmm0
comiss xmm3, xmm2
jbe 0x1003a6c3
movd xmm2, dword [0x1028e56c]
cvtdq2ps xmm2, xmm2
comiss xmm2, xmm1
jbe 0x1003a6c3
movd xmm0, edi
cvtdq2ps xmm0, xmm0
addss xmm1, xmm0
comiss xmm1, xmm2
jbe 0x1003a6c3
mov eax, dword [ecx + 0x1c]
mov word [ecx + 0xb0], 1
mov byte [ecx + 0xb3], 0
mov dword [eax + 0x34], ecx
jmp 0x1003a6c3
mov edi, dword [ebp - 0x34]
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je 0x1003a759
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
movd xmm2, dword [0x1028e568]
add edx, 0x10
movd xmm1, edi
mov eax, dword [ecx + 0x10]
add eax, edx
cvtdq2ps xmm1, xmm1
movd xmm0, eax
mov eax, dword [ebp - 0x1c]
cvtdq2ps xmm0, xmm0
add eax, 4
cvtdq2ps xmm2, xmm2
addss xmm0, xmm1
movd xmm1, eax
cvtdq2ps xmm1, xmm1
addss xmm0, dword [0x10135c1c]
comiss xmm2, xmm1
jbe 0x1003a759
movd xmm3, esi
cvtdq2ps xmm3, xmm3
addss xmm1, xmm3
comiss xmm1, xmm2
jbe 0x1003a759
movd xmm1, dword [0x1028e56c]
cvtdq2ps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x1003a759
addss xmm0, dword [ebp - 0x28]
comiss xmm0, xmm1
jbe 0x1003a759
mov eax, dword [ecx + 0x1c]
mov word [ecx + 0xb0], 0x100
mov byte [ecx + 0xb3], 0
mov dword [eax + 0x34], ecx
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
je 0x1003a7e3
mov eax, dword [ebp - 0x1c]
movd xmm1, dword [0x1028e568]
add eax, 4
cvtdq2ps xmm1, xmm1
movd xmm0, eax
mov eax, dword [ebp - 0x30]
cvtdq2ps xmm0, xmm0
add eax, 0xffffffec
movd xmm2, eax
comiss xmm1, xmm0
cvtdq2ps xmm2, xmm2
jbe 0x1003a7e3
movd xmm3, esi
cvtdq2ps xmm3, xmm3
addss xmm0, xmm3
comiss xmm0, xmm1
jbe 0x1003a7e3
movd xmm1, dword [0x1028e56c]
mov esi, dword [ebp - 0x14]
cvtdq2ps xmm1, xmm1
comiss xmm1, xmm2
jbe 0x1003a7e6
movd xmm0, edi
cvtdq2ps xmm0, xmm0
addss xmm0, xmm2
subss xmm0, dword [0x10135be8]
comiss xmm0, xmm1
jbe 0x1003a7e6
mov eax, dword [esi + 0x1c]
mov word [esi + 0xb0], 0
mov byte [esi + 0xb3], 1
mov dword [eax + 0x34], esi
jmp 0x1003a7e6
mov esi, dword [ebp - 0x14]
mov eax, dword [esi + 0xc]
movd xmm3, dword [0x1028e568]
add eax, 0x28
movd xmm0, dword [ebp - 0x18]
cvtdq2ps xmm3, xmm3
movd xmm4, eax
mov eax, dword [esi + 0x10]
add eax, eax
cvtdq2ps xmm4, xmm4
movd xmm1, eax
mov eax, dword [ebp - 0x1c]
add eax, 0xffffffec
cvtdq2ps xmm1, xmm1
movd xmm2, eax
addss xmm1, dword [ebp - 0x28]
cvtdq2ps xmm2, xmm2
addss xmm1, dword [0x10135c84]
comiss xmm3, xmm2
cvtdq2ps xmm0, xmm0
jbe 0x1003a853
addss xmm2, xmm4
comiss xmm2, xmm3
jbe 0x1003a853
movd xmm2, dword [0x1028e56c]
cvtdq2ps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x1003a853
addss xmm0, xmm1
comiss xmm0, xmm2
ja 0x1003a86c
mov eax, dword [esi + 0x64]
mov word [esi + 0xb0], 0
mov byte [esi + 0xb3], 0
test eax, eax
je 0x1003a86c
call eax
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x34], esi
je 0x1003a87d
mov byte [esi + 0x6c], 0
jmp 0x1003a87d
mov esi, dword [ebp - 0x14]
cmp byte [esi + 0xb2], 0
je 0x1003aad0
xor edi, edi
nop dword [eax]
push 4
mov dword [ebp - 0x50], 0
lea ecx, [ebp - 0x50]
push str.copy
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0xf
mov byte [ebp - 0x50], 0
call fcn.100250c0
lea eax, [ebp - 0x50]
mov dword [ebp - 4], 0
push eax
lea eax, [ebp - 0x78]
mov ecx, 0x102939bc
push eax
call fcn.100d8f30
mov ecx, dword [ebp - 0x1c]
add ecx, 0xffffffed
mov eax, dword [eax]
inc eax
imul eax, edi
add eax, dword [esi + 0xc]
add eax, ecx
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x28], eax
cmp edx, 0x10
jb 0x1003a920
mov ecx, dword [ebp - 0x50]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1003a916
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003aafd
push edx
push ecx
call fcn.100eba52
add esp, 8
lea ecx, [ebp - 0x24]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x24], 0x74736170
lea edx, [ecx + 1]
mov word [ebp - 0x20], 0x65
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0xf
mov byte [ebp - 0x50], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003a950
sub ecx, edx
lea eax, [ebp - 0x24]
push ecx
push eax
lea ecx, [ebp - 0x50]
call fcn.100250c0
lea eax, [ebp - 0x50]
mov dword [ebp - 4], 1
push eax
lea eax, [ebp - 0x58]
mov ecx, 0x102939bc
push eax
call fcn.100d8f30
mov eax, dword [eax]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x3c]
mov dword [ebp - 0x30], eax
cmp edx, 0x10
jb 0x1003a9bf
mov ecx, dword [ebp - 0x50]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1003a9b5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003aafd
push edx
push ecx
call fcn.100eba52
add esp, 8
push 4
mov dword [ebp - 0x70], 0
lea ecx, [ebp - 0x70]
push str.copy
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0xf
mov byte [ebp - 0x70], 0
call fcn.100250c0
lea eax, [ebp - 0x70]
mov dword [ebp - 4], 2
push eax
lea eax, [ebp - 0x38]
mov ecx, 0x102939bc
push eax
call fcn.100d8f30
mov eax, dword [eax]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x5c]
mov dword [ebp - 0x2c], eax
cmp edx, 0x10
jb 0x1003aa40
mov ecx, dword [ebp - 0x70]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1003aa36
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003aafd
push edx
push ecx
call fcn.100eba52
add esp, 8
mov edx, dword [0x1028e568]
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0xf
mov byte [ebp - 0x70], 0
cmp edx, dword [ebp - 0x28]
jle 0x1003aac0
mov eax, dword [ebp - 0x18]
mov ecx, dword [0x1028e56c]
add eax, 2
mov esi, dword [ebp - 0x14]
cmp ecx, eax
jle 0x1003aac0
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x28]
add esi, 5
add eax, esi
mov esi, dword [ebp - 0x14]
cmp edx, eax
jge 0x1003aac0
mov eax, dword [ebp - 0x18]
add eax, 2
add eax, dword [ebp - 0x2c]
cmp ecx, eax
jge 0x1003aac0
cmp byte [0x1028d975], 0
je 0x1003aac0
test edi, edi
jne 0x1003aaa9
mov eax, dword [esi + 0x88]
mov dword [0x102910ec], eax
jmp 0x1003aab9
cmp edi, 1
jne 0x1003aab9
mov eax, dword [0x102910ec]
mov dword [esi + 0x88], eax
mov byte [esi + 0xb2], 0
inc edi
cmp edi, 2
jl 0x1003a890
mov eax, dword [esi + 0x1c]
mov dword [eax + 0x34], esi
mov ecx, dword [esi + 0xa0]
test ecx, ecx
je 0x1003aae2
mov eax, dword [esi + 0x88]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100eb51f
mov esp, ebp
pop ebp
ret
call fcn.100f1a4e
int3