Function at 0x100aa790
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 0x1012d4cb
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xa8
mov eax, dword [0x1014600c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0x39
mov esi, 0x861110
call esi
mov edi, 0x85ec20
mov ecx, eax
call edi
test al, al
jne 0x100ab2b8
push 0xc
call esi
mov ecx, eax
call edi
test al, al
jne 0x100ab2b8
push 0x48
call esi
mov ecx, eax
call edi
test al, al
jne 0x100ab2b8
push 0x41
call esi
mov ecx, eax
call edi
test al, al
jne 0x100ab2b8
cmp dword [0x1018b6a0], 1
je 0x100ab2b8
mov ecx, dword [0x10549af8]
mov eax, 0x2aaaaaab
sub ecx, dword [0x10549af4]
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x100ab2b8
xor esi, esi
mov byte [0x10549af1], 1
cmp byte [0x10549b20], 1
mov dword [ebp - 0x9c], esi
jne 0x100aa898
cmp dword [0x102c1460], esi
je 0x100aa898
movd xmm0, dword [0xe61e58]
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0xe7c3d8]
mulss xmm0, dword [0x1013c1d8]
subss xmm0, dword [0x1013d0ac]
cvttss2si esi, xmm0
mov dword [ebp - 0x9c], esi
cmp byte [0x10549b21], 1
jne 0x100aaa19
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x100aaa12
mov edi, dword [0x10549b10]
movd xmm2, dword [0x879340c]
movd xmm0, dword [0x10549b14]
movd xmm4, dword [0x10549b1c]
lea eax, [edi + esi]
movd xmm1, eax
mov eax, dword [0x10549b18]
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm2, xmm2
movd xmm3, eax
comiss xmm1, xmm2
cvtdq2ps xmm0, xmm0
cvtdq2ps xmm3, xmm3
cvtdq2ps xmm4, xmm4
ja 0x100aa94d
addss xmm1, xmm3
comiss xmm2, xmm1
ja 0x100aa94d
movd xmm1, dword [0x8793410]
cvtdq2ps xmm1, xmm1
comiss xmm0, xmm1
ja 0x100aa94d
addss xmm0, xmm4
comiss xmm1, xmm0
ja 0x100aa94d
cmp byte [0x10549b22], 0
jne 0x100aa95a
mov byte [0x10549b22], 1
mov cx, word [0x879340c]
mov word [0x10549b24], cx
mov si, word [0x8793410]
mov word [0x10549b26], si
jmp 0x100aa968
cmp byte [0x10549b22], 0
je 0x100aaa19
mov si, word [0x10549b26]
mov cx, word [0x10549b24]
cmp dword [0xe61e58], 0x550
jl 0x100aa98b
cmp dword [0x102c1460], 0
je 0x100aa98b
add eax, 0x2c1
movd xmm1, eax
cvtdq2ps xmm1, xmm1
jmp 0x100aa993
movss xmm1, dword [0x1013d20c]
mov edx, dword [0x879340c]
movsx eax, cx
sub edx, eax
movsx eax, si
add edx, edi
mov esi, 1
mov dword [0x10549b10], edx
mov ecx, dword [0x8793410]
sub ecx, eax
add ecx, dword [0x10549b14]
cmp edx, esi
cmovl edx, esi
cmp ecx, esi
cmovl ecx, esi
movd xmm0, edx
cvtdq2ps xmm0, xmm0
minss xmm1, xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
cvttss2si eax, xmm1
movss xmm1, dword [0x1013d084]
minss xmm1, xmm0
mov dword [0x10549b10], eax
cvttss2si eax, xmm1
mov dword [0x10549b14], eax
movzx eax, word [0x879340c]
mov word [0x10549b24], ax
movzx eax, word [0x8793410]
mov word [0x10549b26], ax
jmp 0x100aaa19
mov byte [0x10549b22], 0
push 1
mov eax, 0x635fd0
call eax
movd xmm0, dword [0x10549b1c]
mov dword [esp], 0
mov eax, dword [0x10549b10]
mov edi, dword [ebp - 0x9c]
add eax, edi
push 1
cvtdq2ps xmm0, xmm0
push 1
sub esp, 0x20
mov dword [esp + 0x1c], 0x3f800000
mov dword [esp + 0x18], 0x3f800000
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
movss dword [esp + 0xc], xmm0
movd xmm0, dword [0x10549b18]
cvtdq2ps xmm0, xmm0
movss dword [esp + 8], xmm0
movd xmm0, dword [0x10549b14]
cvtdq2ps xmm0, xmm0
movss dword [esp + 4], xmm0
movd xmm0, eax
mov eax, 0x637c60
cvtdq2ps xmm0, xmm0
movss dword [esp], xmm0
push dword [0x10549b0c]
call eax
add esp, 0x30
mov ecx, 0x10158cf0
push 0x13c
call fcn.10043ca0
movd xmm0, dword [0x10549b14]
mov ecx, eax
mov eax, dword [0x10549b18]
push ecx
push dword [0xe8c58c]
cvtdq2ps xmm0, xmm0
push 8
push 0
cdq
push 0xff19bdff
sub eax, edx
addss xmm0, dword [0x1013cc48]
push 1
sar eax, 1
add eax, dword [0x10549b10]
push 0
cvttss2si esi, xmm0
add eax, edi
push esi
push eax
push 0x10191cb0
call fcn.10077cb0
push dword [0x10549b1c]
mov eax, dword [0x10549b10]
push dword [0x10549b18]
add eax, edi
push dword [0x10549b14]
push eax
mov eax, 0x790b10
call eax
add esp, 0x38
test al, al
je 0x100aab6c
push 1
mov eax, 0x791070
call eax
add esp, 4
test eax, eax
je 0x100aab6c
cmp byte [0x8793386], 0
je 0x100aab6c
mov eax, 0x83c080
call eax
cmp byte [0x10549af0], 1
jne 0x100aab63
mov byte [0x10549af0], 0
jmp 0x100ab2bf
mov byte [0x10549af0], 1
jmp 0x100aab79
cmp byte [0x10549af0], 0
je 0x100ab2bf
movd xmm0, dword [0x10549b18]
mov eax, dword [0x10549b10]
push ecx
mov dword [esp], 0
add eax, edi
push 1
push 1
sub esp, 0x20
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x1c], 0x3f800000
mov dword [esp + 0x18], 0x3f800000
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x433e0000
movss dword [esp + 8], xmm0
movd xmm0, dword [0x10549b14]
cvtdq2ps xmm0, xmm0
addss xmm0, dword [0x1013ccd4]
movss dword [esp + 4], xmm0
movd xmm0, eax
mov eax, 0x637c60
cvtdq2ps xmm0, xmm0
movss dword [esp], xmm0
push 0x13e7f
call eax
mov eax, dword [0x10549b10]
add esp, 0x30
movd xmm3, dword [0x879340c]
add eax, edi
movd xmm1, dword [0x10549b14]
cvtdq2ps xmm3, xmm3
movd xmm2, eax
cvtdq2ps xmm2, xmm2
cvtdq2ps xmm1, xmm1
comiss xmm2, xmm3
ja 0x100aaca3
movd xmm0, dword [0x10549b18]
cvtdq2ps xmm0, xmm0
addss xmm0, xmm2
comiss xmm3, xmm0
ja 0x100aaca3
movd xmm0, dword [0x8793410]
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
ja 0x100aaca3
addss xmm1, dword [0x1013cf80]
comiss xmm0, xmm1
ja 0x100aaca3
mov eax, dword [0x879337c]
test eax, eax
jle 0x100aac7d
mov eax, dword [0x10549b00]
test eax, eax
jle 0x100aac70
add eax, 0xfffffffb
mov dword [0x10549b00], eax
mov eax, dword [0x879337c]
dec eax
mov dword [0x879337c], eax
test eax, eax
jns 0x100aac9c
mov eax, dword [0x10549b00]
cmp eax, 0x64
jge 0x100aac91
add eax, 5
mov dword [0x10549b00], eax
mov eax, dword [0x879337c]
inc eax
mov dword [0x879337c], eax
mov byte [0x10549b05], 0
mov ecx, dword [0x10549af8]
mov eax, 0x2aaaaaab
mov esi, dword [0x10549af4]
sub ecx, esi
imul ecx
mov dword [ebp - 0x94], 0
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x1013d6c0]
mov eax, dword [0x10549b00]
inc eax
subsd xmm1, qword [0x1013c6f0]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm1, qword [0x1013c920]
mulsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [ebp - 0xac], eax
lea edi, [eax + eax*2]
shl edi, 3
mov dword [ebp - 0x90], edi
nop dword [eax + eax]
mov ecx, dword [0x10549af8]
mov eax, 0x2aaaaaab
sub ecx, esi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0xac], eax
jae 0x100ab28a
cmp esi, dword [0x10549af8]
je 0x100ab28a
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
mov dword [ebp - 4], 0
mov ecx, 0x1014eb34
mov eax, dword [edi + esi]
push eax
mov dword [ebp - 0xa0], eax
call fcn.10043f30
test eax, eax
je 0x100aad87
lea edx, [eax + 7]
jmp 0x100aad9f
push dword [ebp - 0xa0]
mov eax, 0x590dd0
call eax
mov esi, dword [0x10549af4]
add esp, 4
mov edx, eax
test edx, edx
je 0x100aadb5
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100aada8
sub ecx, esi
push ecx
push edx
jmp 0x100aaddd
mov eax, dword [esi + edi]
test eax, eax
je 0x100aadd6
lea ecx, [ebp - 0x44]
cmp eax, 0x2a
je 0x100aadcd
push 8
push str.Unknown.
jmp 0x100aade0
push 0xa
push str.Red_Dragon
jmp 0x100aade0
push 0xc
push str.Bull_Fighter
lea ecx, [ebp - 0x44]
call fcn.1000c7d0
mov eax, dword [0x10549af4]
lea ecx, [ebp - 0x8c]
mov eax, dword [eax + edi + 8]
cdq
push edx
push eax
call fcn.100ab6b0
mov esi, eax
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x74]
mov eax, dword [0x10549af4]
mov eax, dword [eax + edi + 4]
cdq
push edx
push eax
call fcn.100ab6b0
push 0x10137094
mov edx, eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x5c]
call fcn.100824b0
add esp, 0x14
mov dword [ebp - 0xa0], eax
mov edx, eax
mov byte [ebp - 4], 3
mov ecx, dword [edx + 0x14]
mov edi, dword [edx + 0x10]
sub ecx, edi
mov eax, dword [esi + 0x10]
mov dword [ebp - 0xa4], eax
cmp eax, ecx
jbe 0x100aaf7a
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0x98], eax
sub eax, ecx
cmp eax, edi
jb 0x100aaf7a
cmp dword [edx + 0x14], 0x10
jb 0x100aae78
mov edx, dword [edx]
mov dword [ebp - 0xa0], edx
cmp edi, eax
ja 0x100aaf2e
cmp dword [ebp - 0x98], 0x10
lea eax, [edi + ecx]
mov dword [esi + 0x10], eax
mov ecx, esi
mov dword [ebp - 0xa8], esi
jb 0x100aae9f
mov ecx, dword [esi]
mov dword [ebp - 0xa8], ecx
lea eax, [edi + edx]
mov dword [ebp - 0xb4], eax
cmp eax, ecx
jbe 0x100aaed4
mov eax, dword [ebp - 0xa4]
add eax, ecx
cmp edx, eax
ja 0x100aaed4
cmp ecx, edx
ja 0x100aaec8
mov dword [ebp - 0x98], 0
jmp 0x100aaeda
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x98], eax
jmp 0x100aaeda
mov dword [ebp - 0x98], edi
mov eax, dword [ebp - 0xa4]
inc eax
push eax
push ecx
lea eax, [edi + ecx]
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
push dword [ebp - 0x98]
push dword [ebp - 0xa0]
push dword [ebp - 0xa8]
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0x98]
add esp, 0xc
mov eax, dword [ebp - 0xb4]
sub edi, ecx
add eax, ecx
push edi
push eax
mov eax, dword [ebp - 0xa8]
add eax, ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
jmp 0x100aaf48
push edi
push edx
push ecx
mov byte [ebp - 0xb0], 0
mov ecx, esi
push dword [ebp - 0xb0]
push edi
call fcn.100ab4d0
mov esi, eax
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
movups xmm0, xmmword [esi]
movups xmmword [ebp - 0x2c], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [ebp - 0x1c], xmm0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0xf
mov byte [esi], 0
jmp 0x100aafb2
push esi
mov ecx, edx
call fcn.1000eaf0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x2c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x1c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x48]
cmp edx, 0x10
jb 0x100aafea
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100aafe0
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ab284
push edx
push ecx
call fcn.100ddf04
add esp, 8
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x60]
cmp edx, 0x10
jb 0x100ab034
mov ecx, dword [ebp - 0x74]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ab02a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ab284
push edx
push ecx
call fcn.100ddf04
add esp, 8
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0xf
mov byte [ebp - 0x74], 0
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x78]
cmp edx, 0x10
jb 0x100ab081
mov ecx, dword [ebp - 0x8c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ab077
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ab284
push edx
push ecx
call fcn.100ddf04
add esp, 8
mov edx, dword [0x10549af4]
mov edi, 0xff19bdff
mov ecx, dword [ebp - 0x90]
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 0xf
mov byte [ebp - 0x8c], 0
cmp byte [edx + ecx + 0xc], 0
je 0x100ab0d7
cmp byte [edx + ecx + 0x14], 0
mov edi, 0xffcc6699
mov eax, 0xff19bdff
cmove edi, eax
cmp dword [0x10549b08], 0x14
jl 0x100ab0d7
cmp byte [0x10549b04], 0
sete al
mov byte [edx + ecx + 0x14], al
cmp dword [ebp - 0x30], 0x10
lea ecx, [ebp - 0x44]
mov esi, dword [ebp - 0x94]
cmovae ecx, dword [ebp - 0x44]
add esi, 0x24
mov edx, dword [0x10549b14]
mov eax, dword [0x10549b10]
add edx, esi
mov esi, dword [ebp - 0x9c]
push ecx
push 0x10136a58
mov ecx, 0xe8c58c
add esi, 0xa
add eax, esi
push dword [ecx]
push 1
push 0
push edi
push 0
push 0x4b
push edx
push eax
push 0x10191cb0
call fcn.10077cb0
mov eax, dword [0x10549b14]
lea edx, [ebp - 0x2c]
mov esi, dword [ebp - 0x94]
add esp, 0x2c
cmp dword [ebp - 0x18], 0x10
mov ecx, dword [ebp - 0x9c]
cmovae edx, dword [ebp - 0x2c]
add eax, 0x24
add esi, eax
add ecx, 0xfffffff4
mov eax, dword [0x10549b18]
add eax, dword [0x10549b10]
push edx
push 0x10136a58
add eax, ecx
mov ecx, 0xe8c58c
push dword [ecx]
push 7
push 0
push edi
push 0
push 0
push esi
push eax
push 0x10191cb0
call fcn.10077cb0
mov eax, dword [ebp - 0x9c]
add esp, 0x2c
mov ecx, dword [0x10549b10]
add eax, 0xa
mov edx, dword [0x102ca398]
add eax, ecx
mov esi, dword [ebp - 0x94]
cmp edx, eax
jl 0x100ab1d6
lea eax, [ecx + 0x5a]
cmp edx, eax
jg 0x100ab1d6
mov ecx, dword [0x10549b14]
mov edx, dword [0x102ca3a0]
lea eax, [ecx + 0x12]
add eax, esi
cmp edx, eax
jl 0x100ab1d6
mov edi, dword [ebp - 0x90]
lea eax, [ecx + 0x21]
add eax, esi
cmp edx, eax
jg 0x100ab1dc
mov eax, dword [0x10549af4]
mov byte [eax + edi + 0xc], 0
jmp 0x100ab1dc
mov edi, dword [ebp - 0x90]
add esi, 0xf
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x94], esi
cmp edx, 0x10
jb 0x100ab219
mov ecx, dword [ebp - 0x2c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ab20f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ab284
push edx
push ecx
call fcn.100ddf04
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
cmp edx, 0x10
jb 0x100ab262
mov ecx, dword [ebp - 0x44]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ab258
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ab284
push edx
push ecx
call fcn.100ddf04
add esp, 8
inc dword [ebp - 0xac]
add edi, 0x18
mov dword [ebp - 0x90], edi
cmp esi, 0xb4
jge 0x100ab28a
mov esi, dword [0x10549af4]
jmp 0x100aad20
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
mov ecx, dword [0x10549b08]
cmp ecx, 0x14
jl 0x100ab29c
xor byte [0x10549b04], 1
xor eax, eax
cmp ecx, 0x14
push 0
cmovl eax, ecx
inc eax
mov dword [0x10549b08], eax
mov eax, 0x635fd0
call eax
add esp, 4
jmp 0x100ab2bf
mov byte [0x10549af1], 0
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.100ddef3
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret