Function at 0x454270
Capabilities:
Check http status code
Check if file exists
Delete file
Download and write a file
Get http content length
Move file
Read data from internet
Receive and write data from server to client
Receive data
Send data
Send http request
Send http request with host header
Set file attributes
Timestomp file
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x46efb1
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3c4
mov eax, dword [0x480630]
xor eax, esp
push ebx
push ebp
mov ebp, dword [esp + 0x3dc]
push esi
mov dword [esp + 0x3cc], eax
mov eax, dword [esp + 0x3ec]
mov esi, ecx
lea ecx, [esi + 0x4c]
mov dword [esp + 0x30], eax
mov eax, dword [ecx]
mov edx, dword [eax - 8]
push edi
mov edi, dword [esp + 0x3e8]
xor ebx, ebx
cmp edx, ebx
mov dword [esp + 0x5c], edi
je 0x4542e0
cmp dword [eax - 0xc], ebx
jl 0x4542d6
call fcn.00403b50
jmp 0x4542e0
push 0x4708d8
call fcn.00404d30
push edi
lea ecx, [esp + 0x14]
call fcn.00405970
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 8], ebx
mov dword [esp + 0x3dc], ebx
je 0x454314
push 0x475a64
push 0x475a64
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea ecx, [esp + 0x18]
call fcn.00403ab0
mov edi, dword [esp + 0x10]
push ebp
mov ecx, esi
call fcn.00453d80
test eax, eax
jne 0x45435c
mov eax, dword [0x4800dc]
lea edx, [edi - 0xc]
cmp edx, eax
mov dword [esp + 0x3dc], 0xffffffff
je 0x454352
lea esi, [edi - 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x454352
push esi
call fcn.00457c3f
add esp, 4
mov eax, SysReAllocStringLen
jmp 0x455049
cmp dword [esi + 0x48], ebx
je 0x454368
mov ecx, esi
call fcn.00453210
cmp dword [esi + 0x44], ebx
je 0x4543ad
mov ecx, esi
call fcn.00453210
mov ecx, dword [0x4800dc]
lea eax, [edi - 0xc]
cmp eax, ecx
mov dword [esp + 0x3dc], 0xffffffff
je 0x4543a3
lea esi, [edi - 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x4543a3
push esi
call fcn.00457c3f
add esp, 4
mov eax, 2
jmp 0x455049
mov ecx, dword [0x4800d8]
mov dword [esp + 0x24], ecx
mov eax, dword [esi + 0x28]
lea edi, [esi + 0x28]
push 0x2f
push eax
mov byte [esp + 0x3e4], 1
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call fcn.00457e22
add esp, 8
cmp eax, ebx
jne 0x4543e1
or eax, 0xffffffff
jmp 0x4543e3
sub eax, dword [edi]
inc eax
push eax
lea edx, [esp + 0x2c]
push edx
mov ecx, edi
call fcn.00453bf0
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x3e0], 2
call fcn.00404cd0
mov eax, dword [esp + 0x28]
mov edx, dword [0x4800dc]
lea ecx, [eax - 0xc]
cmp ecx, edx
mov byte [esp + 0x3dc], 1
je 0x45443a
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x45443a
mov eax, dword [esp + 0x28]
add eax, 0xfffffff4
push eax
call fcn.00457c3f
add esp, 4
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x18], 1
cmp dword [ebp - 8], ebx
je 0x454472
mov eax, dword [esi + 0x50]
cmp eax, ebx
je 0x454472
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x454472
mov eax, dword [esi + 0x50]
lea edx, [esp + 0x18]
push edx
push ebx
push 0xbd8
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, esi
call fcn.004535c0
test eax, eax
je 0x454ce3
cmp dword [esi + 0x44], ebx
jne 0x454afb
cmp dword [esp + 0x3ec], ebx
mov ecx, 0x4400010
mov dword [esp + 0x54], ecx
jne 0x4544a5
mov ecx, 0x4600010
mov dword [esp + 0x54], ecx
mov eax, dword [edi]
push ebx
push ecx
mov ecx, dword [esi + 8]
push 0x480538
push ebx
push str.HTTP_1.0
push eax
push 0x475a54
push ecx
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
cmp eax, ebx
mov dword [esi + 0xc], eax
je 0x45485a
xor eax, eax
mov byte [esp + 0x2c0], bl
mov ecx, 0x43
lea edi, [esp + 0x2c1]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [esp + 0x34]
cmp edi, ebx
je 0x45452c
push str.Host:
lea edx, [esp + 0x2c4]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edi
lea eax, [esp + 0x2c4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov edx, dword [esi + 0xc]
push 0x20000000
push 0xffffffffffffffff
lea ecx, [esp + 0x2c8]
push ecx
push edx
call dword [sym.imp.WININET.dll_HttpAddRequestHeadersA]
xor eax, eax
mov byte [esp + 0x1b0], bl
mov ecx, 0x10
lea edi, [esp + 0x1b1]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x44]
push eax
mov dword [esp + 0x5c], ebx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
cmp dword [ebp - 8], ebx
je 0x4545d6
xor eax, eax
mov dword [esp + 0x70], ebx
mov ecx, 0x4f
lea edi, [esp + 0x74]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x70]
push ecx
push ebp
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x4545d6
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
lea edx, [esp + 0x60]
push edx
lea eax, [esp + 0x88]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
mov eax, dword [esp + 0x90]
cmp eax, ebx
mov dword [esp + 0x20], eax
jbe 0x4545c3
push eax
lea ecx, [esp + 0x1b4]
push str.Range:_bytes_d_
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov dword [esp + 0x58], 1
jmp 0x4545d6
push 0x80
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push ebp
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp dword [esi + 0x44], ebx
jne 0x454afb
push ebx
push ebx
lea edx, [esp + 0x1b8]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [esi + 0xc]
push eax
lea eax, [esp + 0x1bc]
push eax
push ecx
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x45468f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x54], eax
call fcn.00453210
mov esi, dword [esi + 0x54]
sub esi, 0x2ee2
je 0x454661
sub esi, 5
je 0x454633
sub esi, 0x16
jne 0x454ce3
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, reloc.OLEAUT32.dll_VariantClear
jmp 0x455049
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, VariantClear
jmp 0x455049
cmp dword [esi + 0x44], ebx
jne 0x454afb
mov ecx, dword [esi + 0xc]
push ebx
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x34]
push eax
push 0x20000013
push ecx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x28], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
je 0x45485a
mov eax, dword [esp + 0x2c]
xor ebp, ebp
cmp eax, 0x12e
mov dword [esp + 0x28], ebp
ja 0x4548dc
cmp eax, 0x12d
jae 0x454817
sub eax, 0xc8
je 0x4547cd
sub eax, 3
je 0x4546ff
sub eax, 3
jne 0x4548f7
push ebx
xor eax, eax
mov byte [esp + 0x23c], bl
mov ecx, 0x10
lea edi, [esp + 0x23d]
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0xc]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x240]
push eax
push 0xb
push ecx
mov dword [esp + 0x28], 0x40
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
jne 0x454759
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [esp + 0x10]
push edx
mov dword [esi + 0x54], eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov dword [esp + 0x20], ebx
jmp 0x454863
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x23c]
push ecx
mov ecx, esi
call fcn.00453ec0
mov dx, word [esp + 0x50]
cmp dx, word [esp + 0x6c]
jne 0x4547b9
mov ax, word [esp + 0x4e]
cmp ax, word [esp + 0x6a]
jne 0x4547b9
mov cx, word [esp + 0x4c]
cmp cx, word [esp + 0x68]
jne 0x4547b9
mov dx, word [esp + 0x4a]
cmp dx, word [esp + 0x66]
jne 0x4547b9
mov ax, word [esp + 0x46]
cmp ax, word [esp + 0x62]
jne 0x4547b9
mov cx, word [esp + 0x44]
cmp cx, word [esp + 0x60]
je 0x45490a
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov dword [esp + 0x20], ebx
jmp 0x454901
mov eax, dword [esp + 0x10]
cmp dword [eax - 8], ebx
jne 0x45480b
mov ecx, esi
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, reloc.OLEAUT32.dll_SysReAllocString
jmp 0x455049
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
jmp 0x45490a
push 0x401
call fcn.00456452
mov ebp, eax
xor eax, eax
mov ecx, 0x100
mov edi, ebp
rep stosd dword es:[edi], eax
add esp, 4
stosb byte es:[edi], al
mov ecx, dword [esi + 0xc]
push ebx
lea eax, [esp + 0x18]
push eax
push ebp
push 0x21
push ecx
mov dword [esp + 0x28], 0x400
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
push ebp
jne 0x454896
call fcn.004572e5
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi + 0x54], eax
mov ecx, esi
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
or eax, 0xffffffff
jmp 0x455049
lea ecx, [esi + 0x4c]
call fcn.00404d30
mov ecx, esi
call fcn.00453210
push ebp
call fcn.004572e5
add esp, 4
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, 1
jmp 0x455049
sub eax, 0x193
je 0x455010
dec eax
je 0x454fd5
sub eax, 0x60
je 0x454fa1
cmp dword [esp + 0x58], ebx
je 0x454f6c
mov ebp, 1
mov dword [esp + 0x28], ebp
cmp dword [esi + 0x44], ebx
jne 0x454afb
cmp ebp, ebx
je 0x454a28
mov edx, dword [esi + 0xc]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov ecx, dword [esp + 0x54]
mov eax, dword [esi + 0x28]
mov edx, dword [esi + 8]
push ebx
push ecx
push 0x480538
push ebx
push str.HTTP_1.0
push eax
push 0x475a54
push edx
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
cmp eax, ebx
mov dword [esi + 0xc], eax
je 0x45485a
mov ecx, dword [esp + 0x34]
or edi, 0xffffffff
cmp ecx, ebx
je 0x454974
push 0x1000000
push edi
lea ecx, [esp + 0x2c8]
push ecx
push eax
call dword [sym.imp.WININET.dll_HttpAddRequestHeadersA]
cmp dword [esi + 0x44], ebx
jne 0x454990
mov edx, dword [esi + 0xc]
push ebx
push ebx
push ebx
push ebx
push edx
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
je 0x4549f1
cmp dword [esi + 0x44], ebx
je 0x4549c1
mov ecx, esi
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], edi
call fcn.004309a0
mov eax, 2
jmp 0x455049
mov edx, dword [esi + 0xc]
push ebx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x34]
push ecx
push 0x20000013
push edx
mov dword [esp + 0x28], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
je 0x4549f1
cmp dword [esp + 0x2c], 0xc8
je 0x454a28
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x54], eax
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], edi
call fcn.004309a0
mov eax, edi
jmp 0x455049
mov edx, dword [esi + 0xc]
xor eax, eax
push ebx
mov byte [esp + 0x1f8], bl
mov ecx, 0x10
lea edi, [esp + 0x1f9]
rep stosd dword es:[edi], eax
mov edi, dword [sym.imp.WININET.dll_HttpQueryInfoA]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x1fc]
push ecx
push 0xb
push edx
mov dword [esp + 0x28], 0x40
call edi
test eax, eax
je 0x454a7b
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x1f8]
push ecx
mov ecx, esi
call fcn.00453ec0
mov ecx, dword [esi + 0xc]
push ebx
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x48]
push eax
push 0x20000005
push ecx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x28], 4
call edi
test eax, eax
jne 0x454aad
mov dword [esp + 0x40], 0x32000
mov dword [esp + 0x20], ebx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
add eax, edx
mov dword [esp + 0x1c], eax
mov dword [esi + 0x5c], eax
mov dword [esp + 0x18], 2
cmp dword [edi - 8], ebx
je 0x454af6
mov eax, dword [esi + 0x50]
cmp eax, ebx
je 0x454af6
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x454af6
mov edx, dword [esi + 0x50]
lea ecx, [esp + 0x18]
push ecx
push ebx
push 0xbd8
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
cmp dword [esi + 0x44], ebx
je 0x454b30
mov ecx, esi
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, 2
jmp 0x455049
push ebx
push 1
mov ecx, edi
call fcn.004530b0
add esp, 8
test eax, eax
je 0x454b63
mov eax, dword [esp + 0x10]
push ebx
push 0x80
push 4
push ebx
push 1
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x454b98
mov ecx, esi
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, reloc.WSOCK32.dll_closesocket
jmp 0x455049
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea eax, [esp + 0x38]
push eax
push ebx
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileTime]
cmp dword [esp + 0x28], ebx
je 0x454bcf
push ebx
push ebx
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push ebp
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
jmp 0x454bda
push 2
push ebx
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0x1001
call fcn.00456452
add esp, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], ebx
mov dword [esp + 0x18], 3
jmp 0x454c00
mov edi, dword [esp + 0x28]
xor eax, eax
mov ecx, 0x400
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
cmp dword [esi + 0x44], ebx
jne 0x454d0f
mov edi, dword [esp + 0x28]
mov edx, dword [esi + 0xc]
lea ecx, [esp + 0x30]
push ecx
push 0x1000
push edi
push edx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x454d84
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
add edx, eax
mov eax, dword [esi + 0x50]
cmp eax, ebx
mov dword [esp + 0x20], edx
je 0x454c6d
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x454c6d
mov edx, dword [esi + 0x50]
lea ecx, [esp + 0x18]
push ecx
push ebx
push 0xbd8
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esp + 0x30]
cmp eax, ebx
jbe 0x454c92
push ebx
lea ecx, [esp + 0x38]
push ecx
push eax
push edi
push ebp
mov dword [esp + 0x48], ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp dword [esp + 0x30], ebx
ja 0x454c00
mov ecx, dword [esp + 0x20]
cmp ecx, dword [esp + 0x1c]
jae 0x454e09
mov ecx, esi
call fcn.00453210
push edi
call fcn.004572e5
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebp
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea ecx, [esp + 0x38]
push ecx
push ebx
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
or eax, 0xffffffff
jmp 0x455049
mov edx, dword [esp + 0x28]
push edx
call fcn.004572e5
add esp, 4
mov ecx, esi
call fcn.00453210
push ebp
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebp
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea edx, [esp + 0x38]
push edx
push ebx
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, 2
jmp 0x455049
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
mov dword [esi + 0x54], eax
mov eax, dword [esp + 0x28]
push eax
call fcn.004572e5
add esp, 4
call edi
mov ecx, esi
mov dword [esi + 0x54], eax
call fcn.00453210
push ebp
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebp
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea eax, [esp + 0x38]
push eax
push ebx
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, reloc.OLEAUT32.dll_VariantCopy
jmp 0x455049
mov eax, dword [esi + 0x50]
cmp eax, ebx
je 0x454e30
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x454e30
mov eax, dword [esi + 0x50]
lea edx, [esp + 0x18]
push edx
push ebx
push 0xbd8
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
xor eax, eax
push ebx
mov byte [esp + 0x280], bl
mov ecx, 0x10
lea edi, [esp + 0x281]
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0xc]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x284]
push edx
push 0x17
push eax
mov dword [esp + 0x28], 0x40
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
jne 0x454e7f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x54], eax
call fcn.00453210
jmp 0x454eac
push str.close
lea ecx, [esp + 0x280]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x454e9f
mov ecx, esi
call fcn.00453210
jmp 0x454eac
mov edx, dword [esi + 0xc]
push edx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov dword [esi + 0xc], ebx
mov eax, dword [esp + 0x28]
push eax
call fcn.004572e5
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebp
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea eax, [esp + 0x38]
push eax
push ebx
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [esp + 0x5c]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x454f0e
push 0x80
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov ecx, dword [esp + 0x10]
push esi
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
jne 0x454f4c
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, reloc.OLEAUT32.dll_SysReAllocStringLen
jmp 0x455049
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
xor eax, eax
jmp 0x455049
call dword [sym.imp.KERNEL32.dll_GetLastError]
lea ecx, [esp + 0x18]
mov dword [esi + 0x54], eax
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
or eax, 0xffffffff
jmp 0x455049
call dword [sym.imp.KERNEL32.dll_GetLastError]
lea ecx, [esp + 0x18]
mov dword [esi + 0x54], eax
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, SafeArrayLock
jmp 0x455049
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x54], eax
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, VariantClear
jmp 0x455049
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x54], eax
call fcn.00453210
lea ecx, [esp + 0x18]
mov byte [esp + 0x3dc], bl
call fcn.004537c0
lea ecx, [esp + 0x10]
mov dword [esp + 0x3dc], 0xffffffff
call fcn.004309a0
mov eax, reloc.OLEAUT32.dll_SafeArrayGetDim
mov ecx, dword [esp + 0x3d4]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x3c4]
pop ebx
xor ecx, esp
call fcn.004570de
add esp, 0x3d0
ret 0x10