Function at 0x1021b698
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
lea ebp, [esp - 0x74]
sub esp, 0x1d4
mov eax, dword [0x1023904c]
xor eax, ebp
mov dword [ebp + 0x70], eax
mov eax, dword [ebp + 0x7c]
and dword [ebp - 0xe8], 0
push ebx
push esi
mov esi, ecx
mov ebx, dword [esi + 0x60]
mov ecx, dword [esi + 0x54]
push edi
mov dword [ebp - 0x90], esi
mov dword [ebp - 0xe4], esi
mov dword [ebp - 0xf4], eax
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0xec], ebx
call fcn.1005ce5c
lea edi, [eax + 0xc]
lea eax, [ebp - 0x98]
push eax
push ebx
mov ecx, edi
mov dword [ebp - 0xa0], edi
call fcn.10041b42
push eax
mov ecx, edi
call fcn.100d0bca
mov edx, dword [esi + 0x54]
mov ecx, dword [edx + 0x5c]
add ecx, dword [edx + 0x58]
lea edi, [eax - 1]
push ecx
mov ecx, edx
mov dword [ebp - 0xc8], edi
call fcn.100ed1cf
xor eax, eax
mov dword [ebp - 0xfc], 1
mov dword [ebp - 0x8c], eax
test edi, edi
je 0x1021b789
mov esi, eax
mov ecx, dword [ebp - 0xa0]
mov eax, esi
sub eax, dword [ebp - 0x98]
add eax, ebx
push eax
call fcn.1006bbed
push eax
mov dword [ebp + esi*4 - 0x160], eax
call fcn.100ddb23
mov edx, dword [ebp + esi*4 - 0x160]
mov cl, byte [edx + eax]
mov dword [ebp + esi*4 - 0x10], eax
mov byte [ebp + esi + 0x54], cl
inc esi
mov byte [eax + edx], 0
cmp esi, edi
jb 0x1021b739
mov dword [ebp - 0x8c], esi
mov esi, dword [ebp - 0x90]
mov eax, dword [ebp - 0x8c]
sub eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0xa0]
add eax, ebx
push eax
call fcn.1006bbed
mov ecx, dword [ebp - 0x8c]
mov dword [ebp + ecx*4 - 0x160], eax
lea eax, [ebp - 0xbc]
push eax
push 1
mov eax, edi
sub eax, dword [ebp - 0x98]
mov ecx, esi
push eax
push dword [ebp - 0x98]
lea eax, [ebp - 0xc0]
push eax
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xac]
push eax
call fcn.1021ae38
mov edx, dword [ebp - 0xb4]
mov ebx, dword [ebp - 0xc0]
mov ecx, dword [ebp - 0xb0]
cmp dword [ebp - 0xac], edx
jne 0x1021b809
mov eax, ebx
sub eax, ecx
je 0x1021bf96
mov esi, dword [ebp - 0xbc]
test esi, esi
je 0x1021b868
mov eax, dword [ebp - 0xac]
sub eax, dword [ebp - 0x94]
add eax, dword [ebp - 0x98]
cmp eax, edi
jae 0x1021b839
cmp dword [ebp + eax*4 - 0x10], ecx
jae 0x1021b839
mov ecx, dword [ebp + eax*4 - 0x10]
mov dword [ebp - 0xb0], ecx
mov eax, edx
sub eax, dword [ebp - 0x94]
add eax, dword [ebp - 0x98]
cmp eax, edi
jae 0x1021ba4f
cmp dword [ebp + eax*4 - 0x10], ebx
jae 0x1021ba4f
mov ebx, dword [ebp + eax*4 - 0x10]
mov dword [ebp - 0xc0], ebx
jmp 0x1021ba4f
mov ebx, dword [ebp - 0x90]
mov ecx, dword [ebx + 0x54]
and dword [ebp - 0xc4], 0
call fcn.100ecdbb
test eax, eax
je 0x1021b89d
mov eax, dword [0x102390f4]
lea ecx, [ebp - 0xf0]
push ecx
mov ecx, dword [eax + 0x14]
call fcn.100dca29
mov esi, dword [ebp - 0xf0]
jmp 0x1021b8b4
mov ecx, dword [ebx + 0x54]
call fcn.1005ce5c
mov ecx, eax
call fcn.1003db9f
mov esi, eax
mov dword [ebp - 0xf0], esi
mov edx, dword [ebp - 0xac]
mov ecx, dword [ebp - 0xb4]
sub ecx, edx
sub edx, dword [ebp - 0x94]
inc ecx
add edx, dword [ebp - 0x98]
push ecx
lea eax, [ebp - 0x160]
lea eax, [eax + edx*4]
push eax
mov ecx, esi
call fcn.101d77e2
mov eax, dword [0x1023f254]
mov dword [ebp - 0x88], eax
xor ecx, ecx
lea eax, [ebp - 0x88]
mov dword [0x1023f254], eax
lea eax, [ebp - 0x84]
push ecx
push eax
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x40], ecx
call sub.msvcr100.dll__setjmp3
pop ecx
pop ecx
test eax, eax
je 0x1021b928
mov eax, dword [ebp - 0x88]
xor esi, esi
inc esi
mov dword [ebp - 0xbc], esi
mov dword [0x1023f254], eax
jmp 0x1021b92e
mov esi, dword [ebp - 0xbc]
test esi, esi
jne 0x1021ba1f
mov edi, dword [ebp - 0xec]
mov ebx, dword [ebp - 0xe4]
mov esi, dword [ebp - 0xc4]
mov dword [ebp - 0x94], edi
mov dword [ebp - 0x90], ebx
jmp 0x1021b9d3
call fcn.100de97a
cmp eax, 0x10f
je 0x1021b9db
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0xf8]
push eax
lea eax, [ebp - 0xd0]
push eax
lea eax, [ebp - 0xd4]
push eax
call fcn.1015692e
movzx edx, word [ebp - 0xd4]
mov eax, dword [ebp - 0xac]
mov ecx, dword [0x1023ebb0]
add eax, edx
cmp eax, edi
jne 0x1021b9be
movzx eax, word [ebp - 0xd0]
cmp eax, dword [ebx + 0x5c]
ja 0x1021b9be
movzx eax, word [ebp - 0xd8]
cmp dword [ebx + 0x5c], eax
jae 0x1021b9be
mov esi, ecx
mov dword [ebp - 0xc4], esi
jmp 0x1021b9c6
cmp edx, dword [ebp - 0x98]
ja 0x1021b9fe
sub ecx, 0x9c
je 0x1021b9f4
sub ecx, 0x5b
je 0x1021b9f4
test esi, esi
je 0x1021b956
test esi, esi
je 0x1021ba0a
cmp esi, 0x10f
jle 0x1021b9ef
cmp esi, 0x114
jl 0x1021ba0a
xor esi, esi
inc esi
jmp 0x1021ba0c
xor esi, esi
mov dword [ebp - 0xc4], esi
jmp 0x1021b9db
mov dword [ebp - 0xc4], 0x10f
jmp 0x1021b9ef
xor esi, esi
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0xbc], esi
mov dword [0x1023f254], eax
jmp 0x1021ba37
mov eax, dword [ebp - 0xec]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x90], eax
mov ecx, dword [ebp - 0xb0]
mov edx, dword [ebp - 0xb4]
mov ebx, dword [ebp - 0xc0]
mov edi, dword [ebp - 0xc8]
cmp dword [ebp - 0xfc], 0
je 0x1021ba98
and dword [ebp - 0xa4], 0
test edi, edi
je 0x1021ba98
mov esi, dword [ebp - 0xa4]
mov edx, dword [ebp + esi*4 - 0x10]
mov ecx, dword [ebp + esi*4 - 0x160]
mov al, byte [ebp + esi + 0x54]
inc esi
mov byte [edx + ecx], al
cmp esi, edi
jb 0x1021ba69
mov ebx, dword [ebp - 0xc0]
mov edx, dword [ebp - 0xb4]
mov ecx, dword [ebp - 0xb0]
mov esi, dword [ebp - 0xbc]
test esi, esi
je 0x1021bf90
cmp edx, dword [ebp - 0xac]
jne 0x1021baaf
sub ebx, ecx
jmp 0x1021bbff
mov eax, dword [ebp - 0x94]
mov esi, dword [ebp - 0xac]
sub esi, eax
add esi, dword [ebp - 0x98]
mov edi, edx
sub edi, eax
add edi, dword [ebp - 0x98]
lea eax, [ebp - 0x10]
lea eax, [eax + esi*4]
mov dword [ebp + edi*4 - 0x10], ebx
sub dword [eax], ecx
mov ebx, dword [eax]
lea eax, [ebp - 0x160]
lea eax, [eax + esi*4]
add dword [eax], ecx
mov ecx, dword [eax]
inc edi
inc esi
mov dword [ebp - 0xb8], edi
mov dword [ebp - 0xc8], edi
mov dword [ebp - 0x8c], ebx
cmp esi, edi
jae 0x1021bc05
mov eax, dword [ebp + esi*4 - 0x14]
test eax, eax
je 0x1021bb2c
push 0x10243f20
add eax, ecx
push eax
push ecx
call fcn.1015692e
push eax
call fcn.1015692e
test eax, eax
jne 0x1021bb2c
and dword [ebp - 0xa0], eax
jmp 0x1021bb36
mov dword [ebp - 0xa0], 1
xor eax, eax
inc eax
cmp dword [ebp + esi*4 - 0x10], 0
mov dword [ebp - 0x9c], eax
jne 0x1021bb59
inc esi
cmp esi, edi
jae 0x1021bb53
inc eax
cmp dword [ebp + esi*4 - 0x10], 0
je 0x1021bb46
mov dword [ebp - 0x9c], eax
cmp esi, edi
je 0x1021bbff
mov ecx, esi
shl ecx, 2
mov eax, dword [ebp + ecx - 0x160]
cmp byte [eax], 0
mov dword [ebp - 0x8c], eax
je 0x1021bbbc
mov edi, eax
mov eax, dword [ebp + ecx - 0x10]
mov dword [ebp - 0xa4], eax
test eax, eax
je 0x1021bbaa
push 0x20
push edi
call fcn.1015692e
test eax, eax
je 0x1021bbaa
mov eax, dword [ebp - 0xa4]
inc edi
mov ecx, esi
dec eax
shl ecx, 2
cmp byte [edi], 0
mov dword [ebp + ecx - 0x10], eax
jne 0x1021bb7a
mov dword [ebp - 0x8c], edi
mov edi, dword [ebp - 0xb8]
mov eax, dword [ebp - 0x8c]
cmp dword [ebp - 0xa0], 0
jne 0x1021bbe3
push str..____
push eax
call fcn.1015692e
test eax, eax
jne 0x1021bbe3
mov eax, esi
sub eax, dword [ebp - 0x9c]
inc ebx
lea eax, [ebp + eax*4 - 0x10]
inc dword [eax]
mov ecx, dword [ebp - 0x8c]
mov eax, esi
add ebx, dword [ebp + eax*4 - 0x10]
inc esi
mov dword [ebp + eax*4 - 0x160], ecx
cmp esi, edi
jb 0x1021bb04
mov dword [ebp - 0x8c], ebx
push ebx
push 0
call dword [sym.imp.OLEAUT32.dll_DllRegisterServer]
mov edx, eax
mov dword [ebp - 0x9c], edx
test edx, edx
je 0x1021bf90
mov esi, dword [ebp - 0xac]
cmp dword [ebp - 0xb4], esi
jne 0x1021bc51
mov ecx, dword [ebp - 0x98]
mov eax, dword [ebp + ecx*4 - 0x160]
add eax, dword [ebp - 0xb0]
push ebx
push eax
lea eax, [ebx + 1]
push eax
push edx
call dword [sym.imp.msvcr100.dll__mbsnbcpy_s]
add esp, 0x10
jmp 0x1021bc9d
sub esi, dword [ebp - 0x94]
mov dword [ebp - 0xa4], edx
add esi, dword [ebp - 0x98]
cmp esi, edi
jae 0x1021bca3
lea eax, [ebx + 1]
mov dword [ebp - 0xb8], eax
mov ebx, edx
push dword [ebp + esi*4 - 0x10]
push dword [ebp + esi*4 - 0x160]
push eax
push ebx
call dword [sym.imp.msvcr100.dll__mbsnbcpy_s]
add ebx, dword [ebp + esi*4 - 0x10]
mov eax, dword [ebp - 0xb8]
add esp, 0x10
inc esi
cmp esi, edi
jb 0x1021bc72
mov ebx, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x90]
lea eax, [ebp - 0x3c]
push eax
push 0
push 0x40f
mov byte [edx + ebx], 0
mov dword [ebp - 0x3c], 0x2c
push dword [ecx + 0x58]
call dword [sym.imp.USER32.dll_SendMessageA]
mov edi, dword [ebp - 0x9c]
mov esi, eax
lea eax, [ebp - 0xa8]
push eax
mov eax, dword [ebp - 0x90]
mov ecx, dword [eax + 0x54]
push edi
push dword [eax + 0x60]
call fcn.101d7d0e
test esi, esi
je 0x1021bd0b
mov ecx, dword [ebp - 0x90]
lea eax, [ebp - 0x3c]
push eax
push 0
push 0x40f
push dword [ecx + 0x58]
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
je 0x1021bd0e
xor eax, eax
inc eax
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0xa4], ecx
test ecx, ecx
je 0x1021bf8a
test eax, eax
je 0x1021bf84
mov esi, dword [ecx - 4]
mov dword [ebp - 0xcc], esi
test esi, esi
je 0x1021bf84
mov eax, dword [0x1021bfd8]
mov dword [ebp - 0xe0], eax
mov eax, dword [0x1021bfdc]
mov dword [ebp - 0xdc], eax
xor eax, eax
cmp byte [ecx], 0x20
mov dword [ebp - 0xb8], edi
sete al
mov edi, esi
sub edi, eax
mov dword [ebp - 0x94], eax
lea eax, [ebx + edi]
mov dword [ebp - 0xa0], edi
cmp eax, 0x4c
jbe 0x1021bf14
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
push 0x37
pop ecx
test ax, ax
jns 0x1021be59
cmp edi, ecx
jbe 0x1021bdf0
push 0x4c
pop eax
sub eax, ebx
cmp eax, ecx
jl 0x1021bd9e
mov ecx, eax
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0xa8]
inc eax
add eax, ecx
push eax
push ecx
call fcn.101e520e
push 3
pop ecx
mov edx, ecx
movzx ecx, byte [eax]
cmp byte [ecx + 0x1023bae0], 0
je 0x1021bdc8
add eax, 2
jmp 0x1021bdc9
inc eax
dec edx
jne 0x1021bdb7
lea ecx, [eax - 3]
lea esi, [ebp - 0xdd]
mov edi, ecx
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0xa8]
mov esi, dword [ebp - 0xcc]
sub eax, ecx
mov dword [ebp - 0xa4], ecx
add esi, eax
mov ecx, dword [ebp - 0x94]
mov eax, esi
sub eax, ecx
mov dword [ebp - 0xa0], eax
add eax, ebx
cmp eax, 0x4c
jbe 0x1021bf14
sub esi, ecx
mov ecx, dword [ebp - 0x9c]
add esi, ecx
lea eax, [ebx - 0x4b]
add eax, esi
push eax
push ecx
call fcn.101e520e
push 3
pop ebx
movzx ecx, byte [eax]
cmp byte [ecx + 0x1023bae0], 0
je 0x1021be35
add eax, 2
jmp 0x1021be36
inc eax
dec ebx
jne 0x1021be24
lea ebx, [eax - 3]
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0xb8], ebx
mov edi, ebx
sub eax, ebx
mov ebx, dword [ebp - 0x8c]
add ebx, eax
jmp 0x1021bf0b
cmp edi, ecx
jbe 0x1021beb0
push 0x4c
pop eax
sub eax, ebx
cmp eax, ecx
jl 0x1021be68
mov ecx, eax
lea eax, [ecx + 1]
mov ecx, dword [ebp - 0xa8]
add eax, dword [ebp - 0x94]
add eax, ecx
push eax
push ecx
call fcn.101e520e
push 3
pop edi
mov esi, eax
mov ebx, edi
push esi
push dword [ebp - 0xa8]
call fcn.1015692e
mov esi, eax
dec ebx
jne 0x1021be87
mov eax, dword [ebp - 0xdd]
mov ebx, dword [ebp - 0x8c]
mov dword [esi], eax
sub esi, dword [ebp - 0xa8]
add esi, edi
jmp 0x1021beb3
push 3
pop edi
mov ecx, dword [ebp - 0x94]
mov eax, esi
sub eax, ecx
mov dword [ebp - 0xa0], eax
add eax, ebx
cmp eax, 0x4c
jbe 0x1021bf14
mov eax, ecx
sub eax, esi
mov esi, dword [ebp - 0x9c]
add eax, 0x4c
mov dword [ebp - 0xcc], eax
inc eax
add eax, esi
push eax
push esi
call fcn.101e520e
mov ebx, eax
push ebx
push esi
call fcn.1015692e
mov ebx, eax
dec edi
jne 0x1021bee9
mov edi, dword [ebp - 0xcc]
sub ebx, dword [ebp - 0x9c]
add esi, 0xfffffffd
push 3
pop ecx
add edi, esi
add ebx, ecx
lea esi, [ebp - 0xdd]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
push ebx
push dword [ebp - 0xb8]
push dword [ebp - 0x90]
call sub.msvcr100.dll_memcpy
mov eax, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0x90]
mov edx, dword [ebp - 0x94]
inc eax
lea edi, [ebx + ecx]
push eax
mov eax, dword [ebp - 0xa4]
sub ecx, edx
lea esi, [ebp - 0xe0]
movsw word es:[edi], word [esi]
add eax, edx
add ecx, 3
push eax
add ecx, ebx
push ecx
movsb byte es:[edi], byte [esi]
call sub.msvcr100.dll_memcpy
mov ecx, dword [ebp - 0x90]
mov eax, dword [ebp - 0xf4]
mov edi, dword [ebp - 0x9c]
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0xa8]
add esp, 0x18
mov dword [ebp - 0xe8], 1
push ecx
call sub.OLEAUT32.dll_SysStringLen
push edi
call sub.OLEAUT32.dll_SysStringLen
mov esi, dword [ebp - 0x90]
cmp dword [ebp - 0xe8], 0
je 0x1021bfbb
mov ecx, dword [esi + 0x54]
push 0x13
xor eax, eax
push eax
push eax
push eax
push eax
call fcn.101ea9e6
push eax
push dword [esi + 0x58]
call dword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x1021bfc4
push 0
mov ecx, esi
call fcn.1003cfc4
mov ecx, dword [ebp + 0x70]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10001e57
add ebp, 0x74
leave
ret 4