Function at 0x487630
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, dword [0x7f91b8]
sub esp, 0x100
test eax, eax
push ebx
push esi
push edi
je 0x487651
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x100
ret
push 0x10
call fcn.00481520
push eax
push str.fs_basepath
call fcn.0044f480
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 0x4876bc
mov ecx, edx
lea edx, [esp + 0xc]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x487696
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 0x4876cd
xor eax, eax
mov cl, byte [eax + str._snddrivers_mss32.dll]
mov byte [esp + eax + 0xc], cl
inc eax
test cl, cl
jne 0x4876be
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea eax, [esp + 0xc]
push eax
call esi
test eax, eax
mov dword [0x7f91b8], eax
jne 0x487774
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 0x48774f
mov ecx, edx
lea edx, [esp + 0xc]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x487713
lea edi, [esp + 0xc]
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x55a880]
repne scasb al, byte es:[edi]
mov ecx, dword [str._mss32.dll]
mov ax, word [0x55a884]
dec edi
mov dword [edi], ecx
mov cl, byte [0x55a886]
mov dword [edi + 4], edx
mov word [edi + 8], ax
mov byte [edi + 0xa], cl
jmp 0x487760
xor eax, eax
mov cl, byte [eax + str._mss32.dll]
mov byte [esp + eax + 0xc], cl
inc eax
test cl, cl
jne 0x487751
lea edx, [esp + 0xc]
push edx
call esi
test eax, eax
mov dword [0x7f91b8], eax
je 0x4881bf
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str._AIL_startup_0
push eax
call esi
test eax, eax
mov dword [0x802a88], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_shutdown_0
push eax
call esi
test eax, eax
mov dword [0x802a8c], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_preference_8
push ecx
call esi
test eax, eax
mov dword [0x802a90], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_last_error_0
push edx
call esi
test eax, eax
mov dword [0x802a94], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_waveOutOpen_16
push eax
call esi
test eax, eax
mov dword [0x802a98], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_waveOutClose_4
push ecx
call esi
test eax, eax
mov dword [0x802a9c], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_digital_master_volume_8
push edx
call esi
test eax, eax
mov dword [0x802aa0], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_allocate_sample_handle_4
push eax
call esi
test eax, eax
mov dword [0x802aa4], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_release_sample_handle_4
push ecx
call esi
test eax, eax
mov dword [0x802aa8], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_init_sample_4
push edx
call esi
test eax, eax
mov dword [0x802aac], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_sample_file_12
push eax
call esi
test eax, eax
mov dword [0x802ab0], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_named_sample_file_20
push ecx
call esi
test eax, eax
mov dword [0x802ab4], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_start_sample_4
push edx
call esi
test eax, eax
mov dword [0x802ab8], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_stop_sample_4
push eax
call esi
test eax, eax
mov dword [0x802abc], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_resume_sample_4
push ecx
call esi
test eax, eax
mov dword [0x802ac0], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_end_sample_4
push edx
call esi
test eax, eax
mov dword [0x802ac4], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_sample_playback_rate_8
push eax
call esi
test eax, eax
mov dword [0x802ac8], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_sample_volume_8
push ecx
call esi
test eax, eax
mov dword [0x802acc], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_sample_pan_8
push edx
call esi
test eax, eax
mov dword [0x802ad0], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_sample_reverb_16
push eax
call esi
test eax, eax
mov dword [0x802ad4], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_sample_loop_count_8
push ecx
call esi
test eax, eax
mov dword [0x802ad8], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_sample_loop_block_12
push edx
call esi
test eax, eax
mov dword [0x802adc], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_sample_status_4
push eax
call esi
test eax, eax
mov dword [0x802ae0], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_sample_playback_rate_4
push ecx
call esi
test eax, eax
mov dword [0x802ae4], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_sample_volume_4
push edx
call esi
test eax, eax
mov dword [0x802ae8], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_sample_position_8
push eax
call esi
test eax, eax
mov dword [0x802aec], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_sample_position_4
push ecx
call esi
test eax, eax
mov dword [0x802af0], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_sample_loop_count_4
push edx
call esi
test eax, eax
mov dword [0x802af4], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_sample_ms_position_8
push eax
call esi
test eax, eax
mov dword [0x802af8], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_sample_ms_position_12
push ecx
call esi
test eax, eax
mov dword [0x802afc], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_sample_granularity_4
push edx
call esi
test eax, eax
mov dword [0x802b00], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_digital_CPU_percent_4
push eax
call esi
test eax, eax
mov dword [0x802b04], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_digital_configuration_16
push ecx
call esi
test eax, eax
mov dword [0x802b08], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_enumerate_3D_providers_12
push edx
call esi
test eax, eax
mov dword [0x802b0c], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_open_3D_provider_4
push eax
call esi
test eax, eax
mov dword [0x802b10], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_close_3D_provider_4
push ecx
call esi
test eax, eax
mov dword [0x802b14], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_allocate_3D_sample_handle_4
push edx
call esi
test eax, eax
mov dword [0x802b18], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_release_3D_sample_handle_4
push eax
call esi
test eax, eax
mov dword [0x802b1c], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_3D_sample_file_8
push ecx
call esi
test eax, eax
mov dword [0x802b20], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_start_3D_sample_4
push edx
call esi
test eax, eax
mov dword [0x802b24], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_stop_3D_sample_4
push eax
call esi
test eax, eax
mov dword [0x802b28], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_resume_3D_sample_4
push ecx
call esi
test eax, eax
mov dword [0x802b2c], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_end_3D_sample_4
push edx
call esi
test eax, eax
mov dword [0x802b30], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_3D_sample_volume_8
push eax
call esi
test eax, eax
mov dword [0x802b34], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_3D_sample_playback_rate_8
push ecx
call esi
test eax, eax
mov dword [0x802b38], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_3D_sample_offset_8
push edx
call esi
test eax, eax
mov dword [0x802b3c], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_3D_sample_loop_count_8
push eax
call esi
test eax, eax
mov dword [0x802b40], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_3D_sample_loop_block_12
push ecx
call esi
test eax, eax
mov dword [0x802b44], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_3D_sample_occlusion_8
push edx
call esi
test eax, eax
mov dword [0x802b48], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_3D_sample_obstruction_8
push eax
call esi
test eax, eax
mov dword [0x802b4c], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_3D_sample_effects_level_8
push ecx
call esi
test eax, eax
mov dword [0x802b50], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_3D_sample_status_4
push edx
call esi
test eax, eax
mov dword [0x802b54], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_3D_sample_playback_rate_4
push eax
call esi
test eax, eax
mov dword [0x802b58], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_3D_sample_volume_4
push ecx
call esi
test eax, eax
mov dword [0x802b5c], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_3D_sample_length_4
push edx
call esi
test eax, eax
mov dword [0x802b60], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_3D_sample_offset_4
push eax
call esi
test eax, eax
mov dword [0x802b64], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_3D_sample_loop_count_4
push ecx
call esi
test eax, eax
mov dword [0x802b68], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_3D_sample_distances_12
push edx
call esi
test eax, eax
mov dword [0x802b6c], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_open_3D_listener_4
push eax
call esi
test eax, eax
mov dword [0x802b70], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_close_3D_listener_4
push ecx
call esi
test eax, eax
mov dword [0x802b74], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_3D_position_16
push edx
call esi
test eax, eax
mov dword [0x802b78], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_3D_velocity_vector_16
push eax
call esi
test eax, eax
mov dword [0x802b7c], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_3D_orientation_28
push ecx
call esi
test eax, eax
mov dword [0x802b80], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_3D_room_type_8
push edx
call esi
test eax, eax
mov dword [0x802b84], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_3D_speaker_type_8
push eax
call esi
test eax, eax
mov dword [0x802b88], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_3D_position_16
push ecx
call esi
test eax, eax
mov dword [0x802b8c], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_3D_provider_attribute_12
push edx
call esi
test eax, eax
mov dword [0x802b90], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_3D_provider_preference_12
push eax
call esi
test eax, eax
mov dword [0x802b94], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_3D_sample_attribute_12
push ecx
call esi
test eax, eax
mov dword [0x802b98], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_3D_sample_preference_12
push edx
call esi
test eax, eax
mov dword [0x802b9c], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_open_stream_12
push eax
call esi
test eax, eax
mov dword [0x802ba0], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_close_stream_4
push ecx
call esi
test eax, eax
mov dword [0x802ba4], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_service_stream_8
push edx
call esi
test eax, eax
mov dword [0x802ba8], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_auto_service_stream_8
push eax
call esi
test eax, eax
mov dword [0x802bac], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_start_stream_4
push ecx
call esi
test eax, eax
mov dword [0x802bb0], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_pause_stream_8
push edx
call esi
test eax, eax
mov dword [0x802bb4], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_stream_playback_rate_8
push eax
call esi
test eax, eax
mov dword [0x802bb8], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_stream_volume_8
push ecx
call esi
test eax, eax
mov dword [0x802bbc], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_stream_pan_8
push edx
call esi
test eax, eax
mov dword [0x802bc0], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_stream_reverb_16
push eax
call esi
test eax, eax
mov dword [0x802bc4], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_stream_loop_count_8
push ecx
call esi
test eax, eax
mov dword [0x802bc8], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_stream_loop_block_12
push edx
call esi
test eax, eax
mov dword [0x802bcc], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_set_stream_position_8
push eax
call esi
test eax, eax
mov dword [0x802bd0], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_set_stream_ms_position_8
push ecx
call esi
test eax, eax
mov dword [0x802bd4], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_stream_status_4
push edx
call esi
test eax, eax
mov dword [0x802bd8], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_stream_playback_rate_4
push eax
call esi
test eax, eax
mov dword [0x802bdc], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_stream_volume_4
push ecx
call esi
test eax, eax
mov dword [0x802be0], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_stream_pan_4
push edx
call esi
test eax, eax
mov dword [0x802be4], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_stream_reverb_16
push eax
call esi
test eax, eax
mov dword [0x802be8], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_stream_loop_count_4
push ecx
call esi
test eax, eax
mov dword [0x802bec], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_stream_position_4
push edx
call esi
test eax, eax
mov dword [0x802bf0], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_stream_ms_position_12
push eax
call esi
test eax, eax
mov dword [0x802bf4], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_stream_info_20
push ecx
call esi
test eax, eax
mov dword [0x802bf8], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_set_stream_user_data_12
push edx
call esi
test eax, eax
mov dword [0x802bfc], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_stream_user_data_8
push eax
call esi
test eax, eax
mov dword [0x802c00], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_register_stream_callback_8
push ecx
call esi
test eax, eax
mov dword [0x802c04], eax
je 0x4881bf
mov edx, dword [0x7f91b8]
push str._AIL_WAV_info_8
push edx
call esi
test eax, eax
mov dword [0x802c08], eax
je 0x4881bf
mov eax, dword [0x7f91b8]
push str._AIL_process_digital_audio_24
push eax
call esi
test eax, eax
mov dword [0x802c0c], eax
je 0x4881bf
mov ecx, dword [0x7f91b8]
push str._AIL_size_processed_digital_audio_16
push ecx
call esi
xor edx, edx
pop edi
test eax, eax
setne dl
mov dword [0x802c10], 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