Function at 0x412d2c
Capabilities:
Copy file
Delete file
Get file size
Move file
Write file on windows

Disassembly:
push 0x2c
mov eax, 0x4571d5
call fcn.0043cc79
mov edi, ecx
mov dword [ebp - 0x20], edi
mov ebx, dword [ebp + 0x10]
lea esi, [edi + 0xc]
mov ecx, dword [esi]
mov dword [ebp - 0x14], esi
test ecx, ecx
je 0x412d57
push dword [edi + 0x18]
mov eax, dword [ecx]
push ebx
push 1
call dword [eax + 0xc]
mov ecx, esi
call fcn.0041536a
test al, al
je 0x412d6c
mov eax, 0xe0000008
jmp 0x4131e4
test ebx, ebx
je 0x412d8b
cmp ebx, dword [ebp + 0x14]
jne 0x412d8b
mov ecx, dword [esi]
test ecx, ecx
je 0x412d84
mov eax, dword [ecx]
push 0
push 1
call dword [eax + 0x14]
xor eax, eax
jmp 0x4131e4
call fcn.00411415
mov al, byte [eax + 0x1c]
test al, al
je 0x412e06
call fcn.00411415
test byte [eax + 0x20], 8
je 0x412e06
lea ecx, [ebp - 0x18]
call fcn.0041108a
mov edi, eax
and dword [ebp - 4], 0
lea ecx, [ebp - 0x1c]
call fcn.0041108a
mov esi, eax
push str.Before_FileSystemUtil::CreateSubFolders__
mov ecx, edi
mov byte [ebp - 4], 1
call fcn.00401881
push 0x467a40
mov ecx, esi
call fcn.00401881
push ecx
push edi
push ecx
push esi
call fcn.00411415
mov ecx, eax
call fcn.004114cb
mov ecx, dword [ebp - 0x1c]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00401b8a
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 0x20]
push ecx
lea ecx, [edi + 0x1c]
call fcn.0040595f
mov ebx, eax
pop ecx
test ebx, ebx
je 0x412ea4
call fcn.00411415
mov cl, byte [eax + 0x1c]
test cl, cl
je 0x412e92
call fcn.00411415
test byte [eax + 0x20], 8
je 0x412e92
lea ecx, [ebp + 0x14]
call fcn.0041108a
mov edi, eax
lea ecx, [ebp + 0x10]
mov dword [ebp - 4], 2
call fcn.0041108a
mov esi, eax
push str.CreateSubFolders___failed
mov ecx, edi
mov byte [ebp - 4], 3
call fcn.00401881
push 0x467a40
mov ecx, esi
call fcn.00401881
push ecx
push edi
push ecx
push esi
call fcn.00411415
mov ecx, eax
call fcn.004114cb
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov ecx, dword [ebp - 0x14]
push 0
push ebx
push 0
call fcn.0041528e
jmp 0x4131e2
mov ebx, dword [ebp + 0x14]
mov ecx, edi
push ebx
call fcn.00413478
mov dword [ebp + 0x14], eax
mov dword [ebp - 0x38], 0x467a50
mov dword [ebp - 0x34], eax
mov dword [ebp - 4], 4
cmp eax, 0xffffffff
jne 0x412f6e
call fcn.00411415
mov al, byte [eax + 0x1c]
test al, al
je 0x412f3d
call fcn.00411415
test byte [eax + 0x20], 8
je 0x412f3d
lea ecx, [ebp + 0x14]
call fcn.0041108a
mov edi, eax
lea ecx, [ebp + 0x10]
call fcn.0041108a
mov esi, eax
push str.Creation_of_file_to_download_on_disk_failed
mov ecx, edi
mov byte [ebp - 4], 6
call fcn.00401881
push 0x467a40
mov ecx, esi
call fcn.00401881
push ecx
push edi
push ecx
push esi
call fcn.00411415
mov ecx, eax
call fcn.004114cb
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov byte [ebp - 4], 4
mov ecx, dword [ebp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov esi, dword [ebp - 0x14]
mov ecx, esi
call fcn.0041536a
test al, al
je 0x412f55
mov ebx, 0xe0000008
jmp 0x4131d3
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
mov ebx, eax
mov ecx, esi
push ebx
push 0
call fcn.0041528e
jmp 0x4131d3
mov ecx, dword [esi]
test ebx, ebx
je 0x412f7b
test ecx, ecx
je 0x412f86
push ebx
jmp 0x412f81
test ecx, ecx
je 0x412f86
push 0
mov eax, dword [ecx]
call dword [eax + 0x18]
call fcn.00411415
mov al, byte [eax + 0x1c]
test al, al
je 0x412ff9
call fcn.00411415
test byte [eax + 0x20], 8
je 0x412ff9
lea ecx, [ebp - 0x18]
call fcn.0041108a
mov edi, eax
lea ecx, [ebp - 0x1c]
call fcn.0041108a
mov esi, eax
push str.Before_reading_in_loop
mov ecx, edi
mov byte [ebp - 4], 8
call fcn.00401881
push 0x467a40
mov ecx, esi
call fcn.00401881
push ecx
push edi
push ecx
push esi
call fcn.00411415
mov ecx, eax
call fcn.004114cb
mov ecx, dword [ebp - 0x1c]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov ecx, dword [ebp - 0x18]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 0x20]
and dword [ebp - 0x18], 0
mov eax, 0xc800
mov byte [ebp - 4], 9
push eax
lea ecx, [ebp - 0x18]
call fcn.0040411b
lea eax, [ebp - 0x24]
mov ecx, edi
push eax
push dword [edi + 4]
call fcn.00413ae2
and dword [ebp - 0x1c], 0
mov ebx, eax
test ebx, ebx
jne 0x41316f
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x4130ab
mov ecx, 0xc800
cmp eax, ecx
cmova eax, ecx
lea ecx, [ebp - 0x1c]
push ecx
push eax
push dword [ebp - 0x18]
mov ecx, edi
push dword [edi + 4]
call fcn.00413a39
mov ebx, eax
test ebx, ebx
jne 0x41316f
cmp dword [ebp - 0x1c], eax
je 0x4130ab
push eax
lea eax, [ebp - 0x28]
push eax
push dword [ebp - 0x1c]
push dword [ebp - 0x18]
push dword [ebp + 0x14]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4131ec
mov ecx, dword [esi]
test ecx, ecx
je 0x413087
mov eax, dword [ecx]
push dword [ebp - 0x28]
call dword [eax + 0x18]
lea eax, [edi + 0x38]
mov ecx, esi
push eax
call fcn.00415406
mov ecx, esi
call fcn.0041536a
test al, al
je 0x41300f
mov ebx, 0xe0000008
jmp 0x4131ca
call fcn.00411415
mov al, byte [eax + 0x1c]
test al, al
je 0x41311f
call fcn.00411415
test byte [eax + 0x20], 8
je 0x41311f
lea ecx, [ebp - 0x30]
call fcn.0041108a
mov edi, eax
lea ecx, [ebp - 0x2c]
call fcn.0041108a
mov esi, eax
push str.AsyncDownloadThread_read_0_bytes.
mov ecx, edi
mov byte [ebp - 4], 0xb
call fcn.00401881
push 0x467a40
mov ecx, esi
call fcn.00401881
push ecx
push edi
push ecx
push esi
call fcn.00411415
mov ecx, eax
call fcn.004114cb
mov ecx, dword [ebp - 0x2c]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov byte [ebp - 4], 9
mov ecx, dword [ebp - 0x30]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x14]
test esi, esi
je 0x41328a
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, esi
jae 0x41328a
cmp byte [edi + 0x88], 0
je 0x413283
lea eax, [ebp + 0x10]
mov ecx, edi
push eax
push dword [ebp + 0xc]
push ebx
push dword [ebp + 8]
call fcn.0041398f
mov ebx, eax
test ebx, ebx
jne 0x413275
mov esi, dword [ebp - 0x14]
jmp 0x41300f
cmp ebx, 0x2ee2
je 0x41318f
cmp ebx, 0x2efe
je 0x41318f
cmp ebx, 0x2eff
je 0x41318f
cmp ebx, 0x2f83
jne 0x4131b6
cmp byte [edi + 0x88], 0
je 0x4131b6
lea eax, [ebp + 0x10]
mov ecx, edi
push eax
push dword [ebp + 0xc]
push dword [ebp + 0x14]
push dword [ebp + 8]
call fcn.0041398f
mov ebx, eax
test ebx, ebx
je 0x41300f
cmp ebx, 0xe0000008
je 0x4131ca
mov ecx, esi
push 0
push ebx
push 0
call fcn.0041528e
push dword [ebp - 0x18]
call fcn.0043c1dd
pop ecx
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x38], 0x467a50
call fcn.00404635
mov eax, ebx
call fcn.0043cc42
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.00411415
mov al, byte [eax + 0x1c]
test al, al
je 0x41326d
call fcn.00411415
test byte [eax + 0x20], 8
je 0x41326d
lea ecx, [ebp + 0x14]
call fcn.0041108a
mov esi, eax
lea ecx, [ebp + 0x10]
call fcn.0041108a
mov edi, eax
push str.Failed_to_saved_in_file_the_bytes_read
mov ecx, esi
mov byte [ebp - 4], 0xd
call fcn.00401881
push 0x467a40
mov ecx, edi
call fcn.00401881
push ecx
push ebx
mov ecx, esi
call fcn.004110b7
push eax
push ecx
push edi
call fcn.00411415
mov ecx, eax
call fcn.004114cb
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov byte [ebp - 4], 9
mov ecx, dword [ebp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.00401b8a
mov ecx, dword [ebp - 0x14]
jmp 0x4131c0
cmp ebx, 0xe0000008
je 0x4131ca
jmp 0x41326d
mov ebx, 0xe000000f
jmp 0x41326d
test ebx, ebx
je 0x413299
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
and dword [ebp - 0x34], 0
push dword [edi + 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
call esi
push dword [edi + 0x18]
push dword [edi + 0x1c]
call dword [sym.imp.KERNEL32.dll_MoveFileW]
test eax, eax
jne 0x4132d4
push eax
push dword [edi + 0x18]
push dword [edi + 0x1c]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x4132cf
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
jmp 0x41326d
push dword [edi + 0x1c]
call esi
mov esi, dword [ebp - 0x14]
mov ecx, dword [esi]
test ecx, ecx
je 0x4132e6
mov eax, dword [ecx]
push 0
push 1
call dword [eax + 0x14]
xor ebx, ebx
jmp 0x4131ca