Function at 0x401580
Capabilities:
Get common file path

Disassembly:
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
push edi
push 0x40b748
push 0
push str.w2m3c
push 0x40a5b0
call esi
push 0x40b748
push str.CODEC
push 0x6a
call fcn.00401d70
add esp, 0xc
test eax, eax
jne 0x4015cd
push 0x10
push str.Error
push str.Unable_to_extract_MS_ADPCM_codec._Make_sure_you_start_this_on_a_drive_where_you_have_write_access.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov ebx, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push 0x40b748
call ebx
test eax, eax
mov dword [0x40b528], eax
jne 0x40160a
push 0x40b748
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_load_the_extracted_MS_ADPCM_module.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.DriverProc
push eax
call edi
test eax, eax
jne 0x40164f
mov eax, dword [0x40b528]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x40b748
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_get_address_of_DriverProc_in_MS_ADPCM_module.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov ecx, dword [0x40b528]
push 3
push 0
push eax
push ecx
push 0x40b524
call sub.MSACM32.dll_acmDriverAddA
test eax, eax
je 0x40169d
mov edx, dword [0x40b528]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x40b748
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_add_MS_ADPCM_to_ACM.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov eax, dword [0x40b524]
push 0
push eax
push 0x40b638
call sub.MSACM32.dll_acmDriverOpen
test eax, eax
je 0x4016f5
mov ecx, dword [0x40b524]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b528]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x40b748
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_open_MS_ADPCM_driver.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
push 0x40b52c
push 0
push str.w2m3c
push 0x40a5b0
call esi
push 0x40b52c
push str.CODEC
push 0x69
call fcn.00401d70
add esp, 0xc
test eax, eax
jne 0x40176e
push eax
mov eax, dword [0x40b638]
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b524]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b528]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x40b748
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_extract_MS_IMA_ADPCM_codec._Make_sure_you_start_this_on_a_drive_where_you_have_write_access.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
push 0x40b52c
call ebx
test eax, eax
mov dword [0x40b84c], eax
jne 0x4017d6
push eax
mov eax, dword [0x40b638]
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b524]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b528]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x40b748
call fcn.00403cac
push 0x40b52c
call fcn.00403cac
add esp, 8
push 0x10
push str.Error
push str.Unable_to_load_the_extracted_MS_IMA_ADPCM_module.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
push str.DriverProc
push eax
call edi
test eax, eax
jne 0x401847
push eax
mov eax, dword [0x40b638]
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b524]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push edx
call esi
push 0x40b748
call fcn.00403cac
mov eax, dword [0x40b84c]
add esp, 4
push eax
call esi
push 0x40b52c
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_get_address_of_DriverProc_in_MS_IMA_ADPCM_module.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov ecx, dword [0x40b84c]
push 3
push 0
push eax
push ecx
push 0x40b850
call sub.MSACM32.dll_acmDriverAddA
test eax, eax
push 0
je 0x4018c8
mov edx, dword [0x40b638]
push edx
call sub.MSACM32.dll_acmDriverClose
mov eax, dword [0x40b524]
push 0
push eax
call sub.MSACM32.dll_acmDriverRemove
mov ecx, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push ecx
call esi
push 0x40b748
call fcn.00403cac
mov edx, dword [0x40b84c]
add esp, 4
push edx
call esi
push 0x40b52c
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_add_MS_IMA_ADPCM_to_ACM.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov eax, dword [0x40b850]
push eax
push 0x40b640
call sub.MSACM32.dll_acmDriverOpen
test eax, eax
je 0x401951
mov ecx, dword [0x40b638]
push 0
push ecx
call sub.MSACM32.dll_acmDriverClose
mov edx, dword [0x40b524]
push 0
push edx
call sub.MSACM32.dll_acmDriverRemove
mov eax, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push eax
call esi
push 0x40b748
call fcn.00403cac
mov ecx, dword [0x40b850]
add esp, 4
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b84c]
push edx
call esi
push 0x40b52c
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_open_MS_IMA_ADPCM_driver.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
push 0x40b644
push 0
push str.w2m3c
push 0x40a5b0
call esi
push 0x40b644
push str.CODEC
push 0x68
call fcn.00401d70
add esp, 0xc
test eax, eax
jne 0x401a01
push eax
mov eax, dword [0x40b638]
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b524]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push edx
call esi
push 0x40b748
call fcn.00403cac
mov eax, dword [0x40b640]
add esp, 4
push 0
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b850]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b84c]
push edx
call esi
push 0x40b52c
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_extract_MP3_codec._Make_sure_you_start_this_on_a_drive_where_you_have_write_access.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
push 0x40b644
call ebx
test eax, eax
mov dword [0x40b634], eax
jne 0x401aa0
push eax
mov eax, dword [0x40b638]
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b524]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push edx
call esi
push 0x40b748
call fcn.00403cac
mov eax, dword [0x40b640]
add esp, 4
push 0
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b850]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b84c]
push edx
call esi
push 0x40b52c
call fcn.00403cac
push 0x40b644
call fcn.00403cac
add esp, 8
push 0x10
push str.Error
push str.Unable_to_load_the_extracted_l3codec_module.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
push str.DriverProc
push eax
call edi
test eax, eax
jne 0x401b46
push eax
mov eax, dword [0x40b638]
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b524]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push edx
call esi
push 0x40b748
call fcn.00403cac
mov eax, dword [0x40b640]
add esp, 4
push 0
push eax
call sub.MSACM32.dll_acmDriverClose
mov ecx, dword [0x40b850]
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b84c]
push edx
call esi
push 0x40b52c
call fcn.00403cac
mov eax, dword [0x40b634]
add esp, 4
push eax
call esi
push 0x40b644
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_get_address_of_DriverProc_in_l3codec_module.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov ecx, dword [0x40b634]
push 3
push 0
push eax
push ecx
push 0x40b630
call sub.MSACM32.dll_acmDriverAddA
test eax, eax
push 0
je 0x401bfc
mov edx, dword [0x40b638]
push edx
call sub.MSACM32.dll_acmDriverClose
mov eax, dword [0x40b524]
push 0
push eax
call sub.MSACM32.dll_acmDriverRemove
mov ecx, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push ecx
call esi
push 0x40b748
call fcn.00403cac
mov edx, dword [0x40b640]
add esp, 4
push 0
push edx
call sub.MSACM32.dll_acmDriverClose
mov eax, dword [0x40b850]
push 0
push eax
call sub.MSACM32.dll_acmDriverRemove
mov ecx, dword [0x40b84c]
push ecx
call esi
push 0x40b52c
call fcn.00403cac
mov edx, dword [0x40b634]
add esp, 4
push edx
call esi
push 0x40b644
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_add_l3codec_to_ACM.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
mov eax, dword [0x40b630]
push eax
push 0x40b63c
call sub.MSACM32.dll_acmDriverOpen
test eax, eax
je 0x401cba
mov ecx, dword [0x40b638]
push 0
push ecx
call sub.MSACM32.dll_acmDriverClose
mov edx, dword [0x40b524]
push 0
push edx
call sub.MSACM32.dll_acmDriverRemove
mov eax, dword [0x40b528]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push eax
call esi
push 0x40b748
call fcn.00403cac
mov ecx, dword [0x40b640]
add esp, 4
push 0
push ecx
call sub.MSACM32.dll_acmDriverClose
mov edx, dword [0x40b850]
push 0
push edx
call sub.MSACM32.dll_acmDriverRemove
mov eax, dword [0x40b84c]
push eax
call esi
push 0x40b52c
call fcn.00403cac
mov ecx, dword [0x40b630]
add esp, 4
push 0
push ecx
call sub.MSACM32.dll_acmDriverRemove
mov edx, dword [0x40b634]
push edx
call esi
push 0x40b644
call fcn.00403cac
add esp, 4
push 0x10
push str.Error
push str.Unable_to_open_l3codec_driver.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
ret
pop edi
pop esi
mov eax, 1
pop ebx
ret