Function at 0x403450
Capabilities:
Delete file
Extract resource via kernel32 functions
Get common file path
Write file on windows

Disassembly:
sub esp, 0x278
mov eax, dword [0x414720]
xor eax, esp
mov dword [esp + 0x274], eax
mov eax, dword [esp + 0x27c]
push ebx
push ebp
push esi
push edi
xor ebp, ebp
push ebp
lea ecx, [esp + 0x40]
push ecx
push 0x41581c
mov dword [esp + 0x28], eax
mov dword [esp + 0x48], 1
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], ebp
call sub.gdiplus.dll_GdiplusStartup
push str.Courier_New_Bold
push 0x10
push ebp
push ebp
push ebp
push 1
push ebp
push ebp
push ebp
push 0x190
push 0xa
push ebp
push 0xa
push 0x1b
call dword [sym.imp.GDI32.dll_CreateFontW]
lea edx, [esp + 0x7c]
push edx
push 0x104
mov dword [0x415b1c], eax
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov edi, dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push 0x415b28
push ebp
push str.Atelier
lea eax, [esp + 0x88]
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0x415b28
call esi
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcatW]
push str..ttf
push 0x415b28
call ebx
push 0x415b28
call esi
push 0xa
push str.105
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_FindResourceW]
call ebp
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x415b28
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ecx, dword [esp + 0x10]
push ecx
mov dword [esp + 0x18], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0
lea edx, [esp + 0x1c]
push edx
push 0x1718
push eax
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0x10
push 0x415b28
call dword [sym.imp.GDI32.dll_AddFontResourceExW]
push 0x415d30
push 0
push str.Atelier
lea eax, [esp + 0x88]
push eax
call edi
push 0x415d30
call esi
push str..ttf
push 0x415d30
call ebx
push 0x415d30
call esi
push 0xa
push 0x6a
push 0
call ebp
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x415d30
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ecx, dword [esp + 0x14]
push ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0
lea edx, [esp + 0x1c]
push edx
push 0x8d4d
push eax
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0x10
push 0x415d30
call dword [sym.imp.GDI32.dll_AddFontResourceExW]
push 0x415f38
push 0
push str.Atelier
lea eax, [esp + 0x88]
push eax
call edi
push 0x415f38
call esi
push str..ttf
push 0x415f38
call ebx
push 0x415f38
call esi
push 0xa
push str.107
push 0
call ebp
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x415f38
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ecx, dword [esp + 0x14]
push ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0
lea edx, [esp + 0x1c]
push edx
push 0xe6f8
push eax
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0x10
push 0x415f38
call dword [sym.imp.GDI32.dll_AddFontResourceExW]
push 0x416348
push 0
push str.Atelier
lea eax, [esp + 0x88]
push eax
call edi
push 0x416348
call esi
push str..mp3
push 0x416348
call ebx
push 0x416348
call esi
push 0xa
push str.250
push 0
call ebp
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x416348
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ecx, dword [esp + 0x14]
push ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0
lea edx, [esp + 0x1c]
push edx
push 0x228e2
push eax
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x416550
push 0
push str.Atelier
lea eax, [esp + 0x88]
push eax
call edi
push 0x416550
call esi
push str..mp3
push 0x416550
call ebx
push 0x416550
call esi
push 0xa
push str.251
push 0
call ebp
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x416550
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ecx, dword [esp + 0x14]
push ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0
lea edx, [esp + 0x1c]
push edx
push 0x28bb5
push eax
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x416758
push 0
push str.Atelier
lea eax, [esp + 0x88]
push eax
call edi
push 0x416758
call esi
push str..mp3
push 0x416758
call ebx
push 0x416758
call esi
push 0xa
push str.252
push 0
call ebp
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x416758
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ecx, dword [esp + 0x14]
push ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0
lea edx, [esp + 0x1c]
push edx
push 0x4a620
push eax
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x416140
push 0
push str.Atelier
lea eax, [esp + 0x88]
push eax
call edi
push 0x416140
call esi
push str..mid
push 0x416140
call ebx
push 0xa
push str.104
xor ebx, ebx
push ebx
call ebp
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
push ebx
push 0x80
push 2
push ebx
push ebx
push 0x40000000
push 0x416140
mov edi, eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push edi
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push ebx
lea ecx, [esp + 0x1c]
push ecx
push 0x3e1e
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_WriteFile]
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebp, dword [esp + 0x1c]
mov edi, dword [sym.imp.USER32.dll_LoadIconW]
xor eax, eax
push str.MAINICON
push ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x7c], str.MY_WINDOWS_CLASS
mov dword [esp + 0x54], 0x30
mov dword [esp + 0x58], 3
mov dword [esp + 0x5c], 0x402d50
mov dword [esp + 0x68], ebp
call edi
push str.MAINICON
push ebp
mov dword [esp + 0x6c], eax
call edi
push 0x7f00
push ebx
mov dword [esp + 0x80], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
push 4
mov dword [esp + 0x6c], eax
call dword [sym.imp.GDI32.dll_GetStockObject]
lea edx, [esp + 0x4c]
push edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
call dword [sym.imp.USER32.dll_RegisterClassExW]
test ax, ax
jne 0x403a07
mov eax, 0x80004005
jmp 0x403b5f
push ebx
push ebp
push ebx
push ebx
push 1
push 1
push ebx
push ebx
push 0x80020000
push 0x40f808
push str.MY_WINDOWS_CLASS
push 8
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [0x415ab0], eax
cmp eax, ebx
je 0x4039fd
mov ecx, dword [esp + 0x298]
push ecx
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov edx, dword [0x415ab0]
push edx
call dword [sym.imp.USER32.dll_UpdateWindow]
push ebp
call fcn.00401190
add esp, 4
call fcn.00401800
push ebx
call dword [sym.imp.USER32.dll_ShowCursor]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push ebx
push 0xfa
mov dword [0x415800], eax
mov eax, dword [0x415ab0]
push 8
push eax
call dword [sym.imp.USER32.dll_SetTimer]
cmp dword [esp + 0x24], 0x12
je 0x403ac5
mov edi, dword [sym.imp.USER32.dll_PeekMessageW]
mov ebp, dword [sym.imp.USER32.dll_TranslateMessage]
push 1
push ebx
push ebx
push ebx
lea ecx, [esp + 0x30]
push ecx
call edi
test eax, eax
je 0x403ab8
lea edx, [esp + 0x20]
push edx
call ebp
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
jmp 0x403abe
call dword [0x414670]
cmp dword [esp + 0x24], 0x12
jne 0x403a94
call fcn.00401b30
mov ecx, dword [esp + 0x60]
push ecx
push str.MY_WINDOWS_CLASS
call dword [sym.imp.USER32.dll_UnregisterClassW]
push ebx
push ebx
push ebx
push str.close_music
call dword [sym.imp.WINMM.dll_mciSendStringW]
mov edi, dword [sym.imp.GDI32.dll_RemoveFontResourceExW]
mov edi, edi
push ebx
push 0x10
push 0x415b28
call edi
test eax, eax
jne 0x403af0
mov edi, edi
push ebx
push 0x10
push 0x415d30
call edi
test eax, eax
jne 0x403b00
mov edi, edi
push ebx
push 0x10
push 0x415f38
call edi
test eax, eax
jne 0x403b10
push 0x415d30
call esi
push 0x415b28
call esi
push 0x415f38
call esi
push 0x416140
call esi
push 0x416348
call esi
push 0x416550
call esi
push 0x416758
call esi
mov edx, dword [0x41581c]
push edx
call sub.gdiplus.dll_GdiplusShutdown
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x284]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00403f4c
add esp, 0x278
ret 0x10