Function at 0x4877d0
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, dword [0x7f5d30]
sub esp, 0x100
test eax, eax
push ebx
push esi
push edi
je 0x4877f1
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x100
ret
push 0x10
call fcn.00481730
push eax
push str.fs_basepath
call fcn.0044f740
mov ebx, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
mov edx, dword [ebx + 4]
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, str._snddrivers_mss32.dll
mov esi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
add esi, ecx
cmp esi, 0x100
jae 0x48785c
mov ecx, edx
lea edx, [esp + 0xc]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x487836
lea edi, [esp + 0xc]
or ecx, 0xffffffff
xor eax, eax
mov esi, str._snddrivers_mss32.dll
repne scasb al, byte es:[edi]
dec edi
mov ecx, 5
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x48786d
xor eax, eax
mov cl, byte [eax + str._snddrivers_mss32.dll]
mov byte [esp + eax + 0xc], cl
inc eax
test cl, cl
jne 0x48785e
mov esi, dword [sym.imp.KERNEL32.DLL_LoadLibraryA]
lea eax, [esp + 0xc]
push eax
call esi
test eax, eax
mov dword [0x7f5d30], eax
jne 0x487914
mov edx, dword [ebx + 4]
or ecx, 0xffffffff
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, str._snddrivers_mss32.dll
mov ebx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
add ebx, ecx
cmp ebx, 0x100
jae 0x4878ef
mov ecx, edx
lea edx, [esp + 0xc]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x4878b3
lea edi, [esp + 0xc]
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x5587e4]
repne scasb al, byte es:[edi]
mov ecx, dword [str._mss32.dll]
mov ax, word [0x5587e8]
dec edi
mov dword [edi], ecx
mov cl, byte [0x5587ea]
mov dword [edi + 4], edx
mov word [edi + 8], ax
mov byte [edi + 0xa], cl
jmp 0x487900
xor eax, eax
mov cl, byte [eax + str._mss32.dll]
mov byte [esp + eax + 0xc], cl
inc eax
test cl, cl
jne 0x4878f1
lea edx, [esp + 0xc]
push edx
call esi
test eax, eax
mov dword [0x7f5d30], eax
je 0x48835f
mov esi, dword [sym.imp.KERNEL32.DLL_GetProcAddress]
push str._AIL_startup_0
push eax
call esi
test eax, eax
mov dword [0x7fe610], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_shutdown_0
push eax
call esi
test eax, eax
mov dword [0x7fe614], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_preference_8
push ecx
call esi
test eax, eax
mov dword [0x7fe618], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_last_error_0
push edx
call esi
test eax, eax
mov dword [0x7fe61c], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_waveOutOpen_16
push eax
call esi
test eax, eax
mov dword [0x7fe620], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_waveOutClose_4
push ecx
call esi
test eax, eax
mov dword [0x7fe624], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_digital_master_volume_8
push edx
call esi
test eax, eax
mov dword [0x7fe628], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_allocate_sample_handle_4
push eax
call esi
test eax, eax
mov dword [0x7fe62c], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_release_sample_handle_4
push ecx
call esi
test eax, eax
mov dword [0x7fe630], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_init_sample_4
push edx
call esi
test eax, eax
mov dword [0x7fe634], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_sample_file_12
push eax
call esi
test eax, eax
mov dword [0x7fe638], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_named_sample_file_20
push ecx
call esi
test eax, eax
mov dword [0x7fe63c], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_start_sample_4
push edx
call esi
test eax, eax
mov dword [0x7fe640], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_stop_sample_4
push eax
call esi
test eax, eax
mov dword [0x7fe644], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_resume_sample_4
push ecx
call esi
test eax, eax
mov dword [0x7fe648], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_end_sample_4
push edx
call esi
test eax, eax
mov dword [0x7fe64c], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_sample_playback_rate_8
push eax
call esi
test eax, eax
mov dword [0x7fe650], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_sample_volume_8
push ecx
call esi
test eax, eax
mov dword [0x7fe654], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_sample_pan_8
push edx
call esi
test eax, eax
mov dword [0x7fe658], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_sample_reverb_16
push eax
call esi
test eax, eax
mov dword [0x7fe65c], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_sample_loop_count_8
push ecx
call esi
test eax, eax
mov dword [0x7fe660], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_sample_loop_block_12
push edx
call esi
test eax, eax
mov dword [0x7fe664], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_sample_status_4
push eax
call esi
test eax, eax
mov dword [0x7fe668], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_sample_playback_rate_4
push ecx
call esi
test eax, eax
mov dword [0x7fe66c], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_sample_volume_4
push edx
call esi
test eax, eax
mov dword [0x7fe670], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_sample_position_8
push eax
call esi
test eax, eax
mov dword [0x7fe674], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_sample_position_4
push ecx
call esi
test eax, eax
mov dword [0x7fe678], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_sample_loop_count_4
push edx
call esi
test eax, eax
mov dword [0x7fe67c], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_sample_ms_position_8
push eax
call esi
test eax, eax
mov dword [0x7fe680], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_sample_ms_position_12
push ecx
call esi
test eax, eax
mov dword [0x7fe684], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_sample_granularity_4
push edx
call esi
test eax, eax
mov dword [0x7fe688], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_digital_CPU_percent_4
push eax
call esi
test eax, eax
mov dword [0x7fe68c], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_digital_configuration_16
push ecx
call esi
test eax, eax
mov dword [0x7fe690], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_enumerate_3D_providers_12
push edx
call esi
test eax, eax
mov dword [0x7fe694], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_open_3D_provider_4
push eax
call esi
test eax, eax
mov dword [0x7fe698], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_close_3D_provider_4
push ecx
call esi
test eax, eax
mov dword [0x7fe69c], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_allocate_3D_sample_handle_4
push edx
call esi
test eax, eax
mov dword [0x7fe6a0], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_release_3D_sample_handle_4
push eax
call esi
test eax, eax
mov dword [0x7fe6a4], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_3D_sample_file_8
push ecx
call esi
test eax, eax
mov dword [0x7fe6a8], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_start_3D_sample_4
push edx
call esi
test eax, eax
mov dword [0x7fe6ac], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_stop_3D_sample_4
push eax
call esi
test eax, eax
mov dword [0x7fe6b0], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_resume_3D_sample_4
push ecx
call esi
test eax, eax
mov dword [0x7fe6b4], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_end_3D_sample_4
push edx
call esi
test eax, eax
mov dword [0x7fe6b8], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_3D_sample_volume_8
push eax
call esi
test eax, eax
mov dword [0x7fe6bc], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_3D_sample_playback_rate_8
push ecx
call esi
test eax, eax
mov dword [0x7fe6c0], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_3D_sample_offset_8
push edx
call esi
test eax, eax
mov dword [0x7fe6c4], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_3D_sample_loop_count_8
push eax
call esi
test eax, eax
mov dword [0x7fe6c8], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_3D_sample_loop_block_12
push ecx
call esi
test eax, eax
mov dword [0x7fe6cc], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_3D_sample_occlusion_8
push edx
call esi
test eax, eax
mov dword [0x7fe6d0], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_3D_sample_obstruction_8
push eax
call esi
test eax, eax
mov dword [0x7fe6d4], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_3D_sample_effects_level_8
push ecx
call esi
test eax, eax
mov dword [0x7fe6d8], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_3D_sample_status_4
push edx
call esi
test eax, eax
mov dword [0x7fe6dc], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_3D_sample_playback_rate_4
push eax
call esi
test eax, eax
mov dword [0x7fe6e0], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_3D_sample_volume_4
push ecx
call esi
test eax, eax
mov dword [0x7fe6e4], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_3D_sample_length_4
push edx
call esi
test eax, eax
mov dword [0x7fe6e8], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_3D_sample_offset_4
push eax
call esi
test eax, eax
mov dword [0x7fe6ec], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_3D_sample_loop_count_4
push ecx
call esi
test eax, eax
mov dword [0x7fe6f0], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_3D_sample_distances_12
push edx
call esi
test eax, eax
mov dword [0x7fe6f4], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_open_3D_listener_4
push eax
call esi
test eax, eax
mov dword [0x7fe6f8], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_close_3D_listener_4
push ecx
call esi
test eax, eax
mov dword [0x7fe6fc], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_3D_position_16
push edx
call esi
test eax, eax
mov dword [0x7fe700], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_3D_velocity_vector_16
push eax
call esi
test eax, eax
mov dword [0x7fe704], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_3D_orientation_28
push ecx
call esi
test eax, eax
mov dword [0x7fe708], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_3D_room_type_8
push edx
call esi
test eax, eax
mov dword [0x7fe70c], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_3D_speaker_type_8
push eax
call esi
test eax, eax
mov dword [0x7fe710], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_3D_position_16
push ecx
call esi
test eax, eax
mov dword [0x7fe714], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_3D_provider_attribute_12
push edx
call esi
test eax, eax
mov dword [0x7fe718], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_3D_provider_preference_12
push eax
call esi
test eax, eax
mov dword [0x7fe71c], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_3D_sample_attribute_12
push ecx
call esi
test eax, eax
mov dword [0x7fe720], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_3D_sample_preference_12
push edx
call esi
test eax, eax
mov dword [0x7fe724], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_open_stream_12
push eax
call esi
test eax, eax
mov dword [0x7fe728], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_close_stream_4
push ecx
call esi
test eax, eax
mov dword [0x7fe72c], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_service_stream_8
push edx
call esi
test eax, eax
mov dword [0x7fe730], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_auto_service_stream_8
push eax
call esi
test eax, eax
mov dword [0x7fe734], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_start_stream_4
push ecx
call esi
test eax, eax
mov dword [0x7fe738], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_pause_stream_8
push edx
call esi
test eax, eax
mov dword [0x7fe73c], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_stream_playback_rate_8
push eax
call esi
test eax, eax
mov dword [0x7fe740], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_stream_volume_8
push ecx
call esi
test eax, eax
mov dword [0x7fe744], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_stream_pan_8
push edx
call esi
test eax, eax
mov dword [0x7fe748], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_stream_reverb_16
push eax
call esi
test eax, eax
mov dword [0x7fe74c], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_stream_loop_count_8
push ecx
call esi
test eax, eax
mov dword [0x7fe750], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_stream_loop_block_12
push edx
call esi
test eax, eax
mov dword [0x7fe754], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_set_stream_position_8
push eax
call esi
test eax, eax
mov dword [0x7fe758], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_set_stream_ms_position_8
push ecx
call esi
test eax, eax
mov dword [0x7fe75c], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_stream_status_4
push edx
call esi
test eax, eax
mov dword [0x7fe760], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_stream_playback_rate_4
push eax
call esi
test eax, eax
mov dword [0x7fe764], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_stream_volume_4
push ecx
call esi
test eax, eax
mov dword [0x7fe768], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_stream_pan_4
push edx
call esi
test eax, eax
mov dword [0x7fe76c], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_stream_reverb_16
push eax
call esi
test eax, eax
mov dword [0x7fe770], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_stream_loop_count_4
push ecx
call esi
test eax, eax
mov dword [0x7fe774], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_stream_position_4
push edx
call esi
test eax, eax
mov dword [0x7fe778], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_stream_ms_position_12
push eax
call esi
test eax, eax
mov dword [0x7fe77c], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_stream_info_20
push ecx
call esi
test eax, eax
mov dword [0x7fe780], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_set_stream_user_data_12
push edx
call esi
test eax, eax
mov dword [0x7fe784], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_stream_user_data_8
push eax
call esi
test eax, eax
mov dword [0x7fe788], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_register_stream_callback_8
push ecx
call esi
test eax, eax
mov dword [0x7fe78c], eax
je 0x48835f
mov edx, dword [0x7f5d30]
push str._AIL_WAV_info_8
push edx
call esi
test eax, eax
mov dword [0x7fe790], eax
je 0x48835f
mov eax, dword [0x7f5d30]
push str._AIL_process_digital_audio_24
push eax
call esi
test eax, eax
mov dword [0x7fe794], eax
je 0x48835f
mov ecx, dword [0x7f5d30]
push str._AIL_size_processed_digital_audio_16
push ecx
call esi
xor edx, edx
pop edi
test eax, eax
setne dl
mov dword [0x7fe798], eax
pop esi
mov eax, edx
pop ebx
add esp, 0x100
ret
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x100
ret