Function at 0x454bf0
Capabilities:
Check if file exists
Delete file
Get file attributes
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x45cc9d
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov eax, dword [0x47b5b0]
xor eax, esp
push eax
lea eax, [esp + 0x24]
mov dword fs:[0], eax
call fcn.00414a0e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x454c31
push 0x80004005
call fcn.00402190
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], 0
call fcn.00414a0e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x454c63
push 0x80004005
call fcn.00402190
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebp, [eax + 0x10]
mov dword [esp + 0x18], ebp
push 0x46ae80
lea ecx, [esp + 0x20]
mov byte [esp + 0x30], 1
call fcn.00401860
push 0x46ae64
push eax
lea ecx, [esp + 0x28]
push ecx
mov byte [esp + 0x38], 2
call fcn.00403810
add esp, 0xc
mov byte [esp + 0x2c], 3
mov eax, dword [eax]
lea edx, [esp + 0x14]
push edx
mov ebx, str.NeedManual
mov edi, 0x46ae48
mov esi, eax
call fcn.004074d0
mov byte [esp + 0x30], 2
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454ce3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c], 1
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454d08
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x14]
push 0x46ae90
push esi
call fcn.00432a46
add esp, 8
test eax, eax
jne 0x455232
mov ecx, dword [0x47ffd0]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 8
jge 0x455232
lea edx, [esp + 0x14]
push edx
mov ebx, 0x46ae94
mov edi, 0x46aea4
mov esi, 0x46aeb4
call fcn.004074d0
mov esi, dword [esp + 0x18]
add esp, 4
push 0x2f
push esi
call fcn.00432ad9
add esp, 8
test eax, eax
jne 0x454d6c
or eax, 0xffffffff
jmp 0x454d70
sub eax, esi
sar eax, 1
inc eax
push eax
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x1c]
call fcn.004035f0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x30], 4
call fcn.00401940
mov byte [esp + 0x2c], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454db4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebp, dword [esp + 0x14]
push ebp
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x454e15
mov byte [esp + 0x2c], al
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454de7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add ebp, 0xfffffff0
mov dword [esp + 0x2c], 0xffffffff
lea ecx, [ebp + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x455277
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
jmp 0x455277
push 0x46af3c
lea ecx, [esp + 0x20]
call fcn.00401860
push 0x46af20
push eax
lea eax, [esp + 0x28]
push eax
mov byte [esp + 0x38], 5
call fcn.00403810
add esp, 0xc
mov byte [esp + 0x2c], 6
mov eax, dword [eax]
lea ecx, [esp + 0x18]
push ecx
mov ebx, str.ManualPatchName
mov edi, 0x46af04
mov esi, eax
call fcn.004074d0
mov byte [esp + 0x30], 5
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x454e80
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, 1
mov byte [esp + 0x2c], bl
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454ea9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
test ebp, ebp
setne al
test eax, eax
jne 0x454ebe
push 0x80004005
call fcn.00402190
mov edi, dword [esp + 0x18]
push ebp
push edi
call fcn.00432a46
add esp, 8
test eax, eax
je 0x454fcd
push 0x46af4c
call fcn.00406ac0
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
cmp eax, 0xffffffff
je 0x454f02
test al, 0x10
je 0x454f02
push ebp
call fcn.00405860
add esp, 4
jmp 0x454f05
push ebp
call esi
push str..torrent
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x3c]
push edx
call fcn.00403810
mov eax, dword [eax]
add esp, 0xc
push eax
call esi
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454f41
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str..dhtstate
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x3c]
push edx
call fcn.00403810
mov eax, dword [eax]
add esp, 0xc
push eax
call esi
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454f7d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str..resume
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x3c]
push edx
call fcn.00403810
mov eax, dword [eax]
add esp, 0xc
push eax
call esi
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x454fb9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x46afb0
call esi
mov byte [esp + 0x2c], 0
lea eax, [edi - 0x10]
jmp 0x454dce
push 0x46b004
push 0
push 0x46afe0
push 0x46aff4
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
cmp eax, ebx
jne 0x4550e6
lea ecx, [esp + 0x20]
call fcn.00402160
lea ecx, [esp + 0x1c]
call fcn.00402160
push ebp
lea esi, [esp + 0x24]
mov byte [esp + 0x30], 8
call fcn.00405da0
lea eax, [esp + 0x20]
add esp, 4
push eax
mov ebx, 0x46b034
mov edi, 0x46b048
mov esi, 0x46b058
call fcn.004074d0
add esp, 4
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x24]
call fcn.00402510
test eax, eax
jne 0x4550b8
mov esi, str.Patch_was_downloaded_completely___Start_VPatcher
call fcn.00405780
mov esi, dword [esp + 0x34]
push 0x46b0ec
push 0x3ee
mov ecx, esi
call fcn.00424678
push 0x46b128
push 0x3ed
mov ecx, esi
call fcn.00424678
push 1
mov ecx, ebp
call fcn.004069c0
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
add esp, 4
push ebp
call esi
push 0x46b170
call esi
lea ecx, [esp + 0x1c]
call fcn.00402140
lea ecx, [esp + 0x20]
call fcn.00402140
lea ecx, [esp + 0x18]
call fcn.00402140
lea ecx, [esp + 0x14]
call fcn.00402140
mov eax, 0x10
jmp 0x455279
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push ebp
call esi
push 0x46b1a0
call esi
push 0x46b1cc
call esi
lea ecx, [esp + 0x1c]
call fcn.00402140
lea ecx, [esp + 0x20]
call fcn.00402140
jmp 0x45521e
mov esi, str.Patch_was_not_downloaded_completely___Continue_download
call fcn.00405780
mov edi, dword [esp + 0x34]
lea edx, [edi + 0x1088]
push edx
lea eax, [esp + 0x24]
push 0x46b280
push eax
call fcn.004038f0
add esp, 0xc
push str._...
push eax
lea ecx, [esp + 0x3c]
push ecx
mov byte [esp + 0x38], 9
call fcn.00403810
add esp, 0xc
mov byte [esp + 0x2c], 0xa
mov eax, dword [eax]
push eax
push 0x3ee
mov ecx, edi
call fcn.00424678
lea ecx, [esp + 0x34]
call fcn.00402140
lea ecx, [esp + 0x20]
mov byte [esp + 0x2c], bl
call fcn.00402140
push 0x46b2b0
push 0x3ed
mov ecx, edi
call fcn.00424678
push 0x46b310
push 0x46b314
mov esi, 0x46b328
mov ebx, 0x46b338
call fcn.00406c50
push 0x46b368
call fcn.00406ac0
add esp, 0xc
push edi
call fcn.00453760
test eax, eax
je 0x45520e
push 1
mov ecx, str.vpatchdownloader.exe
call fcn.004069c0
add esp, 4
push 0x46b3e4
push 0
push str.Completed
push str.Setting
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
cmp eax, 1
jne 0x4551fe
push 0x46b414
push 0x3ee
mov ecx, edi
call fcn.00424678
push str.Vui_l
push 0x3ed
mov ecx, edi
call fcn.00424678
push 1
mov ecx, ebp
call fcn.004069c0
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
add esp, 4
push ebp
call esi
push 0x46b498
call esi
jmp 0x45509c
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push ebp
call esi
push 0x46b4c8
jmp 0x45521c
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push ebp
call esi
push str.._vpatchdownloader.dat
call esi
lea ecx, [esp + 0x18]
call fcn.00402140
lea ecx, [esp + 0x14]
call fcn.00402140
jmp 0x455277
lea eax, [ebp - 0x10]
mov byte [esp + 0x2c], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x455253
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov dword [esp + 0x2c], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x455277
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret 4