Function at 0x2111e780
Capabilities:
Check mutex on windows
Link many functions at runtime

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
test esi, esi
push edi
jne 0x2111e80a
xor ebx, ebx
push 0x58
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov esi, eax
test esi, esi
je 0x2111ea9f
mov ebp, dword [esp + 0x18]
xor eax, eax
test ebx, ebx
mov ecx, 0x16
mov edi, esi
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x48], ecx
mov dword [esi + 0x4c], ebp
mov dword [esi + 0x54], ebx
jne 0x2111e874
mov dword [esi + 8], sym.mss32.dll_DLSMSSOpen
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], sym.mss32.dll_DLSClose
mov dword [esi + 0x14], sym.mss32.dll_DLSLoadFile
mov dword [esi + 0x18], sym.mss32.dll_DLSLoadMemFile
mov dword [esi + 0x1c], sym.mss32.dll_DLSUnloadFile
mov dword [esi + 0x20], sym.mss32.dll_DLSUnloadAll
mov dword [esi + 0x24], sym.mss32.dll_DLSGetInfo
mov dword [esi + 0x28], sym.mss32.dll_DLSCompactMemory
mov dword [esi + 0x2c], sym.mss32.dll_DLSSetAttribute
jmp 0x2111e8e8
mov eax, dword [0x2114e89c]
test eax, eax
je 0x2111e81f
mov eax, dword [0x2114fa38]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebx, eax
mov eax, dword [0x2114e89c]
test eax, eax
je 0x2111e858
mov eax, dword [0x2114fa38]
test eax, eax
jne 0x2111e84f
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
mov dword [0x2114fa38], eax
je 0x2111e83a
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp ebx, 0x20
ja 0x2111e78e
push str.Error_loading_DLS_library.
call sym.mss32.dll__AIL_set_error_4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret 0x1c
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x21141e38
push ebx
call edi
push str.DLSOpen
push ebx
mov dword [esi + 8], eax
call edi
push 0x21141e24
push ebx
mov dword [esi + 0xc], eax
call edi
push 0x21141e18
push ebx
mov dword [esi + 0x10], eax
call edi
push 0x21141e08
push ebx
mov dword [esi + 0x14], eax
call edi
push 0x21141df8
push ebx
mov dword [esi + 0x18], eax
call edi
push 0x21141de8
push ebx
mov dword [esi + 0x1c], eax
call edi
push 0x21141ddc
push ebx
mov dword [esi + 0x20], eax
call edi
push 0x21141dc8
push ebx
mov dword [esi + 0x24], eax
call edi
push 0x21141db8
push ebx
mov dword [esi + 0x28], eax
call edi
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 8]
test eax, eax
je 0x2111ea6a
mov eax, dword [esp + 0x14]
test eax, eax
je 0x2111ea63
test ebp, ebp
je 0x2111ea63
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
xor eax, eax
cmp edx, 0x10
sete al
xor edx, edx
cmp ecx, 2
setne dl
dec edx
and edx, 2
or eax, edx
push eax
push edi
push ebp
mov dword [esi + 0x34], eax
call sym.mss32.dll__AIL_minimum_sample_buffer_size_12
push eax
mov dword [esi + 0x38], eax
call sym.mss32.dll__AIL_mem_alloc_lock_4
test eax, eax
mov dword [esi + 0x3c], eax
je 0x2111ea8e
mov eax, dword [esi + 0x38]
push eax
call sym.mss32.dll__AIL_mem_alloc_lock_4
test eax, eax
mov dword [esi + 0x40], eax
jne 0x2111e966
mov ecx, dword [esi + 0x3c]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
jmp 0x2111ea8e
push ebp
call sym.mss32.dll__AIL_allocate_sample_handle_4
test eax, eax
mov dword [esi + 0x44], eax
jne 0x2111e97d
push str.Unable_to_allocate_a_sample_handle.
jmp 0x2111ea16
push eax
call sym.mss32.dll__AIL_init_sample_4
mov eax, dword [esi + 0x34]
mov edx, eax
and edx, 1
push edx
push eax
mov eax, dword [esi + 0x44]
push eax
call sym.mss32.dll__AIL_set_sample_type_12
mov ecx, dword [esi + 0x44]
push edi
push ecx
call sym.mss32.dll__AIL_set_sample_playback_rate_8
mov eax, dword [0x2114e89c]
test eax, eax
je 0x2111e9b6
mov edx, dword [0x2114fa38]
push edx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x34]
mov edx, dword [esp + 0x14]
push 0x2111ead0
push 0x2111eac0
push 0x2111eab0
push esi
push eax
push edi
push ecx
push edx
push 0
lea eax, [esi + 0x30]
push eax
call dword [esi + 8]
test eax, eax
mov eax, dword [0x2114e89c]
je 0x2111ea2f
test eax, eax
je 0x2111ea11
mov eax, dword [0x2114fa38]
test eax, eax
jne 0x2111ea08
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
mov dword [0x2114fa38], eax
je 0x2111e9f3
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push str.DLSMSSOpen_call_failed.
call sym.mss32.dll__AIL_set_error_4
mov ecx, dword [esi + 0x3c]
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
jmp 0x2111ea8e
test eax, eax
je 0x2111ea5a
mov eax, dword [0x2114fa38]
test eax, eax
jne 0x2111ea51
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
mov dword [0x2114fa38], eax
je 0x2111ea3c
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
ret 0x1c
push str.Trying_to_use_the_MSS_DLS_library_with_a_null_driver.
jmp 0x2111ea89
mov eax, dword [esi + 0xc]
test eax, eax
je 0x2111ea84
push 0
lea ecx, [esi + 0x30]
push ecx
call eax
test eax, eax
je 0x2111ea5a
push str.DLSOpen_call_failed.
jmp 0x2111ea89
push str.DLS_library_functions_not_found___probably_not_a_DLS_DLL.
call sym.mss32.dll__AIL_set_error_4
test ebx, ebx
je 0x2111ea99
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret 0x1c