Function at 0x41b560
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x454
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x41fdf0
mov esi, ecx
lea eax, [ebp - 0x18]
mov edx, str.HOMEUSERPROFILEOscode
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
lea ecx, [ebp - 0x460]
push 4
call fcn.00413a10
add esp, 4
cmp dword [ebp - 0x460], 0
je 0x41b5ce
mov eax, dword [ebp - 0x458]
movsd xmm0, qword [ebp - 0x460]
mov dword [ebp - 0x34], eax
movsd qword [ebp - 0x3c], xmm0
cmp dword [ebp - 0x3c], 0
jne 0x41b5f3
jmp 0x41b61d
mov dword [ebp - 0x10], 0
lea ecx, [ebp - 0x3c]
mov edx, 0x4320e8
push 0xb
mov dword [ebp - 0x30], esi
call fcn.00413a10
mov esi, dword [ebp - 0x30]
add esp, 4
cmp dword [ebp - 0x3c], 0
je 0x41b61d
movsd xmm0, qword [ebp - 0x3c]
mov eax, dword [ebp - 0x34]
movsd qword [ebp - 0x60], xmm0
mov dword [ebp - 0x58], eax
cmp dword [ebp - 0x60], 0
je 0x41b624
mov eax, dword [ebp - 0x58]
movsd xmm0, qword [ebp - 0x60]
mov dword [esi + 8], eax
movsd qword [esi], xmm0
jmp 0x41b91b
mov dword [ebp - 0x60], 0
call sub.KERNEL32.dll_GetCurrentProcess
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x54], 0
push ecx
push 0x20008
push eax
call sub.ADVAPI32.dll_OpenProcessToken
test eax, eax
je 0x41b8a7
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x44], eax
push 0x400
push 0
lea eax, [ebp - 0x460]
push eax
call fcn.00420e00
add esp, 0xc
mov edi, 0x200
mov ecx, 2
mov dword [ebp - 0x50], 2
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x2c], 0
cmp edi, 0x201
mov dword [ebp - 0x28], ecx
jae 0x41b6c9
jmp 0x41b760
cmp ebx, edi
mov edi, ebx
jb 0x41b801
cmp edi, 0x201
mov dword [ebp - 0x28], ecx
jb 0x41b760
mov ebx, edi
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
sub ebx, dword [ebp - 0x2c]
sub eax, edx
cmp eax, ebx
jae 0x41b720
add ebx, edx
jb 0x41b92f
mov eax, dword [ebp - 0x24]
add eax, eax
cmp ebx, eax
cmovb ebx, eax
mov esi, ebx
add esi, ebx
jb 0x41b92f
test esi, esi
js 0x41b92f
call sub.KERNEL32.dll_GetProcessHeap
cmp dword [ebp - 0x24], 0
je 0x41b72f
push esi
push dword [ebp - 0x28]
push 0
push eax
call sub.KERNEL32.dll_HeapReAlloc
test eax, eax
jne 0x41b740
jmp 0x41b949
mov dword [ebp - 0x20], edi
mov eax, edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x40], edi
mov esi, ecx
jmp 0x41b76d
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x41b949
mov esi, eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], edi
mov ecx, edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x28], eax
jmp 0x41b76d
mov dword [ebp - 0x40], 0x200
lea esi, [ebp - 0x460]
push 0
call sub.KERNEL32.dll_SetLastError
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], edi
push eax
push esi
push dword [ebp - 0x44]
call sub.USERENV.dll_GetUserProfileDirectoryW
test eax, eax
je 0x41b7a0
mov ebx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x28]
dec ebx
test ebx, ebx
jne 0x41b7d2
jmp 0x41b7c0
call sub.KERNEL32.dll_GetLastError
mov ecx, dword [ebp - 0x28]
cmp eax, 0x7a
jne 0x41b7c0
mov ebx, dword [ebp - 0x3c]
test ebx, ebx
jne 0x41b7d2
nop word cs:[eax + eax]
nop
call sub.KERNEL32.dll_GetLastError
mov ecx, dword [ebp - 0x28]
xor ebx, ebx
test eax, eax
jne 0x41b8c7
cmp ebx, edi
jne 0x41b6b0
call sub.KERNEL32.dll_GetLastError
mov ecx, dword [ebp - 0x28]
cmp eax, 0x7a
jne 0x41b6b0
add edi, edi
cmp edi, 0x201
mov dword [ebp - 0x28], ecx
jae 0x41b6c9
jmp 0x41b760
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
cmp edx, ebx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], ecx
jb 0x41b957
mov dword [ebp - 0x10], 3
lea ecx, [ebp - 0x3c]
mov edx, esi
push ebx
call fcn.00417a40
add esp, 4
mov ecx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x38]
xor edi, edi
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x24]
mov esi, ebx
mov dword [ebp - 0x20], eax
and esi, 0xffffff00
test ecx, ecx
je 0x41b85d
call sub.KERNEL32.dll_GetProcessHeap
push dword [ebp - 0x28]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
test edi, edi
je 0x41b8af
mov eax, dword [ebp - 0x30]
cmp bl, 2
mov dword [eax], 0
jb 0x41b913
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ecx + 4]
mov dword [ebp - 0x10], 2
push eax
call dword [ecx]
add esp, 4
mov edi, dword [ebp - 0x20]
mov eax, dword [edi + 4]
cmp dword [eax + 4], 0
je 0x41b905
mov esi, dword [edi]
cmp dword [eax + 8], 9
jae 0x41b8f5
call sub.KERNEL32.dll_GetProcessHeap
push esi
jmp 0x41b8fd
mov dword [esi], 0
jmp 0x41b91b
mov edi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x2c]
movzx eax, bl
or esi, eax
mov dword [edi], esi
mov dword [edi + 4], ecx
mov dword [edi + 8], edx
jmp 0x41b913
mov eax, dword [ebp - 0x20]
mov edi, 1
xor esi, esi
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x24]
mov ebx, eax
mov dword [ebp - 0x4c], eax
call sub.KERNEL32.dll_GetLastError
mov ecx, ebx
xor ebx, ebx
mov dword [ebp - 0x20], eax
test ecx, ecx
jne 0x41b84d
jmp 0x41b85d
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
push dword [ebp - 0x44]
call sub.KERNEL32.dll_CloseHandle
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
add esp, 0x454
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x10], 3
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], ecx
call fcn.00404cf0
ud2
mov ecx, esi
mov edx, 2
call fcn.00404cd0
ud2
mov ecx, ebx
call fcn.00406d70
ud2