Function at 0x421099
Capabilities:
Log keystrokes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
mov ecx, dword [0x45e2f0]
push ebx
push esi
push edi
push 1
push 0
push 0xffffffffffffffff
push 0x454094
mov esi, eax
call fcn.0040161c
mov ecx, dword [ebp + 0x24]
mov eax, dword [ebp + 0x20]
mov edi, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x18]
call fcn.0043a26f
test eax, eax
mov dword [ebp - 8], eax
je 0x421220
cmp byte [esi], 0
mov ebx, 0x80000000
mov dword [ebp - 4], 2
mov byte [ebp + 0x27], 0
mov byte [ebp + 0x23], 1
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], ebx
je 0x421191
lea edi, [esi + 1]
movsx eax, byte [esi]
push eax
call dword [sym.imp.MSVCR71.dll_toupper]
sub eax, 0x44
pop ecx
je 0x42117c
sub eax, 0xa
je 0x421164
dec eax
dec eax
je 0x421145
sub eax, 5
je 0x42113c
sub eax, 3
je 0x42112f
dec eax
jne 0x421180
push edi
call dword [sym.imp.MSVCR71.dll_atoi]
pop ecx
mov dword [ebp - 0x10], eax
jmp 0x421180
push edi
call dword [sym.imp.MSVCR71.dll_atoi]
pop ecx
mov dword [ebp - 0x14], eax
jmp 0x421180
mov dword [ebp - 4], 1
jmp 0x421180
push 3
push 0x45773c
push esi
call dword [sym.imp.MSVCR71.dll__strnicmp]
add esp, 0xc
test eax, eax
jne 0x421180
inc esi
inc esi
inc edi
inc edi
mov byte [ebp + 0x27], 1
jmp 0x421180
movsx eax, byte [edi]
push eax
call dword [sym.imp.MSVCR71.dll_toupper]
cmp eax, 0x41
pop ecx
jne 0x421180
inc esi
inc edi
mov byte [ebp + 0x23], 0
jmp 0x421180
and dword [ebp - 4], 0
inc esi
inc edi
cmp byte [esi], 0
jne 0x4210fc
cmp byte [ebp + 0x27], 0
jne 0x4211a8
push dword [ebp - 8]
mov ecx, dword [ebp + 0x14]
call fcn.0043a33c
test eax, eax
pop ecx
mov dword [ebp + 0x1c], eax
jne 0x421280
and dword [ebp - 0x60], 0
mov esi, dword [ebp + 0x14]
push 9
pop ecx
xor eax, eax
lea edi, [ebp - 0x5c]
rep stosd dword es:[edi], eax
mov al, byte [esi]
cmp al, 0x20
je 0x4211c3
cmp al, 9
jne 0x4211c6
inc esi
jmp 0x4211b9
movsx eax, byte [esi]
push eax
call dword [sym.imp.MSVCR71.dll_toupper]
cmp eax, 0x58
pop ecx
jne 0x421220
inc esi
cmp byte [esi], 0
je 0x421220
call fcn.0040113f
mov dword [ebp - 0x60], eax
mov edi, 0x453ea4
mov eax, esi
call fcn.00438cc6
test eax, eax
je 0x421220
lea esi, [eax + 1]
mov al, byte [esi]
cmp al, 0x20
je 0x421201
cmp al, 9
jne 0x421204
inc esi
jmp 0x4211f7
mov al, byte [esi]
test al, al
je 0x421220
movsx eax, al
push eax
call dword [sym.imp.MSVCR71.dll_toupper]
cmp eax, 0x59
pop ecx
jne 0x421220
inc esi
cmp byte [esi], 0
jne 0x421228
xor eax, eax
inc eax
jmp 0x421525
call fcn.0040113f
mov esi, dword [ebp - 8]
mov dword [ebp - 0x5c], eax
lea eax, [ebp - 0x34]
push eax
push esi
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [ebp - 0x34]
add dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x30]
add dword [ebp - 0x5c], eax
lea eax, [ebp - 0x60]
push eax
push 0x43a464
push esi
call dword [sym.imp.USER32.dll_EnumChildWindows]
mov eax, dword [ebp - 0x48]
test eax, eax
mov dword [ebp + 0x1c], eax
jne 0x421267
mov dword [ebp + 0x1c], esi
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x14]
push eax
push dword [ebp + 0x1c]
call dword [sym.imp.USER32.dll_ScreenToClient]
mov esi, dword [ebp + 0x10]
xor edi, edi
inc edi
cmp esi, edi
jge 0x421290
push edi
jmp 0x421511
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je 0x42129e
mov eax, dword [ebp - 0x10]
cmp eax, ebx
jne 0x4212df
lea eax, [ebp - 0x24]
push eax
push dword [ebp + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x421372
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
jne 0x4212ca
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x24]
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 0x10]
cmp eax, ebx
jne 0x4212df
mov eax, dword [ebp - 0x18]
sub eax, dword [ebp - 0x20]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x10], eax
movzx edx, ax
movzx eax, cx
shl edx, 0x10
or edx, eax
mov al, byte [ebp + 0xc]
cmp al, 0x9f
mov dword [ebp - 0xc], edx
je 0x4212fc
cmp al, 0x9e
mov byte [ebp + 0xf], 0
jne 0x421300
mov byte [ebp + 0xf], 1
cmp al, 0x9c
je 0x42130c
cmp al, 0x9d
mov byte [ebp + 0x17], 0
jne 0x421310
mov byte [ebp + 0x17], 1
cmp byte [ebp + 0xf], 0
je 0x421339
xor ecx, ecx
cmp al, 0x9f
setne cl
mov ebx, 0x20a
dec ecx
and ecx, 0xf0
add ecx, 0xffffff88
imul ecx, esi
shl ecx, 0x10
mov edi, ecx
jmp 0x4213bd
cmp byte [ebp + 0x17], 0
je 0x42135f
xor ecx, ecx
cmp al, 0x9c
setne cl
mov ebx, 0x20e
dec ecx
and ecx, 0xffffff10
add ecx, 0x78
imul ecx, esi
shl ecx, 0x10
mov edi, ecx
jmp 0x4213bd
movzx eax, al
dec eax
je 0x4213ae
dec eax
je 0x42139e
dec eax
dec eax
je 0x42138e
dec eax
je 0x42138a
dec eax
je 0x421379
mov eax, edi
jmp 0x421525
push 0x40
mov ebx, 0x20b
mov dword [ebp + 0x18], 0x20c
pop edi
jmp 0x4213bd
push 0x20
jmp 0x42137b
mov ebx, 0x207
mov dword [ebp + 0x18], 0x208
push 0x10
jmp 0x421387
mov ebx, 0x204
mov dword [ebp + 0x18], 0x205
push 2
jmp 0x421387
xor edi, edi
mov ebx, 0x201
mov dword [ebp + 0x18], 0x202
inc edi
cmp byte [ebp + 0x23], 0
mov byte [ebp + 0x27], 0
je 0x42140f
mov esi, dword [ebp - 8]
push 0
push esi
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
test eax, eax
mov dword [ebp + 0x20], eax
je 0x421402
cmp eax, dword [0x45fb18]
je 0x421402
call fcn.0043b24f
test al, al
jne 0x421402
push 1
push dword [ebp + 0x20]
push dword [0x45fb18]
call dword [sym.imp.USER32.dll_AttachThreadInput]
test eax, eax
setne byte [ebp + 0x27]
push esi
call dword [sym.imp.USER32.dll_SetActiveWindow]
mov esi, dword [ebp + 0x10]
mov edx, dword [ebp - 0xc]
cmp byte [ebp + 0xf], 0
jne 0x4214be
cmp byte [ebp + 0x17], 0
jne 0x4214be
test esi, esi
jle 0x4214f8
mov dword [ebp + 0xc], esi
mov esi, dword [sym.imp.USER32.dll_PostMessageA]
cmp dword [ebp - 4], 1
je 0x421472
push dword [ebp - 0xc]
push edi
push ebx
push dword [ebp + 0x1c]
call esi
mov eax, dword [0x45b170]
mov eax, dword [eax + 0x58]
cmp eax, 0xffffffff
jle 0x421472
cmp eax, 0x19
jge 0x421468
cmp byte [0x460211], 0
je 0x421468
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x421472
push 1
push eax
call fcn.0040d9dd
pop ecx
pop ecx
cmp dword [ebp - 4], 0
je 0x4214b3
push dword [ebp - 0xc]
push 0
push dword [ebp + 0x18]
push dword [ebp + 0x1c]
call esi
mov eax, dword [0x45b170]
mov eax, dword [eax + 0x58]
cmp eax, 0xffffffff
jle 0x4214b3
cmp eax, 0x19
jge 0x4214a9
cmp byte [0x460211], 0
je 0x4214a9
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4214b3
push 1
push eax
call fcn.0040d9dd
pop ecx
pop ecx
dec dword [ebp + 0xc]
jne 0x421434
jmp 0x4214f8
push edx
push edi
push ebx
push dword [ebp + 0x1c]
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, dword [0x45b170]
mov eax, dword [eax + 0x58]
cmp eax, 0xffffffff
jle 0x4214f8
cmp eax, 0x19
jge 0x4214ee
cmp byte [0x460211], 0
je 0x4214ee
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4214f8
push 1
push eax
call fcn.0040d9dd
pop ecx
pop ecx
cmp byte [ebp + 0x27], 0
je 0x42150f
push 0
push dword [ebp + 0x20]
push dword [0x45fb18]
call dword [sym.imp.USER32.dll_AttachThreadInput]
push 1
mov ecx, dword [0x45e2f0]
push 0
push 0xffffffffffffffff
push 0x452954
call fcn.0040161c
pop edi
pop esi
pop ebx
leave
ret 0x20