Function at 0x100479fc
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c
mov eax, dword [0x10192160]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
push ebx
push esi
push edi
test eax, eax
je case.default.0x10047ddc
lea edi, [eax + 8]
call fcn.100470ea
xor ebx, ebx
mov esi, eax
mov eax, 0x204
inc ebx
cmp edx, eax
ja 0x10047db3
je 0x10047bba
mov eax, 0x100
cmp edx, 0x104
ja 0x10047b81
je 0x10047c83
mov eax, edx
sub eax, 7
je 0x10047b6b
sub eax, ebx
je 0x10047b6b
sub eax, 0x18
je 0x10047b4a
sub eax, 0xe0
je 0x10047b38
sub eax, ebx
je 0x10047b38
sub eax, ebx
jne case.default.0x10047ddc
push ecx
call dword [sym.imp.USER32.dll_IsWindowUnicode]
test eax, eax
je 0x10047ab4
mov ecx, dword [ebp + 8]
lea eax, [ecx - 1]
cmp eax, 0xfffe
ja case.default.0x10047ddc
push ecx
mov ecx, edi
call fcn.10028a37
jmp case.default.0x10047ddc
and dword [esp + 0x10], 0
lea ecx, [esp + 0x10]
xor eax, eax
inc eax
push eax
push ecx
push eax
lea ecx, [ebp + 8]
push ecx
push eax
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
movzx edx, word [esp + 0x10]
mov ecx, dword [edi + 0xdb4]
test edx, edx
je case.default.0x10047ddc
cmp byte [edi + 0x3769], 0
je case.default.0x10047ddc
mov eax, dword [ecx + 0x3ea4]
xorps xmm0, xmm0
and dword [esp + 0x34], 0
mov dword [esp + 0x24], eax
inc eax
mov dword [ecx + 0x3ea4], eax
lea eax, [esp + 0x1c]
push eax
add ecx, 0x3e88
movlpd qword [esp + 0x30], xmm0
mov dword [esp + 0x20], 5
mov dword [esp + 0x24], 2
mov dword [esp + 0x2c], edx
call fcn.10039c40
jmp case.default.0x10047ddc
mov eax, 0x100
cmp edx, eax
je 0x10047c83
jmp 0x10047c81
xor ebx, ebx
inc ebx
cmp word [ebp + 0xc], bx
jne case.default.0x10047ddc
call fcn.1004718f
test al, al
je case.default.0x10047ddc
mov eax, ebx
jmp 0x10047e9c
cmp edx, 7
mov ecx, edi
sete al
movzx eax, al
push eax
call fcn.10028e8e
jmp case.default.0x10047ddc
mov eax, edx
sub eax, 0x105
je 0x10047c7c
sub eax, 0xfb
je 0x10047c2c
sub eax, 1
je case.0x10047ddc.518
sub eax, 1
je case.0x10047ddc.517
sub eax, 1
jne case.default.0x10047ddc
xor edi, edi
cmp edx, 0x206
jne 0x10047bbc
mov edi, ebx
cmp edx, 0x207
je 0x10047bcc
cmp edx, 0x209
jne 0x10047bcf
push 2
pop edi
cmp edx, 0x20b
je 0x10047bdf
cmp edx, 0x20d
jne 0x10047bf6
mov eax, dword [ebp + 8]
xor ecx, ecx
shr eax, 0x10
cmp ax, bx
setne cl
add ecx, 3
mov dword [esp + 0x14], ecx
mov edi, ecx
cmp dword [esi + 0xc], 0
jne 0x10047c10
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x10047c10
push dword [esp + 0x10]
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x18]
bts eax, edi
push ebx
mov dword [esi + 0xc], eax
push edi
lea ecx, [ecx + 8]
call fcn.10028d97
jmp case.default.0x10047ddc
cmp byte [esi + 8], 0
mov dword [esi + 4], ecx
jne 0x10047c5d
and dword [esp + 0x28], 0
lea eax, [esp + 0x1c]
push eax
mov dword [esp + 0x20], 0x10
mov dword [esp + 0x24], 2
mov dword [esp + 0x28], ecx
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [esi + 8], 1
mov ecx, dword [ebp + 0xc]
mov eax, ecx
shr eax, 0x10
cwde
movd xmm2, eax
movsx eax, cx
cvtdq2ps xmm2, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
jmp 0x10047e93
mov eax, 0x100
xor bl, bl
cmp dword [ebp + 8], eax
jae case.default.0x10047ddc
call fcn.100472ba
mov esi, dword [ebp + 8]
cmp esi, 0xd
jne 0x10047cac
mov eax, dword [ebp + 0xc]
shr eax, 0x10
bt ax, 8
mov eax, 0x10d
cmovb esi, eax
mov ecx, esi
call fcn.100474b7
test eax, eax
je 0x10047cc4
push ecx
push esi
mov dl, bl
mov ecx, eax
call fcn.100471c1
pop ecx
pop ecx
cmp esi, 0x10
jne 0x10047d10
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov edi, 0xa0
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x10047cf0
push ecx
push edi
mov dl, bl
mov ecx, 0x210
call fcn.100471c1
pop ecx
pop ecx
mov edi, 0xa1
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.default.0x10047ddc
push ecx
mov ecx, 0x214
jmp 0x10047da4
cmp esi, 0x11
jne 0x10047d59
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov edi, 0xa2
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x10047d3c
push ecx
push edi
mov dl, bl
mov ecx, 0x20f
call fcn.100471c1
pop ecx
pop ecx
mov edi, 0xa3
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.default.0x10047ddc
push ecx
mov ecx, 0x213
jmp 0x10047da4
cmp esi, 0x12
jne case.default.0x10047ddc
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov edi, 0xa4
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x10047d89
push ecx
push edi
mov dl, bl
mov ecx, 0x211
call fcn.100471c1
pop ecx
pop ecx
mov edi, 0xa5
push edi
call esi
shr eax, 0xf
and al, 1
cmp al, bl
jne case.default.0x10047ddc
push ecx
mov ecx, 0x215
push edi
mov dl, bl
call fcn.100471c1
pop ecx
pop ecx
jmp case.default.0x10047ddc
mov eax, 0x2a3
cmp edx, eax
ja case.default.0x10047ddc
je 0x10047e7b
lea eax, [edx - 0x205]
cmp eax, 9
ja case.default.0x10047ddc
movzx eax, byte [eax + 0x10047eb4]
jmp dword [eax*4 + 0x10047ea4]
xor ebx, ebx
cmp edx, 0x205
sete bl
cmp edx, 0x208
jne 0x10047dfb
push 2
pop ebx
jmp 0x10047e15
cmp edx, 0x20c
jne 0x10047e15
mov eax, dword [ebp + 8]
xor ebx, ebx
shr eax, 0x10
cmp ax, 1
setne bl
add ebx, 3
mov eax, dword [esi + 0xc]
btr eax, ebx
mov dword [esi + 0xc], eax
test eax, eax
jne 0x10047e34
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [esp + 0x10]
jne 0x10047e34
call dword [sym.imp.USER32.dll_ReleaseCapture]
push 0
push ebx
mov ecx, edi
jmp 0x10047c22
mov eax, dword [ebp + 8]
xorps xmm1, xmm1
shr eax, 0x10
cwde
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x10184ce0]
mov ecx, edi
call fcn.10028e1e
jmp case.default.0x10047ddc
mov eax, dword [ebp + 8]
xorps xmm2, xmm2
shr eax, 0x10
cwde
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x10184ce0]
jmp 0x10047e57
cmp dword [esi + 4], ecx
jne 0x10047e84
and dword [esi + 4], 0
movss xmm1, dword [0x10184d60]
mov byte [esi + 8], 0
movaps xmm2, xmm1
mov ecx, edi
call fcn.10028c90
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret