Function at 0x100619e0
Capabilities:
Encode data using xor
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
cmp byte [0x100f9744], 0
je 0x10061a3b
cmp byte [0x1017d9ec], 0
je 0x10061a3b
mov dword [ebp - 0xe], 0xb7b1a0ac
xor ecx, ecx
mov dword [ebp - 0xa], 0xa0b5aca0
mov dword [ebp - 6], 0xaeb9a0bd
mov word [ebp - 2], 0x100
mov al, cl
sub al, 0x40
xor byte [ebp + ecx - 0xe], al
inc ecx
cmp ecx, 0xc
jb 0x10061a15
mov ecx, dword [0x100fc310]
lea edx, [ebp - 0xe]
mov byte [ebp - 1], 0
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x1a8]
call eax
push ebx
mov ebx, dword [0x1017dbec]
push esi
mov esi, dword [0x1017dbe8]
mov byte [0x100fb376], 0
mov byte [0x1017d9ec], 0
test esi, esi
je 0x10061e01
test ebx, ebx
je 0x10061e01
cmp byte [0x100f96e4], 0
je 0x10061e01
mov eax, dword [0x100f953c]
test eax, eax
je 0x10061a8f
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
test al, 1
je 0x10061e01
mov ecx, dword [0x100fc340]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
test al, al
jne 0x10061e01
mov ecx, dword [0x100fc31c]
mov eax, dword [ecx]
mov eax, dword [eax + 0xd4]
call eax
test al, al
jne 0x10061e01
push edi
mov edi, dword [ebp + 8]
cmp byte [0x100f96f4], al
je 0x10061c36
cmp byte [0x100f90c8], al
je 0x10061ae0
cmp byte [0x100fb377], al
jne 0x10061c36
mov ecx, esi
call fcn.1000e7d0
test al, al
jne 0x10061c36
mov ecx, esi
call fcn.1000e8d0
shr eax, 7
test al, 1
jne 0x10061c36
mov ecx, esi
call fcn.1000e8d0
shr eax, 0xe
test al, 1
jne 0x10061c36
mov ecx, esi
call fcn.1000e9f0
shr eax, 0xd
test al, 1
jne 0x10061c36
mov ecx, esi
call fcn.1000e9f0
shr eax, 0x12
test al, 1
jne 0x10061c36
cmp dword [0x100fb49c], 1
jne 0x10061c36
lea eax, [ebp + 8]
mov dword [ebp + 8], 0
push eax
push edi
push esi
call fcn.100607e0
test al, al
je 0x10061c36
cmp byte [0x100f970c], 0
je 0x10061bb4
mov ecx, esi
call fcn.10010c10
sub eax, 2
je 0x10061b9a
sub eax, 6
jne 0x10061bb4
cmp byte [0x100fb370], al
jne 0x10061bb4
mov eax, dword [0x100fb35c]
cmp eax, 0x3d
je 0x10061c36
cmp eax, 0x3ee
jne 0x10061bb4
jmp 0x10061c36
cmp byte [0x100fb370], 0
jne 0x10061bb4
mov ecx, esi
call fcn.1000e8d0
shr eax, 1
test al, 1
jne 0x10061c36
or dword [edi + 0x24], 1
mov edx, 1
mov cl, byte [0x100fb371]
xorps xmm0, xmm0
movzx eax, byte [0x100fb37b]
test cl, cl
movss xmm1, dword [ebp + 8]
cmovne eax, edx
ucomiss xmm1, xmm0
mov byte [0x100fb37b], al
lahf
test ah, 0x44
jnp 0x10061c36
cmp byte [0x100f9070], 0
je 0x10061c36
test cl, cl
je 0x10061c36
mov eax, dword [0x100fc388]
mov ecx, dword [eax + 0x1c]
mov eax, dword [0x100fc38c]
movss xmm0, dword [ecx + 0x2c]
mov eax, dword [eax + 0x1c]
divss xmm0, dword [eax + 0x2c]
mov eax, dword [0x100fc380]
mov eax, dword [eax + 0x1c]
maxss xmm0, dword [eax + 0x2c]
mov eax, dword [0x100fc33c]
addss xmm0, xmm1
divss xmm0, dword [eax + 0x1c]
addss xmm0, dword [0x100f0654]
cvttss2si eax, xmm0
mov dword [edi + 8], eax
cmp byte [0x100f972c], 0
je 0x10061c8f
cmp byte [0x100fb371], 0
je 0x10061c8f
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 0x5e4]
call eax
cmp eax, 7
jne 0x10061c8f
cmp byte [0x100f971c], 0
push edi
push ecx
push esi
je 0x10061c6c
call fcn.10061530
jmp 0x10061c71
call fcn.100612e0
test byte [edi + 0x24], 1
mov ecx, 1
movzx eax, byte [0x100fb37b]
cmovne eax, ecx
mov byte [0x100fb376], cl
mov byte [0x100fb37b], al
push edi
push ecx
push esi
call fcn.10019f60
push edi
push ebx
push esi
call fcn.100199e0
cmp byte [0x100f9244], 0
je 0x10061e00
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 0x5e4]
call eax
cmp eax, 0x32
jne 0x10061e00
cmp dword [0x100fb35c], 0x23
je 0x10061e00
movss xmm0, dword [0x100f06a8]
comiss xmm0, dword [ebx + 0xc6c]
ja 0x10061e00
cmp byte [0x100f925c], 0
je 0x10061d50
mov ecx, esi
call fcn.1000e8d0
test eax, 0x4020
jne 0x10061d50
mov ecx, esi
call fcn.10010b10
mov ecx, esi
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1017d9f0], xmm0
mov eax, dword [esi]
mov eax, dword [eax + 0x1ac]
call eax
movss xmm1, dword [0x1017d9f0]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [0x1017d9f4], xmm0
mulss xmm1, dword [0x100f07f8]
movss xmm0, dword [0x100f924c]
comiss xmm0, xmm1
jae 0x10061df9
mov ecx, dword [0x100fc320]
push dword [ebx + 0xc48]
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
mov esi, eax
test esi, esi
je 0x10061e00
mov ecx, esi
call fcn.1000e7d0
test al, al
jne 0x10061e00
mov ecx, esi
call fcn.1000e8d0
test eax, 0x4020
jne 0x10061e00
cmp byte [0x100f9254], 0
je 0x10061da7
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
mov eax, dword [eax + 0x24]
call eax
cmp byte [eax + 0x1017dbf4], 0
je 0x10061e00
mov ecx, esi
call fcn.10010b10
mov ecx, esi
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [0x1017d9f0], xmm0
mov eax, dword [esi]
mov eax, dword [eax + 0x1ac]
call eax
movss xmm1, dword [0x1017d9f0]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [0x1017d9f4], xmm0
mulss xmm1, dword [0x100f07f8]
movss xmm0, dword [0x100f924c]
comiss xmm0, xmm1
jb 0x10061e00
or dword [edi + 0x24], 0x800
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4