Function at 0x4afdb5
Capabilities:
Hide graphical window
Log keystrokes

Disassembly:
sub esp, 8
push ebx
push edi
mov byte [esp + 0xb], dl
mov edi, ecx
call fcn.004c50b1
mov dl, byte [esp + 0xb]
mov ebx, eax
mov dword [esp + 0xc], ebx
test dl, dl
jne 0x4afdf3
cmp dword [ebx + 0x17c], 0
je 0x4afdf3
mov edx, str.Cant_show_non_modal_form_when_modal_form_is_displayed
mov ecx, 0x800a0191
call fcn.004c038b
pop edi
pop ebx
add esp, 8
ret 4
mov eax, dword [edi + 0x48]
push esi
cmp byte [eax + 0x49], 0
jne 0x4afe48
cmp byte [eax + 0x51], 0
jne 0x4afe30
test dl, dl
jne 0x4afe30
mov esi, dword [eax + 0x3c]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ebx, dword [sym.imp.USER32.dll_SetForegroundWindow]
cmp eax, esi
je 0x4afe1d
push esi
call ebx
mov eax, dword [edi + 0x48]
push dword [eax + 0x3c]
call ebx
pop esi
pop edi
xor eax, eax
pop ebx
add esp, 8
ret 4
mov edx, str.Form_already_displayed__cant_show_modally
mov ecx, 0x800a0190
call fcn.004c038b
pop esi
pop edi
pop ebx
add esp, 8
ret 4
mov ecx, dword [esp + 0x18]
push ebp
mov ebp, dword [ebx + 0xe0]
test dl, dl
je 0x4afe70
inc dword [ebx + 0x17c]
test ecx, ecx
jne 0x4afe67
mov ecx, dword [ebx + 0x16c]
mov eax, dword [edi + 0x48]
mov byte [eax + 0x51], 1
jmp 0x4afe74
mov byte [eax + 0x51], 0
test ecx, ecx
je 0x4aff43
mov eax, dword [ecx]
lea edx, [esp + 0x1c]
push edx
push 0x51ce00
push ecx
mov dword [esp + 0x28], 0
call dword [eax]
test eax, eax
js 0x4aff43
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4aff43
mov eax, dword [ecx + 0x48]
test eax, eax
je 0x4afeb8
mov ebp, eax
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
jmp 0x4afee1
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x4afed7
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4afed7
mov eax, dword [eax + 0x48]
test eax, eax
je 0x4afed7
mov ebp, eax
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
jmp 0x4afee1
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
test ebp, ebp
je 0x4aff43
cmp dword [ebp + 0x3c], 0
jne 0x4afefe
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 0x28]
test ecx, ecx
je 0x4afefe
mov ecx, dword [ecx + 0x64]
test ecx, ecx
je 0x4afefe
mov eax, dword [ecx]
push ecx
call dword [eax + 0x34]
mov ecx, dword [edi + 0x48]
mov edx, dword [ecx + 0x14]
cmp edx, ebp
je 0x4aff43
mov eax, dword [edx + 0x34]
add edx, 0x34
test eax, eax
je 0x4aff29
lea ecx, [ecx]
cmp eax, ecx
je 0x4aff24
lea edx, [eax + 0x10]
mov eax, dword [edx]
test eax, eax
jne 0x4aff15
jmp 0x4aff29
mov eax, dword [ecx + 0x10]
mov dword [edx], eax
mov eax, dword [ebp + 0x34]
mov dword [ecx + 0x10], eax
mov dword [ebp + 0x34], ecx
mov dword [ecx + 0x14], ebp
push dword [ebp + 0x3c]
push 0xfffffffffffffff8
push dword [ecx + 0x3c]
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov eax, dword [edi + 0x48]
mov edx, str.WindowStateINIT
push 0
mov esi, 5
mov byte [eax + 0x48], 0
mov eax, dword [edi + 0x48]
mov byte [eax + 0x49], 0
mov eax, dword [edi + 0x48]
mov byte [eax + 0x4e], 0
mov ecx, dword [edi + 0x48]
mov ecx, dword [ecx + 0x18]
call fcn.004b6f93
cmp eax, 1
jne 0x4aff79
lea esi, [eax + 5]
jmp 0x4aff81
cmp eax, 2
jne 0x4aff81
lea esi, [eax + 1]
cmp byte [esp + 0x13], 0
je 0x4affc4
mov eax, dword [edi + 0x48]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x4affc4
mov edx, dword [eax + 0x3c]
mov ecx, dword [ecx + 0x3c]
cmp edx, ecx
je 0x4affc4
mov eax, dword [ebx + 0xe0]
cmp ecx, dword [eax + 0x3c]
je 0x4affc4
push 0xffffffffffffffec
push edx
call dword [sym.imp.USER32.dll_GetWindowLongW]
and eax, 0xfffbffff
push eax
mov eax, dword [edi + 0x48]
push 0xffffffffffffffec
push dword [eax + 0x3c]
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov eax, dword [edi + 0x48]
push esi
mov bl, byte [eax + 0x4a]
mov byte [eax + 0x4a], 1
mov eax, dword [edi + 0x48]
push dword [eax + 0x3c]
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [edi + 0x48]
mov esi, dword [sym.imp.USER32.dll_GetWindowLongW]
mov byte [eax + 0x4a], bl
mov eax, dword [edi + 0x48]
mov ebx, dword [sym.imp.USER32.dll_SetWindowLongA]
cmp byte [eax + 0x54], 0
je 0x4b000d
push 0xfffffffffffffff0
push dword [eax + 0x3c]
call esi
and eax, 0xfffeffff
push eax
mov eax, dword [edi + 0x48]
push 0xfffffffffffffff0
push dword [eax + 0x3c]
call ebx
mov eax, dword [edi + 0x48]
cmp byte [eax + 0x55], 0
je 0x4b002d
push 0xffffffffffffffec
push dword [eax + 0x3c]
call esi
or eax, 0x80
push eax
mov eax, dword [edi + 0x48]
push 0xffffffffffffffec
push dword [eax + 0x3c]
call ebx
mov eax, dword [edi + 0x48]
mov esi, dword [eax + 0x3c]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
cmp eax, esi
je 0x4b0044
push esi
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov ebx, dword [edi + 0x48]
cmp byte [ebx + 0x51], 0
je 0x4b00ab
call fcn.004c50b1
mov esi, dword [eax + 0x188]
test esi, esi
je 0x4b00ab
cmp esi, ebx
je 0x4b00a4
push dword [esi + 0x3c]
call dword [sym.imp.USER32.dll_IsWindowEnabled]
test eax, eax
je 0x4b00a4
push 8
push 8
push dword [0x4cefc8]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, eax
test ecx, ecx
je 0x4b008e
mov dword [ecx], esi
mov dword [ecx + 4], 0
jmp 0x4b0090
xor ecx, ecx
mov eax, dword [ebx + 0x30]
mov dword [ecx + 4], eax
push 0
mov dword [ebx + 0x30], ecx
push dword [esi + 0x3c]
call dword [sym.imp.USER32.dll_EnableWindow]
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x4b005c
mov ebx, dword [sym.imp.USER32.dll_SetTimer]
mov esi, 1
mov ecx, dword [edi + 0x48]
cmp esi, 1
jl 0x4b00f5
mov eax, dword [ecx + 0x88]
shr eax, 2
cmp esi, eax
ja 0x4b00f5
mov eax, dword [ecx + 0x84]
mov eax, dword [eax + esi*4 - 4]
test eax, eax
je 0x4b00f5
mov edx, dword [eax + 0x30]
test edx, edx
je 0x4b00f2
cmp word [eax + 0x42], 0
je 0x4b00f2
push 0
push edx
push dword [eax + 0x34]
push dword [ecx + 0x3c]
call ebx
inc esi
jmp 0x4b00b6
cmp byte [esp + 0x13], 0
je 0x4b01f2
test ecx, ecx
je 0x4b01de
mov eax, dword [ecx + 0x18]
mov eax, dword [eax + 0x28]
test eax, eax
je 0x4b01de
mov eax, dword [eax + 0x64]
test eax, eax
je 0x4b01de
cmp dword [eax + 0x80], 0
je 0x4b01de
xor dl, dl
call fcn.004afb66
mov ebx, dword [esp + 0x14]
cmp ebp, dword [ebx + 0xe0]
je 0x4b01be
mov esi, dword [ebp + 0x3c]
mov edi, dword [sym.imp.USER32.dll_GetForegroundWindow]
call edi
cmp eax, esi
je 0x4b015b
push esi
mov esi, dword [sym.imp.USER32.dll_SetForegroundWindow]
call esi
jmp 0x4b0161
mov esi, dword [sym.imp.USER32.dll_SetForegroundWindow]
push dword [ebp + 0x3c]
call esi
call edi
cmp eax, dword [ebp + 0x3c]
je 0x4b01aa
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, dword [sym.imp.USER32.dll_AttachThreadInput]
mov edi, eax
push 1
push edi
push ebx
call esi
push dword [ebp + 0x3c]
call dword [sym.imp.USER32.dll_BringWindowToTop]
push 5
push dword [ebp + 0x3c]
call dword [sym.imp.USER32.dll_ShowWindow]
push 0
push edi
push ebx
call esi
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx + 0xe0]
push dword [eax + 0x3c]
push 0xfffffffffffffff8
push dword [ebp + 0x3c]
call dword [sym.imp.USER32.dll_SetWindowLongW]
dec dword [ebx + 0x17c]
movzx eax, byte [ebx + 0xbb]
pop ebp
neg eax
pop esi
sbb eax, eax
pop edi
and eax, 0xeaeaea03
pop ebx
add esp, 8
ret 4
call fcn.004c3905
pop ebp
pop esi
pop edi
mov eax, 0x80004005
pop ebx
add esp, 8
ret 4
pop ebp
pop esi
pop edi
xor eax, eax
pop ebx
add esp, 8
ret 4