Function at 0x100217d0
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x108
mov eax, dword [0x1011f00c]
xor eax, esp
mov dword [esp + 0x104], eax
cmp byte [0x1015819d], 0
push esi
push edi
mov edi, dword [ebp + 8]
je 0x100223e7
mov eax, dword [0x1011f20c]
mov ecx, dword [0x10158188]
dec eax
cmp eax, 3
ja case.default.0x1002180d
jmp dword [eax*4 + 0x10022400]
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
setne al
jmp 0x10021845
push ecx
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10021845
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
sete al
jmp 0x10021845
mov al, byte [esp + 0x13]
test al, al
je 0x100223e7
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x100223e7
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x100223e7
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
test eax, eax
je 0x100223e7
mov eax, dword [0x101226d4]
test eax, eax
jne 0x100218c2
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x101100f5
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x1011000d
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x101226d4], eax
mov ecx, dword [esp + 0xc]
cmp dword [ecx + eax], 0
jle 0x100223e7
call fcn.1000f990
cmp eax, 9
je 0x100223e7
call fcn.1000f990
cmp eax, 8
je 0x100223e7
call fcn.100231c0
test byte [eax + 8], 1
jne 0x100223e7
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
mov eax, dword [0x10158094]
mov byte [esp + 0x13], 0
mov dword [esp + 0xb8], 0x7f800000
mov dword [esp + 0xb4], 0x7f800000
mov dword [esp + 0xb0], 0x7f800000
mov dword [esp + 0xc4], 0x7f800000
mov dword [esp + 0xc0], 0x7f800000
mov dword [esp + 0xbc], 0x7f800000
mov dword [esp + 0xd0], 0x7f800000
mov dword [esp + 0xcc], 0x7f800000
mov dword [esp + 0xc8], 0x7f800000
test eax, eax
jne 0x100219a6
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10158094], eax
mov ecx, dword [esp + 0xc]
movss xmm0, dword [ecx + eax + 8]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x100219de
call fcn.100231c0
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x100219de
mov dword [0x1015835c], 0
movsd xmm2, qword [0x10117f10]
xor esi, esi
mov al, byte [esp + 0x13]
nop dword [eax]
test al, al
jne 0x10021c1b
movss xmm1, dword [0x1015835c]
cvtps2pd xmm0, xmm1
movss dword [esp + 0x14], xmm1
comisd xmm2, xmm0
jbe 0x10021c09
mov ecx, dword [0x101227d4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
mov ecx, dword [0x101227d4]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
addss xmm0, dword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
movss dword [esp + 0x1c], xmm0
call eax
mov ecx, dword [0x101227d4]
movss xmm0, dword [eax + 4]
mov eax, dword [ecx]
movss dword [esp + 0xc], xmm0
mov eax, dword [eax + 0x28]
call eax
movss xmm1, dword [esp + 0x14]
movss xmm0, dword [eax]
movss dword [esp + 0x18], xmm0
cvtps2pd xmm0, xmm1
mov dword [esp + 0x20], vtable.CTraceFilterWorldOnly.0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_cos_precise
movss xmm1, dword [esp + 0x14]
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x10117f78]
addss xmm0, dword [esp + 0x18]
subss xmm0, dword [esp + 0x18]
movss dword [esp + 0x24], xmm0
cvtps2pd xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
movss xmm5, dword [esp + 0xc]
xorps xmm1, xmm1
movss xmm4, dword [esp + 0x1c]
xorps xmm3, xmm3
movss xmm2, dword [esp + 0x24]
cvtsd2ss xmm1, xmm0
mov byte [esp + 0xa5], 1
movaps xmm0, xmm4
movss dword [esp + 0x70], xmm2
mulss xmm1, dword [0x10117f78]
addss xmm0, xmm3
mulss xmm2, xmm2
addss xmm1, xmm5
subss xmm0, xmm4
subss xmm1, xmm5
movss dword [esp + 0x78], xmm0
mulss xmm0, xmm0
movss dword [esp + 0x74], xmm1
mulss xmm1, xmm1
addss xmm1, xmm2
addss xmm1, xmm0
ucomiss xmm1, xmm3
lahf
test ah, 0x44
jp 0x10021b19
mov byte [esp + 0xa5], 0
mov ecx, dword [0x101226c4]
lea edx, [esp + 0xb0]
movss xmm0, dword [esp + 0x18]
push edx
lea edx, [esp + 0x24]
mov dword [esp + 0x94], 0
push edx
mov dword [esp + 0x9c], 0
lea edx, [esp + 0x68]
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa8], 0
mov byte [esp + 0xac], 1
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
movss dword [esp + 0x68], xmm0
movss dword [esp + 0x6c], xmm5
movss dword [esp + 0x70], xmm4
mov eax, dword [ecx]
push 0x201400b
push edx
call dword [eax + 0x14]
movss xmm0, dword [0x10117ec0]
comiss xmm0, dword [esp + 0xdc]
jbe 0x10021bd4
movss xmm0, dword [esp + 0xd0]
ucomiss xmm0, dword [0x10117e04]
lahf
test ah, 0x44
jnp 0x10021ef9
movss xmm1, dword [esp + 0x14]
addss xmm1, dword [0x10117e9c]
movsd xmm2, qword [0x10117f10]
cvtps2pd xmm0, xmm1
movss dword [esp + 0x14], xmm1
comisd xmm2, xmm0
ja 0x10021a13
mov al, byte [esp + 0x13]
movsd xmm2, qword [0x10117f10]
inc esi
cmp esi, 0x48
jl 0x100219f0
test al, al
je 0x100223e7
movss xmm0, dword [esp + 0xc8]
lea eax, [esp + 0x38]
mulss xmm0, dword [0x10118078]
lea ecx, [esp + 0x28]
push eax
mov dword [esp + 0x34], 0
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0xd0]
mulss xmm0, dword [0x10118078]
movss dword [esp + 0x30], xmm0
call fcn.1001f630
mov esi, dword [0x10158094]
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10021caa
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
movss xmm1, dword [eax + esi + 4]
movss xmm0, dword [eax + esi]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.100016f0
comiss xmm0, dword [0x10117ff4]
jbe 0x10021f1a
test byte [edi + 0x30], 4
jne 0x10021f1a
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10021d22
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
movss xmm0, dword [eax + esi + 8]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x10021d56
call fcn.100231c0
mov esi, dword [0x10158094]
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jp 0x10021f1a
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10021d9b
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
movss xmm0, dword [eax + esi + 4]
mov eax, dword [0x101227d4]
movss dword [esp + 0x1c], xmm0
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10021dec
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
fld dword [esp + 0x1c]
sub esp, 8
fstp dword [esp + 4]
fld dword [eax + esi]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll__hypotf
movss xmm0, dword [0x10117f88]
add esp, 8
fstp dword [esp + 0xc]
divss xmm0, dword [esp + 0xc]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_atan_precise
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x10117fbc]
movss dword [esp + 0x18], xmm0
test esi, esi
jne 0x10021e76
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
movq xmm0, qword [eax + esi]
lea ecx, [esp + 0x28]
lea eax, [esp + 0x54]
movq qword [esp + 0x28], xmm0
push eax
mov dword [esp + 0x34], 0
call fcn.1001f630
movss xmm0, dword [esp + 0x54]
lea ecx, [esp + 0x28]
subss xmm0, dword [esp + 0x38]
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x58]
subss xmm0, dword [esp + 0x3c]
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0x5c]
subss xmm0, dword [esp + 0x40]
movss dword [esp + 0x30], xmm0
call fcn.1001f720
movss xmm0, dword [esp + 0x2c]
comiss xmm0, dword [0x10117e04]
mov esi, dword [0x10158094]
movss xmm0, dword [esp + 0x3c]
jb 0x10021f12
addss xmm0, dword [esp + 0x18]
jmp 0x10021f20
movss xmm0, dword [esp + 0x14]
mov al, 1
movss dword [0x1015835c], xmm0
mov byte [esp + 0x13], al
jmp 0x10021c01
subss xmm0, dword [esp + 0x18]
jmp 0x10021f20
movss xmm0, dword [esp + 0x3c]
subss xmm0, dword [edi + 0x10]
mulss xmm0, dword [0x10117e38]
movss dword [esp + 0xc], xmm0
call fcn.1000ff40
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [esp + 0xc]
call fcn.1000ff60
mov eax, dword [0x101227d4]
movss dword [esp + 0x24], xmm0
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10021f94
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
movss xmm0, dword [eax + esi + 8]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x10021fce
call fcn.100231c0
mov esi, dword [0x10158094]
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x10021fce
movss xmm0, dword [0x10117f50]
jmp 0x10021fd6
movss xmm0, dword [0x10117fa8]
movss xmm1, dword [esp + 0x24]
lea eax, [edi + 0x30]
xorps xmm1, xmmword [0x10119820]
movaps xmm2, xmm0
mulss xmm2, dword [esp + 0x1c]
movss dword [esp + 0x18], xmm0
mulss xmm1, xmm0
movss xmm0, dword [esp + 0xdc]
comiss xmm0, dword [0x10117eac]
ja 0x10022017
test dword [eax], 0x618
mov dword [esp + 0x14], eax
jne 0x10022025
movss dword [edi + 0x24], xmm2
movss dword [edi + 0x28], xmm1
mov dword [esp + 0x14], eax
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x1002206a
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
movss xmm1, dword [eax + esi + 4]
movss xmm0, dword [eax + esi]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.100016f0
comiss xmm0, dword [0x10117ff4]
mov ecx, dword [esp + 0x14]
jbe 0x1002217c
test byte [ecx], 4
jne 0x1002217c
mov eax, dword [0x101227d4]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x100220e5
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x10158094], esi
movss xmm0, dword [eax + esi + 8]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x1002210f
call fcn.100231c0
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jp 0x10022178
movss xmm0, dword [edi + 0x24]
xorps xmm1, xmm1
comiss xmm1, xmm0
mov eax, dword [esp + 0x14]
movss xmm2, dword [0x10118028]
jbe 0x10022137
test byte [eax], 8
je 0x10022137
mov dword [edi + 0x24], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x10022148
test byte [eax], 0x10
je 0x10022148
mov dword [edi + 0x24], 0xc3e10000
movss xmm0, dword [edi + 0x28]
comiss xmm1, xmm0
jbe 0x10022164
test dword [eax], 0x400
je 0x10022164
mov dword [edi + 0x28], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x100223e7
test dword [eax], 0x200
jmp 0x100223de
mov ecx, dword [esp + 0x14]
movss xmm0, dword [esp + 0x18]
ucomiss xmm0, dword [0x10117fa8]
lahf
test ah, 0x44
jp 0x1002219f
mov edx, dword [ecx]
test dl, 8
je 0x1002219f
lea eax, [edi + 0x24]
mov dword [esp + 0x20], eax
jmp 0x100221b4
mov edx, dword [ecx]
lea eax, [edi + 0x24]
mov dword [esp + 0x20], eax
test edx, 0x610
je 0x10022382
movss xmm0, dword [eax]
mov eax, edx
and eax, 8
movss dword [esp + 0x24], xmm0
movss xmm0, dword [edi + 0x28]
mov dword [esp + 0x44], eax
mov eax, edx
and eax, 0x10
movss dword [esp + 0x1c], xmm0
mov dword [esp + 0x48], eax
mov eax, edx
and eax, 0x200
mov dword [esp + 0x18], 0
and edx, 0x400
mov dword [esp + 0x4c], eax
xor esi, esi
mov dword [esp + 0x50], edx
mov dword [esp + 0xc], esi
nop
mov eax, dword [0x10158098]
mov ecx, dword [eax + 0x1c]
dec ecx
call fcn.1001f800
cmp dword [esp + 0x44], 0
movd xmm1, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
cvtdq2ps xmm1, xmm1
je 0x10022226
movss dword [eax], xmm1
cmp dword [esp + 0x48], 0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
je 0x10022238
movss dword [eax], xmm0
cmp dword [esp + 0x4c], 0
je 0x10022244
movss dword [edi + 0x28], xmm0
cmp dword [esp + 0x50], 0
je 0x10022250
movss dword [edi + 0x28], xmm1
call fcn.100231c0
push edi
mov ecx, eax
call fcn.1000fbf0
call fcn.100231c0
mov ecx, dword [0x101227d4]
mov esi, eax
mov dword [ecx + 0x3348], 0
mov ecx, dword [esi + 0x34]
mov dword [ecx], 0
mov ecx, dword [esi + 0x30]
mov dword [ecx], 0xffffffff
mov ecx, dword [0x101580bc]
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [0x1012268c]
mov ecx, dword [esi]
mov dword [eax + 0x10], ecx
mov eax, dword [0x1012268c]
mov ecx, dword [esi + 4]
mov dword [eax + 0x14], ecx
mov ecx, dword [0x10158098]
mov al, byte [esi + 0x28]
mov byte [ecx + 8], al
mov al, byte [esi + 0x29]
mov byte [ecx + 0x18], al
mov eax, dword [0x101227d4]
mov dword [esp + 0x34], eax
mov eax, dword [0x10158094]
mov byte [esi + 0xf0], 0
test eax, eax
jne 0x10022302
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10158094], eax
mov ecx, dword [esp + 0x34]
movss xmm0, dword [ecx + eax + 8]
movss dword [esp + 0x34], xmm0
call fcn.100231c0
movss xmm1, dword [esp + 0x34]
movss xmm0, dword [eax + 0x18]
xorps xmm0, xmmword [0x10119820]
ucomiss xmm1, xmm0
lahf
test ah, 0x44
mov eax, dword [esp + 0x20]
jp 0x1002234d
movss xmm0, dword [eax]
movss xmm1, dword [edi + 0x28]
movss dword [esp + 0x24], xmm0
movss dword [esp + 0x1c], xmm1
jmp 0x10022359
movss xmm0, dword [esp + 0x24]
movss xmm1, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
add dword [esp + 0x18], 0x2d
sub esi, 0x2d
mov dword [esp + 0xc], esi
cmp esi, 0xfffffe3e
jg 0x10022200
mov ecx, dword [esp + 0x14]
movss dword [eax], xmm0
movss dword [edi + 0x28], xmm1
movss xmm0, dword [edi + 0x24]
xorps xmm1, xmm1
comiss xmm1, xmm0
movss xmm2, dword [0x10118028]
jbe 0x100223a6
test byte [ecx], 8
je 0x100223a6
mov dword [edi + 0x24], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x100223b7
test byte [ecx], 0x10
je 0x100223b7
mov dword [edi + 0x24], 0xc3e10000
movss xmm0, dword [edi + 0x28]
comiss xmm1, xmm0
jbe 0x100223d3
test dword [ecx], 0x400
je 0x100223d3
mov dword [edi + 0x28], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x100223e7
test dword [ecx], 0x200
je 0x100223e7
mov dword [edi + 0x28], 0xc3e10000
mov ecx, dword [esp + 0x10c]
pop edi
pop esi
xor ecx, esp
call fcn.100f1854
mov esp, ebp
pop ebp
ret 4