Function at 0x404d50
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xc14
mov eax, dword [0x41e008]
xor eax, esp
mov dword [esp + 0xc10], eax
cmp byte [0x41e01a], 0
push ebx
push esi
push edi
mov dword [esp + 0xc], 0
je 0x404eaa
mov ecx, 0x17
lea edi, [esp + 0x18]
mov esi, str.We_have_detected_that_CrypKey_components_have_been_installed_in_the_following_locations:_r_n_r_n
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x18]
lea edx, [ecx + 1]
movsb byte es:[edi], byte [esi]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404da0
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
mov ecx, dword [0x41f8f4]
add esp, 4
test ecx, ecx
jne 0x404dec
movups xmm0, xmmword [str.No_folders_found._r_n]
mov eax, dword [0x4191e8]
lea ecx, [esp + 0x18]
mov dword [esp + 0x28], eax
lea edx, [ecx + 1]
movups xmmword [esp + 0x18], xmm0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404de0
jmp 0x405047
call fcn.0040e0c0
mov ecx, eax
mov dword [esp + 0x10], eax
call fcn.004092d0
mov edi, eax
test edi, edi
je 0x404e9c
mov ecx, edi
call fcn.00409990
mov ecx, dword [0x41f8f4]
mov edx, eax
mov dword [esp + 0x14], eax
call fcn.0040a560
mov ebx, eax
test ebx, ebx
je 0x404e8b
mov edx, 0x418eec
mov ecx, ebx
call fcn.0040a560
mov ecx, eax
call fcn.00409730
mov edx, str.Setup
mov ecx, ebx
mov esi, eax
call fcn.0040a560
mov ecx, eax
call fcn.00409730
test esi, esi
je 0x404e8b
test eax, eax
je 0x404e8b
push dword [esp + 0x14]
lea eax, [esp + 0x1c]
push 0x4191ec
push eax
call fcn.004010e0
lea ecx, [esp + 0x24]
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404e71
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
add esp, 4
mov ecx, edi
call fcn.00409310
mov edi, eax
test edi, edi
jne 0x404e06
mov ecx, dword [esp + 0x10]
call fcn.00409420
jmp 0x40505a
movups xmm0, xmmword [str.The_following_locations_have_been_specified_for_a_CrypKey_update:_r_n_r_n]
mov eax, dword [0x419238]
lea ecx, [esp + 0x18]
mov dword [esp + 0x58], eax
lea edx, [ecx + 1]
mov ax, word [0x41923c]
movups xmmword [esp + 0x18], xmm0
mov word [esp + 0x5c], ax
movups xmm0, xmmword [0x419208]
movups xmmword [esp + 0x28], xmm0
movups xmm0, xmmword [0x419218]
movups xmmword [esp + 0x38], xmm0
movups xmm0, xmmword [0x419228]
movups xmmword [esp + 0x48], xmm0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404ef5
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
mov ecx, dword [0x41f8f4]
add esp, 4
test ecx, ecx
jne 0x404f5c
mov eax, dword [0x419250]
lea ecx, [esp + 0x18]
movups xmm0, xmmword [str.No_folders_selected._r_n]
mov dword [esp + 0x28], eax
lea edx, [ecx + 1]
mov ax, word [0x419254]
mov word [esp + 0x2c], ax
mov al, byte [0x419256]
movups xmmword [esp + 0x18], xmm0
mov byte [esp + 0x2e], al
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404f50
jmp 0x405047
call fcn.0040e0c0
mov ebx, eax
mov ecx, ebx
mov dword [esp + 0x10], ebx
call fcn.004092d0
mov esi, eax
test esi, esi
je 0x404ffd
mov ebx, 0x41925c
nop dword [eax]
mov ecx, esi
call fcn.00409990
mov ecx, dword [0x41f8f4]
mov edi, eax
mov edx, edi
call fcn.0040a560
test eax, eax
je 0x404fec
mov edx, str.Setup
mov ecx, eax
call fcn.0040a560
mov ecx, eax
call fcn.00409730
test eax, eax
mov ecx, 0x419258
push edi
cmove ecx, ebx
lea eax, [esp + 0x1c]
push ecx
push str._s_s_r_n
push eax
call fcn.004010e0
lea ecx, [esp + 0x28]
add esp, 0x10
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404fd2
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
add esp, 4
mov ecx, esi
call fcn.00409310
mov esi, eax
test esi, esi
jne 0x404f80
mov ebx, dword [esp + 0x10]
mov ecx, ebx
call fcn.00409420
movups xmm0, xmmword [str._r_n_Successfully_updated_r_n]
mov ax, word [0x419280]
lea ecx, [esp + 0x18]
mov word [esp + 0x30], ax
lea edx, [ecx + 1]
mov al, byte [0x419282]
movups xmmword [esp + 0x18], xmm0
mov byte [esp + 0x32], al
movq xmm0, qword [0x419278]
movq qword [esp + 0x28], xmm0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405040
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
add esp, 4
mov ecx, 0x13
lea edi, [esp + 0x18]
mov esi, str._r_n_r_nThe_following_location_is_specified_as_the_main_installation_location:_r_n_r_n
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x18]
lea edx, [ecx + 1]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405074
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
mov ecx, 0x41e8f0
add esp, 4
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405096
sub ecx, edx
je 0x4050a8
mov edx, 0x41e8f0
jmp 0x4050ed
movups xmm0, xmmword [str.Location_could_not_be_determined_from_the_registry.]
mov eax, dword [0x419308]
lea ecx, [esp + 0x18]
mov dword [esp + 0x48], eax
lea edx, [ecx + 1]
movups xmmword [esp + 0x18], xmm0
movups xmm0, xmmword [0x4192e8]
movups xmmword [esp + 0x28], xmm0
movups xmm0, xmmword [0x4192f8]
movups xmmword [esp + 0x38], xmm0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4050e0
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
mov eax, dword [0x421530]
add esp, 4
cmp eax, 1
je 0x40510d
cmp eax, 2
jne 0x4051ba
cmp byte [0x41e018], 0
jne 0x4051ba
mov ecx, 0x1e
lea edi, [esp + 0x18]
mov esi, str._r_n_r_nIt_appears_that_the_CIUMon_services_specified_are_not_running_from_the_location_indicated_by_the_installation_key._r_n_r_n
lea eax, [esp + 0x818]
rep movsd dword es:[edi], dword [esi]
push 0x41fd00
push 0x41ecf0
push str.Service_location:__s_r_n_r_nInstallation_location:__s_r_n_r_n
movsw word es:[edi], word [esi]
push eax
movsb byte es:[edi], byte [esi]
call fcn.004010e0
lea edx, [esp + 0x828]
add esp, 0x10
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x405155
lea edi, [esp + 0x18]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x405163
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x18]
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x405180
mov ecx, 0x15
mov esi, str.Please_contact_G._Michaels_Consulting_Ltd._for_assistance_to_correct_this_situation.
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x18]
lea edx, [ecx + 1]
movsb byte es:[edi], byte [esi]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4051a0
sub ecx, edx
lea edx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x10]
call fcn.004015c0
add esp, 4
push 0x400
lea eax, [esp + 0x41c]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov eax, dword [0x421530]
sub eax, 0
je 0x4051ef
sub eax, 1
je 0x4051e8
sub eax, 1
jne 0x405202
push str.DBDOC_Install.log
jmp 0x4051f4
push str.CIUMon_Install.log
jmp 0x4051f4
push str.CrypKey_Install.log
lea eax, [esp + 0x41c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea eax, [esp + 0x418]
push 0x41945c
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
mov edi, dword [esp + 0x14]
mov esi, eax
add esp, 8
test esi, esi
je 0x40523e
push esi
push edi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fputs]
push esi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fflush]
add esp, 0xc
push esi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 4
test edi, edi
je 0x40524c
push edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov ecx, dword [esp + 0xc1c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00412814
mov esp, ebp
pop ebp
ret