Function at 0x51cbc0
Capabilities:
Create thread

Disassembly:
mov al, byte [ecx + 0x26080]
sub esp, 0x15c
test al, al
jne 0x51cbd9
add esp, 0x15c
ret 8
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x174]
imul edi, edi, 0x2608
mov ebx, dword [edi + ecx + 4]
add edi, ecx
mov ecx, dword [esp + 0x170]
xor esi, esi
lea ebp, [ebx + 0x14008]
push ebp
mov dword [edi], ecx
mov dword [edi + 0x14], esi
mov dword [edi + 0x18], esi
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
push ebp
mov ebp, dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov dword [ebx + 0x14000], esi
mov dword [ebx + 0x14004], esi
call ebp
mov ebx, dword [edi + 8]
lea eax, [ebx + 0x14008]
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov edx, dword [esp + 0x10]
push edx
mov dword [ebx + 0x14000], esi
mov dword [ebx + 0x14004], esi
call ebp
mov ebx, dword [edi + 0x4c]
lea eax, [ebx + 0x27108]
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [esp + 0x10]
push eax
mov dword [ebx + 0x27100], esi
mov dword [ebx + 0x27104], esi
call ebp
mov ebp, dword [sym.imp.mss32.dll__RIB_find_files_provider_20]
push str..RAW
push str.Output_file_types
push str..v29
push str.Input_file_types
push str.ASI_codec
mov dword [edi + 0x80], esi
call ebp
cmp eax, esi
mov dword [edi + 0x1c], eax
jne 0x51cce6
cmp dword [0xa1a2c8], 1
jl 0x51cd77
push 0x4c1
push str...Source_voicechat.cpp
mov ecx, 0xa1a2c8
call fcn.004f3e00
push str..v29
push str.Voice_Chat:_No_ASI_provider_available_for_data_type__s
push 0xa1a2c8
call fcn.004f3d30
add esp, 0xc
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x15c
ret 8
mov ebx, 1
cmp dword [0xa1a2c8], ebx
jl 0x51cd22
push 0x4c6
push str...Source_voicechat.cpp
mov ecx, 0xa1a2c8
call fcn.004f3e00
mov ecx, dword [edi + 0x1c]
push str..v29
push ecx
push str.Voice_Chat:_Using_ASI_provider__X_to_receive_data_type__s
push 0xa1a2c8
call fcn.004f3d30
add esp, 0x10
push str..RAW
push str.Input_file_types
push str..v29
push str.Output_file_types
push str.ASI_codec
call ebp
cmp eax, esi
mov dword [edi + 0x50], eax
jne 0x51cd86
cmp dword [0xa1a2c8], ebx
jl 0x51cd77
push 0x4d4
push str...Source_voicechat.cpp
mov ecx, 0xa1a2c8
call fcn.004f3e00
push str..v29
push str.Voice_Chat:_No_ASI_provider_available_for_data_type__s
push 0xa1a2c8
call fcn.004f3d30
add esp, 0xc
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x15c
ret 8
cmp dword [0xa1a2c8], ebx
jl 0x51cdbd
push 0x4d9
push str...Source_voicechat.cpp
mov ecx, 0xa1a2c8
call fcn.004f3e00
mov edx, dword [edi + 0x50]
push str..v29
push edx
push str.Voice_Chat:_Using_ASI_provider__X_to_transmit_data_type__s
push 0xa1a2c8
call fcn.004f3d30
add esp, 0x10
lea ebp, [edi + 0x20]
lea eax, [ebp + 0x10]
mov dword [esp + 0x10], eax
mov dword [esp + 0x34], eax
lea eax, [ebp + 8]
mov dword [esp + 0x54], eax
lea eax, [ebp + 0x14]
mov dword [esp + 0x84], eax
lea eax, [ebp + 0x18]
mov dword [esp + 0x94], eax
lea eax, [ebp + 0x1c]
mov dword [esp + 0xa4], eax
lea eax, [ebp + 0x20]
mov dword [esp + 0xb4], eax
lea eax, [ebp + 0x24]
mov dword [esp + 0xc4], eax
lea eax, [esp + 0x2c]
push eax
lea ecx, [ebp + 0xc]
push 0xa
mov dword [esp + 0x6c], ecx
mov ecx, dword [edi + 0x1c]
push str.ASI_stream
lea edx, [ebp + 4]
push ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], str.ASI_stream_attribute
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], str.ASI_stream_open
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], str.ASI_stream_seek
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], str.ASI_stream_close
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], str.ASI_stream_process
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], str.ASI_stream_set_preference
mov dword [esp + 0x98], esi
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa0], str.Output_sample_rate
mov dword [esp + 0xa8], esi
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb0], str.Output_sample_width
mov dword [esp + 0xb8], esi
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc0], str.Output_channels
mov dword [esp + 0xc8], esi
mov dword [esp + 0xcc], 2
mov dword [esp + 0xd0], str.Requested_sample_rate
mov dword [esp + 0xd8], esi
call dword [sym.imp.mss32.dll_RIB_request_interface]
lea ebx, [edi + 0x54]
lea edx, [ebx + 0x10]
lea eax, [ebx + 8]
lea ecx, [ebx + 0xc]
mov dword [esp + 0xd4], edx
mov dword [esp + 0xcc], esi
mov dword [esp + 0xd0], str.ASI_stream_attribute
mov dword [esp + 0xd8], esi
mov dword [esp + 0xdc], esi
mov dword [esp + 0xe0], str.ASI_stream_open
mov dword [esp + 0xe4], ebx
mov dword [esp + 0xe8], esi
mov dword [esp + 0xec], esi
mov dword [esp + 0xf0], str.ASI_stream_seek
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], esi
mov dword [esp + 0xfc], esi
mov dword [esp + 0x100], str.ASI_stream_close
mov dword [esp + 0x104], ecx
mov dword [esp + 0x108], esi
mov dword [esp + 0x10c], esi
mov dword [esp + 0x110], str.ASI_stream_process
lea edx, [ebx + 4]
lea eax, [ebx + 0x14]
lea ecx, [ebx + 0x18]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x124], eax
mov eax, 1
mov dword [esp + 0x134], ecx
lea ecx, [esp + 0xcc]
push ecx
mov dword [esp + 0x118], edx
mov dword [esp + 0x130], eax
mov dword [esp + 0x140], eax
mov dword [esp + 0x150], eax
lea edx, [ebx + 0x1c]
push 0xa
lea eax, [ebx + 0x20]
mov dword [esp + 0x14c], edx
mov edx, dword [edi + 0x50]
mov dword [esp + 0x15c], eax
lea eax, [ebx + 0x24]
push str.ASI_stream
push edx
mov dword [esp + 0x128], esi
mov dword [esp + 0x12c], esi
mov dword [esp + 0x130], str.ASI_stream_set_preference
mov dword [esp + 0x138], esi
mov dword [esp + 0x140], str.Output_sample_rate
mov dword [esp + 0x148], esi
mov dword [esp + 0x150], str.Output_sample_width
mov dword [esp + 0x158], esi
mov dword [esp + 0x160], str.Output_channels
mov dword [esp + 0x168], esi
mov dword [esp + 0x16c], 2
mov dword [esp + 0x170], str.Requested_sample_rate
mov dword [esp + 0x28], eax
mov dword [esp + 0x174], eax
mov dword [esp + 0x178], esi
call dword [sym.imp.mss32.dll_RIB_request_interface]
mov eax, dword [ebp]
push esi
push 0x51c980
push edi
call eax
cmp eax, esi
mov dword [ebp + 0x28], eax
je 0x51cd77
mov edx, dword [ebp + 0x24]
lea ecx, [esp + 0x14]
push ecx
push edx
push eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x20], 0x1f40
call eax
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x28]
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [eax]
push edx
call ecx
mov edx, dword [ebp + 0x18]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x28]
push edx
mov edx, dword [ecx]
push eax
call edx
mov ecx, dword [ebp + 0x28]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x1c]
push eax
mov eax, dword [edx]
push ecx
call eax
cmp dword [0xa1a2c8], 1
mov ebp, eax
jl 0x51d130
push 0x51e
push str...Source_voicechat.cpp
mov ecx, 0xa1a2c8
call fcn.004f3e00
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
push ebp
push ecx
push edx
push str.Voice_Chat:_Client_receive_stream_format:__d_channels___d_Hz___d_bits
push 0xa1a2c8
call fcn.004f3d30
add esp, 0x14
mov eax, dword [ebx]
push esi
push 0x51ca20
push edi
call eax
cmp eax, esi
mov dword [ebx + 0x28], eax
je 0x51cd77
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [edx]
mov edx, dword [esp + 0x20]
push ecx
push eax
mov eax, dword [edx]
mov dword [esp + 0x20], 0x1f40
call eax
mov ebx, dword [sym.imp.kernel32.dll_CreateThread]
lea ecx, [esp + 0x20]
push ecx
push esi
push edi
push 0x51cb60
push esi
push esi
call ebx
lea edx, [esp + 0x20]
push edx
push esi
push edi
push 0x51cab0
push esi
push esi
mov dword [edi + 0x18], eax
call ebx
mov dword [edi + 0x14], eax
mov dword [edi + 0xc], 1
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x15c
ret 8