Function at 0x408e1c
Capabilities:
Print debug messages
Read file via mapping

Disassembly:
push ebx
cmp byte [0x4fe8ac], 0
jne 0x40909b
call sub.kernel32.dll_GetCurrentProcessId
mov ebx, eax
xor eax, eax
mov ecx, eax
shl ecx, 2
mov edx, ebx
shr edx, cl
and edx, 0xf
mov dl, byte [edx + 0x4f70cc]
mov ecx, 0x18
sub ecx, eax
mov byte [ecx + 0x4f77c0], dl
mov ecx, 8
sub ecx, eax
mov byte [ecx + 0x4f77db], dl
mov byte [ecx + 0x4f77ef], dl
inc eax
cmp eax, 8
jne 0x408e33
push 0x4f77dc
push 0x4090a0
call sub.user32.dll_FindWindowA
mov dword [0x4fe8a0], eax
push 0x4f77f0
push 0x4090a0
call sub.user32.dll_FindWindowA
mov dword [0x4fe8a4], eax
push 0x4f77c0
push 0
push 4
call sub.kernel32.dll_OpenFileMappingA
mov dword [0x4fe8a8], eax
mov eax, dword [0x4fe8a0]
or eax, dword [0x4fe8a4]
or eax, dword [0x4fe8a8]
jne 0x408faf
push 0
push 0
push 0
push 0
push 0
push 0
mov eax, dword [0x4fc668]
push eax
push 0
mov edx, 0x4f77dc
mov eax, 0x4090a0
mov ecx, 0x80000000
call fcn.00407ae0
mov dword [0x4fe8a0], eax
push 0
push 0
push 0
push 0
push 0
push 0
mov eax, dword [0x4fc668]
push eax
push 0
mov edx, 0x4f77f0
mov eax, 0x4090a0
mov ecx, 0x80000000
call fcn.00407ae0
mov dword [0x4fe8a4], eax
cmp dword [0x4fe8a0], 0
je 0x408f32
push 0x4fe894
push 0xffffffffffffffeb
mov eax, dword [0x4fe8a0]
push eax
call sub.user32.dll_SetWindowLongA
cmp dword [0x4fe8a4], 0
je 0x408f4d
push 0x4fe894
push 0xffffffffffffffeb
mov eax, dword [0x4fe8a4]
push eax
call sub.user32.dll_SetWindowLongA
push 0x4f77c0
push 4
push 0
push 4
push 0
push 0xffffffffffffffff
call sub.kernel32.dll_CreateFileMappingA
mov dword [0x4fe8a8], eax
push 0
push 0
push 0
push 2
mov eax, dword [0x4fe8a8]
push eax
call sub.kernel32.dll_MapViewOfFile
mov dword [eax], 0x4fe894
push eax
call sub.kernel32.dll_UnmapViewOfFile
mov dword [0x4fe894], 0x408364
mov dword [0x4fe898], 0x408660
mov dword [0x4fe89c], 0x4087fc
mov byte [0x4fe8ad], 1
jmp 0x409061
cmp dword [0x4fe8a8], 0
je 0x408fef
push 0
push 0
push 0
push 4
mov eax, dword [0x4fe8a8]
push eax
call sub.kernel32.dll_MapViewOfFile
mov edx, dword [eax]
mov ecx, dword [edx]
mov dword [0x4fe894], ecx
mov ecx, dword [edx + 4]
mov dword [0x4fe898], ecx
mov ecx, dword [edx + 8]
mov dword [0x4fe89c], ecx
push eax
call sub.kernel32.dll_UnmapViewOfFile
jmp 0x409048
cmp dword [0x4fe8a0], 0
je 0x409021
push 0xffffffffffffffeb
mov eax, dword [0x4fe8a0]
push eax
call sub.user32.dll_GetWindowLongA
mov edx, dword [eax]
mov dword [0x4fe894], edx
mov edx, dword [eax + 4]
mov dword [0x4fe898], edx
mov edx, dword [eax + 8]
mov dword [0x4fe89c], edx
jmp 0x409048
push 0xffffffffffffffeb
mov eax, dword [0x4fe8a4]
push eax
call sub.user32.dll_GetWindowLongA
mov edx, dword [eax]
mov dword [0x4fe894], edx
mov edx, dword [eax + 4]
mov dword [0x4fe898], edx
mov edx, dword [eax + 8]
mov dword [0x4fe89c], edx
mov eax, dword [0x4fe8a8]
push eax
call sub.kernel32.dll_CloseHandle
xor eax, eax
mov dword [0x4fe8a8], eax
mov byte [0x4fe8ad], 0
mov eax, 0x4fe888
call fcn.00402ae4
mov eax, 0x4fe894
call fcn.00402b00
mov byte [0x4fe8ac], 1
cmp byte [0x4fe8ad], 0
je 0x409091
push 0x4090a8
call sub.kernel32.dll_OutputDebugStringA
jmp 0x40909b
push 0x4090bc
call sub.kernel32.dll_OutputDebugStringA
pop ebx
ret