Function at 0x401030
Capabilities:
Link many functions at runtime

Disassembly:
call section..text
mov eax, dword [esp + 0xc]
cmp eax, 5
ja case.default.0x401042
jmp dword [eax*4 + 0x4012b4]
push str.a_soft.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x44ec28], eax
test eax, eax
jne 0x401103
push str.Cant_load_A_SOFT.DLL
jmp 0x4010fb
push str.a_ds3d.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x44ec28], eax
test eax, eax
jne 0x401103
push str.Cant_load_A_DS3D.DLL
jmp 0x4010fb
push str.a_a3d.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x44ec28], eax
test eax, eax
jne 0x401103
push str.Cant_load_A_A3D.DLL
jmp 0x4010fb
push str.a_eax.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x44ec28], eax
test eax, eax
jne 0x401103
push str.Cant_load_A_EAX.DLL
jmp 0x4010fb
push str.a_al.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x44ec28], eax
test eax, eax
jne 0x401103
push str.Cant_load_A_AL.DLL
jmp 0x4010fb
push str.a_xaud2.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x44ec28], eax
test eax, eax
jne 0x401103
push str.Cant_load_A_XAUD2.DLL
jmp 0x4010fb
push str.No_valid_Audio_module_selected_
call fcn.0041a670
add esp, 4
mov eax, dword [0x44ec28]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.InitAudioSystem
push eax
call esi
mov dword [0x44ec00], eax
test eax, eax
jne 0x40112d
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov ecx, dword [0x44ec28]
push str.Audio_Restore
push ecx
call esi
mov dword [0x44ec08], eax
test eax, eax
jne 0x401151
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov edx, dword [0x44ec28]
push str.AudioStop
push edx
call esi
mov dword [0x44ec14], eax
test eax, eax
jne 0x401175
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov eax, dword [0x44ec28]
push str.Audio_Shutdown
push eax
call esi
mov dword [0x44ec24], eax
test eax, eax
jne 0x401198
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov ecx, dword [0x44ec28]
push str.AudioSetCameraPos
push ecx
call esi
mov dword [0x44ec0c], eax
test eax, eax
jne 0x4011bc
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov edx, dword [0x44ec28]
push str.SetAmbient
push edx
call esi
mov dword [0x44ec20], eax
test eax, eax
jne 0x4011e0
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov eax, dword [0x44ec28]
push str.SetAmbient3d
push eax
call esi
mov dword [0x44ec18], eax
test eax, eax
jne 0x401203
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov ecx, dword [0x44ec28]
push str.AddVoice3dv
push ecx
call esi
mov dword [0x44ec1c], eax
test eax, eax
jne 0x401227
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov edx, dword [0x44ec28]
push str.Audio_GetVersion
push edx
call esi
mov dword [0x44ec10], eax
test eax, eax
jne 0x40124b
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
mov eax, dword [0x44ec28]
push str.Audio_SetEnvironment
push eax
call esi
mov dword [0x44ec04], eax
test eax, eax
jne 0x40126e
push str.Cant_find_procedure_address.
call fcn.0041a670
add esp, 4
call dword [0x44ec10]
mov esi, eax
sar esi, 0x10
call dword [0x44ec10]
and eax, 0xffff
cmp esi, 1
pop esi
jne 0x40128f
cmp eax, 2
jge 0x40129c
push str.Incorrect_audio_driver_version.
call fcn.0041a670
add esp, 4
mov eax, dword [0x44ec00]
test eax, eax
je 0x4012b1
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
push ecx
push edx
call eax
ret