Function at 0x1005ce90
Capabilities:
Check if file exists
Copy file
Delete file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101c86ac
mov eax, dword fs:[0]
push eax
sub esp, 0x530
mov eax, dword [0x1022b584]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x498], ecx
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x494], ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x4a4], eax
mov dword [ebp - 0x4a0], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x48c], 0
push 5
mov dword [ebp - 0x488], ecx
mov ecx, eax
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
push str.start
mov dword [ebp - 4], 0
mov dword [ebp - 0x46c], eax
mov byte [eax], 0
call fcn.1000cf00
mov dword [ebp - 4], 0
mov dword [ebp - 0x48c], 1
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1005e014
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x474], esi
mov ecx, dword [0x1022f164]
mov dword [ebp - 4], 1
test ecx, ecx
jne 0x1005cfc5
push 0x10225274
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x1022f164], 0
jne 0x1005cfa5
push 0x1c
call fcn.10179990
mov edi, eax
add esp, 4
mov dword [ebp - 0x480], edi
test edi, edi
je 0x1005cf9d
lea ecx, [edi + 4]
mov dword [edi], vtable._BaseModule::CCriticalSection.0
push ecx
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
jmp 0x1005cf9f
xor edi, edi
mov dword [0x1022f164], edi
push 0x10225274
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [0x1022f164]
test ecx, ecx
jne 0x1005cfc5
mov dword [ebp - 0x464], ecx
jmp 0x1005d04b
mov eax, dword [0x1022f160]
mov dword [ebp - 0x464], eax
test eax, eax
jne 0x1005d04b
mov eax, dword [ecx]
push ecx
call dword [eax]
cmp dword [0x1022f160], 0
jne 0x1005d035
push 0x1c
call fcn.10179990
mov ecx, eax
add esp, 4
mov dword [ebp - 0x480], ecx
test ecx, ecx
je 0x1005d027
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
movq qword [ecx + 0x10], xmm0
mov dword [ecx + 0x18], 0
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
jmp 0x1005d029
xor ecx, ecx
xchg dword [ebp - 0x470], eax
mov dword [0x1022f160], ecx
mov eax, dword [0x1022f164]
push eax
mov ecx, dword [eax]
call dword [ecx + 4]
mov eax, dword [0x1022f160]
mov dword [ebp - 0x464], eax
push 0x208
lea eax, [ebp - 0x228]
push 0
push eax
call fcn.1018d4b0
add esp, 0xc
lea eax, [ebp - 0x228]
push 0x104
push eax
push 0x10000000
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov edi, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0x228]
push eax
call edi
lea eax, [ebp - 0x228]
push eax
call edi
lea ecx, [ebp - 0x465]
call fcn.1005be90
push eax
lea eax, [ebp - 0x228]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1005e01e
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x484], eax
lea eax, [ebp - 0x228]
mov byte [ebp - 4], 2
test eax, 0xffff0000
jne 0x1005d0ea
movzx eax, ax
lea ecx, [ebp - 0x484]
push eax
call fcn.1000f350
jmp 0x1005d115
lea ecx, [ebp - 0x228]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1005d0f3
sub ecx, edx
lea eax, [ebp - 0x228]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x484]
call fcn.1000f6e0
mov edi, dword [ebp - 0x484]
push edi
mov byte [ebp - 4], 3
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x1005d133
mov byte [ebp - 0x465], 1
jmp 0x1005d145
push edi
call fcn.1015b3b0
add esp, 4
test eax, eax
sete byte [ebp - 0x465]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 1
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d163
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x465], 0
jne 0x1005dfae
mov ecx, dword [ebp - 0x464]
lea eax, [ebp - 0x228]
push eax
call fcn.1005b870
test eax, eax
je 0x1005dfae
lea eax, [ebp - 0x490]
push eax
call fcn.1004d070
add esp, 4
mov ecx, dword [eax]
add esi, 0xfffffff0
mov byte [ebp - 4], 4
lea edx, [ecx - 0x10]
cmp edx, esi
je 0x1005d1fa
cmp dword [esi + 0xc], 0
jl 0x1005d1eb
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x1005d1eb
push edx
call fcn.100121a0
add esp, 4
mov dword [ebp - 0x470], eax
mov ecx, edi
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1005d1e0
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x470]
add eax, 0x10
mov dword [ebp - 0x474], eax
jmp 0x1005d1fa
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x474]
call fcn.1000f6e0
mov edx, dword [ebp - 0x490]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d21b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x478]
push 1
push eax
call fcn.1016f450
add esp, 8
push 6
push str.Basic_
lea ecx, [ebp - 0x474]
mov byte [ebp - 4], 5
call fcn.1001bd10
mov eax, dword [ebp - 0x478]
lea ecx, [ebp - 0x474]
push dword [eax - 0xc]
push eax
call fcn.1001bd10
push 1
push 0x101d3558
lea ecx, [ebp - 0x474]
call fcn.1001bd10
mov esi, dword [ebp - 0x474]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x1005d356
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
push esi
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
mov dword [ebp - 0x470], eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x1005d356
push dword [ebp - 0x470]
lea eax, [ebp - 0x460]
push eax
call fcn.1005e600
add esp, 8
push 0xa
push str.temp_fail_
push 0
mov ecx, eax
mov byte [ebp - 4], 6
call fcn.1005e420
mov ecx, dword [ebp - 0x46c]
mov dword [ebp - 0x48c], 3
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x448], xmm0
movq xmm0, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [ebp - 0x448]
push eax
movq qword [ebp - 0x438], xmm0
call fcn.1005be50
lea ecx, [ebp - 0x448]
call fcn.10007310
lea ecx, [ebp - 0x460]
call fcn.10007310
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1005e028
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x484], eax
mov eax, 0x101d1840
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x484]
test eax, 0xffff0000
jne 0x1005d396
movzx eax, ax
push eax
call fcn.1000f350
jmp 0x1005d3a2
push 0
push 0x101d1840
call fcn.1000f6e0
lea eax, [ebp - 0x484]
mov byte [ebp - 4], 8
push eax
push dword [ebp - 0x498]
lea eax, [ebp - 0x47c]
push eax
call fcn.1004c420
add esp, 0xc
mov edx, dword [ebp - 0x484]
mov eax, edi
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d3e3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0xb
mov dword [ebp - 0x480], eax
test ecx, ecx
je 0x1005d404
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
mov ecx, eax
test ecx, ecx
jne 0x1005d41c
call fcn.1000ed90
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 0x10]
call eax
mov ecx, eax
test ecx, ecx
je 0x1005e032
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, dword [esi - 0xc]
mov dword [ebp - 0x48c], 5
mov dword [ebp - 0x464], ecx
lea edi, [eax + 0x10]
mov eax, dword [ebp - 0x47c]
mov dword [ebp - 0x49c], eax
mov dword [ebp - 0x490], edi
mov eax, dword [eax - 0xc]
mov dword [ebp - 0x470], eax
lea edx, [ecx + eax]
test edx, edx
js 0x1005e03c
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, edx
or eax, ecx
jge 0x1005d482
push edx
lea ecx, [ebp - 0x490]
call fcn.1000f500
mov edi, dword [ebp - 0x490]
mov edx, dword [ebp - 0x464]
lea eax, [edx + edx]
push eax
push esi
push eax
push edi
call fcn.1000e380
mov eax, dword [ebp - 0x470]
add eax, eax
push eax
push dword [ebp - 0x49c]
push eax
mov eax, dword [ebp - 0x464]
lea eax, [edi + eax*2]
push eax
call fcn.1000e380
mov eax, dword [ebp - 0x464]
add esp, 0x20
add eax, dword [ebp - 0x470]
cmp eax, dword [edi - 8]
jg 0x1005e03c
xor ecx, ecx
mov dword [edi - 0xc], eax
mov word [edi + eax*2], cx
lea edx, [edi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x470], edx
cmp edx, eax
je 0x1005d54f
mov esi, dword [ebp - 0x480]
cmp dword [esi + 0xc], ecx
jl 0x1005d534
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x1005d534
push edx
call fcn.100121a0
or edi, 0xffffffff
mov dword [ebp - 0x480], eax
add esp, 4
lea edx, [esi + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1005d523
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x480]
mov edx, dword [ebp - 0x470]
lea esi, [eax + 0x10]
mov dword [ebp - 0x474], esi
jmp 0x1005d552
push dword [edi - 0xc]
lea ecx, [ebp - 0x474]
push edi
call fcn.1000f6e0
mov esi, dword [ebp - 0x474]
mov edx, dword [ebp - 0x470]
or edi, 0xffffffff
mov dword [ebp - 0x48c], 1
mov eax, edi
mov byte [ebp - 4], 0xa
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d574
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x1005d67b
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
mov dword [ebp - 0x480], eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x1005d67b
push dword [ebp - 0x480]
lea eax, [ebp - 0x460]
push eax
call fcn.1005e600
add esp, 8
push 0xc
push str.delete_fail_
push 0
mov ecx, eax
mov byte [ebp - 4], 0xc
call fcn.1005e420
mov ecx, dword [ebp - 0x46c]
mov dword [ebp - 0x48c], 9
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x448], xmm0
movq xmm0, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [ebp - 0x448]
push eax
movq qword [ebp - 0x438], xmm0
call fcn.1005be50
lea ecx, [ebp - 0x448]
call fcn.10007310
lea ecx, [ebp - 0x460]
call fcn.10007310
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d651
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1005e046
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x464], eax
mov byte [ebp - 4], 0xd
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push dword [ebp - 0x488]
mov dword [ebp - 0x480], eax
lea eax, [ebp - 0x464]
push dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x474]
push eax
push dword [ebp - 0x498]
call fcn.1005e1e0
add esp, 0x14
mov edi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebp - 0x480]
test edi, edi
jne 0x1005d8ff
cmp eax, dword [ebp + 0x18]
jb 0x1005d86e
call fcn.100a97a0
mov ecx, eax
push 1
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
movzx eax, al
sub eax, 1
jne 0x1005d7ed
push 0x10
push str.DownloadFile.cpp
lea ecx, [ebp - 0x448]
mov dword [ebp - 0x438], eax
mov dword [ebp - 0x434], 0xf
mov byte [ebp - 0x448], al
call fcn.1000cf00
push 3
push 0x101d1fdc
lea ecx, [ebp - 0x460]
mov byte [ebp - 4], 0xe
mov dword [ebp - 0x450], edi
mov dword [ebp - 0x44c], 0xf
mov byte [ebp - 0x460], 0
call fcn.1000cf00
mov byte [ebp - 4], 0xf
call fcn.100a97a0
mov dword [ebp - 0x488], eax
lea ecx, [ebp - 0x53c]
push 0xd8
lea eax, [ebp - 0x448]
push eax
lea eax, [ebp - 0x460]
push eax
call fcn.10007f90
mov edi, eax
push str.error_DownloadFile__
push edi
mov byte [ebp - 4], 0x10
call fcn.1000fad0
test esi, esi
mov ecx, 0x101d2100
cmovne ecx, esi
push ecx
push edi
call fcn.1000fad0
push str._:_timeout
push edi
call fcn.1000fad0
mov ecx, dword [ebp - 0x488]
add esp, 0x18
mov eax, dword [ecx]
push edi
call dword [eax + 0x1c]
lea ecx, [ebp - 0x53c]
call fcn.10008e90
lea ecx, [ebp - 0x460]
call fcn.10007310
lea ecx, [ebp - 0x448]
mov byte [ebp - 4], 0xd
call fcn.10007310
mov ecx, dword [ebp - 0x46c]
push 0xc
push str.timeout_fail
call fcn.1000cf00
mov edx, dword [ebp - 0x464]
or edi, 0xffffffff
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d823
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d844
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
mov edi, dword [ebp - 0x464]
mov ecx, edi
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1005d880
sub ecx, edx
push ecx
mov ecx, dword [ebp - 0x46c]
push edi
call fcn.1000cf00
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0xa
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d8b4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005d8d5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
lea eax, [ebp - 0x20]
xorps xmm0, xmm0
push eax
push esi
movups xmmword [ebp - 0x20], xmm0
call fcn.10035200
add esp, 8
test eax, eax
jne 0x1005da9f
call fcn.100a97a0
mov ecx, eax
push 1
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
movzx eax, al
sub eax, 1
jne 0x1005da1e
push 0x10
push str.DownloadFile.cpp
lea ecx, [ebp - 0x460]
mov dword [ebp - 0x450], eax
mov dword [ebp - 0x44c], 0xf
mov byte [ebp - 0x460], al
call fcn.1000cf00
push 3
push 0x101d1fdc
lea ecx, [ebp - 0x448]
mov byte [ebp - 4], 0x11
mov dword [ebp - 0x438], 0
mov dword [ebp - 0x434], 0xf
mov byte [ebp - 0x448], 0
call fcn.1000cf00
mov byte [ebp - 4], 0x12
call fcn.100a97a0
mov dword [ebp - 0x488], eax
lea ecx, [ebp - 0x53c]
push 0xe4
lea eax, [ebp - 0x460]
push eax
lea eax, [ebp - 0x448]
push eax
call fcn.10007f90
mov edi, eax
push str.error_DownloadFile__
push edi
mov byte [ebp - 4], 0x13
call fcn.1000fad0
test esi, esi
mov ecx, 0x101d2100
cmovne ecx, esi
push ecx
push edi
call fcn.1000fad0
push str._:_calc_md5
push edi
call fcn.1000fad0
mov ecx, dword [ebp - 0x488]
add esp, 0x18
mov eax, dword [ecx]
push edi
call dword [eax + 0x1c]
lea ecx, [ebp - 0x53c]
call fcn.10008e90
lea ecx, [ebp - 0x448]
call fcn.10007310
lea ecx, [ebp - 0x460]
mov byte [ebp - 4], 0xd
call fcn.10007310
mov ecx, dword [ebp - 0x46c]
push 0xd
push str.calc_md5_fail
call fcn.1000cf00
mov edx, dword [ebp - 0x464]
or edi, 0xffffffff
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005da54
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005da75
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
push 0x208
lea eax, [ebp - 0x430]
push 0
push eax
call fcn.1018d4b0
push 0x104
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.10035050
add esp, 0x18
test eax, eax
jne 0x1005dc56
call fcn.100a97a0
mov ecx, eax
push 1
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
movzx eax, al
sub eax, 1
jne 0x1005dbd5
push 0x10
push str.DownloadFile.cpp
lea ecx, [ebp - 0x460]
mov dword [ebp - 0x450], eax
mov dword [ebp - 0x44c], 0xf
mov byte [ebp - 0x460], al
call fcn.1000cf00
push 3
push 0x101d1fdc
lea ecx, [ebp - 0x448]
mov byte [ebp - 4], 0x14
mov dword [ebp - 0x438], 0
mov dword [ebp - 0x434], 0xf
mov byte [ebp - 0x448], 0
call fcn.1000cf00
mov byte [ebp - 4], 0x15
call fcn.100a97a0
mov dword [ebp - 0x488], eax
lea ecx, [ebp - 0x53c]
push 0xeb
lea eax, [ebp - 0x460]
push eax
lea eax, [ebp - 0x448]
push eax
call fcn.10007f90
mov edi, eax
push str.error_DownloadFile__
push edi
mov byte [ebp - 4], 0x16
call fcn.1000fad0
test esi, esi
mov ecx, 0x101d2100
cmovne ecx, esi
push ecx
push edi
call fcn.1000fad0
push str._:_digest_md5
push edi
call fcn.1000fad0
mov ecx, dword [ebp - 0x488]
add esp, 0x18
mov eax, dword [ecx]
push edi
call dword [eax + 0x1c]
lea ecx, [ebp - 0x53c]
call fcn.10008e90
lea ecx, [ebp - 0x448]
call fcn.10007310
lea ecx, [ebp - 0x460]
mov byte [ebp - 4], 0xd
call fcn.10007310
mov ecx, dword [ebp - 0x46c]
push 0xf
push str.digest_md5_fail
call fcn.1000cf00
mov edx, dword [ebp - 0x464]
or edi, 0xffffffff
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dc0b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dc2c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
lea eax, [ebp - 0x430]
push eax
mov eax, dword [ebp - 0x494]
push dword [eax]
call fcn.1019694f
add esp, 8
test eax, eax
je 0x1005ddf9
call fcn.100a97a0
mov ecx, eax
push 1
mov edx, dword [eax]
mov eax, dword [edx + 8]
call eax
movzx eax, al
sub eax, 1
jne 0x1005dd78
push 0x10
push str.DownloadFile.cpp
lea ecx, [ebp - 0x460]
mov dword [ebp - 0x450], eax
mov dword [ebp - 0x44c], 0xf
mov byte [ebp - 0x460], al
call fcn.1000cf00
push 3
push 0x101d1fdc
lea ecx, [ebp - 0x448]
mov byte [ebp - 4], 0x17
mov dword [ebp - 0x438], 0
mov dword [ebp - 0x434], 0xf
mov byte [ebp - 0x448], 0
call fcn.1000cf00
mov byte [ebp - 4], 0x18
call fcn.100a97a0
mov dword [ebp - 0x494], eax
lea ecx, [ebp - 0x53c]
push 0xf2
lea eax, [ebp - 0x460]
push eax
lea eax, [ebp - 0x448]
push eax
call fcn.10007f90
mov edi, eax
push str.error_DownloadFile__
push edi
mov byte [ebp - 4], 0x19
call fcn.1000fad0
test esi, esi
mov ecx, 0x101d2100
cmovne ecx, esi
push ecx
push edi
call fcn.1000fad0
push str._:_invalid
push edi
call fcn.1000fad0
mov ecx, dword [ebp - 0x494]
add esp, 0x18
mov eax, dword [ecx]
push edi
call dword [eax + 0x1c]
lea ecx, [ebp - 0x53c]
call fcn.10008e90
lea ecx, [ebp - 0x448]
call fcn.10007310
lea ecx, [ebp - 0x460]
mov byte [ebp - 4], 0xd
call fcn.10007310
mov ecx, dword [ebp - 0x46c]
push 0x10
push str.compare_md5_fail
call fcn.1000cf00
mov edx, dword [ebp - 0x464]
or edi, 0xffffffff
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005ddae
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005ddcf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov edi, dword [ebp - 0x4a0]
push 0
push dword [edi]
push esi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x1005df0d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x460]
push eax
call fcn.1005e600
add esp, 8
push 0xa
push str.copy_fail_
push 0
mov ecx, eax
mov byte [ebp - 4], 0x1a
call fcn.1005e420
mov ecx, dword [ebp - 0x46c]
mov dword [ebp - 0x48c], 0x11
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x448], xmm0
movq xmm0, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [ebp - 0x448]
push eax
movq qword [ebp - 0x438], xmm0
call fcn.1005be50
lea ecx, [ebp - 0x448]
call fcn.10007310
lea ecx, [ebp - 0x460]
call fcn.10007310
mov edx, dword [ebp - 0x464]
or edi, 0xffffffff
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dec2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dee3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
push dword [edi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov ecx, str.recheck_fail
test eax, eax
mov edx, str.succ
cmove edx, ecx
mov ecx, edx
lea edi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1005df30
sub ecx, edi
push ecx
mov ecx, dword [ebp - 0x46c]
push edx
call fcn.1000cf00
mov edx, dword [ebp - 0x464]
or edi, 0xffffffff
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005df6a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x47c]
mov eax, edi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005df8b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x478]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1005dfc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1005dfc0
mov ecx, dword [ebp - 0x46c]
push 0xd
push str.net_init_fail
call fcn.1000cf00
cmp dword [esi - 0xc], 0
je 0x1005dfd8
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x1005dfd8
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov byte [ebp - 4], 0
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x1005dff1
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x46c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101799ce
mov esp, ebp
pop ebp
ret 0x18
push 0x80004005
call fcn.10009b10
push 0x80004005
call fcn.10009b10
push 0x80004005
call fcn.10009b10
push 0x80004005
call fcn.10009b10
push 0x80070057
call fcn.10009b10
push 0x80004005
call fcn.10009b10
int3