Function at 0x54dfd7
Capabilities:
Hide graphical window
Log keystrokes

Disassembly:
sub esp, 0xc
push ebx
push edi
mov byte [esp + 0xb], dl
mov edi, ecx
call fcn.0055ff80
mov dl, byte [esp + 0xb]
mov ebx, eax
mov dword [esp + 0xc], ebx
lea ecx, [ebx + 0x115]
mov dword [esp + 0x10], ecx
test dl, dl
jne 0x54e01b
cmp dword [ecx], 0
je 0x54e01f
mov edx, str.Cant_show_non_modal_form_when_modal_form_is_displayed
mov ecx, 0x800a0191
call fcn.0055c7ea
pop edi
pop ebx
add esp, 0xc
ret 4
mov dword [esp + 0x10], ecx
mov eax, dword [edi + 0x48]
push esi
cmp byte [eax + 0x49], 0
jne 0x54e074
cmp byte [eax + 0x51], 0
jne 0x54e05c
test dl, dl
jne 0x54e05c
mov esi, dword [eax + 0x3c]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ebx, dword [sym.imp.USER32.dll_SetForegroundWindow]
cmp eax, esi
je 0x54e049
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, 0xc
ret 4
mov edx, str.Form_already_displayed__cant_show_modally
mov ecx, 0x800a0190
call fcn.0055c7ea
pop esi
pop edi
pop ebx
add esp, 0xc
ret 4
push ebp
mov ebp, dword [ebx + 0x7a]
test dl, dl
je 0x54e095
inc dword [ecx]
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x54e08c
mov ecx, dword [ebx + 0x105]
mov eax, dword [edi + 0x48]
mov byte [eax + 0x51], 1
jmp 0x54e09d
mov ecx, dword [esp + 0x20]
mov byte [eax + 0x51], 0
test ecx, ecx
je 0x54e128
mov eax, dword [ecx]
lea edx, [esp + 0x20]
push edx
push 0x5c3154
push ecx
mov dword [esp + 0x2c], 0
call dword [eax]
test eax, eax
js 0x54e128
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x54e128
mov eax, dword [ecx + 0x48]
test eax, eax
je 0x54e0d9
mov ebp, eax
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
jmp 0x54e102
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x54e0f8
mov eax, dword [eax + 0xc]
test eax, eax
je 0x54e0f8
mov eax, dword [eax + 0x48]
test eax, eax
je 0x54e0f8
mov ebp, eax
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
jmp 0x54e102
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
test ebp, ebp
je 0x54e128
cmp dword [ebp + 0x3c], 0
jne 0x54e11f
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 0x28]
test ecx, ecx
je 0x54e11f
mov ecx, dword [ecx + 0x64]
test ecx, ecx
je 0x54e11f
mov eax, dword [ecx]
push ecx
call dword [eax + 0x34]
mov ecx, dword [edi + 0x48]
push ebp
call fcn.0054df92
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.005544c4
cmp eax, 1
jne 0x54e15e
lea esi, [eax + 5]
jmp 0x54e166
cmp eax, 2
jne 0x54e166
lea esi, [eax + 1]
cmp byte [esp + 0x13], 0
je 0x54e1a6
mov eax, dword [edi + 0x48]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x54e1a6
mov edx, dword [eax + 0x3c]
mov ecx, dword [ecx + 0x3c]
cmp edx, ecx
je 0x54e1a6
mov eax, dword [ebx + 0x7a]
cmp ecx, dword [eax + 0x3c]
je 0x54e1a6
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 0x54e1ef
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 0x54e20f
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 0x54e226
push esi
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov ebx, dword [edi + 0x48]
cmp byte [ebx + 0x51], 0
je 0x54e28e
call fcn.0055ff80
mov esi, dword [eax + 0x121]
test esi, esi
je 0x54e28e
cmp esi, ebx
je 0x54e287
push dword [esi + 0x3c]
call dword [sym.imp.USER32.dll_IsWindowEnabled]
test eax, eax
je 0x54e287
push 8
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, eax
test ecx, ecx
je 0x54e271
mov dword [ecx], esi
mov dword [ecx + 4], 0
jmp 0x54e273
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 0x54e23e
mov ebx, dword [sym.imp.USER32.dll_SetTimer]
mov esi, 1
mov ecx, dword [edi + 0x48]
cmp esi, 1
jl 0x54e2d8
mov eax, dword [ecx + 0x88]
shr eax, 2
cmp esi, eax
ja 0x54e2d8
mov eax, dword [ecx + 0x84]
mov eax, dword [eax + esi*4 - 4]
test eax, eax
je 0x54e2d8
mov edx, dword [eax + 0x30]
test edx, edx
je 0x54e2d5
cmp word [eax + 0x42], 0
je 0x54e2d5
push 0
push edx
push dword [eax + 0x34]
push dword [ecx + 0x3c]
call ebx
inc esi
jmp 0x54e299
cmp byte [esp + 0x13], 0
je 0x54e3c9
test ecx, ecx
je 0x54e3b5
mov eax, dword [ecx + 0x18]
mov eax, dword [eax + 0x28]
test eax, eax
je 0x54e3b5
mov eax, dword [eax + 0x64]
test eax, eax
je 0x54e3b5
cmp dword [eax + 0x80], 0
je 0x54e3b5
xor dl, dl
call fcn.0054dd5c
mov ebx, dword [esp + 0x14]
cmp ebp, dword [ebx + 0x7a]
je 0x54e398
mov esi, dword [ebp + 0x3c]
mov edi, dword [sym.imp.USER32.dll_GetForegroundWindow]
call edi
cmp eax, esi
je 0x54e33b
push esi
mov esi, dword [sym.imp.USER32.dll_SetForegroundWindow]
call esi
jmp 0x54e341
mov esi, dword [sym.imp.USER32.dll_SetForegroundWindow]
push dword [ebp + 0x3c]
call esi
call edi
cmp eax, dword [ebp + 0x3c]
je 0x54e38a
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 edx, dword [ebx + 0x7a]
mov ecx, dword [ebp + 0x3c]
mov edx, dword [edx + 0x3c]
call fcn.0054df87
mov eax, dword [esp + 0x18]
pop ebp
pop esi
pop edi
dec dword [eax]
movzx eax, byte [ebx + 0x57]
neg eax
pop ebx
sbb eax, eax
and eax, 0xeaeaea03
add esp, 0xc
ret 4
call fcn.0055fcf7
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