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

Disassembly:
push ebx
push ebp
mov ebp, dword [esp + 0x10]
push esi
mov esi, eax
test esi, esi
jne 0x2110f678
xor ebx, ebx
push 0x58
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov esi, eax
xor eax, eax
test esi, esi
je 0x2110f916
test ebx, ebx
push edi
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 0x2110f6e1
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 0x2110f755
mov eax, dword [0x211566c0]
test eax, eax
je 0x2110f68d
mov eax, dword [0x211592a0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebx, eax
mov eax, dword [0x211566c0]
test eax, eax
je 0x2110f6c6
mov eax, dword [0x211592a0]
test eax, eax
jne 0x2110f6bd
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
mov dword [0x211592a0], eax
je 0x2110f6a8
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp ebx, 0x20
ja 0x2110f5ff
push str.Error_loading_DLS_library.
call sym.mss32.dll__AIL_set_error_4
pop esi
pop ebp
xor eax, eax
pop ebx
ret 0x18
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x21146688
push ebx
call edi
push str.DLSOpen
push ebx
mov dword [esi + 8], eax
call edi
push 0x21146674
push ebx
mov dword [esi + 0xc], eax
call edi
push 0x21146668
push ebx
mov dword [esi + 0x10], eax
call edi
push 0x21146658
push ebx
mov dword [esi + 0x14], eax
call edi
push 0x21146648
push ebx
mov dword [esi + 0x18], eax
call edi
push 0x21146638
push ebx
mov dword [esi + 0x1c], eax
call edi
push 0x2114662c
push ebx
mov dword [esi + 0x20], eax
call edi
push 0x21146618
push ebx
mov dword [esi + 0x24], eax
call edi
push 0x21146608
push ebx
mov dword [esi + 0x28], eax
call edi
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 8]
test eax, eax
je 0x2110f8de
mov eax, dword [esp + 0x14]
test eax, eax
je 0x2110f8d7
test ebp, ebp
je 0x2110f8d7
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
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 0x2110f902
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 0x2110f7d3
mov ecx, dword [esi + 0x3c]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
jmp 0x2110f902
push ebp
call sym.mss32.dll__AIL_allocate_sample_handle_4
test eax, eax
mov dword [esi + 0x44], eax
jne 0x2110f7ea
push str.Unable_to_allocate_a_sample_handle.
jmp 0x2110f883
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 [0x211566c0]
test eax, eax
je 0x2110f823
mov edx, dword [0x211592a0]
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 0x2110f5d0
push 0x2110f5c0
push 0x2110f5b0
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 [0x211566c0]
je 0x2110f89c
test eax, eax
je 0x2110f87e
mov eax, dword [0x211592a0]
test eax, eax
jne 0x2110f875
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
mov dword [0x211592a0], eax
je 0x2110f860
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 0x2110f902
test eax, eax
je 0x2110f8ce
mov eax, dword [0x211592a0]
test eax, eax
jne 0x2110f8c5
lea esp, [esp]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
mov dword [0x211592a0], eax
je 0x2110f8b0
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
ret 0x18
push str.Trying_to_use_the_MSS_DLS_library_with_a_null_driver.
jmp 0x2110f8fd
mov eax, dword [esi + 0xc]
test eax, eax
je 0x2110f8f8
push 0
lea ecx, [esi + 0x30]
push ecx
call eax
test eax, eax
je 0x2110f8ce
push str.DLSOpen_call_failed.
jmp 0x2110f8fd
push str.DLS_library_functions_not_found___probably_not_a_DLS_DLL.
call sym.mss32.dll__AIL_set_error_4
test ebx, ebx
je 0x2110f90d
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 0x18