Function at 0x468020
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4997ee
mov eax, dword fs:[0]
push eax
sub esp, 0xdc
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4ba858]
xor eax, esp
push eax
lea eax, [esp + 0xf0]
mov dword fs:[0], eax
mov eax, dword [esp + 0x100]
mov esi, dword [esp + 0x104]
push eax
xor edi, edi
push str._s.ogg
push 0x6c6820
mov dword [esp + 0x24], edi
xor ebx, ebx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
call dword [sym.imp.USER32.dll_wsprintfA]
mov ecx, dword [str.SE.dat]
push ecx
push 0x6c6820
call fcn.004310a0
mov ebp, eax
add esp, 0x14
cmp ebp, edi
je 0x4681ad
push 0x8f8
call fcn.004812ee
add esp, 4
mov dword [esp + 0x24], eax
cmp eax, edi
mov dword [esp + 0xf8], edi
je 0x4680bf
mov ecx, eax
call fcn.0046ab90
mov edi, eax
test edi, edi
mov dword [esp + 0xf8], 0xffffffff
je 0x4681a4
mov edx, dword [str.SE.dat]
push edx
lea eax, [esp + 0x18]
push eax
mov ecx, eax
push 0x6c6820
push ecx
mov ecx, edi
mov dword [esp + 0x24], 0
call fcn.0046acc0
test al, al
je 0x46819a
push ebp
call fcn.00430be0
add esp, 4
mov ecx, edi
mov dword [edi + 0xc], 0
call fcn.004676a0
push eax
push 0x2002
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
test eax, eax
mov dword [esi + 0x1c], eax
je 0x46819a
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ecx, edi
mov dword [esi + 0x20], eax
call fcn.004676d0
mov edx, dword [esp + 0x14]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x20]
push edx
push eax
mov ecx, edi
call fcn.0046a5a0
mov dword [esi + 4], eax
mov dword [esi], 1
mov ecx, edi
mov word [esi + 0xc], 1
call fcn.00467700
mov ebx, eax
mov ecx, edi
mov word [esi + 0xe], bx
call fcn.00467720
lea ecx, [ebx + ebx]
mov word [esi + 0x18], cx
movzx ecx, cx
imul ecx, eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
mov word [esi + 0x1a], 0x10
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
jmp 0x468622
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
push ebp
call fcn.00430be0
add esp, 4
mov ecx, dword [str.SE.dat]
mov edx, dword [esp + 0x100]
push ecx
push edx
call fcn.004310a0
mov edi, eax
add esp, 8
test edi, edi
jne 0x468200
mov eax, dword [esp + 0x100]
push eax
push str._s.wav
push 0x6c6820
call dword [sym.imp.USER32.dll_wsprintfA]
mov ecx, dword [str.SE.dat]
push ecx
push 0x6c6820
call fcn.004310a0
mov edi, eax
add esp, 0x14
test edi, edi
je 0x468592
push edi
call fcn.00430b90
add esp, 4
push eax
push 0x2002
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push eax
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ebp, eax
push ebp
push edi
call fcn.00430b10
push edi
call fcn.00430ba0
push edi
call fcn.00430be0
push 0x48
lea edx, [esp + 0xbc]
push 0
push edx
call fcn.00481aa0
mov eax, dword [esp + 0x30]
add esp, 0x1c
push 0
lea ecx, [esp + 0xac]
push ecx
push 0
mov dword [esp + 0xcc], ebp
mov dword [esp + 0xb8], 0x204d454d
mov dword [esp + 0xc8], eax
call dword [sym.imp.WINMM.dll_mmioOpenA]
mov edi, dword [sym.imp.WINMM.dll_mmioDescend]
push 0x20
push 0
lea edx, [esp + 0x48]
push edx
push eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x58], 0x45564157
call edi
test eax, eax
jne 0x46852b
mov edx, dword [esp + 0x14]
push 0x10
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x34]
push ecx
push edx
mov dword [esp + 0x3c], 0x20746d66
call edi
test eax, eax
jne 0x46852b
push 1
push eax
mov eax, dword [esp + 0x1c]
push eax
call dword [sym.imp.WINMM.dll_mmioSeek]
mov edx, dword [esp + 0x14]
push 0
lea ecx, [esp + 0x30]
push ecx
mov edi, eax
push edx
add edi, ebp
call dword [sym.imp.WINMM.dll_mmioAscend]
mov edx, dword [esp + 0x14]
push 0x10
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x34]
push ecx
push edx
mov dword [esp + 0x3c], 0x61746164
call dword [sym.imp.WINMM.dll_mmioDescend]
test eax, eax
jne 0x46852b
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
push 1
push 0
push ecx
mov dword [esp + 0x28], eax
call dword [sym.imp.WINMM.dll_mmioSeek]
mov ecx, eax
add ecx, ebp
cmp word [edi], 1
mov dword [esp + 0x24], ecx
je 0x468599
push 0x54
lea edx, [esp + 0x58]
push 0
push edx
call fcn.00481aa0
movzx eax, word [edi + 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_GlobalAlloc]
add esp, 0xc
add eax, 0x12
push eax
push 0
mov dword [esp + 0x5c], 0x54
call ebx
movzx ecx, word [edi + 0x10]
add ecx, 0x12
push ecx
push 0
mov ebp, eax
call ebx
test ebp, ebp
mov ebx, eax
je 0x46852f
test ebx, ebx
je 0x46852f
movzx edx, word [edi + 0x10]
add edx, 0x12
push edx
push edi
push ebp
call fcn.004826d0
movzx eax, word [edi + 0x10]
add eax, 0x12
push eax
push edi
push ebx
call fcn.004826d0
add esp, 0x18
push 0x10000
push 0x12
push ebx
push ebp
push 0
mov word [ebx], 1
mov word [ebx + 0x10], 0
call sub.MSACM32.dll_acmFormatSuggest
test eax, eax
jne 0x46852f
push 4
push eax
push eax
push eax
push ebx
push ebp
push eax
lea ecx, [esp + 0x34]
push ecx
call sub.MSACM32.dll_acmStreamOpen
test eax, eax
jne 0x46852f
mov eax, dword [esp + 0x1c]
push 0
lea edx, [esp + 0x78]
push edx
push eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x24]
push eax
call sub.MSACM32.dll_acmStreamSize
test eax, eax
jne 0x46852f
mov eax, dword [esp + 0x74]
test eax, 0xfff
je 0x468425
and eax, 0xfffff000
add eax, 0x1000
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0x24]
push eax
push 0x2002
mov dword [esp + 0x84], 0
mov dword [esp + 0x68], ecx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push eax
mov dword [esp + 0x24], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov edi, eax
test edi, edi
mov dword [esp + 0x70], edi
je 0x46852f
mov eax, dword [esp + 0x18]
push 0
lea edx, [esp + 0x58]
push edx
push eax
call sub.MSACM32.dll_acmStreamPrepareHeader
test eax, eax
jne 0x46852f
mov edx, dword [esp + 0x18]
push 4
lea ecx, [esp + 0x58]
push ecx
push edx
call sub.MSACM32.dll_acmStreamConvert
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
push 0
lea eax, [esp + 0x58]
push eax
push ecx
call sub.MSACM32.dll_acmStreamUnprepareHeader
mov edx, dword [esp + 0x18]
push 0
push edx
call sub.MSACM32.dll_acmStreamClose
cmp dword [esp + 0x24], 0
mov dword [esp + 0x18], 0
jne 0x46853f
mov eax, dword [esp + 0x78]
mov word [esi + 0xc], 1
movzx ecx, word [ebx + 2]
mov word [esi + 0xe], cx
mov edx, dword [ebx + 4]
mov dword [esi + 0x10], edx
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 8]
mov dword [esi + 0x14], eax
movzx ecx, word [ebx + 0xc]
mov word [esi + 0x18], cx
movzx ecx, word [ebx + 2]
imul ecx, dword [ebx + 4]
mov eax, dword [ebx + 8]
xor edx, edx
div ecx
push ebx
add eax, eax
add eax, eax
add eax, eax
mov word [esi + 0x1a], ax
call dword [sym.imp.KERNEL32.dll_GlobalHandle]
mov ebx, dword [sym.imp.KERNEL32.dll_GlobalFree]
push eax
call ebx
push ebp
call dword [sym.imp.KERNEL32.dll_GlobalHandle]
push eax
call ebx
mov edx, dword [esp + 0x20]
mov dword [esi + 0x20], edi
mov edi, dword [esp + 0x28]
mov dword [esi + 0x1c], edx
jmp 0x4685e4
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x46853f
push 0
push eax
call sub.MSACM32.dll_acmStreamClose
mov eax, dword [esp + 0x14]
test eax, eax
je 0x468550
push 0
push eax
call dword [sym.imp.WINMM.dll_mmioClose]
test ebp, ebp
mov edi, dword [sym.imp.KERNEL32.dll_GlobalFree]
mov esi, dword [sym.imp.KERNEL32.dll_GlobalHandle]
je 0x468566
push ebp
call esi
push eax
call edi
test ebx, ebx
je 0x468570
push ebx
call esi
push eax
call edi
mov esi, dword [esp + 0x20]
test esi, esi
mov ebx, dword [sym.imp.KERNEL32.dll_GlobalUnlock]
je 0x468584
push esi
call ebx
push esi
call edi
mov esi, dword [esp + 0x28]
test esi, esi
je 0x468592
push esi
call ebx
push esi
call edi
xor eax, eax
jmp 0x468627
mov word [esi + 0xc], 1
mov ax, word [edi + 2]
mov word [esi + 0xe], ax
mov edx, dword [edi + 4]
mov dword [esi + 0x10], edx
mov eax, dword [edi + 8]
mov dword [esi + 0x14], eax
mov dx, word [edi + 0xc]
mov word [esi + 0x18], dx
movzx ebx, word [edi + 2]
imul ebx, dword [edi + 4]
mov eax, dword [edi + 8]
xor edx, edx
div ebx
mov edi, dword [esp + 0x28]
mov ebx, dword [sym.imp.KERNEL32.dll_GlobalFree]
add eax, eax
add eax, eax
add eax, eax
mov word [esi + 0x1a], ax
mov dword [esi + 0x1c], edi
mov dword [esi + 0x20], ecx
mov eax, dword [esp + 0x14]
push 0
push eax
call dword [sym.imp.WINMM.dll_mmioClose]
mov eax, dword [esp + 0x1c]
mov dword [esi + 4], eax
mov ecx, dword [esi + 0x14]
push ecx
push 0x3e8
push eax
call dword [sym.imp.KERNEL32.dll_MulDiv]
cmp dword [esp + 0x20], 0
mov dword [esi + 8], eax
je 0x46861c
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push edi
call ebx
mov dword [esi], 1
mov eax, 1
mov ecx, dword [esp + 0xf0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe8
ret