Function at 0x10020740
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 [0x1011e00c]
xor eax, esp
mov dword [esp + 0x104], eax
cmp byte [0x101205b1], 0
push esi
push edi
mov edi, dword [ebp + 8]
je 0x10021357
mov eax, dword [0x1011e214]
mov ecx, dword [0x1012059c]
dec eax
cmp eax, 3
ja case.default.0x1002077d
jmp dword [eax*4 + 0x10021370]
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
setne al
jmp 0x100207b5
push ecx
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x100207b5
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
sete al
jmp 0x100207b5
mov al, byte [esp + 0x13]
test al, al
je 0x10021357
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x10021357
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10021357
mov eax, dword [0x10120420]
mov dword [esp + 0xc], eax
test eax, eax
je 0x10021357
mov eax, dword [0x10120334]
test eax, eax
jne 0x10020832
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110195
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x10120334], eax
mov ecx, dword [esp + 0xc]
cmp dword [ecx + eax], 0
jle 0x10021357
call fcn.1000f8e0
cmp eax, 9
je 0x10021357
call fcn.1000f8e0
cmp eax, 8
je 0x10021357
call fcn.10023560
test byte [eax + 8], 1
jne 0x10021357
mov eax, dword [0x10120420]
mov dword [esp + 0xc], eax
mov eax, dword [0x101204a4]
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 0x10020916
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
mov ecx, dword [esp + 0xc]
movss xmm0, dword [ecx + eax + 8]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jnp 0x1002094e
call fcn.10023560
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jnp 0x1002094e
mov dword [0x101208a4], 0
movsd xmm2, qword [0x10116ff8]
xor esi, esi
mov al, byte [esp + 0x13]
nop dword [eax]
test al, al
jne 0x10020b8b
movss xmm1, dword [0x101208a4]
cvtps2pd xmm0, xmm1
movss dword [esp + 0x14], xmm1
comisd xmm2, xmm0
jbe 0x10020b79
mov ecx, dword [0x10120420]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
mov ecx, dword [0x10120420]
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 [0x10120420]
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 [0x10117058]
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 [0x10117058]
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 0x10020a89
mov byte [esp + 0xa5], 0
mov ecx, dword [0x10120324]
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 [0x10116f8c]
comiss xmm0, dword [esp + 0xdc]
jbe 0x10020b44
movss xmm0, dword [esp + 0xd0]
ucomiss xmm0, dword [0x10116ed4]
lahf
test ah, 0x44
jnp 0x10020e69
movss xmm1, dword [esp + 0x14]
addss xmm1, dword [0x10116f68]
movsd xmm2, qword [0x10116ff8]
cvtps2pd xmm0, xmm1
movss dword [esp + 0x14], xmm1
comisd xmm2, xmm0
ja 0x10020983
mov al, byte [esp + 0x13]
movsd xmm2, qword [0x10116ff8]
inc esi
cmp esi, 0x48
jl 0x10020960
test al, al
je 0x10021357
movss xmm0, dword [esp + 0xc8]
lea eax, [esp + 0x38]
mulss xmm0, dword [0x10117140]
lea ecx, [esp + 0x28]
push eax
mov dword [esp + 0x34], 0
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0xd0]
mulss xmm0, dword [0x10117140]
movss dword [esp + 0x30], xmm0
call fcn.1001f740
mov esi, dword [0x101204a4]
mov eax, dword [0x10120420]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10020c1a
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], esi
movss xmm1, dword [eax + esi + 4]
movss xmm0, dword [eax + esi]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10001660
comiss xmm0, dword [0x101170d0]
jbe 0x10020e8a
test byte [edi + 0x30], 4
jne 0x10020e8a
mov eax, dword [0x10120420]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10020c92
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], esi
movss xmm0, dword [eax + esi + 8]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jnp 0x10020cc6
call fcn.10023560
mov esi, dword [0x101204a4]
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jp 0x10020e8a
mov eax, dword [0x10120420]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10020d0b
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], esi
movss xmm0, dword [eax + esi + 4]
mov eax, dword [0x10120420]
movss dword [esp + 0x1c], xmm0
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10020d5c
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], 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 [0x10117068]
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 [0x10120420]
mov dword [esp + 0xc], eax
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x10117090]
movss dword [esp + 0x18], xmm0
test esi, esi
jne 0x10020de6
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], 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.1001f740
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.1001f830
movss xmm0, dword [esp + 0x2c]
comiss xmm0, dword [0x10116ed4]
mov esi, dword [0x101204a4]
movss xmm0, dword [esp + 0x3c]
jb 0x10020e82
addss xmm0, dword [esp + 0x18]
jmp 0x10020e90
movss xmm0, dword [esp + 0x14]
mov al, 1
movss dword [0x101208a4], xmm0
mov byte [esp + 0x13], al
jmp 0x10020b71
subss xmm0, dword [esp + 0x18]
jmp 0x10020e90
movss xmm0, dword [esp + 0x3c]
subss xmm0, dword [edi + 0x10]
mulss xmm0, dword [0x10116f00]
movss dword [esp + 0xc], xmm0
call fcn.1000fe90
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [esp + 0xc]
call fcn.1000feb0
mov eax, dword [0x10120420]
movss dword [esp + 0x24], xmm0
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10020f04
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], esi
movss xmm0, dword [eax + esi + 8]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jnp 0x10020f3e
call fcn.10023560
mov esi, dword [0x101204a4]
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jnp 0x10020f3e
movss xmm0, dword [0x10117030]
jmp 0x10020f46
movss xmm0, dword [0x1011707c]
movss xmm1, dword [esp + 0x24]
lea eax, [edi + 0x30]
xorps xmm1, xmmword [0x10118a80]
movaps xmm2, xmm0
mulss xmm2, dword [esp + 0x1c]
movss dword [esp + 0x18], xmm0
mulss xmm1, xmm0
movss xmm0, dword [esp + 0xdc]
comiss xmm0, dword [0x10116f78]
ja 0x10020f87
test dword [eax], 0x618
mov dword [esp + 0x14], eax
jne 0x10020f95
movss dword [edi + 0x24], xmm2
movss dword [edi + 0x28], xmm1
mov dword [esp + 0x14], eax
mov eax, dword [0x10120420]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10020fda
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], esi
movss xmm1, dword [eax + esi + 4]
movss xmm0, dword [eax + esi]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10001660
comiss xmm0, dword [0x101170d0]
mov ecx, dword [esp + 0x14]
jbe 0x100210ec
test byte [ecx], 4
jne 0x100210ec
mov eax, dword [0x10120420]
mov dword [esp + 0xc], eax
test esi, esi
jne 0x10021055
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [0x101204a4], esi
movss xmm0, dword [eax + esi + 8]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jnp 0x1002107f
call fcn.10023560
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x10117168]
lahf
test ah, 0x44
jp 0x100210e8
movss xmm0, dword [edi + 0x24]
xorps xmm1, xmm1
comiss xmm1, xmm0
mov eax, dword [esp + 0x14]
movss xmm2, dword [0x10117100]
jbe 0x100210a7
test byte [eax], 8
je 0x100210a7
mov dword [edi + 0x24], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x100210b8
test byte [eax], 0x10
je 0x100210b8
mov dword [edi + 0x24], 0xc3e10000
movss xmm0, dword [edi + 0x28]
comiss xmm1, xmm0
jbe 0x100210d4
test dword [eax], 0x400
je 0x100210d4
mov dword [edi + 0x28], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x10021357
test dword [eax], 0x200
jmp 0x1002134e
mov ecx, dword [esp + 0x14]
movss xmm0, dword [esp + 0x18]
ucomiss xmm0, dword [0x1011707c]
lahf
test ah, 0x44
jp 0x1002110f
mov edx, dword [ecx]
test dl, 8
je 0x1002110f
lea eax, [edi + 0x24]
mov dword [esp + 0x20], eax
jmp 0x10021124
mov edx, dword [ecx]
lea eax, [edi + 0x24]
mov dword [esp + 0x20], eax
test edx, 0x610
je 0x100212f2
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 [0x101204a8]
mov ecx, dword [eax + 0x1c]
dec ecx
call fcn.1001f950
cmp dword [esp + 0x44], 0
movd xmm1, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
cvtdq2ps xmm1, xmm1
je 0x10021196
movss dword [eax], xmm1
cmp dword [esp + 0x48], 0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
je 0x100211a8
movss dword [eax], xmm0
cmp dword [esp + 0x4c], 0
je 0x100211b4
movss dword [edi + 0x28], xmm0
cmp dword [esp + 0x50], 0
je 0x100211c0
movss dword [edi + 0x28], xmm1
call fcn.10023560
push edi
mov ecx, eax
call fcn.1000fb40
call fcn.10023560
mov ecx, dword [0x10120420]
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 [0x101204cc]
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [0x101202ec]
mov ecx, dword [esi]
mov dword [eax + 0x10], ecx
mov eax, dword [0x101202ec]
mov ecx, dword [esi + 4]
mov dword [eax + 0x14], ecx
mov ecx, dword [0x101204a8]
mov al, byte [esi + 0x28]
mov byte [ecx + 8], al
mov al, byte [esi + 0x29]
mov byte [ecx + 0x18], al
mov eax, dword [0x10120420]
mov dword [esp + 0x34], eax
mov eax, dword [0x101204a4]
mov byte [esi + 0xf0], 0
test eax, eax
jne 0x10021272
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
mov ecx, dword [esp + 0x34]
movss xmm0, dword [ecx + eax + 8]
movss dword [esp + 0x34], xmm0
call fcn.10023560
movss xmm1, dword [esp + 0x34]
movss xmm0, dword [eax + 0x18]
xorps xmm0, xmmword [0x10118a80]
ucomiss xmm1, xmm0
lahf
test ah, 0x44
mov eax, dword [esp + 0x20]
jp 0x100212bd
movss xmm0, dword [eax]
movss xmm1, dword [edi + 0x28]
movss dword [esp + 0x24], xmm0
movss dword [esp + 0x1c], xmm1
jmp 0x100212c9
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 0x10021170
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 [0x10117100]
jbe 0x10021316
test byte [ecx], 8
je 0x10021316
mov dword [edi + 0x24], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x10021327
test byte [ecx], 0x10
je 0x10021327
mov dword [edi + 0x24], 0xc3e10000
movss xmm0, dword [edi + 0x28]
comiss xmm1, xmm0
jbe 0x10021343
test dword [ecx], 0x400
je 0x10021343
mov dword [edi + 0x28], 0x43e10000
movaps xmm0, xmm2
comiss xmm0, xmm1
jbe 0x10021357
test dword [ecx], 0x200
je 0x10021357
mov dword [edi + 0x28], 0xc3e10000
mov ecx, dword [esp + 0x10c]
pop edi
pop esi
xor ecx, esp
call fcn.100f238c
mov esp, ebp
pop ebp
ret 4