Function at 0x445800
Capabilities:
Get common file path

Disassembly:
push ebp
lea ebp, [esp - 0x1004]
mov eax, 0x1004
call fcn.004ab4d0
push 0xffffffffffffffff
push 0x4cd828
mov eax, dword fs:[0]
push eax
sub esp, 0x60
mov eax, dword [0x51c080]
xor eax, ebp
mov dword [ebp + 0x1000], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 4], 0
mov eax, dword [edi]
test eax, eax
jne 0x445886
push str.Script_Manager_is_invalid.._Write_Langauage_to_Registry_fail__
mov ecx, 0x527b30
call fcn.00449000
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1000]
xor ecx, ebp
call fcn.004a998e
add ebp, 0x1004
mov esp, ebp
pop ebp
ret
lea ebx, [eax + 0x3cb8]
mov dword [ebp - 0x18], ebx
test ebx, ebx
je 0x445d5b
cmp dword [ebx], 0
je 0x445d5b
push 0x400
lea eax, [ebp + 0x800]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x4458e5
push 0x5c
lea ecx, [ebp + 0x800]
push ecx
call fcn.004a9ce4
add esp, 8
test eax, eax
je 0x4458d2
mov word [eax], 0
mov edx, 0x4e4b44
lea eax, [ebp - 0x34]
call fcn.00411be0
mov byte [ebp - 4], 1
jmp 0x445922
push 0x800
push 0
lea eax, [ebp + 0x800]
push eax
call fcn.004ab450
add esp, 0xc
lea ecx, [ebp + 0x800]
push ecx
push 0x400
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
je 0x445946
mov edx, 0x4e4b44
lea eax, [ebp - 0x34]
call fcn.00411be0
mov byte [ebp - 4], 2
lea edx, [ebp - 0x34]
push edx
lea ecx, [edi + 0x10]
call fcn.0040fa50
push eax
lea edx, [ebp + 0x800]
call fcn.00410270
mov byte [ebp - 4], 0
lea esi, [ebp - 0x34]
call fcn.00411bb0
push 0x800
push 0
lea eax, [ebp + 0x800]
push eax
call fcn.004ab450
add esp, 0xc
push str.Source_Dir
push str.SEInst_InstallingSetupProgram
push ebx
mov eax, 0x400
lea edx, [ebp + 0x800]
call fcn.00441090
test eax, eax
lea eax, [ebp - 0x34]
jne 0x4459c9
mov edx, str.SRC_DIR
call fcn.00411be0
mov byte [ebp - 4], 3
lea ebx, [edi + 0x10]
lea ecx, [ebp - 0x34]
push ecx
mov ecx, ebx
call fcn.0040fa50
push eax
lea edx, [ebp + 0x800]
call fcn.00410270
mov byte [ebp - 4], 0
lea esi, [ebp - 0x34]
call fcn.00411bb0
push str.Source_Directory_from_Registry__
mov ecx, 0x527b30
call fcn.00449000
add esp, 4
jmp 0x445af1
mov edx, 0x4e4b40
call fcn.00411be0
mov byte [ebp - 4], 4
lea ebx, [edi + 0x1c]
lea edx, [ebp - 0x34]
push edx
mov ecx, ebx
call fcn.00410880
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0
lea esi, [ebp - 0x34]
call fcn.00411bb0
cmp dword [ebp - 0x14], 0
je 0x445a5c
mov edx, 0x4e4b40
lea eax, [ebp - 0x50]
call fcn.00411be0
mov byte [ebp - 4], 5
mov edx, str.SRC_DIR
lea eax, [ebp - 0x34]
call fcn.00411be0
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x50]
push ecx
mov ecx, ebx
call fcn.00410880
mov esi, eax
lea ebx, [edi + 0x10]
lea edx, [ebp - 0x34]
push edx
mov ecx, ebx
call fcn.0040fa50
mov ecx, eax
push 0xffffffffffffffff
push 0
mov eax, esi
call fcn.0040f4f0
mov byte [ebp - 4], 5
lea esi, [ebp - 0x34]
call fcn.00411bb0
mov byte [ebp - 4], 0
lea esi, [ebp - 0x50]
jmp 0x445ab9
mov edx, 0x4e4b44
lea eax, [ebp - 0x34]
call fcn.00411be0
mov byte [ebp - 4], 7
mov edx, str.SRC_DIR
lea eax, [ebp - 0x50]
call fcn.00411be0
mov byte [ebp - 4], 8
lea ebx, [edi + 0x10]
lea eax, [ebp - 0x34]
push eax
mov ecx, ebx
call fcn.0040fa50
mov esi, eax
lea ecx, [ebp - 0x50]
push ecx
mov ecx, ebx
call fcn.0040fa50
mov ecx, eax
push 0xffffffffffffffff
push 0
mov eax, esi
call fcn.0040f4f0
mov byte [ebp - 4], 7
lea esi, [ebp - 0x50]
call fcn.00411bb0
mov byte [ebp - 4], 0
lea esi, [ebp - 0x34]
call fcn.00411bb0
lea eax, [ebp + 0x800]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x445ac7
sub eax, edx
sar eax, 1
je 0x445af1
push str.Source_Dir
push str.SEInst_InstallingSetupProgram
mov edx, dword [ebp - 0x18]
push edx
lea ecx, [ebp + 0x800]
call fcn.00440ff0
push 0x800
push 0
lea eax, [ebp + 0x800]
push eax
call fcn.004ab450
add esp, 0xc
push str.Dest_Dir
push str.SEInst_InstallSetup
mov esi, dword [ebp - 0x18]
push esi
mov eax, 0x400
lea edx, [ebp + 0x800]
call fcn.00441090
test eax, eax
jne 0x445b65
lea eax, [ebp + 0x800]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x445b32
sub eax, edx
sar eax, 1
je 0x445b65
mov byte [edi + 0x30], 1
lea ecx, [ebp + 0x800]
push ecx
push str.Destination_Directory_from_installed_registry_data_:__s
mov ecx, 0x527b30
call fcn.00449000
add esp, 8
jmp 0x445d36
push str.Dest_Dir
push str.SEInst_InstallingSetup
push esi
mov eax, 0x400
lea edx, [ebp + 0x800]
call fcn.00441090
test eax, eax
jne 0x445bbf
lea eax, [ebp + 0x800]
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x445b90
sub eax, edx
sar eax, 1
je 0x445bbf
lea edx, [ebp + 0x800]
push edx
push str.Destination_Directory_was_already_set_in_registry_:__s
mov ecx, 0x527b30
call fcn.00449000
add esp, 8
jmp 0x445d36
xor edx, edx
xor eax, eax
mov ecx, dword [edi]
call fcn.00458870
mov esi, eax
push 0x800
push edx
lea eax, [ebp + 0x800]
push eax
call fcn.004ab450
add esp, 0xc
test esi, esi
je 0x445c52
mov eax, esi
call fcn.0044c890
test al, al
je 0x445c52
push 0x800
push 0
lea ecx, [ebp]
push ecx
call fcn.004ab450
add esp, 0xc
push 0
push 0x400
lea edx, [ebp]
push edx
mov edx, str.PROGRAM_INFO_DESTINATION_DIR
mov ecx, esi
call fcn.0044d830
test eax, eax
jne 0x445c52
push eax
push 0x400
mov eax, dword [edi]
push eax
lea edi, [ebp + 0x800]
lea edx, [ebp]
call fcn.00458ee0
test eax, eax
je 0x445c52
push 0x3ff
lea ecx, [ebp]
push ecx
push 0x400
mov edx, edi
push edx
call fcn.004a9be0
add esp, 0x10
lea eax, [ebp + 0x800]
lea edx, [eax + 2]
jmp 0x445c60
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x445c60
sub eax, edx
sar eax, 1
jne 0x445d36
mov edx, str.PROGRAM_NAME
lea eax, [ebp - 0x6c]
call fcn.00411be0
mov byte [ebp - 4], 9
mov edx, 0x4dc4d8
lea eax, [ebp - 0x34]
call fcn.00411be0
mov byte [ebp - 4], 0xa
mov edx, str.PROGRAM_FILES_DIR
lea eax, [ebp - 0x50]
call fcn.00411be0
mov byte [ebp - 4], 0xb
lea eax, [ebp - 0x6c]
push eax
mov ecx, ebx
call fcn.0040fa50
mov esi, 8
cmp dword [eax + 0x18], esi
jb 0x445cc2
mov edi, dword [eax + 4]
jmp 0x445cc5
lea edi, [eax + 4]
lea ecx, [ebp - 0x34]
push ecx
mov ecx, ebx
call fcn.0040fa50
cmp dword [eax + 0x18], esi
jb 0x445cda
mov esi, dword [eax + 4]
jmp 0x445cdd
lea esi, [eax + 4]
lea edx, [ebp - 0x50]
push edx
mov ecx, ebx
call fcn.0040fa50
cmp dword [eax + 0x18], 8
jb 0x445cf3
mov eax, dword [eax + 4]
jmp 0x445cf6
add eax, 4
push edi
push esi
push eax
push str._s_s_printers_s
push 0x400
lea eax, [ebp + 0x800]
push eax
call fcn.004a9ca9
add esp, 0x18
mov byte [ebp - 4], 0xa
lea esi, [ebp - 0x50]
call fcn.00411bb0
mov byte [ebp - 4], 9
lea esi, [ebp - 0x34]
call fcn.00411bb0
mov byte [ebp - 4], 0
lea esi, [ebp - 0x6c]
call fcn.00411bb0
push str.Dest_Dir
push str.SEInst_InstallingSetup
mov ecx, dword [ebp - 0x18]
push ecx
lea ecx, [ebp + 0x800]
call fcn.00440ff0
mov dword [ebp - 4], 0xffffffff
jmp 0x445861
push str.Registry_Data_is_invalid___Write_Langauage_to_Registry_fail__
jmp 0x445854