Function at 0x45cec1
Capabilities:
Check if file exists
Delete directory
Delete file
Download url
Receive data

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c8
mov eax, dword [0x56afe8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x108], eax
lea eax, [ebp - 0x100]
push eax
mov dword [ebp - 0xf8], ebx
mov dword [ebp - 0x104], edi
call fcn.0045d655
mov esi, dword [ebp - 0x100]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x45cf17
push esi
push eax
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x45d132
push 0x2f
push dword [ebx]
call sub.msvcrt.dll_wcsrchr
pop ecx
pop ecx
mov ecx, eax
test ecx, ecx
je 0x45d132
mov eax, dword [ebx]
sub ecx, eax
sar ecx, 1
cmp ecx, 0xffffffff
je 0x45d132
mov eax, dword [eax - 0xc]
sub eax, ecx
mov ecx, ebx
dec eax
push eax
lea eax, [ebp - 0x10c]
push eax
call fcn.0040448b
lea eax, [ebp - 0x10c]
push eax
push 0x528004
lea eax, [ebp - 0x100]
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.00413428
add esp, 0xc
push eax
lea eax, [ebp - 0x110]
push eax
call fcn.004133f1
add esp, 0xc
mov ecx, edi
push eax
call fcn.00402bd6
mov ecx, dword [ebp - 0x110]
lea ecx, [ecx - 0x10]
call fcn.004042e9
mov ecx, dword [ebp - 0xfc]
lea ecx, [ecx - 0x10]
call fcn.004042e9
push dword [edi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
xor ebx, ebx
inc ebx
test eax, eax
je 0x45d06f
push dword [edi]
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
mov ecx, dword [edi]
test eax, eax
je 0x45cfe2
push ecx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
jmp 0x45d06f
push ebx
push 0x40
push 0x20
push ecx
lea ecx, [ebp - 0x1c8]
call fcn.0045c1a8
push eax
lea ecx, [ebp - 0x88]
call fcn.00404f0d
lea ecx, [ebp - 0x1c8]
call fcn.0045cc4c
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x88]
call fcn.004069cb
cmp dword [eax + 0x14], 0x10
jb 0x45d021
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0xfc]
call fcn.0043947e
lea ecx, [ebp - 0x1c]
call fcn.004061d7
mov edi, dword [ebp - 0xfc]
mov ecx, dword [ebp - 0x108]
push edi
call fcn.0043ac41
test eax, eax
jne 0x45d053
lea ecx, [edi - 0x10]
jmp 0x45d11d
mov eax, dword [ebp - 0x104]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [edi - 0x10]
call fcn.004042e9
mov edi, dword [ebp - 0x104]
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
mov eax, dword [ebp - 0xf8]
push dword [eax]
call dword [sym.imp.WININET.dll_DeleteUrlCacheEntryW]
mov eax, dword [ebp - 0xf8]
xor ecx, ecx
push ecx
push ecx
push dword [edi]
push dword [eax]
push ecx
call sub.urlmon.dll_URLDownloadToFileW
call dword [sym.imp.ole32.dll_CoUninitialize]
push ebx
push 0x40
push 0x20
push dword [edi]
lea ecx, [ebp - 0x1c8]
call fcn.0045c1a8
push eax
lea ecx, [ebp - 0xf4]
call fcn.00404f0d
lea ecx, [ebp - 0x1c8]
call fcn.0045cc4c
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xf4]
call fcn.004069cb
cmp dword [eax + 0x14], 0x10
jb 0x45d0df
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0xf8]
call fcn.0043947e
lea ecx, [ebp - 0x1c]
call fcn.004061d7
mov eax, dword [ebp - 0x108]
lea ecx, [ebp - 0xf8]
push dword [eax]
call fcn.0043ac41
test eax, eax
je 0x45d114
push dword [edi]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor bl, bl
mov ecx, dword [ebp - 0xf8]
lea ecx, [ecx - 0x10]
call fcn.004042e9
mov ecx, dword [ebp - 0x10c]
lea ecx, [ecx - 0x10]
call fcn.004042e9
jmp 0x45d134
xor bl, bl
lea ecx, [esi - 0x10]
call fcn.004042e9
mov ecx, dword [ebp - 4]
mov al, bl
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00522d04
leave
ret 0xc