Function at 0x413d20
Capabilities:
Check if file exists
Extract resource via kernel32 functions

Disassembly:
push 0xffffffffffffffff
push 0x4217db
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x78
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor edi, edi
mov eax, dword [esi + 0x357bc]
mov dword [esp + 0x24], esi
cmp eax, edi
je 0x414264
push 0x42d5cc
lea ecx, [esp + 0x14]
call fcn.004175e2
mov eax, dword [esp + 0x98]
mov dword [esp + 0x90], edi
cmp eax, 8
ja case.default.0x413d73
jmp dword [eax*4 + 0x414280]
push str.lost.wav
jmp 0x413db7
push str.win.wav
jmp 0x413db7
push str.transform.wav
jmp 0x413db7
push str.fadelayer.wav
jmp 0x413db7
push str.btn.wav
jmp 0x413db7
push str.flystar.wav
jmp 0x413db7
push str.useitem.wav
jmp 0x413db7
push str.fixup.wav
jmp 0x413db7
push str.ReadyGo.wav
lea ecx, [esp + 0x14]
call fcn.004175b8
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_2
lea eax, [esp + 0x20]
mov byte [esp + 0x90], 1
push eax
call fcn.00417e60
add esp, 4
mov ecx, dword [esp + 0x10]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x1c]
push str._sWav_s
push eax
mov byte [esp + 0xa0], 2
call sub.MFC42.DLL_CString::Format
add esp, 0x10
lea ecx, [esp + 0x20]
mov byte [esp + 0x90], 1
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x41423f
cmp dword [esi + 0x3866c], edi
je 0x41422e
push 0x94
call sub.MFC42.DLL_operatornew
add esp, 4
cmp eax, edi
je 0x413e59
mov dword [eax], edi
mov dword [eax + 4], edi
mov dword [eax + 0x90], edi
mov dword [eax + 0x30], edi
mov dword [eax + 0x80], edi
mov ebp, eax
jmp 0x413e5b
xor ebp, ebp
mov esi, dword [esp + 0x14]
mov dword [ebp + 0x7c], 1
cmp esi, edi
mov dword [ebp + 0x80], edi
je 0x413ee3
mov eax, dword [ebp]
cmp eax, edi
je 0x413e83
push eax
call sub.MFC42.DLL_operatordelete
add esp, 4
mov dword [ebp], edi
push 0x10000
push edi
push esi
call dword [sym.imp.WINMM.dll_mmioOpenA]
cmp eax, edi
mov dword [ebp + 4], eax
jne 0x413fba
push str.WAVE
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_FindResourceA]
call edi
mov ebx, eax
test ebx, ebx
jne 0x413ebf
push 0x42c980
push esi
push eax
call edi
mov ebx, eax
test ebx, ebx
je 0x413ee1
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov esi, eax
test esi, esi
jne 0x413f28
push 0x80004005
push str.LoadResource
push 1
mov ecx, ebp
call fcn.004146c0
xor edi, edi
mov esi, dword [ebp + 0x30]
cmp esi, edi
jne 0x414125
cmp dword [ebp + 0x7c], 1
jne 0x41400f
mov ecx, dword [ebp + 4]
push edi
push ecx
call dword [sym.imp.WINMM.dll_mmioClose]
mov eax, dword [ebp + 0x90]
mov dword [ebp + 4], edi
cmp eax, edi
je 0x414218
push eax
call sub.MFC42.DLL_operatordelete
add esp, 4
mov dword [ebp + 0x90], edi
jmp 0x414218
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ebx, eax
test ebx, ebx
jne 0x413f43
push 0x80004005
push str.SizeofResource
jmp 0x413ed8
push esi
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
jne 0x413f5f
push 0x80004005
push str.LockResource
jmp 0x413ed8
push ebx
call sub.MFC42.DLL_operatornew
mov ecx, ebx
mov edi, eax
mov edx, ecx
mov dword [ebp + 0x90], eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
xor eax, eax
and ecx, 3
add esp, 4
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x12
lea edi, [esp + 0x40]
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x90]
lea ecx, [esp + 0x40]
push 0x10000
push ecx
push 0
mov dword [esp + 0x50], 0x204d454d
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], eax
call dword [sym.imp.WINMM.dll_mmioOpenA]
mov dword [ebp + 4], eax
xor edi, edi
mov ecx, ebp
call fcn.004142b0
mov esi, eax
cmp esi, edi
jge 0x413fe5
mov edx, dword [ebp + 4]
push edi
push edx
call dword [sym.imp.WINMM.dll_mmioClose]
push esi
push str.ReadMMIO
push edi
mov ecx, ebp
call fcn.004146c0
jmp 0x413ee3
mov ecx, ebp
call fcn.00414a90
cmp eax, edi
jge 0x414004
push eax
push str.ResetFile
push 1
mov ecx, ebp
call fcn.004146c0
jmp 0x413ee3
mov eax, dword [ebp + 0xc]
mov dword [ebp + 0x30], eax
jmp 0x413ee3
mov esi, dword [ebp + 0x34]
mov ecx, dword [ebp + 4]
lea eax, [ebp + 0x34]
or esi, 0x10000000
cmp ecx, edi
mov dword [eax], esi
je 0x414218
push edi
push eax
push ecx
call dword [sym.imp.WINMM.dll_mmioSetInfo]
test eax, eax
je 0x41404d
push 0x80004005
push str.mmioSetInfo
push 1
mov ecx, ebp
call fcn.004146c0
jmp 0x414218
mov edx, dword [ebp + 4]
lea ebx, [ebp + 8]
push edi
mov edi, dword [sym.imp.WINMM.dll_mmioAscend]
push ebx
push edx
call edi
test eax, eax
jne 0x4140f1
lea esi, [ebp + 0x1c]
push eax
mov eax, dword [ebp + 4]
push esi
push eax
call edi
test eax, eax
jne 0x4140f1
mov ecx, dword [ebp + 4]
push eax
push eax
push ecx
call dword [sym.imp.WINMM.dll_mmioSeek]
mov edx, dword [ebp + 4]
push 0
push 0
push esi
push edx
call dword [sym.imp.WINMM.dll_mmioDescend]
test eax, eax
je 0x4140ae
push 0x80004005
push str.mmioDescend
push 1
mov ecx, ebp
call fcn.004146c0
xor edi, edi
jmp 0x414218
mov eax, dword [ebp + 4]
push 0x10
push esi
push ebx
push eax
mov dword [ebx], 0x74636166
call dword [sym.imp.WINMM.dll_mmioDescend]
test eax, eax
jne 0x4140e4
mov edx, dword [ebp + 4]
lea ecx, [esp + 0x24]
push 4
push ecx
push edx
mov dword [esp + 0x30], eax
call dword [sym.imp.WINMM.dll_mmioWrite]
mov eax, dword [ebp + 4]
push 0
push ebx
push eax
call edi
mov ecx, dword [ebp + 4]
push 0
push esi
push ecx
call edi
test eax, eax
je 0x41410b
push 0x80004005
push str.mmioAscend
push 1
mov ecx, ebp
call fcn.004146c0
xor edi, edi
jmp 0x414218
mov edx, dword [ebp + 4]
push 0
push edx
call dword [sym.imp.WINMM.dll_mmioClose]
mov dword [ebp + 4], 0
xor edi, edi
jmp 0x414218
xor eax, eax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], 0x14
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], 0xe2
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x3c], eax
mov eax, dword [edx + 0x38670]
mov ecx, dword [ebp]
lea edx, [esp + 0x18]
push edi
push edx
lea edx, [esp + 0x34]
mov dword [esp + 0x44], ecx
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
jl 0x41423f
mov eax, dword [esp + 0x18]
push 2
push edi
lea edx, [esp + 0x24]
push edi
push edx
lea edx, [esp + 0x30]
mov dword [esp + 0x2c], edi
push edx
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], edi
mov ecx, dword [eax]
push esi
push edi
push eax
xor ebx, ebx
call dword [ecx + 0x2c]
test eax, eax
jl 0x414211
mov ecx, ebp
call fcn.00414a90
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x28]
push eax
push ecx
push edx
mov ecx, ebp
call fcn.004148a0
test eax, eax
jl 0x4141cf
mov ebx, 1
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push edi
push edi
mov ecx, dword [eax]
push edx
mov edx, dword [esp + 0x2c]
push edx
push eax
call dword [ecx + 0x4c]
cmp ebx, edi
je 0x414211
mov eax, dword [esp + 0x18]
push edi
push edi
push edi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x30]
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x3867c]
lea ecx, [edx + 0x38674]
mov edx, dword [esp + 0x18]
push edx
push eax
call sub.MFC42.DLL_CPtrArray::SetAtGrow
mov ecx, ebp
call fcn.004146f0
cmp ebp, edi
je 0x41423f
mov ecx, ebp
call fcn.00414520
push ebp
call sub.MFC42.DLL_operatordelete
add esp, 4
jmp 0x41423f
mov eax, dword [esp + 0x14]
push 0x20003
push edi
push eax
call dword [sym.imp.WINMM.dll_PlaySoundA]
lea ecx, [esp + 0x14]
mov byte [esp + 0x90], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x90], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x88]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x84
ret 4