Function at 0x4b478b
Capabilities:
Hide graphical window
Log keystrokes

Disassembly:
sub esp, 0xc
push ebx
push edi
mov byte [esp + 0xb], dl
mov edi, ecx
call fcn.004d6912
mov ecx, dword [edi + 0x50]
mov ebx, eax
mov dword [esp + 0x10], ebx
test ecx, ecx
je 0x4b47d7
mov ecx, dword [ecx + 0x28]
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x4b47d7
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4b47d7
mov eax, dword [eax + 0x28]
test dword [eax + 0x74], 0x40000
je 0x4b47d7
mov ecx, dword [ebx + 0x1ff]
test ecx, ecx
je 0x4b47d7
mov ecx, dword [ecx + 0x28]
call fcn.004b5f27
mov dl, byte [esp + 0xb]
test dl, dl
jne 0x4b47ff
cmp dword [ebx + 0x17e], 0
je 0x4b47ff
mov edx, str.Cant_show_non_modal_form_when_modal_form_is_displayed
mov ecx, 0x800a0191
call fcn.004c9847
pop edi
pop ebx
add esp, 0xc
ret 4
mov eax, dword [edi + 0x50]
push esi
cmp byte [eax + 0x61], 0
jne 0x4b4854
cmp byte [eax + 0x6a], 0
jne 0x4b483c
test dl, dl
jne 0x4b483c
mov esi, dword [eax + 0x54]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ebx, dword [sym.imp.USER32.dll_SetForegroundWindow]
cmp eax, esi
je 0x4b4829
push esi
call ebx
mov eax, dword [edi + 0x50]
push dword [eax + 0x54]
call ebx
pop esi
pop edi
xor eax, eax
pop ebx
add esp, 0xc
ret 4
mov edx, str.Form_already_displayed__cant_show_modally
mov ecx, 0x800a0190
call fcn.004c9847
pop esi
pop edi
pop ebx
add esp, 0xc
ret 4
mov esi, dword [esp + 0x1c]
push ebp
mov ebp, dword [ebx + 0xe2]
test dl, dl
je 0x4b487c
inc dword [ebx + 0x17e]
test esi, esi
jne 0x4b4873
mov esi, dword [ebx + 0x16e]
mov eax, dword [edi + 0x50]
mov byte [eax + 0x6a], 1
jmp 0x4b4880
mov byte [eax + 0x6a], 0
test esi, esi
je 0x4b494c
mov eax, dword [esi]
lea ecx, [esp + 0x14]
push ecx
push 0x559e9c
push esi
mov dword [esp + 0x20], 0
call dword [eax]
test eax, eax
js 0x4b48ab
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x4b48e8
mov eax, dword [esi]
lea ecx, [esp + 0x14]
push ecx
push 0x559e8c
push esi
call dword [eax]
test eax, eax
js 0x4b48c5
cmp dword [esp + 0x14], 0
jne 0x4b48df
mov eax, dword [esi]
lea ecx, [esp + 0x14]
push ecx
push 0x559e7c
push esi
call dword [eax]
test eax, eax
js 0x4b4948
cmp dword [esp + 0x14], 0
je 0x4b4948
call fcn.004d509f
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x50]
test eax, eax
je 0x4b48f9
mov ebp, eax
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
jmp 0x4b4922
mov eax, dword [ecx + 0x38]
test eax, eax
je 0x4b4918
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4b4918
mov eax, dword [eax + 0x50]
test eax, eax
je 0x4b4918
mov ebp, eax
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
jmp 0x4b4922
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
test ebp, ebp
je 0x4b4948
cmp dword [ebp + 0x54], 0
jne 0x4b493f
mov eax, dword [ebp + 0x28]
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x4b493f
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x4b493f
mov eax, dword [ecx]
push ecx
call dword [eax + 0x38]
mov ecx, dword [edi + 0x50]
push ebp
call fcn.004b4743
mov dl, byte [esp + 0x13]
mov eax, dword [edi + 0x50]
mov esi, 5
mov byte [eax + 0x60], 0
mov eax, dword [edi + 0x50]
mov byte [eax + 0x61], 0
mov eax, dword [edi + 0x50]
mov byte [eax + 0x67], 0
mov ecx, dword [edi + 0x50]
mov eax, dword [ecx + 0x28]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x28]
cmp eax, 1
jne 0x4b4982
lea esi, [eax + 5]
jmp 0x4b498a
cmp eax, 2
jne 0x4b498a
lea esi, [eax + 1]
test dl, dl
je 0x4b49c8
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x4b49c8
mov edx, dword [ecx + 0x54]
mov ecx, dword [eax + 0x54]
cmp edx, ecx
je 0x4b49c8
mov eax, dword [ebx + 0xe2]
cmp ecx, dword [eax + 0x54]
je 0x4b49c8
mov eax, dword [sym.imp.USER32.dll_GetWindowLongW]
push 0xffffffffffffffec
push edx
call eax
and eax, 0xfffbffff
push eax
mov eax, dword [edi + 0x50]
push 0xffffffffffffffec
push dword [eax + 0x54]
call dword [sym.imp.USER32.dll_SetWindowLongW]
mov eax, dword [edi + 0x50]
mov cl, byte [eax + 0x62]
mov byte [eax + 0x62], 1
mov eax, dword [edi + 0x50]
mov byte [esp + 0x20], cl
cmp byte [eax + 0x6d], 0
je 0x4b4a05
push 0xfffffffffffffff0
push dword [eax + 0x54]
call dword [sym.imp.USER32.dll_GetWindowLongW]
and eax, 0xfffeffff
push eax
mov eax, dword [edi + 0x50]
push 0xfffffffffffffff0
push dword [eax + 0x54]
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, dword [edi + 0x50]
mov byte [eax + 0x6d], 0
mov eax, dword [edi + 0x50]
cmp byte [eax + 0x6e], 0
je 0x4b4a35
push 0xffffffffffffffec
push dword [eax + 0x54]
mov eax, dword [sym.imp.USER32.dll_GetWindowLongW]
call eax
or eax, 0x80
push eax
mov eax, dword [edi + 0x50]
push 0xffffffffffffffec
push dword [eax + 0x54]
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, dword [edi + 0x50]
mov byte [eax + 0x6e], 0
mov eax, dword [edi + 0x50]
push esi
push dword [eax + 0x54]
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [edi + 0x50]
mov cl, byte [esp + 0x20]
mov byte [eax + 0x62], cl
mov eax, dword [edi + 0x50]
mov esi, dword [eax + 0x54]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
cmp eax, esi
je 0x4b4a63
push esi
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov eax, dword [edi + 0x50]
mov dword [esp + 0x20], eax
cmp byte [eax + 0x6a], 0
je 0x4b4ad6
call fcn.004d6912
mov esi, dword [eax + 0x18d]
test esi, esi
je 0x4b4ad6
mov ebx, dword [esp + 0x20]
cmp esi, ebx
je 0x4b4acb
push dword [esi + 0x54]
call dword [sym.imp.USER32.dll_IsWindowEnabled]
test eax, eax
je 0x4b4acb
push 8
push 8
push dword [0x4e05c4]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, eax
test ecx, ecx
je 0x4b4ab5
mov dword [ecx], esi
mov dword [ecx + 4], 0
jmp 0x4b4ab7
xor ecx, ecx
mov eax, dword [ebx + 0x40]
mov dword [ecx + 4], eax
push 0
mov dword [ebx + 0x40], ecx
push dword [esi + 0x54]
call dword [sym.imp.USER32.dll_EnableWindow]
mov esi, dword [esi + 0x1c]
test esi, esi
jne 0x4b4a83
mov ebx, dword [esp + 0x18]
mov dl, byte [esp + 0x13]
test dl, dl
je 0x4b4bd0
mov ecx, dword [edi + 0x50]
test ecx, ecx
je 0x4b4bbc
mov eax, dword [ecx + 0x28]
mov eax, dword [eax + 0x1c]
test eax, eax
je 0x4b4bbc
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4b4bbc
cmp dword [eax + 0x28], 0
je 0x4b4bbc
xor dl, dl
call fcn.004b44f2
cmp ebp, dword [ebx + 0xe2]
je 0x4b4b9c
mov esi, dword [ebp + 0x54]
mov edi, dword [sym.imp.USER32.dll_GetForegroundWindow]
call edi
cmp eax, esi
je 0x4b4b39
push esi
mov esi, dword [sym.imp.USER32.dll_SetForegroundWindow]
call esi
jmp 0x4b4b3f
mov esi, dword [sym.imp.USER32.dll_SetForegroundWindow]
push dword [ebp + 0x54]
call esi
call edi
cmp eax, dword [ebp + 0x54]
je 0x4b4b88
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 + 0x54]
call dword [sym.imp.USER32.dll_BringWindowToTop]
push 5
push dword [ebp + 0x54]
call dword [sym.imp.USER32.dll_ShowWindow]
push 0
push edi
push ebx
call esi
mov ebx, dword [esp + 0x18]
mov eax, dword [ebx + 0xe2]
push dword [eax + 0x54]
push 0xfffffffffffffff8
push dword [ebp + 0x54]
call dword [sym.imp.USER32.dll_SetWindowLongW]
dec dword [ebx + 0x17e]
movzx eax, byte [ebx + 0xbb]
pop ebp
neg eax
pop esi
sbb eax, eax
pop edi
and eax, 0xeaeaea03
pop ebx
add esp, 0xc
ret 4
call fcn.004d509f
pop ebp
pop esi
pop edi
mov eax, 0x80004005
pop ebx
add esp, 0xc
ret 4
pop ebp
pop esi
pop edi
xor eax, eax
pop ebx
add esp, 0xc
ret 4