Function at 0x45c250
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4943d8
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x4c9070]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, edx
mov ebx, ecx
test ebx, ebx
je 0x45c3b4
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45c287
sub ecx, edx
mov edx, ebx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
call fcn.00405b40
mov esi, dword [0x4d66f8]
add esp, 4
mov dword [ebp - 0x10], eax
mov ecx, esi
mov edx, dword [esi + 4]
cmp byte [edx + 0xd], 0
jne 0x45c2d5
cmp dword [edx + 0x10], eax
jae 0x45c2c2
mov edx, dword [edx + 8]
jmp 0x45c2c6
mov ecx, edx
mov edx, dword [edx]
cmp byte [edx + 0xd], 0
je 0x45c2b8
cmp ecx, esi
je 0x45c2d5
cmp eax, dword [ecx + 0x10]
jae 0x45c2d7
mov ecx, esi
cmp ecx, esi
je 0x45c2eb
add ecx, 0x14
push ecx
mov ecx, edi
call fcn.0040a720
jmp 0x45c44e
xor esi, esi
nop dword [eax]
mov ecx, dword [esi*8 + 0x4ca914]
mov eax, ebx
nop dword [eax]
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x45c326
test dx, dx
je 0x45c322
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x45c326
add ecx, 4
add eax, 4
test dx, dx
jne 0x45c300
xor eax, eax
jmp 0x45c32b
sbb eax, eax
or eax, 1
test eax, eax
je 0x45c349
inc esi
cmp esi, 0x1b
jb 0x45c2f0
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test esi, esi
js 0x45c3b4
mov eax, dword [edi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x105
or ecx, eax
jge 0x45c36f
push 0x105
mov ecx, edi
call fcn.00404530
push 0
push dword [esi*8 + 0x4ca910]
push dword [edi]
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
mov eax, dword [edi]
jne 0x45c3d2
test eax, eax
jne 0x45c390
xor ecx, ecx
jmp 0x45c3a2
push dword [eax - 8]
push eax
call fcn.00474f18
mov ecx, eax
add esp, 8
test ecx, ecx
js 0x45c3c8
mov eax, dword [edi]
cmp ecx, dword [eax - 8]
jg 0x45c3c8
mov dword [eax - 0xc], ecx
xor edx, edx
mov eax, dword [edi]
mov word [eax + ecx*2], dx
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.00404ad0
test eax, eax
jne 0x45c3da
xor ecx, ecx
jmp 0x45c3ec
push dword [eax - 8]
push eax
call fcn.00474f18
mov ecx, eax
add esp, 8
test ecx, ecx
js 0x45c3c8
mov eax, dword [edi]
cmp ecx, dword [eax - 8]
jg 0x45c3c8
mov dword [eax - 0xc], ecx
xor edx, edx
mov eax, dword [edi]
mov word [eax + ecx*2], dx
mov ecx, dword [edi]
mov eax, dword [ebp - 0x10]
sub ecx, 0x10
mov dword [ebp - 0x1c], eax
call fcn.004091c0
add eax, 0x10
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 0
lea eax, [ebp - 0x1c]
push dword [ebp - 0x10]
push eax
push ecx
lea eax, [ebp - 0x14]
push eax
call fcn.0045d090
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov esi, dword [ebp - 0x18]
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45c44e
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret