Function at 0x443018
Capabilities:
Check if file exists
Check internet connectivity via wininet
Create http request
Create thread
Get common file path
Get file attributes
Get file size
Move file
Print debug messages
Resume thread
Terminate thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4737b8
mov eax, dword fs:[0]
push eax
mov eax, 0x81f4
call fcn.00463310
mov eax, dword [0x4a0590]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
and dword [ebp - 0x81d0], 0
mov edi, ecx
mov ebx, edx
lea esi, [ebp - 0x81c8]
mov dword [ebp - 0x81dc], eax
mov dword [ebp - 0x81ec], edi
mov dword [ebp - 0x81e8], ebx
call fcn.00441ad6
mov eax, dword [ebp - 0x81dc]
xor esi, esi
mov dword [ebp - 4], esi
cmp eax, esi
je 0x4439e4
cmp word [eax], si
je 0x4439e4
lea eax, [ebp - 0x8088]
call fcn.0043bdc9
lea eax, [ebp - 0x80a8]
call fcn.0043bdc9
lea eax, [ebp - 0x8048]
call fcn.0043bdc9
lea eax, [ebp - 0x8110]
call fcn.0043bdc9
mov byte [ebp - 4], 4
cmp edi, esi
je 0x443103
cmp word [edi], si
je 0x443103
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4430ec
and eax, 0x10
cmp al, 0x10
jne 0x4430ec
push edi
lea eax, [ebp - 0x8088]
push eax
call fcn.004095cb
jmp 0x443103
push edi
lea eax, [ebp - 0x8088]
push eax
lea eax, [ebp - 0x80a8]
push eax
call fcn.00447e69
add esp, 0xc
cmp dword [ebp - 0x8074], esi
jne 0x443145
lea eax, [ebp - 0x8028]
push eax
push 0x4000
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea eax, [ebp - 0x8028]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, si
jne 0x443126
sub eax, edx
sar eax, 1
lea ecx, [ebp - 0x8028]
lea esi, [ebp - 0x8088]
call fcn.00409639
cmp dword [ebp - 0x8094], 0
je 0x4431a5
lea edi, [ebp - 0x8088]
lea esi, [ebp - 0x8048]
call fcn.0043ba47
mov eax, esi
call fcn.00447d9a
push 0xffffffffffffffff
push 0
lea eax, [ebp - 0x80a8]
call fcn.0040cb6f
sub esp, 0x20
mov edi, esi
mov eax, esp
mov dword [ebp - 0x81f0], esp
call fcn.0043b3b5
call fcn.004440c2
push str.._dl
mov eax, esi
push eax
call fcn.0040baa6
mov ebx, dword [ebp - 0x81e8]
mov edi, dword [ebp - 0x81ec]
push ebx
mov dword [ebp - 0x81f0], ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push dword [ebp - 0x81dc]
lea eax, [ebx + 0x60]
push eax
mov byte [ebp - 4], 5
call fcn.004095cb
lea eax, [ebx + 0x80]
push edi
push eax
call fcn.004095cb
push ebx
mov byte [ebp - 4], 4
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [ebp - 0x8070], 8
mov ecx, dword [ebp - 0x8084]
mov dword [0x4a37cc], 0x14
jae 0x4431fc
lea ecx, [ebp - 0x8084]
call fcn.00448625
mov dword [ebx + 0x1c], eax
test eax, eax
je 0x443257
mov dword [0x4a37cc], 0x16
mov ebx, dword [ebx + 0x1c]
lea eax, [ebp - 0x8110]
call fcn.0043b39a
lea eax, [ebp - 0x8048]
call fcn.0043b39a
lea eax, [ebp - 0x80a8]
call fcn.0043b39a
lea eax, [ebp - 0x8088]
call fcn.0043b39a
or dword [ebp - 4], 0xffffffff
lea esi, [ebp - 0x81c8]
call fcn.0043dee5
mov eax, ebx
jmp 0x4439f5
push str.dwnldpath_
lea esi, [ebp - 0x8064]
mov dword [0x4a37cc], 0x15
call fcn.004095a2
mov byte [ebp - 4], 6
call fcn.00436887
push eax
mov eax, esi
push eax
call fcn.0040baa6
cmp dword [ebp - 0x804c], 8
mov esi, dword [ebp - 0x8060]
jae 0x443298
lea esi, [ebp - 0x8060]
call fcn.00436197
mov edx, esi
mov ecx, eax
call fcn.00436203
cmp dword [ebp - 0x8030], 8
mov eax, dword [ebp - 0x8044]
jae 0x4432bb
lea eax, [ebp - 0x8044]
push eax
push ecx
call fcn.00436197
pop ecx
mov esi, eax
call fcn.004361ee
xor edi, edi
push edi
push 1
lea esi, [ebp - 0x8064]
mov byte [ebp - 4], 4
call fcn.004095f2
mov dword [ebp - 0x81d8], edi
mov dword [ebp - 0x81d4], edi
cmp dword [ebp - 0x8034], edi
je 0x4433a1
cmp dword [ebp - 0x8030], 8
mov eax, dword [ebp - 0x8044]
jae 0x44330b
lea eax, [ebp - 0x8044]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4433a1
cmp dword [ebp - 0x8030], 8
mov eax, dword [ebp - 0x8044]
jae 0x44332f
lea eax, [ebp - 0x8044]
push edi
push 0x80
push 4
push edi
push 1
push closesocket
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x4433a1
push edi
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
push 0x64
mov edi, eax
pop eax
xor ecx, ecx
push 2
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00452c78
pop ecx
push edi
push str.Range:_bytes_d_
push 0x64
push eax
mov dword [ebp - 0x81d8], eax
call fcn.00459084
add esp, 0x10
push dword [ebp - 0x81d8]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
mov dword [ebp - 0x81d4], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor edi, edi
push edi
call dword [sym.imp.WININET.dll_InternetAttemptConnect]
test eax, eax
je 0x4433b4
push 0xffffffffffffffee
pop ebx
jmp 0x443215
xor eax, eax
cmp byte [ebp + 0xc], al
push edi
setne al
push edi
push edi
push eax
push str.B1_Smart_Loader__0.1
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [ebp - 0x81f0], eax
cmp eax, edi
je 0x4438e9
push edi
push 0x84400300
push dword [ebp - 0x81d4]
push dword [ebp - 0x81d8]
push dword [ebp - 0x81dc]
push eax
call dword [sym.imp.WININET.dll_InternetOpenUrlW]
mov dword [ebp - 0x81d8], eax
cmp eax, edi
je 0x4438cf
call fcn.00442b1a
mov esi, 0x4a37a8
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [0x4a37c8], 0
call esi
cmp dword [ebp - 0x8094], edi
jne 0x44350b
push edi
lea eax, [ebp - 0x81f4]
push eax
lea eax, [ebp - 0x8028]
push eax
push 0x21
push dword [ebp - 0x81d8]
mov dword [ebp - 0x81f4], 0x4000
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
je 0x4434a5
push ebx
mov dword [ebp - 0x81d4], ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [ebp - 0x8028]
push eax
lea eax, [ebx + 0x60]
push eax
mov byte [ebp - 4], 7
call fcn.004095cb
push ebx
mov byte [ebp - 4], 4
call esi
lea eax, [ebp - 0x8028]
push eax
lea eax, [ebp - 0x8048]
push eax
lea eax, [ebp - 0x80a8]
push eax
call fcn.00447e69
add esp, 0xc
jmp 0x4434b8
push 9
pop eax
mov ecx, str.setup.exe
lea esi, [ebp - 0x80a8]
call fcn.00409639
lea edi, [ebp - 0x8088]
lea esi, [ebp - 0x8048]
call fcn.0043ba47
mov eax, esi
call fcn.00447d9a
push 0xffffffffffffffff
push 0
lea eax, [ebp - 0x80a8]
call fcn.0040cb6f
sub esp, 0x20
mov edi, esi
mov eax, esp
mov dword [ebp - 0x81d4], esp
call fcn.0043b3b5
call fcn.004440c2
push str.._dl
mov eax, esi
push eax
call fcn.0040baa6
mov ebx, dword [ebp - 0x81e8]
xor edi, edi
push edi
lea eax, [ebp - 0x81f4]
push eax
lea eax, [ebp - 0x8028]
push eax
push 5
push dword [ebp - 0x81d8]
mov dword [ebp - 0x81f4], 0x4000
mov dword [ebp - 0x81d4], edi
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
je 0x443568
lea eax, [ebp - 0x8028]
push eax
call fcn.00455cda
mov dword [ebp - 0x81d4], eax
pop ecx
lea eax, [ebp - 0x8028]
push eax
call fcn.00455cda
cdq
pop ecx
push edx
push eax
mov edi, ebx
call fcn.00441bbd
xor edi, edi
cmp dword [ebp - 0x8030], 8
mov eax, dword [ebp - 0x8044]
jae 0x44357d
lea eax, [ebp - 0x8044]
push edi
push edi
push 4
push edi
push 1
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x81dc], eax
cmp eax, 0xffffffff
je 0x4438c1
cmp dword [ebp - 0x8030], 8
mov eax, dword [ebp - 0x8044]
jae 0x4435b4
lea eax, [ebp - 0x8044]
push eax
push ecx
call fcn.00436197
pop ecx
mov esi, eax
call fcn.004361ee
push str.dwnldfile_
lea esi, [ebp - 0x8064]
call fcn.004095a2
mov edi, dword [ebp - 0x81ec]
mov byte [ebp - 4], 8
call fcn.00436887
push eax
mov eax, esi
push eax
call fcn.0040baa6
cmp dword [ebp - 0x804c], 8
mov esi, dword [ebp - 0x8060]
jae 0x443600
lea esi, [ebp - 0x8060]
call fcn.00436197
mov edx, esi
mov ecx, eax
call fcn.00436203
push 0
push 1
lea esi, [ebp - 0x8064]
call fcn.004095f2
and dword [ebp - 0x81e4], 0
xor eax, eax
lea edi, [ebp - 0x81e0]
stosd dword es:[edi], eax
mov edi, dword [sym.imp.KERNEL32.dll_CreateThread]
lea eax, [ebp - 0x81fc]
push eax
push 4
xor eax, eax
push eax
push 0x442b60
push eax
push eax
call edi
lea esi, [ebp - 0x80e0]
mov dword [ebp - 0x81e4], eax
call fcn.00409ed9
lea esi, [ebp - 0x80c4]
call fcn.00409ed9
mov eax, dword [ebp - 0x81dc]
mov byte [ebp - 4], 9
mov dword [ebp - 0x80e4], eax
mov eax, dword [ebp - 0x81d8]
mov dword [ebp - 0x80f0], eax
mov eax, dword [ebp - 0x81d4]
mov dword [ebp - 0x80e8], eax
push 0xffffffffffffffff
lea eax, [ebp - 0x80e0]
mov dword [ebp - 0x80ec], ebx
push eax
xor ebx, ebx
lea eax, [ebp - 0x8048]
call fcn.004096b8
push dword [ebp - 0x81ec]
mov eax, esi
push eax
call fcn.004095cb
lea eax, [ebp - 0x81f8]
push eax
push 4
lea eax, [ebp - 0x80f0]
push eax
push 0x442d3d
push ebx
push ebx
call edi
push dword [ebp - 0x81e4]
mov esi, dword [sym.imp.KERNEL32.dll_ResumeThread]
mov dword [ebp - 0x81e0], eax
call esi
push dword [ebp - 0x81e0]
call esi
push 0xffffffffffffffff
push ebx
lea eax, [ebp - 0x81e4]
push eax
push 2
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
sub eax, ebx
je 0x44372d
dec eax
jne 0x44375f
lea eax, [ebp - 0x81d4]
push eax
push dword [ebp - 0x81e0]
mov dword [0x4a37cc], 0xb
call dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
test eax, eax
je 0x44375f
mov eax, dword [ebp - 0x81d4]
jmp 0x443759
mov esi, 0x4a37a8
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [0x4a37c8]
push esi
mov byte [ebp - 0x81c9], al
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
cmp byte [ebp - 0x81c9], bl
sete al
add eax, 0xfffffff0
mov dword [ebp - 0x81d0], eax
push dword [ebp - 0x81dc]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov edi, dword [sym.imp.KERNEL32.dll_TerminateThread]
push ebx
push dword [ebp - 0x81e4]
call edi
push ebx
push dword [ebp - 0x81e0]
call edi
push dword [ebp - 0x81e4]
call esi
push dword [ebp - 0x81e0]
call esi
cmp dword [ebp - 0x8030], 8
mov edi, dword [ebp - 0x8044]
jae 0x4437aa
lea edi, [ebp - 0x8044]
call fcn.00436197
mov esi, eax
push edi
push esi
call fcn.004365b4
mov edi, dword [ebp - 0x81d0]
mov dword [eax + 0x2c], edi
mov byte [eax + 0x34], 1
lea eax, [esi + 0x18]
call fcn.0040bacf
push str.IODownloadFileHlp_6_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
cmp edi, ebx
jne 0x443899
mov esi, dword [ebp - 0x81e8]
lea eax, [ebp - 0x8068]
push eax
call fcn.00441c8c
mov byte [ebp - 4], 0xa
cmp dword [eax + 0x18], 8
jb 0x443801
mov eax, dword [eax + 4]
jmp 0x443804
add eax, 4
lea edx, [ebp - 0x81c8]
mov ecx, eax
call fcn.00441e32
cmp eax, ebx
mov dword [ebp - 0x81d0], eax
lea eax, [ebp - 0x8068]
sete byte [ebp - 0x81c9]
mov byte [ebp - 4], 9
call fcn.0043b39a
cmp byte [ebp - 0x81c9], bl
je 0x443899
lea eax, [ebp - 0x8068]
push eax
call fcn.00441c8c
cmp dword [eax + 0x18], 8
jb 0x44384e
mov eax, dword [eax + 4]
jmp 0x443851
add eax, 4
cmp dword [ebp - 0x8030], 8
mov ecx, dword [ebp - 0x8044]
jae 0x443866
lea ecx, [ebp - 0x8044]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileW]
neg eax
sbb al, al
inc al
mov byte [ebp - 0x81c9], al
lea eax, [ebp - 0x8068]
call fcn.0043b39a
cmp byte [ebp - 0x81c9], bl
je 0x443899
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x81d0], eax
push ebx
push 1
lea esi, [ebp - 0x80c4]
mov byte [ebp - 4], 4
call fcn.004095f2
push ebx
push 1
lea esi, [ebp - 0x80e0]
call fcn.004095f2
mov ebx, dword [ebp - 0x81e8]
xor edi, edi
push dword [ebp - 0x81d8]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
jmp 0x4438db
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x81d0], eax
push dword [ebp - 0x81f0]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
jmp 0x4438f5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x81d0], eax
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push str.IODownloadFileHlp_7_n
call esi
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x81d0]
push ebx
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x18], edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push str.IODownloadFileHlp_8_n
call esi
push str.dwnldend_
lea esi, [ebp - 0x8064]
call fcn.004095a2
mov edi, dword [ebp - 0x81ec]
mov byte [ebp - 4], 0xb
call fcn.00436887
push eax
mov eax, esi
push eax
call fcn.0040baa6
push dword [ebp - 0x81d0]
lea eax, [ebp - 0x24]
push 0x486888
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x24]
push eax
mov eax, esi
push eax
call fcn.0040baa6
cmp dword [ebp - 0x804c], 8
mov esi, dword [ebp - 0x8060]
jae 0x443984
lea esi, [ebp - 0x8060]
call fcn.00436197
mov edx, esi
mov ecx, eax
call fcn.00436203
push 0
push 1
lea esi, [ebp - 0x8064]
call fcn.004095f2
lea eax, [ebp - 0x8110]
call fcn.0043b39a
lea eax, [ebp - 0x8048]
call fcn.0043b39a
lea eax, [ebp - 0x80a8]
call fcn.0043b39a
lea eax, [ebp - 0x8088]
call fcn.0043b39a
or dword [ebp - 4], 0xffffffff
lea esi, [ebp - 0x81c8]
call fcn.0043dee5
mov eax, dword [ebp - 0x81d0]
jmp 0x4439f5
or dword [ebp - 4], 0xffffffff
lea esi, [ebp - 0x81c8]
call fcn.0043dee5
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00453655
leave
ret