Function at 0x10051ef0
Capabilities:
Check for time delay via gettickcount
Encode data using xor
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x144
mov eax, dword [0x100e41c4]
xor eax, esp
mov dword [esp + 0x140], eax
mov eax, dword [0x101eef38]
push ebx
push esi
mov ebx, ecx
cmp dword [eax], 5
push edi
mov dword [esp + 0x14], ebx
jne 0x100523dc
mov esi, dword [0x101ef00c]
cmp dword [0x10232dfc], esi
jne 0x10051f3c
cmp dword [0x101eeeec], 0
jne 0x10051fd0
mov dword [0x10232dfc], esi
mov edx, 0x35
mov dword [0x101e73f0], 0
xor ecx, ecx
mov dword [0x101e73f4], 0
mov dword [0x101e7400], 0
mov dword [0x101e73f8], 0xff
mov dword [0x101e73fc], 0
nop dword [eax + eax]
mov al, byte [ecx + 0x100d2540]
xor al, dl
mov byte [esp + ecx + 0x30], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0xd
jb 0x10051f80
lea eax, [esi + 1]
mov byte [esp + 0x3d], 0
push eax
push 0x101e6d7e
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.1003a9e0
push 0x101e6ef4
push 0x101e6ef0
mov edx, 0x101eeeec
lea ecx, [esp + 0x58]
call fcn.1004cde0
add esp, 0x18
mov cl, byte [0x10232920]
cmp cl, 1
je 0x10051fe8
mov al, byte [0x101ef917]
cmp al, 1
jne 0x100520ba
mov esi, dword [sym.imp.USER32.dll_GetForegroundWindow]
call esi
cmp eax, dword [0x101e70a8]
je 0x10052006
call esi
cmp dword [0x101eecc4], eax
jne 0x100520af
push dword [0x101e7fb8]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x100520a8
cmp byte [0x101e7fbc], 0
jne 0x100520af
mov byte [0x101e7fbc], 1
movss xmm0, dword [ebx + 0x404]
divss xmm0, dword [0x100d6858]
mov word [ebx + 0x78], 0
mov dword [ebx + 0x31a], 0x10001
mov byte [0x10232920], 0
mov byte [0x101ef917], 0
cvttss2si ecx, xmm0
movss xmm0, dword [ebx + 0x408]
divss xmm0, dword [0x100d6858]
mov byte [ebx + 0xac], cl
mov dword [0x100e65bc], ecx
cvttss2si eax, xmm0
mov byte [ebx + 0xb0], al
mov dword [0x100e65cc], eax
mov word [0x101e7409], 0
mov byte [0x101e740b], 0
mov byte [0x101e70b4], 0
jmp 0x100523e6
mov byte [0x101e7fbc], 0
mov cl, byte [0x10232920]
mov al, byte [0x101ef917]
cmp cl, 1
je 0x100520c7
cmp al, 1
jne 0x100523f0
cvttss2si esi, dword [0x102320d4]
mov ecx, dword [0x100e65cc]
mov eax, dword [0x100e65bc]
cvttss2si edi, dword [0x102320d8]
sub eax, esi
imul eax, eax
sub ecx, edi
imul ecx, ecx
add eax, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
call fcn.100b4bc0
cvttsd2si eax, xmm0
cmp eax, 2
jg 0x10052124
push edi
mov edx, esi
mov ecx, ebx
call fcn.1003ff40
add esp, 4
mov byte [0x10232920], 0
mov byte [0x101ef917], 0
jmp 0x100523e6
cmp byte [0x10232920], 1
mov al, byte [0x101ef917]
je 0x1005213a
cmp al, 1
jne 0x100523f0
test al, al
jne 0x100522d2
mov ecx, 0x10000
xor eax, eax
mov edi, 0x101ef920
rep stosd dword es:[edi], eax
mov ecx, dword [0x101eef90]
mov edi, 0x101ef920
nop dword [eax + eax]
mov eax, edi
mov esi, 0x100
movzx edx, word [ecx]
test dx, dx
je 0x1005217c
cmp edx, 1
je 0x1005217c
mov dword [eax], 0
jmp 0x10052182
mov dword [eax], 1
add ecx, 2
add eax, 0x400
sub esi, 1
jne 0x10052167
add edi, 4
cmp edi, 0x101efd20
jl 0x10052160
mov eax, dword [0x100e65cc]
lea ecx, [esp + 0x24]
mov dword [esp + 0x1c], eax
mov eax, dword [0x100e65bc]
mov dword [esp + 0x20], eax
cvttss2si eax, dword [0x102320d8]
mov dword [esp + 0x24], 0x101ef920
mov dword [esp + 0x28], 0x100
mov dword [esp + 0x2c], 0x100
mov dword [esp + 0x14], eax
cvttss2si eax, dword [0x102320d4]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.10051500
push eax
call fcn.10079bd0
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x10052212
mov eax, dword [esp + 0x38]
sub eax, ecx
sar eax, 3
push eax
push ecx
call fcn.1007c2f0
cmp dword [0x102320dc], 0
jne 0x1005222b
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x102320dc], eax
jmp 0x100522b5
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x102320dc]
cmp eax, 0xd05
jb 0x100522b5
movss xmm0, dword [ebx + 0x404]
divss xmm0, dword [0x100d6858]
mov word [ebx + 0x78], 0
mov dword [ebx + 0x31a], 0x10001
mov byte [0x10232920], 0
mov byte [0x101ef917], 0
mov dword [0x102320dc], 0
cvttss2si ecx, xmm0
movss xmm0, dword [ebx + 0x408]
divss xmm0, dword [0x100d6858]
mov byte [ebx + 0xac], cl
mov dword [0x100e65bc], ecx
cvttss2si eax, xmm0
mov byte [ebx + 0xb0], al
mov dword [0x100e65cc], eax
mov word [0x101e7409], 0
mov byte [0x101e740b], 0
mov eax, dword [0x101ef758]
cmp eax, dword [0x101ef75c]
je 0x100523f0
mov byte [0x101ef917], 1
jmp 0x100523e6
mov esi, dword [0x101ef758]
mov edi, dword [0x101ef75c]
cmp esi, edi
je 0x100523f0
mov al, byte [ebx + 0x30c]
mov byte [esp + 0x13], al
mov ecx, 0xe7
test al, al
je 0x100523b9
cmp byte [ebx + 0x24], 1
je 0x100523b9
cmp word [ebx + 0x31a], cx
je 0x100523b9
mov ecx, dword [0x100e65cc]
mov eax, dword [0x100e65bc]
sub eax, dword [esi + 4]
mov ebx, dword [esi]
sub ecx, ebx
imul eax, eax
imul ecx, ecx
add eax, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
call fcn.100b4bc0
cvttsd2si eax, xmm0
cmp ebx, 0x100
je 0x10052350
cmp dword [esi + 4], 0x100
jne 0x10052365
add esi, 8
cmp esi, edi
je 0x100523f0
mov ebx, dword [esp + 0x14]
mov al, byte [esp + 0x13]
jmp 0x100522f0
mov edx, dword [esi + 4]
mov ecx, dword [esp + 0x14]
push ebx
cmp eax, 2
jg 0x1005239c
call fcn.1003ff40
add esp, 4
mov dword [esi], 0x100
mov dword [esi + 4], 0x100
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.1008d9f1
mov esp, ebp
pop ebp
ret
call fcn.1003ff40
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.1008d9f1
mov esp, ebp
pop ebp
ret
mov byte [0x10232920], 0
mov byte [0x101ef917], 0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.1008d9f1
mov esp, ebp
pop ebp
ret
mov dword [0x10232dfc], 0xffff
mov dword [0x102320dc], 0
mov ecx, dword [esp + 0x14c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.1008d9f1
mov esp, ebp
pop ebp
ret