Function at 0x10049a70
Capabilities:
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 0x1018eb8d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebx
sub esp, 0x68
cmp byte [0x1131ffe8], 0
push ebx
push esi
push edi
mov edi, dword [ebx + 8]
mov dword [ebp - 0x10], esp
je 0x1004a48e
mov al, byte [0x1118f6f0]
mov byte [ebp - 0x1a], al
mov al, byte [0x11321694]
mov byte [ebp - 0x19], al
mov eax, dword [0x1131f3ec]
cmp dword [eax], 0
je 0x1004a459
push dword [0x1131ffe0]
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
call esi
test ax, ax
je 0x10049b00
cmp byte [0x11321694], 0
jne 0x10049b00
cmp byte [0x1118f6f0], 0
jne 0x10049b00
mov byte [0x11321694], 1
push dword [0x1131ffe4]
call esi
test ax, ax
je 0x10049b27
cmp byte [0x1118f6f0], 0
jne 0x10049b27
lea ecx, [edi + 0xc]
mov byte [0x11321694], 0
call fcn.1004a4c0
fstp st(0)
push dword [0x1131ffd8]
call esi
test ax, ax
je 0x10049d59
cmp byte [0x11321694], 0
jne 0x10049d59
cmp byte [0x1118f6f0], 0
jne 0x10049d59
mov ecx, dword [0x113216a8]
mov eax, 0x88888889
sub ecx, dword [0x113216a4]
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [ebp - 0x54], ecx
je 0x10049d59
mov eax, dword [0x113216a4]
or esi, 0xffffffff
movss xmm0, dword [0x110dc924]
add eax, 0x30
mov dword [ebp - 0x28], esi
xor esi, esi
movss dword [ebp - 0x34], xmm0
mov dword [ebp - 0x3c], eax
cmp ecx, esi
jbe 0x1004a4a4
mov ecx, dword [eax]
mov dword [ebp - 0x48], ecx
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, 0x66666667
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1004a4a9
mov eax, dword [ebp - 0x48]
movss xmm1, dword [eax + 0x1c]
movss xmm2, dword [eax + 0x20]
subss xmm2, dword [ebx + 0x10]
subss xmm1, dword [ebx + 0xc]
movss xmm0, dword [eax + 0x24]
subss xmm0, dword [ebx + 0x14]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x10049c0a
sqrtsd xmm0, xmm0
jmp 0x10049c0f
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [ebp - 0x34]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x10049c29
mov edx, esi
movss dword [ebp - 0x34], xmm0
mov dword [ebp - 0x28], edx
jmp 0x10049c2c
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x3c]
inc esi
mov ecx, dword [ebp - 0x54]
add eax, 0x3c
mov dword [ebp - 0x3c], eax
cmp ecx, esi
ja 0x10049ba2
cmp edx, 0xffffffff
je 0x1004a48e
push edx
mov ecx, 0x113216a4
call fcn.1004b180
mov ecx, dword [eax + 0x34]
sub ecx, dword [eax + 0x30]
mov eax, 0x66666667
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x10049d59
mov esi, dword [ebp - 0x28]
mov ecx, 0x113216a4
push esi
call fcn.1004b180
push 0
lea ecx, [eax + 0x30]
call fcn.1004b140
movss xmm1, dword [eax + 0x1c]
movss xmm2, dword [eax + 0x20]
subss xmm2, dword [ebx + 0x10]
subss xmm1, dword [ebx + 0xc]
movss xmm0, dword [eax + 0x24]
subss xmm0, dword [ebx + 0x14]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x10049cce
sqrtsd xmm0, xmm0
jmp 0x10049cd3
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0x1131ffec]
comiss xmm0, xmm1
jbe 0x10049d59
push esi
mov ecx, 0x113216a4
call fcn.1004b180
add eax, 0x30
lea ecx, [ebp - 0x50]
push eax
call fcn.100483b0
mov ecx, dword [ebp - 0x4c]
mov eax, 0x66666667
mov esi, dword [ebp - 0x50]
sub ecx, esi
imul ecx
mov ecx, 0x11321698
mov dword [ebp - 4], 0
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push esi
call fcn.10047570
lea ecx, [ebp - 0x50]
mov dword [ebp - 4], 0xffffffff
call fcn.1004abf0
cmp byte [0x1131ffd0], 0
mov byte [0x11321690], 1
je 0x10049d50
mov byte [0x11321691], 1
mov byte [0x11321692], 1
jmp 0x10049d66
cmp byte [0x11321690], 0
je 0x10049e8e
mov ecx, dword [0x1132169c]
mov eax, 0x66666667
mov esi, dword [0x11321698]
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1004a4a9
movss xmm1, dword [ebx + 0xc]
movss xmm2, dword [ebx + 0x10]
subss xmm2, dword [esi + 0x20]
subss xmm1, dword [esi + 0x1c]
movss xmm0, dword [ebx + 0x14]
subss xmm0, dword [esi + 0x24]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x10049dcf
sqrtsd xmm0, xmm0
jmp 0x10049dd4
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x1019bb40]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jb 0x10049dec
mov byte [0x11321690], 0
movss xmm0, dword [ebx + 0xc]
subss xmm0, dword [esi + 0x1c]
movss dword [ebp - 0x3c], xmm0
movss xmm0, dword [ebx + 0x10]
subss xmm0, dword [esi + 0x20]
movss dword [ebp - 0x54], xmm0
movss xmm0, dword [edi + 0x10]
divss xmm0, dword [0x1019b9e8]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x110da668]
movsd qword [ebp - 0x38], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x48], xmm0
movsd xmm0, qword [ebp - 0x38]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
movss xmm4, dword [ebp - 0x48]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movaps xmm0, xmm4
mulss xmm4, dword [ebp - 0x54]
mulss xmm0, dword [ebp - 0x3c]
movaps xmm2, xmm1
mulss xmm2, dword [ebp - 0x54]
mulss xmm1, dword [ebp - 0x3c]
addss xmm2, xmm0
subss xmm4, xmm1
xorps xmm2, xmmword [0x1019ba70]
mulss xmm2, dword [0x110da6a0]
mulss xmm4, dword [0x110da6a0]
movss dword [edi + 0x24], xmm2
movss dword [edi + 0x28], xmm4
mov al, byte [0x11321691]
test al, al
je 0x1004a01d
xor eax, eax
mov dword [edi + 0x44], eax
mov eax, 0x66666667
mov ecx, dword [0x1132169c]
mov esi, dword [0x11321698]
sub ecx, esi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1004a4ae
movss xmm0, dword [esi + 4]
lea ecx, [ebp - 0x4c]
movss xmm1, dword [esi]
sub esp, 8
movss dword [esp + 4], xmm0
movss dword [esp], xmm1
call fcn.100cf960
movss xmm0, dword [ebp - 0x4c]
lea esi, [edi + 0xc]
subss xmm0, dword [esi]
movss xmm2, dword [ebp - 0x48]
subss xmm2, dword [edi + 0x10]
movaps xmm1, xmm0
movss dword [ebp - 0x3c], xmm0
mulss xmm1, xmm0
movaps xmm0, xmm2
movss dword [ebp - 0x34], xmm2
mulss xmm0, xmm2
addss xmm1, xmm0
addss xmm1, dword [0x1019b994]
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10049f30
sqrtsd xmm0, xmm0
jmp 0x10049f35
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x1019bb40]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
ja 0x10049f52
cmp byte [0x1131ffd0], 0
mov dword [ebp - 0x28], esi
jne 0x10049f5f
lea eax, [edi + 0xc]
mov byte [0x11321691], 0
mov dword [ebp - 0x28], eax
fld dword [ebp - 0x3c]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll__fdclass
add esp, 4
test ax, ax
jg 0x10049f9b
movss xmm0, dword [ebp - 0x3c]
sub esp, 8
mov dword [esp + 4], 0x43b40000
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fstp dword [ebp - 0x54]
movss xmm0, dword [ebp - 0x54]
add esp, 8
jmp 0x10049f9e
xorps xmm0, xmm0
fld dword [ebp - 0x34]
push ecx
fstp dword [esp]
movss dword [ebp - 0x3c], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__fdclass
add esp, 4
test ax, ax
jg 0x10049fdf
movss xmm0, dword [ebp - 0x34]
sub esp, 8
mov dword [esp + 4], 0x43b40000
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fstp dword [ebp - 0x54]
movss xmm1, dword [ebp - 0x54]
add esp, 8
jmp 0x10049fe2
xorps xmm1, xmm1
divss xmm1, dword [0x1131fff4]
mov eax, dword [ebp - 0x28]
push esi
movss xmm2, dword [ebp - 0x3c]
divss xmm2, dword [0x1131fff4]
addss xmm1, dword [edi + 0x10]
addss xmm2, dword [eax]
movss dword [edi + 0x10], xmm1
movss dword [eax], xmm2
mov ecx, dword [0x113200e0]
mov eax, dword [ecx]
call dword [eax + 0x4c]
mov al, byte [0x11321691]
cmp byte [0x11321692], 0
je 0x1004a182
test al, al
jne 0x1004a182
cmp byte [0x11321690], al
jne 0x1004a182
mov eax, dword [0x11321698]
cmp eax, dword [0x1132169c]
je 0x1004a182
push 0
mov ecx, 0x11321698
call fcn.1004b140
movss xmm0, dword [ebx + 0x10]
movss xmm2, dword [ebx + 0xc]
movss xmm1, dword [ebx + 0x14]
subss xmm2, dword [eax + 0x1c]
subss xmm0, dword [eax + 0x20]
subss xmm1, dword [eax + 0x24]
mulss xmm2, xmm2
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm2, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1004a09f
sqrtsd xmm0, xmm0
jmp 0x1004a0a4
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x1019bb40]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
jbe 0x1004a182
push 0
mov ecx, 0x11321698
call fcn.1004b140
push 0
mov ecx, 0x11321698
movss xmm0, dword [eax]
movss dword [ebp - 0x54], xmm0
call fcn.1004b140
movss xmm2, dword [ebp - 0x54]
xorps xmm0, xmm0
subss xmm2, dword [edi + 0xc]
subss xmm0, dword [edi + 0x14]
movss xmm1, dword [eax + 4]
subss xmm1, dword [edi + 0x10]
mulss xmm2, xmm2
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1004a11c
sqrtsd xmm0, xmm0
jmp 0x1004a121
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [0x1019bb40]
cvtsd2ss xmm0, xmm0
comiss xmm1, xmm0
ja 0x1004a13b
cmp byte [0x1131ffd0], 0
jne 0x1004a182
mov ecx, dword [0x1118f6f8]
mov byte [0x1118f6f0], 1
cmp ecx, 0x11321698
je 0x1004a176
mov esi, dword [0x11321698]
mov eax, 0x66666667
mov edx, dword [0x1132169c]
sub edx, esi
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push esi
call fcn.10047570
mov byte [0x11321692], 0
jmp 0x1004a48e
push dword [0x1131ffdc]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1004a20a
cmp byte [0x1118f6f0], 0
je 0x1004a20a
cmp byte [0x11321694], 0
jne 0x1004a20a
push dword [0x1118f6f4]
mov ecx, dword [0x1118f6f8]
mov byte [0x11321690], 0
mov byte [0x11321691], 0
call fcn.1004b140
push dword [0x1118f6f4]
mov ecx, dword [0x1118f6f8]
movss xmm0, dword [eax]
movss dword [ebp - 0x54], xmm0
call fcn.1004b140
movss xmm1, dword [ebp - 0x54]
movss xmm0, dword [eax + 4]
movss dword [edi + 0xc], xmm1
movss dword [edi + 0x10], xmm0
mov dword [edi + 0x14], 0
mov byte [0x1118f6f0], 0
mov dword [0x1118f6f4], 0
cmp byte [ebp - 0x19], 0
je 0x1004a256
mov eax, dword [0x1118f47c]
mov ecx, dword [eax]
mov eax, dword [0x11320304]
push dword [eax + 0x1c]
push 0
call ecx
mov eax, dword [0x1131f3ec]
mov ecx, dword [eax]
call fcn.1003ab00
sub esp, 0xc
mov ecx, esp
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
lea ecx, [ebp - 0x7c]
push edi
call fcn.10048450
push eax
mov ecx, 0x11321698
call fcn.1004ce10
cmp byte [ebp - 0x1a], 0
je 0x1004a459
mov ecx, dword [0x1118f6f4]
lea esi, [edi + 0xc]
movq xmm0, qword [esi]
mov eax, dword [esi + 8]
mov dword [ebp - 0x34], ecx
push ecx
mov ecx, 0x11321698
mov dword [ebp - 4], 1
movq qword [ebp - 0x50], xmm0
mov dword [ebp - 0x48], eax
call fcn.1004b140
mov edx, eax
mov ecx, dword [edx]
mov dword [esi], ecx
mov ecx, dword [edx + 4]
mov dword [edi + 0x10], ecx
mov ecx, dword [edx + 8]
movq xmm0, qword [esi]
mov dword [edi + 0x24], ecx
mov eax, dword [edx + 0xc]
mov dword [edi + 0x28], eax
mov eax, dword [edx + 0x10]
mov dword [edi + 0x2c], eax
mov eax, dword [edx + 0x14]
mov dword [edi + 0x30], eax
movzx eax, word [edx + 0x18]
mov word [edi + 0x44], ax
movzx eax, word [edx + 0x1a]
mov word [edi + 0x46], ax
cmp byte [0x1131ffd0], 0
movq qword [ebp - 0x30], xmm0
je 0x1004a2e4
mov ecx, dword [0x113200e0]
push esi
mov eax, dword [ecx]
call dword [eax + 0x4c]
jmp 0x1004a3fc
movss xmm0, dword [ebp - 0x50]
movss xmm1, dword [ebp - 0x2c]
movss xmm2, dword [0x110da810]
movss dword [esi], xmm0
movss xmm0, dword [ebp - 0x4c]
movss dword [edi + 0x10], xmm0
movss xmm0, dword [ebp - 0x48]
movss dword [edi + 0x14], xmm0
xorps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x1004a31b
movaps xmm3, xmm2
jmp 0x1004a31e
xorps xmm3, xmm3
addss xmm3, xmm1
movss xmm1, dword [edi + 0x10]
comiss xmm0, xmm1
jbe 0x1004a32f
movaps xmm0, xmm2
addss xmm0, xmm1
comiss xmm3, xmm0
movaps xmm1, xmm0
subss xmm1, xmm3
andps xmm1, xmmword [0x1019ba60]
ja 0x1004a350
movaps xmm0, xmm2
subss xmm0, xmm1
movaps xmm1, xmm0
movss xmm0, dword [edi + 0x24]
subss xmm2, xmm1
movss dword [ebp - 0x3c], xmm0
movaps xmm0, xmm2
mulss xmm2, dword [0x1019b9b4]
addss xmm0, dword [0x1019bb78]
movss dword [ebp - 0x48], xmm2
mulss xmm0, dword [0x1019b9b4]
cvtps2pd xmm0, xmm0
movsd qword [ebp - 0x30], xmm0
cvtps2pd xmm0, xmm2
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 0x3c]
movss dword [ebp - 0x54], xmm0
movsd xmm0, qword [ebp - 0x30]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
movss xmm2, dword [ebp - 0x54]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
mulss xmm1, dword [edi + 0x28]
addss xmm2, xmm1
movss xmm1, dword [ebp - 0x48]
cvtps2pd xmm0, xmm1
movss dword [edi + 0x24], xmm2
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 0x3c]
movss dword [ebp - 0x54], xmm0
movsd xmm0, qword [ebp - 0x30]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
movss xmm1, dword [ebp - 0x54]
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [edi + 0x28]
addss xmm1, xmm0
movss dword [edi + 0x28], xmm1
mov ecx, dword [0x1132169c]
mov eax, 0x66666667
sub ecx, dword [0x11321698]
mov esi, dword [ebp - 0x34]
imul ecx
inc esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jne 0x1004a434
mov byte [0x1118f6f0], 0
mov dword [0x1118f6f4], 0
jmp 0x1004a459
mov dword [0x1118f6f4], esi
jmp 0x1004a459
push dword [0x1131ffd4]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1004a48e
cmp byte [0x11321694], 0
jne 0x1004a48e
cmp byte [0x1118f6f0], 0
jne 0x1004a48e
mov eax, dword [0x11321698]
cmp eax, dword [0x1132169c]
je 0x1004a48e
mov dword [0x1132169c], eax
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x10
call fcn.100379a0
call fcn.100379a0
call fcn.100379a0
int3