Function at 0x419e20
Capabilities:
Check mutex on windows

Disassembly:
mov eax, 0x4f2e8
call fcn.00436020
push ebx
push ebp
push esi
push edi
lea ecx, [esp + 0x14c]
call fcn.0041a4d0
lea ecx, [esp + 0x402d8]
call fcn.0041a4d0
mov dword [esp + 0x402d8], 0x4429d4
mov dword [esp + 0x14c], 0x4429b8
call fcn.00401190
mov ebp, dword [esp + 0x4f2fc]
lea eax, [esp + 0x48]
push 0x104
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x48]
lea edx, [esp + 0x10]
push ecx
push edx
call fcn.00417680
mov edi, dword [esp + 0x1c]
xor ebx, ebx
add esp, 8
cmp edi, ebx
jne 0x419e9a
mov edi, 0x442380
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, dword [esp + 0x4f308]
mov eax, ecx
mov esi, edi
mov edi, str.C:Program_Files_
push 9
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x4f304]
mov esi, dword [esp + 0x4f308]
mov dword [0x453424], ebp
mov dword [0x453428], ecx
mov dword [0x45342c], esi
mov dword [0x453430], edx
call fcn.004011d0
push eax
call fcn.004185d0
add esp, 8
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push 9
call fcn.004011d0
push eax
call fcn.004185d0
add esp, 8
mov ecx, 0x453468
call fcn.00405c20
call fcn.00418400
push str.VirtuaNESmutex
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x419fca
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [0x45346c], ebx
je 0x419fca
push str.VirtuaNES
push str.VirtuaNESwndclass
call dword [sym.imp.USER32.dll_FindWindowA]
mov ebp, eax
push ebp
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x41a1b8
cmp byte [esi], 0x22
jne 0x419f9f
inc esi
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp byte [ecx + esi - 1], 0x22
jne 0x419f9f
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [ecx + esi - 1], al
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x20], ebx
repne scasb al, byte es:[edi]
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esi
push eax
push ebx
not ecx
push 0x4a
push ebp
mov dword [esp + 0x34], ecx
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x41a1b8
push ebx
lea ecx, [esp + 0x150]
call fcn.00411e30
test eax, eax
jne 0x41a065
mov ecx, 0x455c18
call fcn.00409dc0
mov ecx, 0x461528
call fcn.0040dc00
mov ecx, 0x4611d8
call fcn.0040d720
mov eax, dword [0x453434]
cmp eax, ebx
je 0x41a00d
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [esp + 0x14]
cmp ecx, ebx
je 0x41a031
mov al, byte [ecx - 1]
test al, al
je 0x41a027
cmp al, 0xff
je 0x41a027
dec al
mov byte [ecx - 1], al
jmp 0x41a031
dec ecx
push ecx
call fcn.00435930
add esp, 4
lea ecx, [esp + 0x402d8]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
call fcn.0041a510
lea ecx, [esp + 0x14c]
call fcn.0041a510
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x4f2e8
ret 0x10
mov ecx, dword [0x453430]
mov edx, dword [0x453438]
push ecx
push edx
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [0x453438]
push eax
call dword [sym.imp.USER32.dll_UpdateWindow]
call fcn.0041a6b0
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x41a0c1
cmp byte [esi], 0x22
jne 0x41a0c1
inc esi
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp byte [ecx + esi - 1], 0x22
jne 0x41a0c1
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [ecx + esi - 1], al
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x41a0e3
mov ecx, dword [0x453438]
push esi
push ebx
push 0x8001
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
push ebx
push ebx
lea edx, [esp + 0x34]
push ebx
push edx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x41a164
mov esi, dword [sym.imp.USER32.dll_GetWindowLongA]
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageA]
mov eax, dword [esp + 0x2c]
mov ecx, dword [0x453438]
cmp ecx, eax
jne 0x41a12e
push 0xffffffffffffffeb
push eax
call esi
test eax, eax
je 0x41a12e
mov edx, dword [eax]
lea ecx, [esp + 0x2c]
push ecx
mov ecx, eax
call dword [edx + 0x10]
test eax, eax
jne 0x41a14d
lea edx, [esp + 0x2c]
push edx
call fcn.0041a480
add esp, 4
test eax, eax
jne 0x41a14d
lea eax, [esp + 0x2c]
push eax
call edi
lea ecx, [esp + 0x2c]
push ecx
call ebx
push 0
push 0
lea edx, [esp + 0x34]
push 0
push edx
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
jne 0x41a107
xor ebx, ebx
call fcn.0041a6d0
push 9
call fcn.004011d0
push eax
call fcn.004185d0
add esp, 8
mov ecx, 0x453468
call fcn.00407100
call fcn.004184f0
mov ecx, 0x455c18
call fcn.00409dc0
mov ecx, 0x461528
call fcn.0040dc00
mov ecx, 0x4611d8
call fcn.0040d720
cmp ebp, ebx
je 0x41a1b8
push ebp
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x453434]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
cmp ecx, ebx
je 0x41a1ec
mov al, byte [ecx - 1]
test al, al
je 0x41a1e2
cmp al, 0xff
je 0x41a1e2
dec al
mov byte [ecx - 1], al
jmp 0x41a1ec
dec ecx
push ecx
call fcn.00435930
add esp, 4
lea ecx, [esp + 0x402d8]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
call fcn.0041a510
lea ecx, [esp + 0x14c]
call fcn.0041a510
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4f2e8
ret 0x10