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

Disassembly:
sub esp, 0x194
push ebx
push ebp
mov ebp, dword [esp + 0x1a4]
push esi
push edi
xor edi, edi
cmp ebp, 4
mov ebx, ebp
jne 0x21115b6c
xor ebx, ebx
mov edx, dword [esp + 0x1a8]
lea eax, [ebx + ebx*2]
lea ecx, [ebx + eax*4]
mov eax, dword [edx + ecx*8 + 0x144]
cmp eax, edi
lea esi, [edx + ecx*8 + 0x144]
mov dword [esp + 0x10], esi
je 0x21115c38
mov eax, ebx
sub eax, edi
je 0x21115bef
dec eax
jne 0x21115c36
cmp dword [0x2114e89c], edi
je 0x21115bb4
mov eax, dword [0x2114fa38]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
push edx
call dword [ecx + 0x28]
cmp dword [0x2114e89c], edi
je 0x21115bea
mov eax, dword [0x2114fa38]
cmp eax, edi
jne 0x21115be1
push edi
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp eax, edi
mov dword [0x2114fa38], eax
je 0x21115bcf
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [esi + 0xc], edi
jmp 0x21115c36
cmp dword [0x2114e89c], edi
je 0x21115c03
mov eax, dword [0x2114fa38]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ecx, dword [esi + 0x64]
push ecx
call dword [esi + 0x14]
cmp dword [0x2114e89c], edi
je 0x21115c36
mov eax, dword [0x2114fa38]
cmp eax, edi
jne 0x21115c2d
push edi
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp eax, edi
mov dword [0x2114fa38], eax
je 0x21115c1b
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [esi], edi
cmp ebp, 4
jne 0x21115c47
inc ebx
cmp ebx, 3
jl 0x21115b6c
mov ecx, dword [esp + 0x1b0]
cmp ecx, edi
mov ebp, dword [esi + 4]
mov dword [esp + 0x14], ebp
mov dword [esi + 4], ecx
je 0x21116149
mov eax, ebx
sub eax, edi
je 0x21115d07
dec eax
je 0x21115cb2
dec eax
jne 0x21116149
lea eax, [esp + 0x24]
push eax
push 1
push str.MSS_mixer_services
lea edx, [esi + 0xc]
push ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], str.MIXER_merge
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edi
call sym.mss32.dll_RIB_request_interface
pop edi
mov dword [esi], 1
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x194
ret 0xc
mov edx, dword [esp + 0x1a8]
mov eax, dword [edx + 4]
push eax
push ecx
call sym.mss32.dll__AIL_open_filter_8
mov ebx, dword [esp + 0x1a8]
mov edx, dword [ebx + 4]
mov ecx, dword [esp + 0x1b0]
call fcn.21128df0
cmp eax, edi
mov dword [esi + 8], eax
mov dword [esi + 0xc], edi
je 0x21115cf8
mov ecx, dword [eax + 0x24]
cmp ecx, edi
je 0x21115cf8
mov edx, dword [eax + 0x40]
push ebx
push edx
call ecx
cmp eax, edi
mov dword [esi + 0xc], eax
jne 0x21115c9d
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x194
ret 0xc
add esi, 8
lea edx, [esi + 0xc]
mov dword [esp + 0x6c], edx
lea edx, [esi + 0x18]
mov dword [esp + 0x9c], edx
lea edx, [esi + 0x1c]
mov dword [esp + 0xac], edx
lea edx, [esi + 0x20]
mov dword [esp + 0xbc], edx
lea edx, [esi + 0x24]
mov dword [esp + 0xcc], edx
lea edx, [esi + 0x28]
mov dword [esp + 0xdc], edx
lea edx, [esi + 0x2c]
mov dword [esp + 0xec], edx
lea edx, [esi + 0x30]
mov dword [esp + 0xfc], edx
lea eax, [esi + 8]
lea edx, [esi + 0x34]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x10c], edx
lea eax, [esi + 4]
lea edx, [esi + 0x38]
mov dword [esp + 0x7c], eax
mov eax, 1
mov dword [esp + 0x11c], edx
lea ebx, [esi + 0x10]
lea ebp, [esi + 0x14]
lea edx, [esi + 0x3c]
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], str.ASI_stream_attribute
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], str.ASI_stream_open
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], str.ASI_stream_seek
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], str.ASI_stream_close
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], str.ASI_stream_process
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], str.ASI_stream_set_preference
mov dword [esp + 0x8c], ebp
mov dword [esp + 0x90], edi
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], str.Input_bit_rate
mov dword [esp + 0xa0], edi
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], str.Input_sample_rate
mov dword [esp + 0xb0], edi
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], str.Input_sample_width
mov dword [esp + 0xc0], edi
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], str.Input_channels
mov dword [esp + 0xd0], edi
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], str.Output_bit_rate
mov dword [esp + 0xe0], edi
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], str.Output_sample_rate
mov dword [esp + 0xf0], edi
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], str.Output_sample_width
mov dword [esp + 0x100], edi
mov dword [esp + 0x104], eax
mov dword [esp + 0x108], str.Output_channels
mov dword [esp + 0x110], edi
mov dword [esp + 0x114], eax
mov dword [esp + 0x118], str.Position
mov dword [esp + 0x120], edi
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], str.Percent_done
mov dword [esp + 0x12c], edx
mov dword [esp + 0x130], edi
mov dword [esp + 0x134], eax
lea eax, [esi + 0x40]
mov dword [esp + 0x13c], eax
mov eax, 2
mov dword [esp + 0x144], eax
lea edx, [esi + 0x44]
mov dword [esp + 0x14c], edx
mov dword [esp + 0x154], eax
mov dword [esp + 0x164], eax
mov dword [esp + 0x174], eax
mov dword [esp + 0x184], eax
mov dword [esp + 0x194], eax
lea eax, [esi + 0x58]
lea edx, [esi + 0x48]
mov dword [esp + 0x15c], edx
mov dword [esp + 0x19c], eax
lea eax, [esp + 0x34]
push eax
lea edx, [esi + 0x4c]
mov dword [esp + 0x170], edx
push 0x17
lea edx, [esi + 0x50]
mov dword [esp + 0x184], edx
push str.ASI_stream
lea edx, [esi + 0x54]
push ecx
mov dword [esp + 0x148], str.Minimum_input_block_size
mov dword [esp + 0x150], edi
mov dword [esp + 0x158], str.Raw_source_sample_rate
mov dword [esp + 0x160], edi
mov dword [esp + 0x168], str.Raw_source_sample_width
mov dword [esp + 0x170], edi
mov dword [esp + 0x178], str.Raw_source_channels
mov dword [esp + 0x180], edi
mov dword [esp + 0x188], str.Requested_sample_rate
mov dword [esp + 0x190], edi
mov dword [esp + 0x198], str.Requested_sample_width
mov dword [esp + 0x19c], edx
mov dword [esp + 0x1a0], edi
mov dword [esp + 0x1a8], str.Requested_channels
mov dword [esp + 0x1b0], edi
call sym.mss32.dll_RIB_request_interface
cmp dword [0x2114e89c], edi
je 0x21116024
mov ecx, dword [0x2114fa38]
push ecx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [esp + 0x1a8]
mov edx, dword [eax + 0x14]
push edx
push 0x211123b0
push eax
call dword [esi]
mov dword [esi + 0x5c], eax
cmp dword [0x2114e89c], edi
je 0x21116066
mov eax, dword [0x2114fa38]
cmp eax, edi
jne 0x2111605d
push edi
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp eax, edi
mov dword [0x2114fa38], eax
je 0x2111604b
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esi + 0x5c]
cmp eax, edi
jne 0x21116085
mov eax, dword [esp + 0x10]
mov dword [eax + 4], edi
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x194
ret 0xc
mov edi, dword [esp + 0x1a8]
mov ecx, dword [edi + 4]
mov edx, dword [esi + 0x50]
add ecx, 0x14
push ecx
push edx
push eax
call dword [ebp]
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0x18]
mov eax, dword [esi + 0x58]
shr ecx, 1
and ecx, 1
inc ecx
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x24], ecx
mov ecx, dword [esi + 0x5c]
push eax
push ecx
call dword [ebp]
mov edx, dword [edi + 4]
mov eax, dword [edx + 0x18]
and eax, 1
lea ecx, [eax*8 + 8]
mov eax, dword [esi + 0x54]
lea edx, [esp + 0x18]
push edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esi + 0x5c]
push eax
push ecx
call dword [ebp]
mov edx, dword [esi + 0x34]
mov eax, dword [esi + 0x5c]
push edx
push eax
call dword [ebx]
mov ecx, dword [esi + 0x2c]
mov edx, dword [esi + 0x5c]
push ecx
push edx
mov ebp, eax
call dword [ebx]
mov ecx, dword [esi + 0x5c]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x30]
push eax
push ecx
call dword [ebx]
mov edx, dword [esp + 0x1c]
push edx
push edi
mov esi, eax
call sym.mss32.dll__AIL_set_sample_playback_rate_8
cmp ebp, 2
jne 0x2111612b
xor eax, eax
cmp esi, 0x10
sete al
xor ecx, ecx
cmp esi, 0x10
sete cl
push eax
add ecx, ebp
push ecx
jmp 0x21116135
xor eax, eax
cmp esi, 0x10
sete al
push eax
push eax
push edi
call sym.mss32.dll__AIL_set_sample_type_12
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov dword [edx], 1
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x194
ret 0xc