Function at 0x211108d0
Capabilities:
Check mutex on windows
Create thread

Disassembly:
push ecx
push ebx
push ebp
mov ebx, eax
mov eax, dword [esp + 0x10]
test eax, eax
push esi
push edi
je 0x211108fd
test ebx, ebx
je 0x211108fd
push 0x110
call sym.mss32.dll__AIL_mem_alloc_lock_4
mov esi, eax
test esi, esi
jne 0x21110907
push str.Out_of_memory.
call sym.mss32.dll__AIL_set_error_4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 8
xor eax, eax
mov ecx, 0x44
mov edi, esi
rep stosd dword es:[edi], eax
mov eax, dword [0x211566c0]
test eax, eax
je 0x21110927
mov eax, dword [0x211592a0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
lea edi, [esi + 0x10]
push edi
push ebx
call dword [0x21155b18]
test eax, eax
jne 0x2111093c
mov dword [edi], 0xffffffff
mov eax, dword [0x211566c0]
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ebp, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
je 0x21110976
mov eax, dword [0x211592a0]
test eax, eax
jne 0x21110971
lea ebx, [ebx]
push 0
push 0
push 0
call edi
test eax, eax
mov dword [0x211592a0], eax
je 0x21110960
push 0xffffffffffffffff
push eax
call ebp
cmp dword [esi + 0x10], 0xffffffff
jne 0x21110996
push str.Unable_to_open_file.
call sym.mss32.dll__AIL_set_error_4
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 8
mov ecx, dword [esp + 0x18]
push ecx
call sym.mss32.dll__AIL_allocate_sample_handle_4
test eax, eax
mov dword [esi + 0xc], eax
jne 0x211109b6
push str.Unable_to_obtain_a_sample_handle.
call sym.mss32.dll__AIL_set_error_4
jmp 0x21110bec
push eax
call sym.mss32.dll__AIL_init_sample_4
mov eax, dword [0x211566c0]
test eax, eax
je 0x211109d2
mov edx, dword [0x211592a0]
push edx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, ebx
mov ecx, esi
call fcn.211103f0
test eax, eax
jne 0x211109e9
push str.Error_getting_sound_format.
jmp 0x21110bde
mov eax, dword [0x211566c0]
test eax, eax
je 0x21110a16
mov eax, dword [0x211592a0]
test eax, eax
jne 0x21110a11
jmp 0x21110a00
push 0
push 0
push 0
call edi
test eax, eax
mov dword [0x211592a0], eax
je 0x21110a00
push 0xffffffffffffffff
push eax
call ebp
mov eax, dword [esi + 0x8c]
mov ecx, dword [esi + 0x88]
mov edx, dword [esp + 0x18]
push eax
push ecx
push edx
call sym.mss32.dll__AIL_minimum_sample_buffer_size_12
mov ecx, dword [esp + 0x1c]
test ecx, ecx
mov dword [esp + 0x10], eax
jne 0x21110a67
mov eax, 0xaaaaaaab
mul dword [esi + 0x84]
shr edx, 1
mov dword [esi + 0x64], edx
mov eax, dword [esp + 0x10]
cmp edx, eax
jge 0x21110a55
mov dword [esi + 0x64], eax
mov eax, dword [esi + 0x64]
add eax, 0xfff
and eax, 0xfffff000
mov dword [esi + 0x64], eax
jmp 0x21110a83
mov eax, 0x55555556
imul ecx
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx + 0xfff]
and edx, 0xfffff000
mov dword [esi + 0x64], edx
mov eax, dword [esi + 0x64]
test eax, eax
jne 0x21110a91
mov dword [esi + 0x64], 0x1000
mov eax, dword [esi + 0x64]
mov ecx, dword [esi + 0x94]
lea edx, [eax + eax*2]
mov ebx, ecx
sub ebx, edx
cmp ebx, 0x3000
mov edi, 1
jge 0x21110ad0
push ecx
mov dword [esi + 0x64], ecx
mov dword [esi + 0xd4], ecx
call sym.mss32.dll__AIL_mem_alloc_lock_4
test eax, eax
mov dword [esi + 0x14], eax
je 0x21110bd9
mov dword [esi + 0xc4], edi
jmp 0x21110b27
mov ecx, dword [esp + 0x10]
add ecx, ecx
lea edx, [eax + eax]
cmp ecx, edx
mov dword [esi + 0xd4], ecx
jge 0x21110ae9
mov dword [esi + 0xd4], edx
push eax
call sym.mss32.dll__AIL_mem_alloc_lock_4
test eax, eax
mov dword [esi + 0x14], eax
je 0x21110bd9
mov eax, dword [esi + 0x64]
push eax
call sym.mss32.dll__AIL_mem_alloc_lock_4
test eax, eax
mov dword [esi + 0x18], eax
jne 0x21110b13
mov ecx, dword [esi + 0x14]
push ecx
jmp 0x21110bd4
mov edx, dword [esi + 0x64]
push edx
call sym.mss32.dll__AIL_mem_alloc_lock_4
test eax, eax
mov dword [esi + 0x1c], eax
je 0x21110bc7
mov eax, dword [esi + 0xc]
push fcn.211101a0
push eax
call sym.mss32.dll__AIL_register_EOB_callback_8
mov ecx, dword [esi + 0xc]
push esi
push 4
push ecx
call sym.mss32.dll__AIL_set_sample_user_data_12
mov eax, dword [0x211592e0]
test eax, eax
je 0x21110b52
mov edx, dword [esi + 0x64]
mov dword [esi + 0x68], edx
jmp 0x21110b5d
mov eax, dword [esi + 0x64]
cdq
sub eax, edx
sar eax, 1
mov dword [esi + 0x68], eax
mov eax, dword [esi + 0xd4]
mov dword [esi + 0xd8], eax
mov eax, dword [0x211592bc]
test eax, eax
mov dword [esi + 0x9c], 0x7fffffff
mov dword [esi + 0x98], 0
mov dword [esi + 0x74], edi
mov dword [esi + 0x7c], 2
mov dword [esi + 0xbc], edi
mov dword [esi + 0x108], edi
jne 0x21110c75
push fcn.211101a0
call sym.mss32.dll__AIL_register_timer_4
cmp eax, 0xffffffff
mov dword [0x21155a20], eax
jne 0x21110c0b
push str.Out_of_timer_handles.
call sym.mss32.dll__AIL_set_error_4
mov ecx, dword [esi + 0x1c]
push ecx
call sym.mss32.dll__AIL_mem_free_lock_4
mov edx, dword [esi + 0x14]
push edx
call sym.mss32.dll__AIL_mem_free_lock_4
mov eax, dword [esi + 0x18]
push eax
call sym.mss32.dll__AIL_mem_free_lock_4
push str.Out_of_memory.
call sym.mss32.dll__AIL_set_error_4
mov ecx, dword [esi + 0xc]
push ecx
call sym.mss32.dll__AIL_release_sample_handle_4
mov eax, dword [esi + 0x10]
cmp eax, 0xffffffff
je 0x21110bfb
push eax
call dword [0x21155b1c]
push esi
call sym.mss32.dll__AIL_mem_free_lock_4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 8
push 0x10
push eax
call sym.mss32.dll__AIL_set_timer_frequency_8
mov edx, dword [0x21155a20]
push edx
call sym.mss32.dll__AIL_start_timer_4
mov eax, dword [0x211592c4]
test eax, eax
jne 0x21110c7b
push 0
push 0
push edi
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [0x21157470], eax
lea eax, [esp + 0x10]
push eax
push 0
push 0
push 0x21110210
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov ecx, dword [esp + 0x10]
push str.MSS_Stream
mov dword [0x211592c4], eax
call fcn.21101000
pop edi
mov dword [0x211592bc], esi
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret 8
mov dword [esi + 0x104], eax
pop edi
mov dword [0x211592bc], esi
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret 8