Function at 0x403a20
Capabilities:
Get common file path

Disassembly:
sub esp, 0x214
mov eax, dword [0x417034]
xor eax, esp
mov dword [esp + 0x210], eax
push ebx
push edi
xor ebx, ebx
push 0x103
lea eax, [esp + 0x15]
push ebx
push eax
mov byte [esp + 0x1c], bl
call fcn.00409070
push 0x103
lea ecx, [esp + 0x125]
push ebx
push ecx
mov byte [esp + 0x12c], bl
call fcn.00409070
add esp, 0x18
push 0x104
lea edx, [esp + 0x118]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
cmp eax, ebx
je 0x403db6
cmp eax, 0x104
ja 0x403db6
lea eax, [esp + 0x10]
lea edx, [esp + 0x114]
mov ecx, eax
push esi
xor edi, edi
mov esi, 0x104
sub edx, ecx
mov cl, byte [edx + eax]
cmp cl, bl
je 0x403ab9
mov byte [eax], cl
add eax, 1
sub esi, 1
jne 0x403aa6
jmp 0x403abd
cmp esi, ebx
jne 0x403ac5
sub eax, 1
mov edi, 0x8007007a
cmp edi, ebx
mov byte [eax], bl
jl 0x403ae0
mov ecx, 0x104
lea eax, [esp + 0x14]
cmp byte [eax], bl
je 0x403b09
add eax, 1
sub ecx, 1
jne 0x403ad4
push ebx
push ebx
push str._Info__Cant_obtain_mscoree.dll_path__assuming_upgrade_is_necessary
call fcn.004070f0
add esp, 0xc
pop esi
pop edi
mov al, 1
pop ebx
mov ecx, dword [esp + 0x210]
xor ecx, esp
call fcn.0040850f
add esp, 0x214
ret
cmp ecx, ebx
je 0x403ae0
mov eax, 0x104
sub eax, ecx
mov ecx, 0x104
sub ecx, eax
lea edx, [esp + eax + 0x14]
mov eax, str.mscoree.dll
call fcn.004013f0
cmp eax, ebx
jl 0x403ae0
lea edx, [esp + 0x14]
push edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
jne 0x403b65
push ebx
push ebx
push str._Info__Cant_load_mscoree.dll__assuming_upgrade_is_necessary
call fcn.004070f0
add esp, 0xc
pop esi
pop edi
mov al, 1
pop ebx
mov ecx, dword [esp + 0x210]
xor ecx, esp
call fcn.0040850f
add esp, 0x214
ret
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
push eax
lea ebx, [esp + 0x18]
call fcn.00406bd0
add esp, 4
test eax, eax
je 0x403bac
push 0
push 0
push str._Info__Cant_obtain_version_information__assuming_upgrade_is_necessary
call fcn.004070f0
add esp, 0xc
pop esi
pop edi
mov al, 1
pop ebx
mov ecx, dword [esp + 0x210]
xor ecx, esp
call fcn.0040850f
add esp, 0x214
ret
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x224]
mov eax, ecx
shr eax, 0x10
imul eax, eax, 0x64
movzx ecx, cx
add eax, ecx
cmp eax, edi
jae 0x403bf1
push edi
push eax
mov ebx, str._Info__CLR_upgrade_is_required.__System_Version___d__Minimum_Version___d._n
call fcn.00407080
add esp, 8
pop esi
pop edi
mov al, 1
pop ebx
mov ecx, dword [esp + 0x210]
xor ecx, esp
call fcn.0040850f
add esp, 0x214
ret
lea esi, [esp + 0xc]
mov ebx, str.InstallRoot
mov ecx, str.SOFTWAREMicrosoft.NETFramework
mov dword [esp + 0xc], 0
call fcn.004073b0
test eax, eax
jg 0x403c3b
push 0
push 0
push str._Info__CLR_InstallRoot_is_missing__assuming_upgrade_is_necessary
call fcn.004070f0
add esp, 0xc
pop esi
pop edi
mov al, 1
pop ebx
mov ecx, dword [esp + 0x210]
xor ecx, esp
call fcn.0040850f
add esp, 0x214
ret
mov eax, 0x51eb851f
mul edi
shr edx, 5
sub edx, 2
je 0x403c54
sub edx, 2
mov eax, str._v4.0.30319mscorlib.dll
je 0x403c59
mov eax, str._v2.0.50727mscorlib.dll
push ebp
mov ebp, dword [esp + 0x10]
lea ecx, [esp + 0x18]
mov esi, ebp
mov edx, ecx
xor ebx, ebx
mov edi, 0x104
sub esi, edx
nop
mov dl, byte [esi + ecx]
test dl, dl
je 0x403c83
mov byte [ecx], dl
add ecx, 1
sub edi, 1
jne 0x403c70
jmp 0x403c87
test edi, edi
jne 0x403c8f
sub ecx, 1
mov ebx, 0x8007007a
test ebx, ebx
mov byte [ecx], 0
jl 0x403cad
mov ecx, 0x104
lea edx, [esp + 0x18]
nop
cmp byte [edx], 0
je 0x403cd9
add edx, 1
sub ecx, 1
jne 0x403ca0
push 0
push 0
push str._Info__Cant_obtain_mscorlib.dll_path__assuming_upgrade_is_necessary
call fcn.004070f0
add esp, 0xc
mov al, 1
pop ebp
pop esi
pop edi
pop ebx
mov ecx, dword [esp + 0x210]
xor ecx, esp
call fcn.0040850f
add esp, 0x214
ret
test ecx, ecx
je 0x403cad
mov edx, 0x104
sub edx, ecx
mov ecx, 0x104
sub ecx, edx
lea edx, [esp + edx + 0x18]
call fcn.004013f0
test eax, eax
jl 0x403cad
test ebp, ebp
je 0x403d05
push ebp
call fcn.00407d45
add esp, 4
lea eax, [esp + 0x14]
push eax
lea ebx, [esp + 0x1c]
call fcn.00406bd0
add esp, 4
test eax, eax
je 0x403d25
push 0
push 0
push str._Info__Cant_obtain_version_information__assuming_upgrade_is_necessary
jmp 0x403cb6
mov ecx, dword [esp + 0x14]
mov eax, ecx
shr eax, 0x10
imul eax, eax, 0x64
movzx ecx, cx
add eax, ecx
mov ecx, dword [esp + 0x228]
cmp eax, ecx
jae 0x403d55
push ecx
push eax
mov ebx, str._Info__CLR_upgrade_is_required.__System_Version___d__Minimum_Version___d._n
call fcn.00407080
add esp, 8
jmp 0x403cbe
cmp ecx, 0x190
jne 0x403d9e
lea esi, [esp + 0x10]
mov ebx, str.InstallPath
mov ecx, str.SOFTWAREMicrosoftNET_Framework_SetupNDP_v4Full
call fcn.004073b0
test eax, eax
jle 0x403d90
mov ebx, str.Install
mov ecx, str.SOFTWAREMicrosoftNET_Framework_SetupNDP_v4Full
call fcn.004073b0
test eax, eax
jle 0x403d90
mov edx, dword [esp + 0x10]
cmp dword [edx], 0
jne 0x403d9e
push 0
push 0
push str._Info__CLR_Full_profile_is_not_installed__assuming_upgrade_is_necessary
jmp 0x403cb6
push 0
push 0
push str._Info__No_CLR_upgrade_is_necessary.__System_version_meets_minimum_requirements_n
call fcn.004070f0
add esp, 0xc
xor al, al
jmp 0x403cc0
cmp dword [0x417fb0], 0xffffffff
jne 0x403dc4
call fcn.00406fb0
cmp dword [0x418b34], ebx
jne 0x403dd4
cmp dword [0x417fb0], ebx
je 0x403de9
push str._Info__Cant_obtain_system_directory__assuming_upgrade_is_necessary
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, str._Info__Cant_obtain_system_directory__assuming_upgrade_is_necessary
call fcn.00407260
mov ecx, dword [esp + 0x218]
pop edi
pop ebx
xor ecx, esp
mov al, 1
call fcn.0040850f
add esp, 0x214
ret