Function at 0x10053650
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x30
push ebx
push ebp
push esi
push edi
mov bh, bh
mov esi, esi
mov dh, dh
xor esi, esi
mov dh, dh
mov eax, dword [esp + 0x54]
cmp eax, 0xffffffff
mov ecx, dword [esp + 0x58]
jne 0x10053681
cmp ecx, 0xffffffff
jne 0x10053681
lea eax, [esp + 0x18]
push eax
call fcn.10052300
mov bl, bl
jmp 0x1005368d
mov dword [esp + 0x18], eax
mov ecx, ecx
mov dword [esp + 0x1c], ecx
push eax
pop eax
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov bl, bl
add ecx, dword [esp + 0x48]
mov dword [esp + 0x20], ecx
xchg ebx, eax
xchg ebx, eax
add ebx, dword [esp + 0x4c]
mov dword [esp + 0x24], ebx
mov ah, ah
mov edx, dword [esp + 0x18]
mov dword [esp + 0x54], edx
mov bl, bl
mov ebp, dword [esp + 0x1c]
mov ebx, ebx
sub ecx, dword [esp + 0x18]
mov eax, ebx
sub eax, dword [esp + 0x1c]
mov edx, ecx
imul edx, ecx
mov ecx, eax
imul ecx, eax
add edx, ecx
mov dword [esp + 0x48], edx
fild dword [esp + 0x48]
call fcn.100ff770
fst qword [esp + 0x28]
mov ecx, ecx
fld qword [0x10165920]
mov edi, dword [esp + 0x44]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x1005384d
mov edx, ebx
sub edx, dword [esp + 0x1c]
mov dword [esp + 0x48], edx
fild dword [esp + 0x48]
fdiv st(2)
fstp qword [esp + 0x38]
xchg ebx, eax
xchg ebx, eax
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x18]
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
fdiv st(2)
fstp qword [esp + 0x30]
mov ecx, ecx
mov dword [esp + 0x48], 0x5a
mov cl, cl
fcom st(1)
fnstsw ax
test ah, 5
jp 0x1005384d
fld qword [esp + 0x30]
fmul st(1)
fiadd dword [esp + 0x18]
call fcn.100feca0
mov dword [esp + 0x10], eax
nop
fmul qword [esp + 0x38]
fiadd dword [esp + 0x1c]
call fcn.100feca0
mov dword [esp + 0x14], eax
mov ah, ah
mov ebx, eax
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x54]
sub ebx, ebp
mov dword [esp + 0x54], eax
mov dword [esp + 0x4c], 3
mov esi, esi
cmp dword [esp + 0x50], 0
je 0x10053792
mov dword [esp + 0x4c], 4
push edx
pop edx
test eax, eax
mov byte [esi + edi], 8
jne 0x1005379e
test ebx, ebx
je 0x100537f2
mov ebp, dword [sym.imp.USER32.dll_GetAsyncKeyState]
fstp st(0)
push 1
call ebp
test ax, ax
je 0x100537b5
or byte [esi + edi], 1
mov ah, ah
push 2
call ebp
test ax, ax
je 0x100537c4
or byte [esi + edi], 2
xchg ebx, eax
xchg ebx, eax
push 4
call ebp
test ax, ax
je 0x100537d3
or byte [esi + edi], 4
mov cl, cl
cmp dword [esp + 0x54], 0
jge 0x100537e0
or byte [esi + edi], 0x10
mov ecx, ecx
test ebx, ebx
fld qword [esp + 0x28]
mov eax, dword [esp + 0x54]
jle 0x100537f2
or byte [esi + edi], 0x20
mov edi, edi
mov byte [esi + edi + 1], al
mov al, al
mov eax, dword [esp + 0x50]
neg bl
cmp eax, 2
mov byte [esi + edi + 2], bl
jne 0x1005380f
mov byte [esi + edi + 3], 0
nop
jmp 0x1005381b
cmp eax, 1
jne 0x1005381b
mov byte [esi + edi + 3], 0
mov edi, edi
add esi, dword [esp + 0x4c]
mov ebx, ebx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x54], ecx
push ecx
pop ecx
mov ebp, dword [esp + 0x14]
mov esi, esi
add dword [esp + 0x48], 0x5a
mov dh, dh
fild dword [esp + 0x48]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x10053740
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
fstp st(0)
sub eax, dword [esp + 0x54]
fstp st(0)
mov dword [esp + 0x54], eax
jne 0x10053869
mov edx, ebx
sub edx, ebp
je 0x1005390f
sub ebx, ebp
mov dword [esp + 0x48], 3
mov esi, esi
cmp dword [esp + 0x50], 0
je 0x10053886
mov dword [esp + 0x48], 4
push edx
pop edx
test eax, eax
mov byte [esi + edi], 8
jne 0x10053892
test ebx, ebx
je 0x100538e0
mov ebp, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 1
call ebp
test ax, ax
je 0x100538a7
or byte [esi + edi], 1
mov ah, ah
push 2
call ebp
test ax, ax
je 0x100538b6
or byte [esi + edi], 2
xchg ebx, eax
xchg ebx, eax
push 4
call ebp
test ax, ax
je 0x100538c5
or byte [esi + edi], 4
mov cl, cl
cmp dword [esp + 0x54], 0
jge 0x100538d2
or byte [esi + edi], 0x10
mov ecx, ecx
test ebx, ebx
mov eax, dword [esp + 0x54]
jle 0x100538e0
or byte [esi + edi], 0x20
mov edi, edi
mov byte [esi + edi + 1], al
mov al, al
mov eax, dword [esp + 0x50]
neg bl
cmp eax, 2
mov byte [esi + edi + 2], bl
jne 0x100538fd
mov byte [esi + edi + 3], 0
nop
jmp 0x10053909
cmp eax, 1
jne 0x10053909
mov byte [esi + edi + 3], 0
mov edi, edi
add esi, dword [esp + 0x48]
mov edx, edx
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret