Function at 0x417260
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 4], 0
test ebx, ebx
je 0x4174fa
cmp edi, 0x104
jb 0x4174fa
push esi
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x4172a6
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x417294
sub eax, edx
sar eax, 1
mov dword [ebp - 4], eax
push ebx
push 0
push 0
push 0x8023
push 0
call dword [0x465344]
test eax, eax
je 0x41731a
cmp dword [ebp - 4], 0
mov eax, esi
jg 0x4172c9
mov eax, 0x470c3c
push edi
push ebx
push 0
push eax
call fcn.00413ed0
add esp, 0x10
test eax, eax
jne 0x4172f2
push str.VNLGetConfigurationFilePath:_could_not_obtain_system_path
push 1
call fcn.004343f0
add esp, 8
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push str.VNLGetConfigurationFilePath:_using_system_directory
push 0x10
call fcn.004343f0
push ebx
push str.VNLGetConfigurationFilePath:_path:__S
push 0x20
call fcn.004343f0
add esp, 0x14
pop esi
pop edi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, ebx
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x417320
mov edi, dword [ebp + 0x14]
sub eax, edx
sar eax, 1
mov esi, eax
test edi, edi
je 0x417376
push 0
push ebx
call dword [0x465274]
test eax, eax
jne 0x41736c
call dword [0x4651b0]
push ebx
cmp eax, 0xb7
je 0x417365
push eax
push str.VNLGetConfigurationFilePath:_cant_create_all_users_directory:_0x_08x__S
push 1
call fcn.004343f0
add esp, 0x10
jmp 0x417386
push str.VNLGetConfigurationFilePath:_all_users_directory_already_exists:__S
jmp 0x41737c
push ebx
push str.VNLGetConfigurationFilePath:_created_all_users_directory:__S
push 2
jmp 0x41737e
push ebx
push str.VNLGetConfigurationFilePath:_not_creating_all_users_directory:__S
push 0x20
call fcn.004343f0
add esp, 0xc
cmp word [ebx + esi*2 - 2], 0x5c
je 0x4173bf
lea eax, [esi + 2]
cmp eax, dword [ebp + 0xc]
jbe 0x4173ae
push str.VNLGetConfigurationFilePath:_insufficient_length_to_append_slash
push 1
call fcn.004343f0
add esp, 8
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
xor edx, edx
mov ecx, 0x5c
mov word [ebx + esi*2], cx
mov word [ebx + esi*2 + 2], dx
inc esi
lea eax, [esi + 8]
cmp eax, dword [ebp + 0xc]
jbe 0x4173df
push str.VNLGetConfigurationFilePath:_insufficient_length_for_name
push 1
call fcn.004343f0
add esp, 8
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, ebx
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x4173e4
mov ecx, dword [0x46d554]
mov dword [eax], ecx
mov edx, dword [0x46d558]
mov dword [eax + 4], edx
mov ecx, dword [0x46d55c]
mov dword [eax + 8], ecx
mov dx, word [0x46d560]
mov word [eax + 0xc], dx
test edi, edi
je 0x417455
push 0
push ebx
call dword [0x465274]
test eax, eax
jne 0x41744d
call dword [0x4651b0]
push ebx
cmp eax, 0xb7
je 0x417446
push eax
push str.VNLGetConfigurationFilePath:_cant_create_directory:_0x_08x__S
push 1
call fcn.004343f0
add esp, 0x10
jmp 0x417465
push str.VNLGetConfigurationFilePath:_directory_already_exists:__S
jmp 0x41745b
push ebx
push str.VNLGetConfigurationFilePath:_created_directory:__S
jmp 0x41745b
push ebx
push str.VNLGetConfigurationFilePath:_not_creating_directory:__S
push 0x20
call fcn.004343f0
add esp, 0xc
mov edi, ebx
add edi, 0xfffffffe
lea ebx, [ebx]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x417470
mov eax, dword [0x470914]
mov dword [edi], eax
mov eax, dword [ebp - 4]
test eax, eax
jle 0x4174de
lea ecx, [esi + eax + 8]
cmp ecx, dword [ebp + 0xc]
jbe 0x4174ab
push str.VNLGetConfigurationFilePath:_insufficient_length_to_append_filename
push 1
call fcn.004343f0
add esp, 8
pop esi
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
mov edx, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4174b0
mov edi, ebx
sub eax, edx
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x4174c2
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ebx
push str.VNLGetConfigurationFilePath:_path:__S
push 0x20
call fcn.004343f0
add esp, 0xc
pop esi
pop edi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
push edi
push ebx
push str.VNLGetConfigurationFilePath:_invalid_parameters:_0x_08x_0x_08x
push 1
call fcn.004343f0
add esp, 0x10
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret