Function at 0x402510
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x432db6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x340
mov eax, dword [0x4432d4]
push ebx
push esi
mov esi, ecx
push edi
mov dword [esp + 0x344], eax
xor ebx, ebx
xor eax, eax
mov byte [esp + 0x28], bl
mov ecx, 0x41
lea edi, [esp + 0x29]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0xc]
call fcn.00402e70
push str.SOFTWAREHncSharedInstall_InformationPDF80
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [esp + 0x14]
mov dword [esp + 0x35c], ebx
call fcn.00402f50
lea eax, [esp + 0x28]
push eax
push str.Path
lea ecx, [esp + 0x14]
call fcn.00402f10
test eax, eax
jne 0x40259f
lea ecx, [esp + 0x28]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edi, [esp + 0x28]
dec edi
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x4025a4
mov dx, word [0x434b10]
mov word [edi], dx
lea edi, [esp + 0x28]
dec edi
jmp 0x4025c0
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x4025c0
mov eax, dword [0x434d84]
mov ecx, dword [0x434d88]
mov edx, dword [0x434d8c]
mov dword [edi], eax
mov eax, dword [0x434d90]
mov dword [edi + 4], ecx
mov dword [edi + 8], edx
lea ecx, [esi + 8]
push str.Register_set_Source_Path__
mov dword [edi + 0xc], eax
mov dword [esp + 0x18], ecx
call fcn.004012b0
mov eax, dword [esi + 4]
cmp eax, 4
je 0x402622
cmp eax, 0x10
jne 0x40275c
lea edi, [esp + 0x28]
dec edi
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x402610
mov ecx, dword [0x434d64]
mov dword [edi], ecx
jmp 0x402637
lea edi, [esp + 0x28]
dec edi
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x402627
mov edx, dword [0x434d60]
mov dword [edi], edx
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
xor eax, eax
mov byte [esp + 0x238], bl
mov ecx, 0x41
lea edi, [esp + 0x239]
rep stosd dword es:[edi], eax
mov byte [esp + 0x130], bl
mov ecx, 0x41
lea edi, [esp + 0x131]
push str.SOFTWAREHncSharedInstall_InformationPDF80
rep stosd dword es:[edi], eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [esp + 0x18]
call fcn.00402ea0
movzx ecx, word [esp + 0x22]
movzx edx, word [esp + 0x20]
movzx eax, word [esp + 0x1e]
push ecx
movzx ecx, word [esp + 0x1e]
push edx
movzx edx, word [esp + 0x20]
push eax
push ecx
push edx
lea eax, [esp + 0x24c]
push str._d._d._d__d:_d_n
push eax
mov byte [esp + 0x370], 1
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x1c
lea ecx, [esp + 0x130]
push ecx
push str.LastTime
lea ecx, [esp + 0x18]
call fcn.00402f10
lea eax, [esp + 0x130]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4026e0
sub eax, edx
push eax
lea edx, [esp + 0x23c]
push edx
lea eax, [esp + 0x138]
push eax
call fcn.0040dcab
add esp, 0xc
test eax, eax
je 0x402729
lea ecx, [esp + 0x238]
push ecx
push str.LastTime
lea ecx, [esp + 0x18]
call fcn.00402ed0
lea edx, [esp + 0x28]
push edx
call fcn.00402fe0
add esp, 4
push str.Registry_RunOnce
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, dword [esp + 0x18]
push eax
mov ecx, esi
call fcn.004012d0
lea eax, [esp + 0x28]
push eax
mov ecx, esi
call fcn.004012b0
lea ecx, [esp + 0x10]
mov byte [esp + 0x354], bl
call fcn.00402e80
lea ecx, [esp + 0xc]
mov dword [esp + 0x354], 0xffffffff
call fcn.00402e80
mov ecx, dword [esp + 0x34c]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x344]
call fcn.0040da9f
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret