Function at 0x406b50
Capabilities:
Create http request
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x87c
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str.Phoenix_Patcher
call dword [sym.imp.WININET.DLL_InternetOpenA]
mov dword [ebp - 0x85c], eax
sub esp, 0x14
test eax, eax
je 0x406f28
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x85c]
mov dword [esp], eax
call sym.attempt_url_connection_void__char_
mov edi, eax
test eax, eax
je 0x406f50
lea eax, [ebp - 0x834]
lea ebx, [ebp - 0x818]
mov dword [ebp - 0x83c], 0
mov dword [ebp - 0x834], 0x20
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], 5
mov dword [esp], edi
call dword [sym.imp.WININET.DLL_HttpQueryInfoA]
mov dword [ebp - 0x858], eax
sub esp, 0x14
test eax, eax
je 0x406e60
mov dword [esp], ebx
call sym._atoi
mov dword [ebp - 0x858], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sym._strlen
add eax, dword [ebp + 0xc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
lea eax, [ebp - 0x834]
mov dword [esp], eax
call method.auto_std::filesystem::__cxx11::path._S_convert_char__char_const__char_const_
lea ecx, [ebp - 0x81c]
call method.std::filesystem::__cxx11::path::_List._List__
lea ecx, [ebp - 0x834]
call method.std::filesystem::__cxx11::path._M_split_cmpts__
lea ecx, [ebp - 0x834]
call method.std::filesystem::__cxx11::path.has_parent_path___const
test al, al
je 0x406cc1
lea eax, [ebp - 0x834]
mov ecx, ebx
mov dword [esp], eax
call method.std::filesystem::__cxx11::path.parent_path___const
sub esp, 4
mov dword [esp], ebx
call method.std::filesystem.create_directories_std::filesystem::__cxx11::path_const_
mov eax, dword [ebp - 0x800]
test eax, eax
je 0x406c9b
mov dword [esp], eax
lea ecx, [ebp - 0x800]
call method.std::filesystem::__cxx11::path::_List::_Impl_deleter.operator___std::filesystem::__cxx11::path::_List::_Impl__const
sub esp, 4
mov eax, dword [ebp - 0x818]
lea edx, [ebp - 0x810]
cmp eax, edx
je 0x406cc1
mov edx, dword [ebp - 0x810]
mov dword [esp], eax
lea edx, [edx + edx + 2]
mov dword [esp + 4], edx
call sym.operator_delete_void__unsigned_int_
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x84c], eax
sub esp, 0x1c
cmp eax, 0xffffffff
je 0x406f70
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x406ea0
lea eax, [ebp - 0x83c]
xor esi, esi
mov dword [ebp - 0x850], eax
mov eax, dword [sym.imp.WININET.DLL_InternetReadFile]
mov dword [ebp - 0x854], eax
jmp 0x406d93
mov eax, dword [ebp - 0x83c]
test eax, eax
je 0x406dbf
lea ecx, [ebp - 0x838]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x84c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
sub esp, 0x14
test eax, eax
je 0x406e80
mov eax, dword [ebp - 0x858]
add esi, dword [ebp - 0x83c]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call dword [ebp + 0x10]
mov eax, dword [ebp - 0x850]
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov dword [esp], edi
mov eax, dword [ebp - 0x854]
call eax
sub esp, 0x10
test eax, eax
jne 0x406d38
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
test eax, eax
je 0x406ddd
call ebx
mov dword [esp + 4], eax
mov dword [esp], str.Download_File_Read_Error__d
call sym.Log_char_const__..._
mov dword [esp], edi
mov ebx, dword [sym.imp.WININET.DLL_InternetCloseHandle]
call ebx
mov eax, dword [ebp - 0x85c]
sub esp, 4
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x84c]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov ebx, 1
mov eax, dword [ebp - 0x81c]
test eax, eax
je 0x406e2b
mov dword [esp], eax
lea ecx, [ebp - 0x81c]
call method.std::filesystem::__cxx11::path::_List::_Impl_deleter.operator___std::filesystem::__cxx11::path::_List::_Impl__const
sub esp, 4
mov eax, dword [ebp - 0x834]
lea edx, [ebp - 0x82c]
cmp eax, edx
je 0x406e51
mov edx, dword [ebp - 0x82c]
mov dword [esp], eax
lea edx, [edx + edx + 2]
mov dword [esp + 4], edx
call sym.operator_delete_void__unsigned_int_
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], str.Query_Info_Error__d
mov dword [esp + 4], eax
call sym.Log_char_const__..._
jmp 0x406c19
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 4], eax
mov dword [esp], str.WriteFile_Error__d
call sym.Log_char_const__..._
xor ebx, ebx
jmp 0x406e10
lea eax, [ebp - 0x83c]
lea esi, [ebp - 0x838]
mov dword [ebp - 0x850], eax
mov eax, dword [sym.imp.WININET.DLL_InternetReadFile]
mov dword [ebp - 0x854], eax
jmp 0x406ef8
mov eax, dword [ebp - 0x83c]
test eax, eax
je 0x406dbf
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x84c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
sub esp, 0x14
test eax, eax
je 0x406e80
mov eax, dword [ebp - 0x850]
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov dword [esp], edi
mov eax, dword [ebp - 0x854]
call eax
sub esp, 0x10
test eax, eax
jne 0x406ec0
jmp 0x406dbf
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], str.Download_File_Error__d
xor ebx, ebx
mov dword [esp + 4], eax
call sym.Log_char_const__..._
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp - 0x85c]
xor ebx, ebx
mov dword [esp], eax
call dword [sym.imp.WININET.DLL_InternetCloseHandle]
sub esp, 4
jmp 0x406f40
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 4], eax
mov dword [esp], str.CreateFile_Error__d
call sym.Log_char_const__..._
xor ebx, ebx
jmp 0x406e10