Function at 0x2112e660
Capabilities:
Check mutex on windows
Resolve function by parsing pe exports

Disassembly:
push ecx
push ebx
mov ebx, eax
test ebx, ebx
push ebp
mov ebp, 2
je 0x2112e6bd
cmp word [ebx], 1
je 0x2112e689
push str.Non_PCM_wave_data_type_not_supported.
call sym.mss32.dll__AIL_set_error_4
pop ebp
mov eax, 1
pop ebx
pop ecx
ret 0xc
mov ax, word [ebx + 2]
cmp ax, 1
jb 0x2112e6a8
cmp ax, bp
ja 0x2112e6a8
mov ax, word [ebx + 0xe]
cmp ax, 8
je 0x2112e6bd
cmp ax, 0x10
je 0x2112e6bd
push str.Unsupported_PCM_data_format.
call sym.mss32.dll__AIL_set_error_4
pop ebp
mov eax, 1
pop ebx
pop ecx
ret 0xc
push esi
push edi
push 0x370
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov esi, eax
test esi, esi
jne 0x2112e6e6
push str.Could_not_allocate_memory_for_driver_descriptor.
call sym.mss32.dll__AIL_set_error_4
pop edi
pop esi
pop ebp
mov eax, 7
pop ebx
pop ecx
ret 0xc
xor eax, eax
mov ecx, 0xdc
mov edi, esi
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x18]
mov dword [esi], 0x47494448
mov dword [eax], esi
call sym.mss32.dll__AIL_MMX_available_0
test ebx, ebx
mov dword [esi + 0x10c], eax
lea eax, [esi + 0x8c]
je 0x2112e736
mov edx, dword [ebx]
mov ecx, eax
mov dword [ecx], edx
mov edx, dword [ebx + 4]
mov dword [ecx + 4], edx
mov edx, dword [ebx + 8]
mov dword [ecx + 8], edx
mov edx, dword [ebx + 0xc]
mov dword [ecx + 0xc], edx
mov dword [esi + 0x100], 0
jmp 0x2112e770
mov word [eax], 1
mov word [esi + 0x8e], bp
mov dword [esi + 0x90], 0x5622
mov word [esi + 0x98], bp
mov word [esi + 0x9a], 8
mov dword [esi + 0x94], 0xac44
mov dword [esi + 0x100], 1
mov ecx, dword [esp + 0x20]
push 0x30000
push 0
push 0x2112e530
push eax
lea ebp, [esi + 0x68]
push ebp
mov eax, ecx
mov ebx, esi
mov dword [esi + 0x88], ecx
call fcn.2112d8f0
mov edi, eax
add esp, 0x14
test edi, edi
je 0x2112e7b7
push str.waveOutOpen___failed.
call sym.mss32.dll__AIL_set_error_4
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 0xc
mov eax, dword [esp + 0x1c]
xor edi, edi
cmp eax, edi
je 0x2112e7c3
mov dword [eax], ebp
push 0x80
push 0x2115ac58
push str.None
push str.Reset
mov ebx, 1
push 0x211463c4
mov dword [esi + 0x70], edi
mov dword [esi + 0x30], edi
mov dword [esi + 0xc4], edi
mov dword [esi + 8], edi
mov dword [esi + 0x6c], ebx
call dword [sym.imp.KERNEL32.dll_GetProfileStringA]
mov eax, ebx
mov edx, 0x21141ef0
mov ecx, 0x2115ac58
call fcn.21109c00
test eax, eax
jne 0x2112e811
mov dword [esi + 0x6c], ebx
mov eax, ebx
mov edx, 0x211463c0
mov ecx, 0x2115ac58
call fcn.21109c00
test eax, eax
jne 0x2112e829
mov dword [esi + 0x6c], edi
mov eax, dword [esi + 0x90]
movzx ecx, word [esi + 0x8e]
mov dword [esi + 0x14], eax
movzx eax, word [esi + 0x9a]
shr eax, 3
cmp eax, ebx
mov dword [esi + 0x20], ecx
mov dword [esi + 0x24], eax
jne 0x2112e86a
mov dword [esp + 0x10], 0x80808080
mov ecx, dword [esi + 0x20]
mov edx, ecx
dec edx
neg edx
sbb edx, edx
and edx, 2
mov dword [esi + 0x1c], edi
mov dword [esi + 0x18], edx
jmp 0x2112e882
mov dword [esp + 0x10], edi
mov ecx, dword [esi + 0x20]
xor eax, eax
cmp ecx, ebx
setne al
mov dword [esi + 0x1c], ebx
lea eax, [eax + eax + 1]
mov dword [esi + 0x18], eax
cmp dword [0x2115664c], edi
je 0x2112eb0e
push 0x20
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], edi
jne 0x2112e8ca
push str.Could_not_allocate_memory_for_test_WAVEHDR.
call sym.mss32.dll__AIL_set_error_4
mov ecx, dword [ebp]
push ecx
mov eax, esi
call fcn.2112dd30
add esp, 4
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
mov eax, 7
pop ebx
pop ecx
ret 0xc
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x10]
mov dword [edx], eax
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov dword [ecx + 4], 4
mov ecx, dword [esp + 0x18]
mov dword [eax + 0x14], edi
mov eax, dword [esp + 0x18]
mov dword [edx + 0x10], edi
mov dword [ecx + 0xc], edi
cmp dword [0x2115664c], edi
je 0x2112e90d
mov edx, dword [ebp]
push 0x20
push eax
push edx
call dword [sym.imp.WINMM.dll_waveOutPrepareHeader]
lock inc dword [0x2115915c]
mov eax, dword [esp + 0x18]
mov dword [esi + 0x368], ebx
cmp dword [0x2115664c], edi
mov ebx, dword [sym.imp.WINMM.dll_waveOutWrite]
je 0x2112e935
push 0x20
push eax
mov eax, dword [ebp]
push eax
call ebx
mov dword [esp + 0x20], 0
call sym.mss32.dll__AIL_ms_count_0
mov ecx, dword [esp + 0x18]
mov edi, eax
test byte [ecx + 0x10], 1
jne 0x2112e96d
mov edi, edi
call sym.mss32.dll__AIL_ms_count_0
sub eax, edi
jne 0x2112e965
mov edx, dword [esp + 0x18]
test byte [edx + 0x10], 1
je 0x2112e950
jmp 0x2112e96d
mov dword [esp + 0x20], 1
mov eax, dword [0x211566c0]
test eax, eax
je 0x2112e982
mov eax, dword [0x211592a0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
push 1
call ebp
mov ecx, dword [esi + 0x68]
push ecx
call fcn.2112dd70
add esp, 4
call sym.mss32.dll__AIL_ms_count_0
mov ecx, dword [0x2115664c]
test ecx, ecx
mov edi, eax
mov eax, dword [esp + 0x18]
je 0x2112e9b6
mov edx, dword [esi + 0x68]
push 0x20
push eax
push edx
call ebx
mov ebx, dword [esp + 0x20]
test ebx, ebx
jne 0x2112e9e7
mov eax, dword [esp + 0x18]
test byte [eax + 0x10], 1
jne 0x2112e9e7
call sym.mss32.dll__AIL_ms_count_0
sub eax, edi
cmp eax, 0x2ee
ja 0x2112e9e2
mov ecx, dword [esp + 0x18]
test byte [ecx + 0x10], 1
je 0x2112e9c8
jmp 0x2112e9e7
mov ebx, 1
call sym.mss32.dll__AIL_ms_count_0
sub eax, edi
cmp eax, 0x4b
mov dword [esp + 0x20], eax
jbe 0x2112ea01
mov dword [esp + 0x20], 0x4b
jmp 0x2112ea0e
cmp eax, 0x14
jae 0x2112ea0e
mov dword [esp + 0x20], 0x14
mov ecx, dword [0x2115664c]
test ecx, ecx
mov eax, dword [esp + 0x18]
je 0x2112ea29
mov edx, dword [esi + 0x68]
push 0x20
push eax
push edx
call dword [sym.imp.WINMM.dll_waveOutUnprepareHeader]
mov eax, dword [esi + 0x68]
push eax
call fcn.2112dd70
add esp, 4
push 1
call ebp
mov eax, dword [0x211566c0]
test eax, eax
je 0x2112ea6b
mov eax, dword [0x211592a0]
test eax, eax
jne 0x2112ea62
mov edi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0
push 0
push 0
call edi
test eax, eax
mov dword [0x211592a0], eax
je 0x2112ea51
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [esi + 0x368], 0
lock dec dword [0x2115915c]
mov ecx, dword [esp + 0x18]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
test ebx, ebx
je 0x2112ea9c
push str.Broken_waveOut_driver___buffer_done_flag_never_set.
call sym.mss32.dll__AIL_set_error_4
mov ecx, dword [esi + 0x68]
jmp 0x2112e8ac
mov edx, dword [esi + 0x94]
imul edx, dword [0x211566c4]
mov eax, 0x10624dd3
mul edx
mov eax, dword [0x21156648]
shr edx, 6
mov ebx, edx
and ebx, 0xfffffc00
cmp ebx, eax
jle 0x2112eac6
mov ebx, eax
mov eax, dword [esi + 0x90]
mov ebp, dword [esi + 0x20]
mov edi, eax
imul edi, dword [esp + 0x20]
lea eax, [eax + eax*4]
mov dword [esp + 0x18], eax
lea ecx, [ecx]
add edi, dword [esp + 0x18]
mov ecx, dword [esi + 0x24]
mov eax, 0x10624dd3
mul edi
shr edx, 6
add edx, 3
and edx, 0xfffffffc
mov eax, ebp
imul eax, edx
imul ecx, eax
cmp ecx, ebx
jl 0x2112eae0
mov dword [esi + 0x2c], edx
mov dword [esi + 0x28], eax
mov dword [esi + 0x64], ecx
jmp 0x2112eb24
mov eax, dword [esi + 0xec]
mov dword [esi + 0x64], eax
cdq
idiv dword [esi + 0x24]
mov dword [esi + 0x28], eax
cdq
idiv ecx
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 0x28]
shl eax, 2
push eax
mov dword [esi + 0x3c], eax
call sym.mss32.dll__AIL_mem_alloc_lock_4
xor ebx, ebx
cmp eax, ebx
mov dword [esi + 0x40], eax
jne 0x2112eb4e
push str.Could_not_allocate_build_buffer.
call sym.mss32.dll__AIL_set_error_4
mov ecx, dword [esi + 0x68]
jmp 0x2112e8ac
call fcn.2112aa70
test eax, eax
jne 0x2112eb8b
push str.Could_not_allocate_reverb_build_buffer.
call sym.mss32.dll__AIL_set_error_4
mov edx, dword [esi + 0x68]
push edx
mov eax, esi
call fcn.2112dd30
mov eax, dword [esi + 0x40]
add esp, 4
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
mov eax, 7
pop ebx
pop ecx
ret 0xc
mov ecx, dword [0x21156614]
mov edx, ecx
imul edx, edx, 0x2ac
mov eax, 0x3f800000
push edx
mov dword [esi + 0x38], ecx
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], eax
mov dword [esi + 0x108], eax
mov dword [esi + 0x104], eax
call sym.mss32.dll__AIL_mem_alloc_lock_4
cmp eax, ebx
mov dword [esi + 0x34], eax
jne 0x2112ebcf
push str.Could_not_allocate_SAMPLE_structures.
call sym.mss32.dll__AIL_set_error_4
jmp 0x2112ed49
cmp dword [esi + 0x38], ebx
jle 0x2112ec14
xor edx, edx
mov ebp, 1
jmp 0x2112ebe0
mov edi, dword [esi + 0x34]
xor eax, eax
add edi, edx
mov ecx, 0xab
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x34]
mov dword [edx + eax], 0x4d415348
mov ecx, dword [esi + 0x34]
mov dword [edx + ecx + 8], ebp
mov eax, dword [esi + 0x34]
mov dword [edx + eax + 4], esi
mov eax, dword [esi + 0x38]
inc ebx
add edx, 0x2ac
cmp ebx, eax
jl 0x2112ebe0
mov eax, dword [0x2115664c]
test eax, eax
je 0x2112eef3
mov eax, dword [0x2115663c]
cdq
idiv dword [esi + 0x64]
cmp eax, 4
mov dword [esi + 0x78], eax
jge 0x2112ec39
mov dword [esi + 0x78], 4
mov ecx, dword [esi + 0x78]
shl ecx, 2
push ecx
call sym.mss32.dll__AIL_mem_alloc_lock_4
xor ebx, ebx
mov dword [esi + 0x7c], eax
mov eax, dword [esi + 0x78]
test eax, eax
lea ebp, [esi + 0x74]
mov dword [esi + 0x80], ebx
mov dword [esi + 0x84], ebx
mov edi, ebp
jle 0x2112ed67
push 0x20
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [edi], edx
je 0x2112ed15
push 0xc
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
mov dword [ecx + 0xc], eax
mov eax, dword [edx + 0xc]
test eax, eax
je 0x2112ed21
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
mov edx, dword [esp + 0x18]
mov dword [ecx], esi
mov edi, dword [edx + 0xc]
mov eax, dword [esi + 0x78]
add edi, 4
inc ebx
cmp ebx, eax
jl 0x2112ec66
cmp ebx, 0xffffffff
jne 0x2112ed67
mov eax, dword [ebp]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x2112ed37
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x2112ed2d
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0xc]
mov ecx, dword [eax + 4]
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0xc]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov ecx, dword [esp + 0x18]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esp + 0x20]
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x2112ecd3
jmp 0x2112ed37
push str.Could_not_allocate_WAVEHDR_structures.
call sym.mss32.dll__AIL_set_error_4
jmp 0x2112ecc4
push str.Could_not_allocate_HDR_USER_structures.
call sym.mss32.dll__AIL_set_error_4
jmp 0x2112ecc4
mov eax, dword [esp + 0x18]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov ecx, dword [esi + 0x7c]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esi + 0x34]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0x40]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov ecx, dword [esi + 0x33c]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esi + 0x68]
push edx
jmp 0x2112e8ad
mov eax, dword [ebp]
mov dword [edi], eax
mov eax, dword [esi + 0x78]
mov ecx, dword [ebp]
xor edi, edi
test eax, eax
mov dword [esp + 0x18], ecx
jle 0x2112eef3
mov ebx, dword [sym.imp.WINMM.dll_waveOutPrepareHeader]
mov edx, dword [esi + 0x64]
push edx
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
mov dword [ecx], eax
cmp dword [edx], 0
je 0x2112eeb4
mov ecx, dword [esi + 0x64]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x18]
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov dword [eax + 0x14], ecx
mov eax, dword [esp + 0x18]
mov dword [edx + 0x10], ecx
cmp dword [0x2115664c], ecx
je 0x2112edd1
mov ecx, dword [esi + 0x68]
push 0x20
push eax
push ecx
call ebx
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [esi + 0x78]
inc edi
cmp edi, eax
mov dword [esp + 0x18], ecx
jl 0x2112ed86
cmp edi, 0xffffffff
jne 0x2112eef3
mov eax, dword [esi + 0x78]
mov edx, dword [ebp]
xor edi, edi
test eax, eax
mov dword [esp + 0x18], edx
jle 0x2112ee67
mov ebx, dword [sym.imp.WINMM.dll_waveOutUnprepareHeader]
mov eax, dword [esp + 0x18]
cmp dword [eax], 0
je 0x2112ee32
mov ecx, dword [0x2115664c]
test ecx, ecx
mov eax, dword [esp + 0x18]
je 0x2112ee26
mov ecx, dword [esi + 0x68]
push 0x20
push eax
push ecx
call ebx
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0xc]
mov eax, dword [edx + 4]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0xc]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esp + 0x18]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0x78]
mov ecx, dword [esp + 0x20]
inc edi
cmp edi, eax
mov dword [esp + 0x18], ecx
jl 0x2112ee06
mov edx, dword [esi + 0x7c]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0x34]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov ecx, dword [esi + 0x40]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esi + 0x33c]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [0x2115664c]
test eax, eax
je 0x2112eec3
mov eax, dword [esi + 0x68]
push eax
call dword [sym.imp.WINMM.dll_waveOutClose]
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
mov eax, 7
pop ebx
pop ecx
ret 0xc
push str.Could_not_allocate_output_buffer.
call sym.mss32.dll__AIL_set_error_4
jmp 0x2112edf0
mov eax, dword [esi + 0xd8]
test eax, eax
je 0x2112e8b7
call fcn.2112d780
push esi
mov dword [esi + 0xd8], 0
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
mov eax, 7
pop ebx
pop ecx
ret 0xc
mov eax, dword [0x2115930c]
xor ebx, ebx
cmp eax, ebx
je 0x2112f008
mov dword [esi + 0xcc], eax
push fcn.2112e270
mov dword [0x2115930c], esi
call sym.mss32.dll__AIL_register_timer_4
cmp eax, 0xffffffff
mov dword [esi + 4], eax
jne 0x2112f131
push str.Out_of_timer_handles.
call sym.mss32.dll__AIL_set_error_4
cmp dword [0x2115664c], ebx
je 0x2112efb1
mov eax, dword [esi + 0x74]
mov dword [esp + 0x18], eax
cmp dword [esi + 0x78], ebx
jle 0x2112efa8
mov edi, dword [sym.imp.WINMM.dll_waveOutUnprepareHeader]
jmp 0x2112ef50
mov ecx, dword [0x2115664c]
test ecx, ecx
mov eax, dword [esp + 0x18]
je 0x2112ef67
mov ecx, dword [esi + 0x68]
push 0x20
push eax
push ecx
call edi
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0xc]
mov eax, dword [edx + 4]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0xc]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esp + 0x18]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0x78]
mov ecx, dword [esp + 0x20]
inc ebx
cmp ebx, eax
mov dword [esp + 0x18], ecx
jl 0x2112ef50
mov edx, dword [esi + 0x7c]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0xc8]
push eax
push 0
call dword [sym.imp.USER32.dll_KillTimer]
mov ecx, dword [esi + 0x34]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esi + 0x40]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0x33c]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [0x2115664c]
test eax, eax
je 0x2112f105
mov ecx, dword [esi + 0x68]
push ecx
call dword [sym.imp.WINMM.dll_waveOutClose]
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
pop ecx
ret 0xc
push esi
mov dword [esi + 0xcc], ebx
call sym.mss32.dll__AIL_primary_digital_driver_4
push 0x2112e210
push 0x32
push ebx
push ebx
call dword [sym.imp.USER32.dll_SetTimer]
cmp eax, ebx
mov dword [esi + 0xc8], eax
jne 0x2112ef08
cmp dword [0x2115930c], ebx
jne 0x2112f042
mov ecx, dword [esi + 4]
push ecx
call sym.mss32.dll__AIL_release_timer_handle_4
cmp dword [0x2115664c], ebx
je 0x2112f0c1
cmp dword [esi + 0x78], ebx
mov edx, dword [esi + 0x74]
mov dword [esp + 0x18], edx
jle 0x2112f0b8
mov edi, dword [sym.imp.WINMM.dll_waveOutUnprepareHeader]
lea esp, [esp]
mov ecx, dword [0x2115664c]
test ecx, ecx
mov eax, dword [esp + 0x18]
je 0x2112f077
push 0x20
push eax
mov eax, dword [esi + 0x68]
push eax
call edi
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + 4]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esp + 0x18]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esp + 0x20]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x78]
inc ebx
cmp ebx, eax
jl 0x2112f060
mov ecx, dword [esi + 0x7c]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esi + 0x34]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0x40]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
mov ecx, dword [esi + 0x33c]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [0x2115664c]
test eax, eax
je 0x2112f105
mov edx, dword [esi + 0x68]
push edx
call dword [sym.imp.WINMM.dll_waveOutClose]
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
pop ecx
ret 0xc
mov eax, dword [esi + 0xd8]
test eax, eax
je 0x2112f11e
call fcn.2112d780
mov dword [esi + 0xd8], 0
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
pop ecx
ret 0xc
lea eax, [esi + 0x120]
mov ecx, 4
lea esp, [esp]
mov dword [eax], ebx
add eax, 0x68
dec ecx
jne 0x2112f140
lea edx, [esp + 0x18]
push edx
push ebx
push str.MSS_mixer_services
call sym.mss32.dll__RIB_enumerate_providers_12
push ebx
push 1
push esi
call sym.mss32.dll__AIL_set_digital_driver_processor_12
mov edi, dword [esp + 0x18]
push edi
push 2
push esi
call sym.mss32.dll__AIL_set_digital_driver_processor_12
push edi
push ebx
push esi
call sym.mss32.dll__AIL_set_digital_driver_processor_12
push edi
push 3
push esi
call sym.mss32.dll__AIL_set_digital_driver_processor_12
mov eax, dword [esi + 4]
push 0x64
push eax
call sym.mss32.dll__AIL_set_timer_frequency_8
mov ecx, dword [esi + 4]
push esi
push ecx
call sym.mss32.dll__AIL_set_timer_user_8
mov edx, dword [esi + 4]
push edx
call sym.mss32.dll__AIL_start_timer_4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 0xc