Function at 0xa13dd0
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0xa8aed1
push eax
mov eax, dword [0xaf4550]
mov dword fs:[0], esp
sub esp, 0xe40
push ebx
xor ebx, ebx
cmp eax, ebx
jne 0xa141da
push ebp
push esi
push str.shfolder.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
cmp esi, ebx
je 0xa13e49
call fcn.00a1f920
test al, al
je 0xa13e2c
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.SHGetFolderPathW
push esi
call ebp
mov dword [0xaf43f8], eax
jmp 0xa13e32
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp dword [0xaf43f8], ebx
jne 0xa13e4f
push str.SHGetFolderPathA
push esi
call ebp
mov dword [0xaf4424], eax
jmp 0xa13e4f
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov eax, dword [str.ProgramFilesDir]
push edi
cmp eax, ebx
mov dword [0xaf4550], 1
mov edi, 0xaa4ecc
je 0xa14085
xor esi, esi
or ebp, 0xffffffff
mov ecx, dword [esi + 0xaa4f34]
lea eax, [esp + 0x218]
push eax
push ebx
push ebx
push ecx
push ebx
call fcn.00a13310
add esp, 0x14
test eax, eax
jne 0xa1406e
lea ecx, [esp + 0x420]
call fcn.00a155c0
lea ecx, [esp + 0x630]
mov dword [esp + 0xe58], ebx
call fcn.00a155c0
lea ecx, [esp + 0xc40]
mov byte [esp + 0xe58], 1
call fcn.00a155c0
mov edx, dword [esi + 0xaa4ecc]
lea eax, [esp + 0x420]
push edx
push str.___s__
push eax
mov byte [esp + 0xe64], 2
call fcn.00a16060
mov eax, dword [esp + 0x434]
add esp, 0xc
lea ecx, [esp + 0x218]
push eax
push eax
push ecx
mov ecx, 0xaf4530
call fcn.00a13510
mov ecx, dword [esp + 0x428]
lea edx, [esp + 0x218]
lea eax, [esp + 0x218]
push edx
push eax
push ecx
mov ecx, 0xaf4400
call fcn.00a13510
lea edx, [esp + 0x840]
push 0x200
lea eax, [esp + 0x21c]
push edx
push eax
call fcn.00a228c0
test eax, eax
je 0xa13fc1
lea ecx, [esp + 0x218]
lea edx, [esp + 0x840]
push ecx
push edx
call fcn.00a886d0
add esp, 8
test eax, eax
je 0xa13fc1
mov eax, dword [esi + 0xaa4ecc]
lea ecx, [esp + 0x630]
push eax
push str.___s
push ecx
call fcn.00a16060
mov eax, dword [esp + 0x644]
add esp, 0xc
lea edx, [esp + 0x218]
lea ecx, [esp + 0x840]
push edx
push eax
push ecx
mov ecx, 0xaf4530
call fcn.00a13510
mov ecx, dword [esp + 0x638]
lea edx, [esp + 0x218]
lea eax, [esp + 0x840]
push edx
push eax
push ecx
mov ecx, 0xaf4400
call fcn.00a13510
cmp word [esp + 0x21a], 0x3a
jne 0xa14034
lea ecx, [esp + 0x420]
mov word [esp + 0x21a], 0x3f
call fcn.00a15bd0
mov edx, dword [esi + 0xaa4ecc]
lea eax, [esp + 0x420]
push edx
push str.____s__
push eax
call fcn.00a16060
mov ecx, dword [esp + 0x434]
add esp, 0xc
lea edx, [esp + 0x218]
push ebx
push ecx
push edx
mov ecx, 0xaf4530
call fcn.00a13510
mov ecx, dword [esp + 0x428]
lea eax, [esp + 0x218]
push ebx
push eax
push ecx
mov ecx, 0xaf4400
call fcn.00a13510
lea ecx, [esp + 0xc40]
mov byte [esp + 0xe58], 1
call fcn.00a155e0
lea ecx, [esp + 0x630]
mov byte [esp + 0xe58], bl
call fcn.00a155e0
lea ecx, [esp + 0x420]
mov dword [esp + 0xe58], ebp
call fcn.00a155e0
mov eax, dword [edi + 4]
add edi, 4
add esi, 4
cmp eax, ebx
jne 0xa13e71
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.kernel32.dll
mov word [esp + 0x14], bx
call fcn.00a23cd0
mov esi, eax
push str.GetLongPathNameW
push esi
call ebp
push str.GetLongPathNameA
push esi
mov dword [0xaf4420], eax
call ebp
cmp esi, ebx
mov dword [0xaf4528], eax
pop edi
je 0xa140dd
push str.GetSystemWindowsDirectoryW
push esi
call ebp
cmp eax, ebx
je 0xa140d6
lea edx, [esp + 0xc]
push 0x104
push edx
call eax
test eax, eax
jne 0xa140d6
mov word [esp + 0xc], bx
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp word [esp + 0xc], bx
pop esi
pop ebp
jne 0xa1410b
lea eax, [esp + 4]
push eax
push ebx
push ebx
push 0x24
push ebx
call fcn.00a13310
add esp, 0x14
test eax, eax
jne 0xa141da
cmp word [esp + 4], bx
je 0xa141da
push ebx
lea ecx, [esp + 8]
push str._SystemRoot_
push ecx
mov ecx, 0xaf4530
call fcn.00a13510
lea edx, [esp + 4]
push ebx
push edx
push str._SystemRoot_
mov ecx, 0xaf4400
call fcn.00a13510
lea eax, [esp + 0x834]
push 0x200
lea ecx, [esp + 8]
push eax
push ecx
call fcn.00a228c0
test eax, eax
je 0xa141a1
lea edx, [esp + 4]
lea eax, [esp + 0x834]
push edx
push eax
call fcn.00a886d0
add esp, 8
test eax, eax
je 0xa141a1
lea ecx, [esp + 4]
lea edx, [esp + 0x834]
push ecx
push str._SystemRoot
push edx
mov ecx, 0xaf4530
call fcn.00a13510
lea eax, [esp + 4]
lea ecx, [esp + 0x834]
push eax
push ecx
push str._SystemRoot
mov ecx, 0xaf4400
call fcn.00a13510
cmp word [esp + 6], 0x3a
jne 0xa141da
push ebx
lea edx, [esp + 8]
push str.__SystemRoot_
push edx
mov ecx, 0xaf4530
mov word [esp + 0x12], 0x3f
call fcn.00a13510
lea eax, [esp + 4]
push ebx
push eax
push str.__SystemRoot_
mov ecx, 0xaf4400
call fcn.00a13510
mov ecx, dword [esp + 0xe44]
pop ebx
mov dword fs:[0], ecx
add esp, 0xe4c
ret