Function at 0x40cde0
Capabilities:
Check if file exists
Get common file path
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4401c0
mov eax, dword fs:[0]
push eax
sub esp, 0x224
mov eax, dword [0x45407c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
cmp byte [esi + 8], 0
mov dword [ebp - 0x220], esi
je 0x40ce36
mov ecx, dword [esi + 4]
push str.Partner_is_installed_already
push str.INFO
call fcn.00404920
jmp 0x40d0b1
xor eax, eax
xor edi, edi
mov dword [ebp - 4], edi
mov ecx, dword [esi]
mov word [ebp - 0x218], ax
mov byte [ebp - 0x219], al
mov eax, dword [ecx + 0x590]
sub eax, dword [ecx + 0x58c]
sar eax, 2
push eax
call fcn.0042770a
add esp, 4
mov dword [ebp - 0x224], eax
lea ebx, [ebx]
mov eax, dword [esi]
mov ecx, dword [eax + 0x590]
sub ecx, dword [eax + 0x58c]
sar ecx, 2
cmp edi, ecx
jge 0x40cee4
mov edx, dword [eax + 0x58c]
mov ebx, dword [edx + edi*4]
cmp byte [ebx + 0x400], 0
je 0x40ced2
push 0x448584
lea eax, [ebp - 0x218]
push 0x100
push eax
mov byte [ebp - 0x219], 1
call fcn.0042800b
add esp, 0xc
lea ecx, [ebx + 0x200]
push ecx
lea edx, [ebp - 0x218]
push 0x100
push edx
call fcn.0042800b
add esp, 0xc
mov al, byte [ebx + 0x400]
mov ecx, dword [ebp - 0x224]
mov byte [edi + ecx], al
inc edi
jmp 0x40ce70
cmp byte [ebp - 0x219], 0
je 0x40d078
push 0x208
call fcn.0042770a
add esp, 4
mov ebx, eax
push 0x208
mov dword [ebp - 0x228], ebx
call fcn.0042770a
mov edx, dword [esi]
mov edi, eax
add esp, 4
add edx, 0x280
mov eax, ebx
call fcn.00405f20
mov edx, dword [esi + 4]
push edi
push 0x104
mov dword [ebp - 0x22c], edx
call dword [sym.imp.KERNEL32.DLL_GetTempPathW]
push ebx
push 0x104
push edi
call fcn.0042800b
mov ecx, dword [ebp - 0x22c]
mov eax, dword [esi]
add esp, 0xc
push ecx
push 0x40cd50
push 0
push edi
add eax, 0x280
push eax
push str.partnerUtilId
push 0
call fcn.004235c0
add esp, 0x1c
call fcn.004233e0
push edi
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40cf83
test al, 0x10
je 0x40cf8d
xor edx, edx
mov word [edi], dx
jmp 0x40d066
cmp word [edi], 0
je 0x40d066
mov eax, dword [esi]
sub eax, 0xffffff80
push eax
lea ecx, [ebp - 0x218]
push ecx
push edi
push str._s__s__s
push 0x104
push edi
call dword [sym.imp.SHLWAPI.dll_wnsprintfW]
mov ebx, dword [esi + 4]
push 0
push edi
xor ecx, ecx
call fcn.00405cd0
mov ebx, eax
mov eax, dword [esi]
mov eax, dword [eax + 0x59c]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
add esp, 0x20
cmp eax, ecx
je 0x40cfed
cmp dword [eax], ebx
je 0x40cfe2
add eax, 4
jmp 0x40cfd5
cmp eax, ecx
je 0x40cfed
mov ecx, dword [esi]
call fcn.0040c0c0
push ebx
push 0x446858
lea edx, [esi + 0x3e]
push 0x20
push edx
call dword [sym.imp.SHLWAPI.dll_wnsprintfW]
mov ecx, dword [esi]
mov eax, dword [ecx + 0x590]
sub eax, dword [ecx + 0x58c]
add esp, 0x10
sar eax, 2
xor edx, edx
mov dword [ebp - 0x220], edx
jmp 0x40d020
cmp edx, eax
jge 0x40d045
mov ecx, dword [ebp - 0x224]
cmp byte [edx + ecx], 0
je 0x40d042
mov ecx, eax
sub ecx, edx
dec ecx
mov ebx, 1
shl ebx, cl
or dword [ebp - 0x220], ebx
inc edx
jmp 0x40d020
mov edx, dword [ebp - 0x220]
push edx
push 0x446858
lea eax, [esi + 0x7e]
push 0x20
push eax
call dword [sym.imp.SHLWAPI.dll_wnsprintfW]
mov ebx, dword [ebp - 0x228]
add esp, 0x10
push ebx
call fcn.00427715
add esp, 4
push edi
call fcn.00427715
add esp, 4
mov ecx, dword [ebp - 0x224]
push ecx
call fcn.00427715
add esp, 4
jmp 0x40d0ad
mov byte [esi + 8], 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004276fb
mov esp, ebp
pop ebp
ret