Function at 0x403bf0
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Hide graphical window
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [0x427040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push 0x428ab0
call esi
push 0x428a94
call esi
push 0x428a48
call esi
push 0x428adc
call esi
push str.AudioPlayer
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [0x428a14], eax
test eax, eax
jne 0x403c66
push eax
push str.Error
push str.Error_creating_mutex
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00405ea4
mov esp, ebp
pop ebp
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
cmp eax, 0xb7
jne 0x403c8f
push str.Information
push str.Mutex_already_exists_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov dword [ebp - 0x50], 0x30
mov dword [ebp - 0x4c], 3
mov dword [ebp - 0x48], 0x404620
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov esi, dword [sym.imp.USER32.dll_LoadIconW]
push 0x7f00
push 0
mov dword [ebp - 0x3c], eax
call esi
push 0x7f00
push 0
mov dword [ebp - 0x38], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
push 0xffffff
mov dword [ebp - 0x34], eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
push 0x7f00
push 0
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0x424270
call esi
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExW]
test ax, ax
jne 0x403d3d
push 0x10
push str.Error
push str.Window_Registration_Failed_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00405ea4
mov esp, ebp
pop ebp
ret 0x10
push edi
push 0
mov esi, dword [sym.imp.USER32.dll_CreateWindowExW]
push ebx
push 0
push 0
push 0x258
push 0x19e
push 0x80000000
push 0x80000000
push 0xa0000
push str.C_Melody_MP3_Player
push 0x424270
push 0
call esi
mov edi, eax
test edi, edi
jne 0x403da0
push eax
push str.Error
push str.Window_creation_failed
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00405ea4
mov esp, ebp
pop ebp
ret 0x10
mov edx, ebx
mov ecx, edi
call fcn.004013c0
push 0
push ebx
push 0
push edi
push 0x2d
push 0x179
push 0x15e
push 0xa
push 0x50000001
push str.Welcome_to_C_Melody_MP3_Player__nPlease_add_MP3s_or_load_a_playlist_to_get_started._Note:_C_Melody_MP3_Player_v1.1_cannot_play_mp3_files_with_ID3v2.4__ID3v1_ID3v2.4__tags.
push str.STATIC
push 0
call esi
push 1
push dword [0x428a64]
mov dword [0x428a44], eax
push 0x30
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov esi, dword [sym.imp.USER32.dll_ShowWindow]
push 5
push dword [0x428a44]
call esi
push dword [ebp + 0x14]
push edi
call esi
push edi
call dword [sym.imp.USER32.dll_UpdateWindow]
mov ebx, dword [sym.imp.USER32.dll_GetMessageW]
lea eax, [ebp - 0x20]
push 0
push 0
push 0
push eax
call ebx
test eax, eax
je 0x403e41
mov esi, dword [sym.imp.USER32.dll_TranslateMessage]
mov edi, dword [sym.imp.USER32.dll_DispatchMessageW]
lea eax, [ebp - 0x20]
push eax
call esi
lea eax, [ebp - 0x20]
push eax
call edi
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
call ebx
test eax, eax
jne 0x403e25
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x18]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.00405ea4
mov esp, ebp
pop ebp
ret 0x10