Function at 0x100346b0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x30
push ebx
push ebp
push esi
push edi
mov edi, edi
push edx
pop edx
mov al, al
xor esi, esi
xchg ebx, eax
xchg ebx, eax
mov eax, dword [esp + 0x54]
cmp eax, 0xffffffff
mov ecx, dword [esp + 0x58]
jne 0x100346e1
cmp ecx, 0xffffffff
jne 0x100346e1
lea eax, [esp + 0x18]
push eax
call fcn.10033ac0
mov al, al
jmp 0x100346ed
mov dword [esp + 0x18], eax
mov esi, esi
mov dword [esp + 0x1c], ecx
mov ch, ch
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov bl, bl
add ecx, dword [esp + 0x48]
mov dword [esp + 0x20], ecx
mov bh, bh
add ebx, dword [esp + 0x4c]
mov dword [esp + 0x24], ebx
mov cl, cl
mov edx, dword [esp + 0x18]
mov dword [esp + 0x54], edx
mov ecx, ecx
mov ebp, dword [esp + 0x1c]
mov esi, esi
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.100ae130
fst qword [esp + 0x28]
mov dl, dl
fld qword [0x100eea70]
mov edi, dword [esp + 0x44]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x100348af
mov edx, ebx
sub edx, dword [esp + 0x1c]
mov dword [esp + 0x48], edx
fild dword [esp + 0x48]
fdiv st(2)
fstp qword [esp + 0x38]
mov ebp, ebp
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 bl, bl
mov dword [esp + 0x48], 0x5a
mov edx, edx
fcom st(1)
fnstsw ax
test ah, 5
jp 0x100348af
fld qword [esp + 0x30]
fmul st(1)
fiadd dword [esp + 0x18]
call fcn.100ad870
mov dword [esp + 0x10], eax
mov bh, bh
fmul qword [esp + 0x38]
fiadd dword [esp + 0x1c]
call fcn.100ad870
mov dword [esp + 0x14], eax
mov al, al
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 dl, dl
cmp dword [esp + 0x50], 0
je 0x100347f3
mov dword [esp + 0x4c], 4
mov ecx, ecx
test eax, eax
mov byte [esi + edi], 8
jne 0x100347ff
test ebx, ebx
je 0x10034853
mov ebp, dword [sym.imp.USER32.dll_GetAsyncKeyState]
fstp st(0)
push 1
call ebp
test ax, ax
je 0x10034816
or byte [esi + edi], 1
mov cl, cl
push 2
call ebp
test ax, ax
je 0x10034825
or byte [esi + edi], 2
mov dh, dh
push 4
call ebp
test ax, ax
je 0x10034834
or byte [esi + edi], 4
xchg ebx, eax
xchg ebx, eax
cmp dword [esp + 0x54], 0
jge 0x10034841
or byte [esi + edi], 0x10
xchg ebx, eax
xchg ebx, eax
test ebx, ebx
fld qword [esp + 0x28]
mov eax, dword [esp + 0x54]
jle 0x10034853
or byte [esi + edi], 0x20
push eax
pop eax
mov byte [esi + edi + 1], al
xchg ebx, eax
xchg ebx, eax
mov eax, dword [esp + 0x50]
neg bl
cmp eax, 2
mov byte [esi + edi + 2], bl
jne 0x10034871
mov byte [esi + edi + 3], 0
mov ecx, ecx
jmp 0x1003487d
cmp eax, 1
jne 0x1003487d
mov byte [esi + edi + 3], 0
xchg ebx, eax
xchg ebx, eax
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 cl, cl
add dword [esp + 0x48], 0x5a
mov ecx, ecx
fild dword [esp + 0x48]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x100347a0
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 0x100348cb
mov edx, ebx
sub edx, ebp
je 0x10034972
sub ebx, ebp
mov dword [esp + 0x48], 3
mov dl, dl
cmp dword [esp + 0x50], 0
je 0x100348e8
mov dword [esp + 0x48], 4
mov ecx, ecx
test eax, eax
mov byte [esi + edi], 8
jne 0x100348f4
test ebx, ebx
je 0x10034942
mov ebp, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 1
call ebp
test ax, ax
je 0x10034909
or byte [esi + edi], 1
mov cl, cl
push 2
call ebp
test ax, ax
je 0x10034918
or byte [esi + edi], 2
mov dh, dh
push 4
call ebp
test ax, ax
je 0x10034927
or byte [esi + edi], 4
xchg ebx, eax
xchg ebx, eax
cmp dword [esp + 0x54], 0
jge 0x10034934
or byte [esi + edi], 0x10
xchg ebx, eax
xchg ebx, eax
test ebx, ebx
mov eax, dword [esp + 0x54]
jle 0x10034942
or byte [esi + edi], 0x20
push eax
pop eax
mov byte [esi + edi + 1], al
xchg ebx, eax
xchg ebx, eax
mov eax, dword [esp + 0x50]
neg bl
cmp eax, 2
mov byte [esi + edi + 2], bl
jne 0x10034960
mov byte [esi + edi + 3], 0
mov ecx, ecx
jmp 0x1003496c
cmp eax, 1
jne 0x1003496c
mov byte [esi + edi + 3], 0
xchg ebx, eax
xchg ebx, eax
add esi, dword [esp + 0x48]
mov ebx, ebx
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret