Function at 0x402d50
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 ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4206d1
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3d0
push ebx
push esi
mov esi, ecx
push edi
lea ecx, [esi + 0x48]
call fcn.004017d0
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [esp + 0x14]
call fcn.00402900
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 0xc]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x3e4], ebx
je 0x402daf
push 3
push 0x421618
lea ecx, [esp + 0x18]
call fcn.004024f0
mov edx, dword [ebp + 8]
push edx
mov ecx, esi
call fcn.004027d0
test eax, eax
jne 0x402e03
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov dword [esp + 0x3e4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402de7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, 0x80000001
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp dword [esi + 0x44], ebx
je 0x402e0f
mov ecx, esi
call fcn.00401570
cmp dword [esi + 0x40], ebx
je 0x402e64
mov ecx, esi
call fcn.00401570
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov dword [esp + 0x3e4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403990
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, 2
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call fcn.00416121
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x24]
lea edi, [esi + 0x24]
push 0x2f
push eax
mov byte [esp + 0x3ec], 1
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call fcn.0040a7de
add esp, 8
cmp eax, ebx
jne 0x402ea1
or eax, 0xffffffff
jmp 0x402ea3
sub eax, dword [edi]
inc eax
push eax
lea eax, [esp + 0x30]
push eax
mov ecx, edi
call fcn.00402700
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x3e8], 2
call fcn.004025b0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402ee9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], 1
mov eax, dword [eax - 0xc]
cmp eax, ebx
je 0x402f23
mov eax, dword [esi + 0x4c]
cmp eax, ebx
je 0x402f23
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x402f23
mov edx, dword [esi + 0x4c]
lea ecx, [esp + 0x18]
push ecx
push ebx
push 0xbd8
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, esi
call fcn.004018f0
test eax, eax
jne 0x402f9a
mov byte [esp + 0x3e4], al
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402f53
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov dword [esp + 0x3e4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4038fe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
or eax, 0xffffffff
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp dword [esi + 0x40], ebx
je 0x403015
mov ecx, esi
call fcn.00401570
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402fcc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov dword [esp + 0x3e4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403990
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, 2
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp dword [ebp + 0x10], ebx
mov ecx, 0x4400010
mov dword [esp + 0x2c], ecx
jne 0x40302c
mov ecx, 0x4600010
mov dword [esp + 0x2c], ecx
mov eax, dword [edi]
push ebx
push ecx
push 0x42b110
push ebx
push str.HTTP_1.0
push eax
mov eax, dword [esi + 8]
push 0x4215dc
push eax
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
cmp eax, ebx
mov dword [esi + 0xc], eax
je 0x4035ee
xor eax, eax
mov byte [esp + 0x188], 0
mov ecx, 0x43
lea edi, [esp + 0x189]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp + 0x14]
cmp edi, ebx
je 0x4030c4
push str.Host:
lea eax, [esp + 0x18c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [esp + 0x18c]
push ecx
call edi
push 0x42160c
lea edx, [esp + 0x18c]
push edx
call edi
mov ecx, dword [esi + 0xc]
push 0x1000000
push 0xffffffffffffffff
lea eax, [esp + 0x190]
push eax
push ecx
call dword [sym.imp.WININET.dll_HttpAddRequestHeadersA]
lea edx, [esp + 0x44]
xor eax, eax
mov byte [esp + 0x68], 0
mov ecx, 0x10
lea edi, [esp + 0x69]
push edx
rep stosd dword es:[edi], eax
mov dword [esp + 0x58], ebx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov edx, dword [esp + 0x10]
cmp dword [edx - 0xc], ebx
je 0x40315a
xor eax, eax
mov dword [esp + 0x298], ebx
mov ecx, 0x4f
lea edi, [esp + 0x29c]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x298]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x40315a
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
lea ecx, [esp + 0x58]
push ecx
lea edx, [esp + 0x2b0]
push edx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
mov eax, dword [esp + 0x2b8]
push eax
mov dword [esp + 0x24], eax
lea eax, [esp + 0x6c]
push str.Range:_bytes_d_
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov dword [esp + 0x54], 1
cmp dword [esi + 0x40], ebx
je 0x40316b
mov ecx, esi
call fcn.00401570
jmp 0x403961
push ebx
push ebx
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edx, dword [esi + 0xc]
push eax
lea ecx, [esp + 0x74]
push ecx
push edx
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
jne 0x40324f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x50], eax
call fcn.00401570
mov esi, dword [esi + 0x50]
sub esi, 0x2ee2
je 0x403204
sub esi, 5
je 0x4031b9
sub esi, 0x16
jne 0x4038cf
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4031df
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, reloc.OLEAUT32.dll_VariantClear
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40322a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, VariantClear
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp dword [esi + 0x40], ebx
je 0x403260
mov ecx, esi
call fcn.00401570
jmp 0x403961
mov edx, dword [esi + 0xc]
push ebx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x44]
push ecx
push 0x20000013
push edx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x28], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
je 0x4035ee
mov eax, dword [esp + 0x3c]
xor ebx, ebx
cmp eax, 0x12e
mov dword [esp + 0x28], ebx
ja 0x4034c2
cmp eax, 0x12d
jae 0x4033ea
sub eax, 0xc8
je 0x403381
sub eax, 3
je 0x4032c7
sub eax, 3
jne 0x4034dd
mov edx, dword [esi + 0xc]
xor eax, eax
push eax
mov byte [esp + 0x144], 0
mov ecx, 0x10
lea edi, [esp + 0x145]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x148]
push ecx
push 0xb
push edx
mov dword [esp + 0x28], 0x40
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
je 0x4035ee
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x144]
push ecx
mov ecx, esi
call fcn.004029b0
mov dx, word [esp + 0x50]
cmp dx, word [esp + 0x64]
jne 0x403369
mov ax, word [esp + 0x4e]
cmp ax, word [esp + 0x62]
jne 0x403369
mov cx, word [esp + 0x4c]
cmp cx, word [esp + 0x60]
jne 0x403369
mov dx, word [esp + 0x4a]
cmp dx, word [esp + 0x5e]
jne 0x403369
mov ax, word [esp + 0x46]
cmp ax, word [esp + 0x5a]
jne 0x403369
mov cx, word [esp + 0x44]
cmp cx, word [esp + 0x58]
je 0x4034f2
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov dword [esp + 0x20], 0
jmp 0x4034e9
mov eax, dword [esp + 0x10]
mov ecx, dword [eax - 0xc]
test ecx, ecx
jne 0x4033de
mov ecx, esi
call fcn.00401570
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4033b9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, 0x80000002
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
jmp 0x4034f2
push 0x401
call fcn.0041602f
mov ebx, eax
xor eax, eax
mov ecx, pe_nt_image_headers32
mov edi, ebx
rep stosd dword es:[edi], eax
add esp, 4
stosb byte es:[edi], al
mov ecx, dword [esi + 0xc]
push 0
lea eax, [esp + 0x18]
push eax
push ebx
push 0x21
push ecx
mov dword [esp + 0x28], 0x400
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
push ebx
jne 0x40345f
call fcn.00416034
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x50], eax
call fcn.00401570
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x4038eb
lea ecx, [esi + 0x48]
call fcn.00402790
mov ecx, esi
call fcn.00401570
push ebx
call fcn.00416034
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
add esp, 4
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40349d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, 1
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
sub eax, 0x193
je 0x403cad
dec eax
je 0x403c52
sub eax, 0x60
je 0x403bfe
mov eax, dword [esp + 0x54]
test eax, eax
je 0x403bf0
mov ebx, 1
mov dword [esp + 0x28], ebx
mov eax, dword [esi + 0x40]
test eax, eax
je 0x403505
mov ecx, esi
call fcn.00401570
jmp 0x403961
test ebx, ebx
je 0x403603
mov eax, dword [esi + 0xc]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi + 0x24]
mov edx, dword [esi + 8]
push 0
push ecx
push 0x42b110
push 0
push str.HTTP_1.0
push eax
push 0x4215dc
push edx
call dword [sym.imp.WININET.dll_HttpOpenRequestA]
test eax, eax
mov dword [esi + 0xc], eax
je 0x4035ee
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x403565
push 0x1000000
push 0xffffffffffffffff
lea ecx, [esp + 0x190]
push ecx
push eax
call dword [sym.imp.WININET.dll_HttpAddRequestHeadersA]
mov eax, dword [esi + 0x40]
test eax, eax
je 0x403594
mov ecx, esi
call fcn.00401570
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x40397d
mov eax, dword [esi + 0xc]
push 0
push 0
push 0
push 0
push eax
call dword [sym.imp.WININET.dll_HttpSendRequestA]
test eax, eax
je 0x4035ee
mov eax, dword [esi + 0x40]
test eax, eax
je 0x4035bd
mov ecx, esi
call fcn.00401570
jmp 0x403961
mov edx, dword [esi + 0xc]
push 0
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x44]
push ecx
push 0x20000013
push edx
mov dword [esp + 0x28], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
je 0x4035ee
cmp dword [esp + 0x3c], 0xc8
je 0x403603
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x50], eax
call fcn.00401570
jmp 0x4038cf
mov edx, dword [esi + 0xc]
xor eax, eax
mov byte [esp + 0xb0], 0
mov ecx, 0x10
lea edi, [esp + 0xb1]
rep stosd dword es:[edi], eax
mov edi, dword [sym.imp.WININET.dll_HttpQueryInfoA]
xor ebx, ebx
push ebx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0xb8]
push ecx
push 0xb
push edx
mov dword [esp + 0x28], 0x40
call edi
test eax, eax
je 0x403659
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0xb4]
push ecx
mov ecx, esi
call fcn.004029b0
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 0x40368b
mov dword [esp + 0x40], 0x32000
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
add edx, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], 2
cmp dword [ecx - 0xc], ebx
je 0x4036d1
mov eax, dword [esi + 0x4c]
cmp eax, ebx
je 0x4036d1
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4036d1
mov eax, dword [esi + 0x4c]
lea edx, [esp + 0x18]
push edx
push ebx
push 0xbd8
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
cmp dword [esi + 0x40], ebx
je 0x4036e2
mov ecx, esi
call fcn.00401570
jmp 0x403961
mov eax, dword [esp + 0x10]
push ebx
push 1
call fcn.004012b0
add esp, 8
test eax, eax
je 0x403719
mov eax, dword [esp + 0x10]
push 0
push 0x80
push 4
push 0
push 1
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x40376b
mov ecx, esi
call fcn.00401570
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403746
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, 0x80000003
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea edx, [esp + 0x30]
push edx
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4037a9
push 0
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
jmp 0x4037b6
push 2
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0x1001
call fcn.0041602f
add esp, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x18], 3
jmp 0x4037e0
mov edi, dword [esp + 0x28]
xor eax, eax
mov ecx, 0x400
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov eax, dword [esi + 0x40]
test eax, eax
jne 0x403918
mov edi, dword [esp + 0x28]
mov ecx, dword [esi + 0xc]
lea eax, [esp + 0x38]
push eax
push 0x1000
push edi
push ecx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x4039ac
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
add eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x403850
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x403850
mov ecx, dword [esi + 0x4c]
lea eax, [esp + 0x18]
push eax
push 0
push 0xbd8
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esp + 0x38]
test eax, eax
jbe 0x40387c
push 0
lea edx, [esp + 0x30]
push edx
push eax
push edi
push ebx
mov dword [esp + 0x40], 0
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [esp + 0x38]
test eax, eax
ja 0x4037e0
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x1c]
jae 0x403a50
mov ecx, esi
call fcn.00401570
push edi
call fcn.00416034
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea eax, [esp + 0x30]
push eax
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4038f5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
or eax, 0xffffffff
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esp + 0x28]
push eax
call fcn.00416034
add esp, 4
mov ecx, esi
call fcn.00401570
push ebx
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea eax, [esp + 0x30]
push eax
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403987
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, 2
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
mov dword [esi + 0x50], eax
mov eax, dword [esp + 0x28]
push eax
call fcn.00416034
add esp, 4
call edi
mov ecx, esi
mov dword [esi + 0x50], eax
call fcn.00401570
push ebx
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea eax, [esp + 0x30]
push eax
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403a2b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, reloc.OLEAUT32.dll_VariantCopy
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x403a78
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x403a78
mov ecx, dword [esi + 0x4c]
lea eax, [esp + 0x18]
push eax
push 0
push 0xbd8
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
xor eax, eax
push eax
mov byte [esp + 0xfc], 0
mov ecx, 0x10
lea edi, [esp + 0xfd]
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0xc]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x100]
push eax
push 0x17
push ecx
mov dword [esp + 0x28], 0x40
call dword [sym.imp.WININET.dll_HttpQueryInfoA]
test eax, eax
jne 0x403ac8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x50], eax
call fcn.00401570
jmp 0x403af9
push 0x4215f0
lea edx, [esp + 0xfc]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x403ae8
mov ecx, esi
call fcn.00401570
jmp 0x403af9
mov eax, dword [esi + 0xc]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov dword [esi + 0xc], 0
mov ecx, dword [esp + 0x28]
push ecx
call fcn.00416034
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea ecx, [esp + 0x30]
push ecx
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [ebp + 0xc]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x403b5c
push 0x80
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov edx, dword [esp + 0x10]
push esi
push edx
call dword [sym.imp.KERNEL32.dll_MoveFileA]
or edx, 0xffffffff
test eax, eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0x3e4], 0
jne 0x403bb7
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403b92
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, VariantClear
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403bce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
xor eax, eax
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi + 0x50], eax
jmp 0x4038cf
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi + 0x50], eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403c2d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, reloc.COMCTL32.dll_InitCommonControls
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x50], eax
call fcn.00401570
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403c88
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov eax, VariantClear
mov ecx, dword [esp + 0x3dc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, esi
mov dword [esi + 0x50], eax
call fcn.00401570
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x3e4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403ce3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x10]
call fcn.004017b0
mov ecx, dword [esp + 0x3dc]
pop edi
pop esi
mov eax, InitCommonControls
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x10