Function at 0x1015e4d0
Capabilities:
Get common file path
Query environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x214
mov eax, dword [0x10250150]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push 0x105
lea eax, [ebp - 0x10c]
push 0
push eax
call fcn.102134e7
push 0x105
lea eax, [ebp - 0x214]
push 0
push eax
call fcn.102134e7
add esp, 0x18
lea eax, [ebp - 0x10c]
push 0x105
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
jne 0x1015e5ce
lea edx, [ebp - 0x214]
mov esi, str._SYSTEMROOT__system32
mov eax, edx
mov ecx, 0x105
sub esi, eax
jmp 0x1015e540
lea eax, [ecx + 0x7ffffef9]
test eax, eax
je 0x1015e57e
mov al, byte [esi + edx]
test al, al
je 0x1015e55b
mov byte [edx], al
inc edx
sub ecx, 1
jne 0x1015e540
jmp 0x1015e55f
test ecx, ecx
jne 0x1015e57e
neg ecx
mov byte [edx - 1], 0
sbb ecx, ecx
and ecx, 0x7ff8ff86
lea eax, [ecx - 0x7ff8ff86]
push eax
push str.LoadUpdateProviderFunctions:_StringCchCopyA_failed:_0x_x_n
jmp 0x1015e6d5
mov eax, ecx
mov byte [edx], 0
neg eax
sbb eax, eax
and eax, 0x7ff8ff86
add eax, 0x8007007a
test ecx, ecx
jne 0x1015e5a0
push eax
push str.LoadUpdateProviderFunctions:_StringCchCopyA_failed:_0x_x_n
jmp 0x1015e6d5
push 0x105
lea eax, [ebp - 0x214]
push eax
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsA]
test eax, eax
jne 0x1015e5ce
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.LoadUpdateProviderFunctions:_Unable_to_expand_environment_string:__d_n
jmp 0x1015e6d5
mov ecx, 0x105
lea eax, [ebp - 0x10c]
lea esp, [esp]
cmp byte [eax], 0
je 0x1015e5eb
inc eax
sub ecx, 1
jne 0x1015e5e0
mov eax, ecx
neg eax
sbb eax, eax
and eax, 0x7ff8ffa9
add eax, 0x80070057
test ecx, ecx
je 0x1015e6cf
mov edx, 0x105
mov eax, edx
sub eax, ecx
neg ecx
push ebx
sbb ecx, ecx
and ecx, eax
lea eax, [ebp - 0x10c]
lea eax, [eax + ecx]
sub edx, ecx
je 0x1015e64a
mov esi, str.ws2_32.dll
mov ecx, SysReAllocString
sub esi, eax
lea esp, [esp]
test ecx, ecx
je 0x1015e64b
mov bl, byte [esi + eax]
test bl, bl
je 0x1015e646
mov byte [eax], bl
dec ecx
inc eax
sub edx, 1
jne 0x1015e630
jmp 0x1015e64a
test edx, edx
jne 0x1015e64b
dec eax
mov byte [eax], 0
mov eax, edx
neg eax
pop ebx
sbb eax, eax
and eax, 0x7ff8ff86
add eax, 0x8007007a
test edx, edx
je 0x1015e6cf
lea eax, [ebp - 0x10c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
jne 0x1015e6ad
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x10c]
push eax
push str.LoadUpdateProviderFunctions:_Unable_to_load__s:__d_n
push 2
call fcn.10200f30
add esp, 4
push eax
call fcn.10015c70
add esp, 0x10
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10212f74
mov esp, ebp
pop ebp
ret
push str.WSCUpdateProvider
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x10259930], eax
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10212f74
mov esp, ebp
pop ebp
ret
push eax
push str.LoadUpdateProviderFunctions:_StringCchCatA_failed:_0x_x_n
push 2
call fcn.10200f30
add esp, 4
push eax
call fcn.10015c70
mov ecx, dword [ebp - 4]
add esp, 0xc
xor ecx, ebp
xor eax, eax
pop esi
call fcn.10212f74
mov esp, ebp
pop ebp
ret