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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10080a01
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x218
mov eax, dword [0x10098010]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x84], ecx
mov byte [ecx + 0x33ca], 0
mov eax, dword [0x100e8ffc]
cmp dword [eax], 0
je 0x1005a18e
movsd xmm0, qword [0x100eb670]
ucomisd xmm0, qword [0x1008d508]
lahf
test ah, 0x44
jnp 0x1005a18e
cvttsd2si eax, qword [0x100eb310]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1005a18e
mov eax, dword fs:[0x2c]
mov ecx, dword [0x100e42e0]
mov edi, dword [eax + ecx*4]
mov eax, dword [0x100f1b1c]
mov dword [ebp - 0x5c], edi
cmp eax, dword [edi + 4]
jle 0x10059757
push 0x100f1b1c
call fcn.1007bfd7
add esp, 4
cmp dword [0x100f1b1c], 0xffffffff
jne 0x10059757
push 0x10082d70
mov dword [0x100f1b20], 0
mov dword [0x100f1b24], 0
mov dword [0x100f1b28], 0
call fcn.1007be5e
add esp, 4
push 0x100f1b1c
call fcn.1007bf8d
add esp, 4
movaps xmm0, xmmword [0x1008ef40]
mov edx, 0x13
mov dword [ebp - 0x50], edx
movups xmmword [ebp - 0x4c], xmm0
mov dword [ebp - 0x3c], 0xb020f0d
lea eax, [edx + 1]
mov dword [ebp - 0x38], 0
call fcn.1007cdb0
mov esi, esp
lea edi, [ebp - 0x4b]
xor ecx, ecx
mov dword [ebp - 0x64], esi
mov eax, 0x13
sub edi, esi
lea edx, [ecx + esi]
mov esi, eax
sub esi, ecx
mov cl, byte [ebp - 0x4c]
nop dword [eax + eax]
mov al, byte [edx + edi]
lea edx, [edx + 1]
xor al, cl
mov byte [edx - 1], al
sub esi, 1
jne 0x100597a0
mov esi, dword [ebp - 0x64]
mov eax, 0x13
mov edi, dword [ebp - 0x5c]
mov byte [esi + eax], 0
mov eax, dword [0x100f18c8]
cmp eax, dword [edi + 4]
jle 0x10059810
push 0x100f18c8
call fcn.1007bfd7
add esp, 4
cmp dword [0x100f18c8], 0xffffffff
jne 0x10059810
mov dword [ebp - 4], 0
mov ecx, dword [0x100e898c]
push esi
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
push 0x100f18c8
mov dword [0x100f1b10], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1007bf8d
add esp, 4
mov eax, dword [0x100e8968]
movss xmm0, dword [0x100ec630]
movss xmm1, dword [eax + 0x10]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x10059cc7
mov ecx, dword [0x100e8994]
lea edx, [ebp - 0x20]
mov eax, dword [0x100f1b20]
mov dword [0x100f1b24], eax
push edx
mov eax, dword [ecx]
movss dword [0x100ec630], xmm1
call dword [eax + 0x48]
mov eax, dword [0x100e8968]
mov edx, 1
mov dword [ebp - 0x58], edx
cmp dword [eax + 0x18], edx
jl 0x10059cc7
movsd xmm0, qword [0x1008d630]
movsd qword [ebp - 0x90], xmm0
movsd xmm0, qword [0x1008d5c8]
movsd qword [ebp - 0x98], xmm0
movsd xmm0, qword [0x1008d600]
movsd qword [ebp - 0xa0], xmm0
movsd xmm0, qword [0x1008d638]
movsd qword [ebp - 0xa8], xmm0
movsd xmm0, qword [0x1008d668]
movsd qword [ebp - 0x40], xmm0
mov ecx, dword [0x100e8960]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov edi, eax
mov dword [ebp - 0x30], edi
test edi, edi
je 0x10059caf
mov ecx, edi
call fcn.1007ad50
cmp dword [eax], 0
jne 0x10059caf
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
mov eax, dword [eax + 0x24]
call eax
test al, al
jne 0x10059caf
mov ecx, edi
call fcn.1007ae50
test al, al
je 0x10059caf
mov eax, dword [0x100e8ffc]
cmp edi, dword [eax]
je 0x10059caf
mov eax, dword [0x100e8994]
lea ecx, [edi + 8]
mov eax, dword [eax]
mov esi, dword [eax + 0x20]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
lea ecx, [ebp - 0x228]
push ecx
mov ecx, dword [0x100e8994]
push eax
call esi
cmp byte [ebp - 0xec], 0
jne 0x10059caf
mov esi, dword [ebp - 0x5c]
mov eax, dword [0x100e86d0]
cmp eax, dword [esi + 4]
jle 0x100599ca
push 0x100e86d0
call fcn.1007bfd7
mov eax, dword [0x100e86d0]
add esp, 4
cmp eax, 0xffffffff
jne 0x1005998b
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
add esp, 4
push 0x100e86d0
call fcn.1007bf8d
mov eax, dword [0x100e86d0]
add esp, 4
cmp eax, dword [esi + 4]
jle 0x100599ca
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x100599ca
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
add esp, 4
push 0x100e86d0
call fcn.1007bf8d
add esp, 4
mov eax, dword [edi]
lea ecx, [ebp - 0xb4]
push ecx
mov ecx, edi
mov eax, dword [eax + 0x474]
call eax
mov eax, dword [0x100e8ffc]
lea edx, [ebp - 0xc0]
movq xmm0, qword [ebp - 0xb4]
mov esi, dword [ebp - 0xac]
push edx
mov ecx, dword [eax]
movq qword [ebp - 0x78], xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 0x474]
call eax
movq xmm0, qword [ebp - 0x78]
sub esp, 0xc
mov eax, esp
sub esp, 0xc
mov ecx, esp
movq qword [eax], xmm0
movq xmm0, qword [ebp - 0xc0]
mov dword [eax + 8], esi
mov eax, dword [ebp - 0xb8]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
lea eax, [ebp - 0xcc]
push eax
call fcn.100750e0
mov ecx, dword [0x100e8ffc]
mov edi, eax
mov ecx, dword [ecx]
call fcn.10041640
mov ecx, dword [0x100f1b10]
mov esi, eax
mov edx, dword [ecx + 0x2c]
xor edx, ecx
mov dword [ebp - 0x64], edx
movss xmm0, dword [ebp - 0x64]
mulss xmm0, dword [esi]
addss xmm0, dword [ebp - 0x20]
mulss xmm0, dword [0x1008d534]
movaps xmm1, xmm0
movss dword [ebp - 0x6c], xmm0
addss xmm1, dword [0x1008d5f0]
call fcn.10075ac0
movss dword [ebp - 0x68], xmm0
movss xmm0, dword [ebp - 0x64]
mulss xmm0, dword [esi + 4]
addss xmm0, dword [ebp - 0x1c]
mulss xmm0, dword [0x1008d534]
movaps xmm1, xmm0
movss dword [ebp - 0x64], xmm0
addss xmm1, dword [0x1008d5f0]
call fcn.10075ac0
mulss xmm0, dword [ebp - 0x68]
movss xmm1, dword [ebp - 0x64]
movss dword [ebp - 0x7c], xmm0
call fcn.10075ac0
mulss xmm0, dword [ebp - 0x68]
movss xmm1, dword [ebp - 0x6c]
movss dword [ebp - 0x70], xmm0
call fcn.10075ac0
xorps xmm0, xmmword [0x10090a80]
movss dword [ebp - 0x74], xmm0
movss xmm0, dword [edi]
mulss xmm0, dword [0x1008d534]
movaps xmm1, xmm0
movss dword [ebp - 0x64], xmm0
addss xmm1, dword [0x1008d5f0]
call fcn.10075ac0
movss dword [ebp - 0x68], xmm0
movss xmm0, dword [edi + 4]
mulss xmm0, dword [0x1008d534]
movaps xmm1, xmm0
movss dword [ebp - 0x6c], xmm0
addss xmm1, dword [0x1008d5f0]
call fcn.10075ac0
mulss xmm0, dword [ebp - 0x68]
movss dword [ebp - 0x80], xmm0
movss xmm1, dword [ebp - 0x6c]
call fcn.10075ac0
mulss xmm0, dword [ebp - 0x68]
movss xmm1, dword [ebp - 0x64]
movss dword [ebp - 0x6c], xmm0
call fcn.10075ac0
movss xmm4, dword [ebp - 0x70]
xor eax, eax
movss xmm5, dword [ebp - 0x7c]
movaps xmm1, xmm4
mulss xmm1, dword [ebp - 0x6c]
movaps xmm2, xmm5
mulss xmm2, dword [ebp - 0x80]
xorps xmm0, xmmword [0x10090a80]
movss xmm3, dword [ebp - 0x74]
addss xmm2, xmm1
mulss xmm5, xmm5
mulss xmm4, xmm4
movaps xmm1, xmm3
mulss xmm1, xmm0
xorps xmm0, xmm0
addss xmm5, xmm4
mulss xmm3, xmm3
addss xmm2, xmm1
addss xmm5, xmm3
divss xmm2, xmm5
comiss xmm0, xmm2
movaps xmm0, xmm2
seta al
mov dword [ebp - 0x70], eax
call fcn.10040c20
xorps xmm1, xmm1
movss dword [ebp - 0x74], xmm0
cvtss2sd xmm1, xmm0
movsd xmm0, qword [ebp - 0x90]
subsd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10059be8
sqrtsd xmm0, xmm0
jmp 0x10059bed
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movaps xmm2, xmm0
mov eax, dword [ebp - 0x70]
movss xmm0, dword [ebp - 0x74]
movaps xmm1, xmm0
mulss xmm1, dword [0x1008d7f4]
cvtps2pd xmm1, xmm1
addsd xmm1, qword [ebp - 0x98]
cvtpd2ps xmm1, xmm1
mulss xmm1, xmm0
cvtps2pd xmm1, xmm1
subsd xmm1, qword [ebp - 0xa0]
cvtpd2ps xmm1, xmm1
mulss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
addsd xmm0, qword [ebp - 0xa8]
cvtpd2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
mulsd xmm2, xmm0
cvtsd2ss xmm1, xmm2
xorps xmm2, xmm2
cvtsi2ss xmm2, eax
movaps xmm0, xmm2
addss xmm0, xmm2
mulss xmm0, xmm1
subss xmm1, xmm0
cvtps2pd xmm0, xmm2
cvtps2pd xmm1, xmm1
mulsd xmm0, qword [ebp - 0x40]
addsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss xmm1, dword [0x1008d70c]
mulss xmm0, dword [0x1008d744]
comiss xmm1, xmm0
jbe 0x10059caf
mov ecx, dword [0x100f1b24]
cmp ecx, dword [0x100f1b28]
je 0x10059ca0
mov eax, dword [ebp - 0x30]
mov dword [ecx], eax
add dword [0x100f1b24], 4
jmp 0x10059caf
lea eax, [ebp - 0x30]
push eax
push ecx
mov ecx, 0x100f1b20
call fcn.100251f0
mov edx, dword [ebp - 0x58]
mov eax, dword [0x100e8968]
inc edx
mov dword [ebp - 0x58], edx
cmp edx, dword [eax + 0x18]
jle 0x100598b3
mov edi, dword [ebp - 0x5c]
mov eax, dword [0x100f1b20]
cmp eax, dword [0x100f1b24]
je 0x1005a18e
mov ecx, dword [ebp - 0x54]
nop dword [eax + eax]
cmp ecx, dword [eax]
je 0x10059cf4
add eax, 4
cmp eax, dword [0x100f1b24]
jne 0x10059ce0
jmp 0x1005a195
call fcn.10045870
mov ecx, dword [ebp - 0x54]
mov esi, eax
add ecx, 8
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
call edx
imul ecx, eax, 0xe4
lea edx, [ebp - 0x2c]
push edx
mov byte [ecx + esi + 0x7a], 1
mov ecx, dword [0x100e8994]
mov eax, dword [ecx]
call dword [eax + 0x48]
mov eax, dword [0x100e86d0]
cmp eax, dword [edi + 4]
jle 0x10059d66
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x10059d66
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
add esp, 4
push 0x100e86d0
call fcn.1007bf8d
add esp, 4
mov esi, dword [ebp - 0x54]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x474]
call eax
movq xmm0, qword [ebp - 0x20]
sub esp, 0xc
mov eax, dword [ebp - 0x18]
mov ecx, esp
sub esp, 0xc
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
mov ecx, esp
mov eax, dword [ebp - 0x60]
movq xmm0, qword [eax + 0x3c]
mov eax, dword [eax + 0x44]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
lea eax, [ebp - 0xcc]
push eax
call fcn.100750e0
movss xmm0, dword [eax + 4]
mov eax, dword [0x100e86d0]
movss dword [ebp - 0x54], xmm0
cmp eax, dword [edi + 4]
jle 0x10059e03
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x10059dfe
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
add esp, 4
push 0x100e86d0
call fcn.1007bf8d
add esp, 4
movss xmm0, dword [ebp - 0x54]
movss xmm2, dword [ebp - 0x28]
movaps xmm1, xmm2
subss xmm1, xmm0
movss xmm0, dword [0x1008d824]
comiss xmm1, dword [0x1008d78c]
movaps xmm3, xmm1
movss dword [ebp - 0x5c], xmm1
divss xmm3, dword [0x1008d7c0]
ja 0x10059e35
comiss xmm0, xmm1
jbe 0x10059e87
movaps xmm0, xmm3
call fcn.10040c20
movss dword [ebp - 0x60], xmm0
fld dword [ebp - 0x60]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [ebp - 0x5c]
xorps xmm0, xmm0
fstp dword [ebp - 0x58]
add esp, 4
comiss xmm0, xmm1
movss xmm0, dword [ebp - 0x58]
mulss xmm0, dword [0x1008d7c0]
jbe 0x10059e79
addss xmm0, xmm1
movss dword [ebp - 0x5c], xmm0
jmp 0x10059e82
subss xmm1, xmm0
movss dword [ebp - 0x5c], xmm1
movss xmm2, dword [ebp - 0x28]
cmp byte [0x100ec638], 0
je 0x10059ec3
movss xmm3, dword [0x100ec5f0]
subss xmm2, xmm3
movaps xmm0, xmm2
call fcn.10040c20
movss xmm1, dword [0x1008d540]
comiss xmm1, xmm0
jbe 0x10059ec3
movss xmm0, dword [0x100ec5f8]
movss dword [ebp - 0x28], xmm3
movss dword [ebp - 0x5c], xmm0
mov ecx, esi
mov byte [0x100ec638], 1
call fcn.10041560
mov dword [ebp - 0x44], 0
movss xmm1, dword [eax + 4]
movss xmm0, dword [eax]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
movss dword [ebp - 0x60], xmm0
sqrtss xmm0, dword [ebp - 0x60]
movss dword [ebp - 0x44], xmm0
movss xmm0, dword [0x1008d758]
comiss xmm0, dword [ebp - 0x44]
jbe 0x1005a172
movss xmm1, dword [ebp - 0x5c]
comiss xmm1, dword [0x1008d5b0]
mov eax, dword [edi + 4]
jbe 0x10059fdf
cmp dword [0x100e86d0], eax
jle 0x10059f65
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x10059f65
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
add esp, 4
push 0x100e86d0
call fcn.1007bf8d
add esp, 4
movss xmm1, dword [ebp - 0x54]
addss xmm1, dword [0x1008d760]
comiss xmm1, dword [0x1008d78c]
movaps xmm0, xmm1
movss dword [ebp - 0x54], xmm1
divss xmm0, dword [0x1008d7c0]
ja 0x10059f9c
movss xmm2, dword [0x1008d824]
comiss xmm2, xmm1
jbe 0x1005a158
call fcn.10040c20
movss dword [ebp - 0x60], xmm0
fld dword [ebp - 0x60]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [ebp - 0x54]
xorps xmm0, xmm0
fstp dword [ebp - 0x58]
add esp, 4
comiss xmm0, xmm1
movss xmm0, dword [ebp - 0x58]
mulss xmm0, dword [0x1008d7c0]
jbe 0x1005a14f
addss xmm1, xmm0
jmp 0x1005a153
movss xmm0, dword [0x1008d808]
comiss xmm0, xmm1
jbe 0x1005a0a9
cmp dword [0x100e86d0], eax
jle 0x1005a02f
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x1005a02f
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
add esp, 4
push 0x100e86d0
call fcn.1007bf8d
add esp, 4
movss xmm1, dword [ebp - 0x54]
subss xmm1, dword [0x1008d760]
comiss xmm1, dword [0x1008d78c]
movaps xmm0, xmm1
movss dword [ebp - 0x54], xmm1
divss xmm0, dword [0x1008d7c0]
ja 0x1005a066
movss xmm2, dword [0x1008d824]
comiss xmm2, xmm1
jbe 0x1005a158
call fcn.10040c20
movss dword [ebp - 0x60], xmm0
fld dword [ebp - 0x60]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [ebp - 0x54]
xorps xmm0, xmm0
fstp dword [ebp - 0x58]
add esp, 4
comiss xmm0, xmm1
movss xmm0, dword [ebp - 0x58]
mulss xmm0, dword [0x1008d7c0]
jbe 0x1005a14f
addss xmm1, xmm0
jmp 0x1005a153
cmp dword [0x100e86d0], eax
jle 0x1005a0e8
push 0x100e86d0
call fcn.1007bfd7
add esp, 4
cmp dword [0x100e86d0], 0xffffffff
jne 0x1005a0e8
push 0x10082a70
mov byte [0x100e86fc], 0
call fcn.1007be5e
add esp, 4
push 0x100e86d0
call fcn.1007bf8d
add esp, 4
movss xmm1, dword [ebp - 0x54]
comiss xmm1, dword [0x1008d78c]
movaps xmm0, xmm1
divss xmm0, dword [0x1008d7c0]
ja 0x1005a10e
movss xmm2, dword [0x1008d824]
comiss xmm2, xmm1
jbe 0x1005a153
call fcn.10040c20
movss dword [ebp - 0x60], xmm0
fld dword [ebp - 0x60]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm1, dword [ebp - 0x54]
xorps xmm0, xmm0
fstp dword [ebp - 0x58]
add esp, 4
comiss xmm0, xmm1
movss xmm0, dword [ebp - 0x58]
mulss xmm0, dword [0x1008d7c0]
jbe 0x1005a14f
addss xmm0, xmm1
movss dword [ebp - 0x54], xmm0
jmp 0x1005a158
subss xmm1, xmm0
movss dword [ebp - 0x54], xmm1
mov eax, dword [ebp - 0x84]
movss xmm0, dword [ebp - 0x54]
movss dword [eax + 0x33a4], xmm0
mov byte [eax + 0x33ca], 1
movss xmm0, dword [ebp - 0x28]
movss dword [0x100ec5f0], xmm0
movss xmm0, dword [ebp - 0x5c]
movss dword [0x100ec5f8], xmm0
jmp 0x1005a195
mov byte [0x100ec638], 0
lea esp, [ebp - 0x234]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.1007ba06
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8