Function at 0x4ac470
Capabilities:
Copy file
Get file size
Read and send data from client to server
Read file via mapping
Send data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f6da0
mov eax, dword fs:[0]
push eax
sub esp, 0x60
push ebx
push esi
push edi
mov eax, dword [0x5470b0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 4], 3
xor eax, eax
push ecx
xor esi, esi
mov edi, esp
mov dword [ebp - 0x28], esp
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x28], edi
call fcn.004c31da
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x4ac4ed
push 0x80004005
call fcn.00422000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [edi], eax
mov ecx, 0x51b4f8
mov byte [ebp - 4], 4
test ecx, 0xffff0000
jne 0x4ac526
mov edx, ecx
movzx ebx, dx
push ebx
call fcn.004cb124
cmp eax, esi
je 0x4ac540
push ebx
push eax
mov ecx, edi
call fcn.00424e92
jmp 0x4ac540
push 0x51b4f8
call fcn.004d1e6a
add esp, 4
push eax
push 0x51b4f8
mov ecx, edi
call fcn.00425415
lea eax, [ebp - 0x10]
push eax
mov byte [ebp - 4], 3
call fcn.00474900
add esp, 8
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp + 0xc]
push esi
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x4ac65c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [ebp - 0x10]
push ecx
mov ecx, esp
mov dword [ebp - 0x28], esp
push eax
mov eax, dword [ebp + 0xc]
push edx
push eax
push str.HttpPutFile__s_:_error_copying_file_____s__LE_d
push ecx
call fcn.00475230
add esp, 0x14
call fcn.004abeb0
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac5b9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac5dc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac5ff
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac622
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac648
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x10]
push esi
push esi
push 3
push esi
push esi
push SysReAllocStringLen
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov dword [ebp - 0x28], edi
cmp edi, 0xffffffff
jne 0x4ac78d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
mov edx, esp
mov dword [ebp - 0x28], esp
push eax
mov eax, dword [ebp - 0x10]
push eax
push str.HttpPutFile__s_:_error_opening_file__LE_d
push edx
call fcn.00475230
add esp, 0x10
call fcn.004abeb0
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
mov dword [ebp - 0x28], esp
mov esi, esp
push eax
call fcn.00425486
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.00478330
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac6e6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac709
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac72c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac74f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac648
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x44]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x6c], 0x28
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x48], esi
mov eax, dword [eax - 0xc]
xor ecx, ecx
cmp eax, esi
mov eax, dword [ebp + 0x10]
setne cl
mov dword [ebp - 0x24], ecx
cmp dword [eax - 0xc], esi
je 0x4ac7de
mov dword [ebp - 0x64], eax
mov edx, dword [eax - 0xc]
mov dword [ebp - 0x60], edx
mov ebx, dword [ebp + 8]
push esi
push esi
push esi
lea eax, [ebp - 0x6c]
push eax
push ebx
call dword [sym.imp.WININET.dll_HttpSendRequestExW]
test eax, eax
jne 0x4ac90d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
mov ecx, esp
mov dword [ebp - 0x28], esp
push eax
push str.HttpPutFile:_error_on_HttpSendRequestEx__d
push ecx
call fcn.00475230
add esp, 0xc
call fcn.004abeb0
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x10]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x28], esp
mov esi, esp
push eax
call fcn.00425486
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.00478330
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ac866
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac889
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac8ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac8cf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac648
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x24], esi
je 0x4ac982
mov ecx, dword [ebp + 0x18]
push ecx
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x1c], esi
call fcn.00428760
mov edx, dword [ebp + 0x18]
mov ecx, dword [edx - 0xc]
mov eax, dword [eax]
lea edx, [ebp - 0x1c]
push edx
push ecx
push eax
push ebx
call dword [sym.imp.WININET.dll_InternetWriteFile]
mov ebx, eax
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
mov dword [ebp - 0x18], ebx
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac95a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp ebx, esi
je 0x4ac9f5
mov edx, dword [ebp - 0x1c]
push ecx
mov ecx, esp
mov dword [ebp - 0x20], esp
push edx
push str.HttpPutFile_multipart_:__d_bytes_sent
push ecx
call fcn.00475230
add esp, 0xc
call fcn.004abeb0
add esp, 4
push esi
push esi
push esi
push 2
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x38], esi
cmp eax, esi
je 0x4acc03
call fcn.004746e0
mov ecx, eax
xor edx, edx
mov eax, 0x400000
div dword [ecx + 0x1c]
mov esi, eax
call fcn.004746e0
mov eax, dword [eax + 0x1c]
mov edx, dword [ebp - 0x44]
imul eax, esi
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x18], 1
xor eax, eax
cmp eax, dword [ebp - 0x30]
jg 0x4acb0b
jl 0x4ac9ed
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [ebp - 0x34]
jae 0x4acb0b
mov edi, dword [ebp - 0x14]
jmp 0x4acb0e
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
mov ecx, esp
mov dword [ebp - 0x28], esp
push eax
push str.HttpPutFile_multipart_:_could_not_send_bytes__LE_d
push ecx
call fcn.00475230
add esp, 0xc
call fcn.004abeb0
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x10]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x28], esp
mov esi, esp
push eax
call fcn.00425486
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.00478330
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4aca64
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4aca87
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acaaa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acacd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac648
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x20]
push edi
push edx
push eax
push 4
push ecx
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
xor esi, esi
mov ebx, eax
test edi, edi
jbe 0x4acbab
nop
mov eax, edi
sub eax, esi
mov dword [ebp - 0x1c], 0
cmp eax, 0xa000
jbe 0x4acb47
mov eax, 0xa000
mov ecx, dword [ebp + 8]
lea edx, [ebp - 0x1c]
push edx
push eax
lea eax, [esi + ebx]
push eax
push ecx
call dword [sym.imp.WININET.dll_InternetWriteFile]
mov dword [ebp - 0x18], eax
test eax, eax
je 0x4acb87
add esi, dword [ebp - 0x1c]
push ecx
mov edx, esp
mov dword [ebp - 0x2c], esp
push esi
push str.HttpPutFile:__d_bytes_sent
push edx
call fcn.00475230
add esp, 0xc
call fcn.004abeb0
add esp, 4
cmp esi, edi
jb 0x4acb30
jmp 0x4acbab
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
push esi
push str.HttpPutFile:_could_not_send_bytes_sent_at__d__LE_d
push ecx
call fcn.00475230
add esp, 0x10
call fcn.004abeb0
add esp, 4
mov esi, dword [ebp - 0x30]
xor eax, eax
cmp esi, eax
jl 0x4acbc8
jg 0x4acbbe
mov edx, dword [ebp - 0x34]
cmp edx, dword [ebp - 0x14]
jbe 0x4acbc8
mov ecx, dword [ebp - 0x14]
sub dword [ebp - 0x34], ecx
sbb esi, eax
jmp 0x4acbcd
xor esi, esi
mov dword [ebp - 0x34], esi
mov edx, dword [ebp - 0x14]
add dword [ebp - 0x3c], edx
push ebx
mov dword [ebp - 0x30], esi
adc dword [ebp - 0x38], eax
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
test esi, esi
jg 0x4ac9d4
jl 0x4acbf4
cmp dword [ebp - 0x34], 0
ja 0x4ac9d4
mov eax, dword [ebp - 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x28]
xor esi, esi
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x10]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x2c], esp
mov edi, esp
push eax
call fcn.00425486
add eax, 0x10
add esp, 4
mov dword [edi], eax
call fcn.00478330
add esp, 4
cmp dword [ebp - 0x24], esi
je 0x4ace09
lea ecx, [ebp + 0x14]
push ecx
lea edx, [ebp - 0x28]
push str._r_n__
push edx
mov dword [ebp - 0x24], esi
call fcn.00424a99
push 0x52cf40
push eax
lea eax, [ebp - 0x14]
push eax
mov byte [ebp - 4], 6
call fcn.00424a44
add esp, 0x18
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acc83
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x14]
push ecx
lea ecx, [ebp - 0x20]
call fcn.00428760
mov edx, dword [ebp - 0x14]
mov ecx, dword [edx - 0xc]
mov eax, dword [eax]
lea edx, [ebp - 0x24]
push edx
push ecx
push eax
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.WININET.dll_InternetWriteFile]
cmp eax, esi
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x20]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4accce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x4acde6
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
push str.HttpPutFile_multipart_:_could_not_send_close_delimiter__LE_d
push ecx
call fcn.00475230
add esp, 0xc
call fcn.004abeb0
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4acd1c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acd3f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acd62
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acd85
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acda8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac648
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ace09
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x18]
cmp edi, esi
jne 0x4acf01
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
push str.Error_on_InternetWriteFile__LE_d
push ecx
call fcn.00475230
add esp, 0xc
call fcn.004abeb0
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ace5a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ace7d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acea0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acec3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac648
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 8]
push esi
push esi
push esi
push ecx
call dword [sym.imp.WININET.dll_HttpEndRequestW]
test eax, eax
jne 0x4ad003
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
mov edx, esp
mov dword [ebp - 0x2c], esp
push eax
push str.HttpPutFile:_error_on_HttpEndRequest__LE_d
push edx
call fcn.00475230
add esp, 0xc
call fcn.004abeb0
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acf5c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acf7f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acfa2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4acfc5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ac648
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ad026
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ad049
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ad06c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ad08f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ad0b5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret