Function at 0x10014d20
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x34
push ebx
push esi
mov esi, ecx
mov byte [esp + 0x1b], 1
push edi
mov edi, edx
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], edi
movss xmm0, dword [esi + 0xe0]
mov eax, dword [esi + 0x134]
movss dword [esp + 0x34], xmm0
movss xmm0, dword [esi + 0xe4]
movss dword [esp + 0x38], xmm0
movss xmm0, dword [esi + 0xe8]
mov dword [esp + 0x2c], eax
movss dword [esp + 0x3c], xmm0
call fcn.10002cc0
lea ecx, [esp + 0x34]
call fcn.10002a30
mov eax, dword [0x1004c8e8]
movaps xmm2, xmm0
movss xmm1, dword [0x1004743c]
sub esp, 8
movss dword [esp + 0x38], xmm0
mulss xmm2, dword [eax + 0x1c]
divss xmm1, xmm2
movss dword [esp + 0x2c], xmm1
fld dword [esp + 0x2c]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_ceil
mov ebx, dword [0x10f6d848]
add esp, 8
fstp dword [esp + 0x24]
cvttss2si ecx, dword [esp + 0x24]
cmp ebx, 2
jne 0x10014e0e
lea eax, [ecx - 1]
lea edx, [ebx + 0xc]
cmp eax, 0xc
ja 0x10014e2f
movss xmm0, dword [esi + 0xe4]
movss xmm1, dword [esi + 0xe0]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm1
comiss xmm0, dword [0x100472d4]
jbe 0x10014e2f
comiss xmm1, dword [0x100474b8]
cmova edx, ecx
jmp 0x10014e2f
cmp ebx, 3
jne 0x10014e2c
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
cdq
mov ecx, 0xe
idiv ecx
mov ebx, dword [0x10f6d848]
add edx, 2
jmp 0x10014e2f
mov edx, dword [ebp + 8]
mov eax, dword [0x10f6de3c]
sub eax, edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp ecx, 0xe
jle 0x10014e49
mov ecx, 0xe
jmp 0x10014e50
xor eax, eax
test ecx, ecx
cmovs ecx, eax
cmp byte [0x10f6d844], 0
je 0x10014eb3
test ebx, ebx
jne 0x10014e64
test ecx, ecx
setle bl
jmp 0x10014edb
cmp ebx, 1
jne 0x10014e8e
mov eax, dword [edi + 4]
mov bl, bl
cdq
mov dword [esp + 0x24], 0x1e
idiv dword [esp + 0x24]
cmp edx, 0xf
jge 0x10014edb
mov al, bl
movzx ebx, al
xor eax, eax
test ecx, ecx
cmovg ebx, eax
jmp 0x10014edb
cmp ebx, 2
jne 0x10014e9a
test ecx, ecx
setle bl
jmp 0x10014edb
cmp dword [0x10f6d848], 3
mov bl, 1
jne 0x10014edb
mov al, bl
xor edx, edx
test ecx, ecx
movzx ebx, al
cmovg ebx, edx
jmp 0x10014edb
mov cl, byte [0x10f6d7dc]
mov bl, 1
test cl, cl
je 0x10014ee1
cmp byte [0x11dba804], 0
mov al, bl
movzx ebx, al
sete cl
xor edx, edx
test cl, cl
mov byte [0x11dba804], cl
cmovne ebx, edx
mov cl, byte [0x10f6d7dc]
cmp byte [0x1004e40c], 0
jne 0x10014f01
mov byte [0x1004e40d], bl
test bl, bl
jne 0x10014f08
mov eax, dword [0x10f6de3c]
cmp eax, 0xe
jge 0x10014f01
inc eax
jmp 0x10014f0a
mov byte [0x1004e40d], 1
xor eax, eax
mov dword [0x10f6de3c], eax
test cl, cl
je case.default.0x100150cc
mov eax, dword [0x1004c8e8]
mov ebx, dword [eax + 0x14]
cmp ebx, 1
jl 0x10014f9e
mov edi, esi
nop word [eax + eax]
mov ecx, dword [0x1004c8e0]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
cmp ebx, eax
je 0x10014f90
mov ecx, dword [0x1004c8ec]
push ebx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov esi, eax
test esi, esi
je 0x10014f90
mov edx, dword [esi + 8]
lea ecx, [esi + 8]
mov edx, dword [edx + 0x20]
call edx
test al, al
jne 0x10014f90
cmp dword [esi + 0x87], 0
jne 0x10014f90
cmp byte [0x10f6d50e], al
jne 0x10014f8b
mov ecx, esi
call fcn.10002b70
mov ecx, edi
mov esi, eax
call fcn.10002b70
mov ecx, dword [esi]
cmp ecx, dword [eax]
je 0x10014f90
mov byte [esp + 0x1f], 0
dec ebx
cmp ebx, 1
jge 0x10014f30
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
push 0x45
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x10015294
cmp byte [0x10f6d7e5], al
je 0x10014fc1
cmp byte [esp + 0x1f], al
jne 0x10015294
cmp dword [esp + 0x2c], 9
je case.default.0x100150cc
mov eax, dword [0x10f6d858]
cmp eax, 1
jne 0x10014fe4
push edi
push esi
mov ecx, 0x11d4bcd0
call fcn.10037b40
jmp 0x10014ff5
cmp eax, 2
jne 0x10014ff5
push edi
push esi
mov ecx, 0x11d4bcd0
call fcn.10037d80
cmp byte [0x10f6d7de], 0
movss xmm3, dword [0x10047474]
je 0x100151ea
movss xmm0, dword [0x10047494]
comiss xmm0, dword [esp + 0x30]
jbe 0x100151ea
mov eax, dword [0x10f6d800]
test eax, eax
je 0x100150ab
cmp eax, 1
jne 0x10015038
cmp byte [0x1004e40d], 0
jmp 0x100150a9
cmp eax, 2
jne 0x10015048
cmp byte [0x1004e40d], 0
jne 0x100150ae
jmp 0x100150ab
cmp eax, 3
jne 0x1001506a
cmp byte [0x1004e40d], 0
je 0x10015060
movss xmm3, dword [0x10f6d834]
jmp 0x100150ae
movss xmm3, dword [0x10f6d838]
jmp 0x100150ae
cmp eax, 4
jne 0x100151ea
cmp byte [0x1004e40d], 0
je 0x10015099
cmp byte [0x1004d6ed], 0
sete al
mov byte [0x1004d6ed], al
test al, al
je 0x100150ae
movss xmm3, dword [0x100474a0]
jmp 0x100150ae
mov al, byte [0x1004d6ed]
test al, al
setne byte [0x1004d6ef]
test al, al
je 0x100150ae
xorps xmm3, xmm3
push edi
push esi
call fcn.10038000
test al, al
je 0x100151ea
mov eax, dword [0x10f6d804]
dec eax
cmp eax, 8
ja case.default.0x100150cc
jmp dword [eax*4 + 0x1001529c]
mov dword [edi + 0xc], 0x43340000
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 0xc], 0xc3340000
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 0xc], 0x428c0000
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 0xc], 0xc333fd71
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 0xc], 0x492a2d90
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 0xc], 0x492a2270
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [0x1004e40d], 0
je 0x10015175
movss xmm0, dword [0x100474cc]
movss dword [edi + 0xc], xmm0
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movss xmm0, dword [0x100474c8]
movss dword [edi + 0xc], xmm0
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [0x1004e40d], 0
je 0x100151b4
movss xmm0, dword [0x100474c8]
movss dword [edi + 0xc], xmm0
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movss xmm0, dword [0x100474cc]
movss dword [edi + 0xc], xmm0
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movss xmm0, dword [0x10f6d840]
movss dword [edi + 0xc], xmm0
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x10f6d7e8]
dec eax
cmp eax, 8
ja case.default.0x100151f5
jmp dword [eax*4 + 0x100152c0]
mov dword [edi + 0xc], 0x43340000
jmp case.default.0x100151f5
mov dword [edi + 0xc], 0xc3340000
jmp case.default.0x100151f5
mov dword [edi + 0xc], 0x428c0000
jmp case.default.0x100151f5
mov dword [edi + 0xc], 0xc333fd71
jmp case.default.0x100151f5
mov dword [edi + 0xc], 0x492a2d90
jmp case.default.0x100151f5
mov dword [edi + 0xc], 0x492a2270
jmp case.default.0x100151f5
cmp byte [0x1004e40d], 0
je 0x1001524e
movss xmm0, dword [0x100474cc]
jmp 0x10015260
cmp byte [0x1004e40d], 0
je 0x1001523b
movss xmm0, dword [0x100474c8]
jmp 0x10015260
movss xmm0, dword [0x10f6d830]
movss dword [edi + 0xc], xmm0
cmp dword [0x10f6d808], 2
je 0x1001527d
cmp byte [0x1004e40d], 0
je 0x1001527d
push 0
push 0
jmp 0x10015281
push 1
push 1
mov edx, esi
mov ecx, edi
call fcn.10014690
add esp, 8
mov byte [0x1004e40c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret