Function at 0x47bbe0
Capabilities:
Check for time delay via gettickcount
Download and write a file
Read data from internet
Receive and write data from server to client
Receive data
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b39eb
mov eax, dword fs:[0]
push eax
sub esp, 0x88
mov eax, dword [0x677e70]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x2c], edi
mov eax, dword [ebp + 8]
push 0x20
mov dword [ebp - 0x8c], eax
call fcn.0053ea92
mov ecx, eax
add esp, 4
mov dword [ebp - 0x60], ecx
test ecx, ecx
je 0x47bc59
mov dword [ecx], 0
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x18], 0
jmp 0x47bc5b
xor ecx, ecx
mov eax, dword [edi + 0x2570]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x2574]
mov dword [ecx + 0x14], eax
mov eax, dword [edi + 0x2568]
mov dword [ecx + 8], eax
mov eax, dword [edi + 0x256c]
push ecx
mov dword [ecx + 0xc], eax
mov dword [ecx], 0
push dword [edi + 0x24d8]
push 0x8c7
push dword [edi + 0x24d4]
call dword [sym.imp.USER32.dll_PostMessageW]
push 0x8000
call fcn.0053e9a2
add esp, 4
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x94], vtable.CAutoObjPtr_unsigned_char_.0
mov dword [ebp - 0x90], eax
mov ecx, dword [edi + 0x2570]
xorps xmm0, xmm0
movups xmmword [ebp - 0x78], xmm0
mov dword [ebp - 0x74], eax
mov esi, 0x3f
mov eax, dword [edi + 0x2574]
shrd ecx, eax, 0xa
movups xmmword [ebp - 0x88], xmm0
sar eax, 0xa
mov dword [ebp - 4], 0
mov edi, eax
movq qword [ebp - 0x68], xmm0
mov dword [ebp - 0x88], 0x28
mov dword [ebp - 0x58], 0x80004005
mov dword [ebp - 0x30], ecx
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [ebp - 0x30]
and ecx, edi
or edx, ecx
jne 0x47bd2d
sub esi, 1
jns 0x47bd08
mov edi, dword [ebp - 0x2c]
lea eax, [esi + 0xb]
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
mov esi, dword [edi + 0x2538]
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, esi
mov dword [ebp - 0x38], ecx
cmovae edx, ecx
or eax, dword [edi + 0x253c]
mov dword [ebp - 0x34], edx
je 0x47bd86
mov eax, dword [edi + 0x253c]
shld eax, esi, 1
add esi, esi
cmp esi, ecx
jne 0x47bd72
cmp eax, edx
je 0x47bd86
push 1
push dword [ebp - 0x5c]
call fcn.0053eb9c
mov eax, 0x80004005
jmp 0x47c337
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov dword [ebp - 0x54], 0
mov eax, 0x10624dd3
mul ecx
mov eax, dword [edi + 0x2568]
shr edx, 6
dec edx
sub eax, dword [edi + 0x2570]
mov dword [ebp - 0x3c], eax
mov esi, edx
mov eax, dword [edi + 0x256c]
sbb eax, dword [edi + 0x2574]
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x40], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
add eax, 0x1f4
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x40], 0
jl 0x47c2f0
jg 0x47bde7
cmp dword [ebp - 0x3c], 0
jbe 0x47c2f0
lea eax, [ebp - 0x60]
mov ecx, edi
push eax
call fcn.0047aec0
cmp dword [ebp - 0x60], 0
jne 0x47c2e7
nop dword [eax]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub esi, dword [ebp - 0x28]
mov ecx, eax
imul esi, dword [ebp - 0x54]
mov eax, 0x10624dd3
mul ecx
mov eax, esi
mov ecx, edx
xor edx, edx
shr ecx, 6
mov dword [ebp - 0x30], ecx
sub ecx, dword [ebp - 0x28]
div ecx
mov ecx, dword [ebp - 0x30]
mov esi, ecx
mov edx, eax
add ecx, 0xffffffec
mov eax, dword [ebp - 0x28]
cmp eax, ecx
mov dword [ebp - 0x54], edx
cmovb eax, ecx
mov dword [ebp - 0x28], eax
cmp edx, dword [edi + 0x2540]
jbe 0x47be8e
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
push dword [edi + 0x24d8]
push dword [edi + 0x24d4]
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [edi + 0x2548]
mov ecx, 0xea60
push 0
lea eax, [eax + eax*4]
cmp eax, ecx
cmova ecx, eax
push ecx
push dword [edi + 0x24d8]
push dword [edi + 0x24d4]
call dword [sym.imp.USER32.dll_SetTimer]
jmp 0x47be00
cmp dword [ebp - 0x40], 0
mov dword [ebp - 0x70], 0x8000
jg 0x47beaa
mov eax, dword [ebp - 0x3c]
jl 0x47bea7
cmp eax, 0x8000
jae 0x47beaa
mov dword [ebp - 0x70], eax
push dword [edi + 0x24d8]
push dword [edi + 0x24d4]
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [edi + 0x2548]
mov ecx, 0xea60
push 0
lea eax, [eax + eax*4]
cmp eax, ecx
cmova ecx, eax
push ecx
push dword [edi + 0x24d8]
push dword [edi + 0x24d4]
call dword [sym.imp.USER32.dll_SetTimer]
push str.InternetReadFileExA_CHttpTask::DownloadInternetFile
push edi
push 4
lea eax, [ebp - 0x88]
push eax
push dword [ebp - 0x8c]
call dword [sym.imp.WININET.dll_InternetReadFileExA]
push eax
mov ecx, edi
call fcn.0047ce10
test eax, eax
js 0x47c32a
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x48], edx
test edx, edx
je 0x47c2f0
mov eax, dword [edi + 0x24d0]
cmp eax, 3
ja case.default.0x47bf28
jmp dword [eax*4 + 0x47c358]
mov eax, dword [edi + 0x2524]
push edx
push dword [ebp - 0x74]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x48], edx
jmp case.default.0x47bf28
push edx
push dword [ebp - 0x74]
lea ecx, [edi + 0x44]
call fcn.0047ea70
test al, al
je 0x47c2bd
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x48], edx
jmp case.default.0x47bf28
push 0
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], 0
push eax
push edx
push dword [ebp - 0x74]
push dword [edi + 0x252c]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x47c2d2
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x48], edx
cmp edx, dword [ebp - 0x24]
jne 0x47c2d2
mov eax, dword [edi + 0x2574]
mov ecx, dword [ebp - 0x34]
mov esi, dword [edi + 0x2570]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x38]
sub eax, 0xa
mov byte [ebp - 0x1d], 0
sbb ecx, 0
mov dword [ebp - 0x24], ecx
mov ecx, edx
xor edx, edx
add ecx, esi
mov dword [edi + 0x2570], ecx
adc edx, dword [ebp - 0x4c]
mov dword [edi + 0x2574], edx
cmp edx, dword [ebp - 0x24]
jl 0x47c15b
jg 0x47bfe7
cmp ecx, eax
jbe 0x47c15b
mov edx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x50]
nop dword [eax]
mov edi, dword [ebp - 0x4c]
cmp edi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x2c]
jg 0x47c030
jl 0x47c001
cmp esi, eax
jae 0x47c030
sub eax, esi
lea ecx, [eax + 0xa]
cmp ecx, edx
cmovb edx, ecx
cmp eax, edx
jae 0x47c063
mov esi, dword [ebp - 0x50]
lea ecx, [ebp - 0x1c]
sub ecx, eax
mov dword [ebp - 0x24], ecx
mov edi, ecx
nop dword [eax]
mov cl, byte [eax + esi]
mov byte [eax + edi], cl
inc eax
cmp eax, edx
jb 0x47c020
mov edi, dword [ebp - 0x2c]
jmp 0x47c063
mov edi, dword [ebp - 0x34]
cmp dword [ebp - 0x4c], edi
mov edi, dword [ebp - 0x2c]
jg 0x47c063
jl 0x47c042
cmp esi, dword [ebp - 0x38]
jae 0x47c063
sub esi, eax
mov eax, 0xa
add edx, esi
cmp edx, 0xa
cmova edx, eax
cmp esi, edx
jae 0x47c063
sub ecx, esi
mov al, byte [esi + ecx]
mov byte [ebp + esi - 0x1c], al
inc esi
cmp esi, edx
jb 0x47c057
mov eax, dword [ebp - 0x34]
cmp dword [edi + 0x2574], eax
jl 0x47c0f8
jg 0x47c07f
mov eax, dword [ebp - 0x38]
cmp dword [edi + 0x2570], eax
jb 0x47c0f8
push 0xa
lea eax, [ebp - 0x1c]
push eax
push dword [edi + 0x2530]
call fcn.0047fe20
mov ecx, dword [ebp - 0x38]
add esp, 0xc
mov edx, dword [ebp - 0x70]
mov esi, ecx
mov dword [edi + 0x2530], eax
mov eax, dword [ebp - 0x34]
mov dword [edi + 0x2538], ecx
add ecx, dword [ebp - 0x74]
mov dword [edi + 0x253c], eax
mov dword [ebp - 0x4c], eax
mov eax, esi
mov dword [ebp - 0x50], ecx
sub edx, eax
mov ecx, dword [ebp - 0x34]
shld ecx, eax, 1
mov byte [ebp - 0x1d], 1
add eax, eax
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], eax
sub eax, 0xa
sbb ecx, 0
cmp dword [edi + 0x2574], ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x50]
jg 0x47bff0
jl 0x47c0fe
cmp dword [edi + 0x2570], eax
ja 0x47bff0
jmp 0x47c0fe
cmp byte [ebp - 0x1d], 0
je 0x47c15b
push 0x10
call fcn.0053ea92
mov ecx, eax
add esp, 4
mov dword [ebp - 0x24], ecx
test ecx, ecx
je 0x47c127
mov dword [ecx], 0
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
jmp 0x47c129
xor ecx, ecx
mov eax, dword [edi + 0x2538]
mov dword [ecx + 8], eax
mov eax, dword [edi + 0x253c]
mov dword [ecx + 0xc], eax
mov eax, dword [edi + 0x2530]
push ecx
mov dword [ecx], eax
push dword [edi + 0x24d8]
push 0x8c9
push dword [edi + 0x24d4]
call dword [sym.imp.USER32.dll_PostMessageW]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov eax, 0x10624dd3
mul ecx
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x28]
mov esi, edx
imul eax, dword [ebp - 0x54]
xor edx, edx
shr esi, 6
mov ecx, esi
mov dword [ebp - 0x24], esi
sub ecx, dword [ebp - 0x28]
div ecx
lea ecx, [esi - 0x14]
mov esi, dword [ebp - 0x70]
mov edi, eax
mov eax, dword [ebp - 0x28]
cmp eax, ecx
cmovb eax, ecx
sub dword [ebp - 0x3c], esi
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x2c]
sbb dword [ebp - 0x40], 0
mov dword [eax + 0x2560], edi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov eax, 0x10624dd3
mul ecx
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x28]
imul eax, edi
mov edi, dword [ebp - 0x28]
shr edx, 6
mov dword [ebp - 0x30], edx
add eax, esi
mov esi, edx
mov ecx, esi
xor edx, edx
sub ecx, edi
div ecx
mov dword [ebp - 0x54], eax
lea eax, [esi - 0x14]
cmp edi, eax
cmovb edi, eax
mov dword [ebp - 0x28], edi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebp - 0x44]
cmp eax, 0x1f4
jbe 0x47c2b5
cmp dword [ebp - 0x70], 0xa
jbe 0x47c2b5
push 0x20
call fcn.0053ea92
mov esi, eax
add esp, 4
mov dword [ebp - 0x44], esi
test esi, esi
je 0x47c23f
mov dword [esi], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
jmp 0x47c241
xor esi, esi
mov edi, dword [ebp - 0x2c]
push 0xa
mov eax, dword [edi + 0x2570]
mov dword [esi + 0x10], eax
mov eax, dword [edi + 0x2574]
mov dword [esi + 0x14], eax
mov eax, dword [edi + 0x2568]
mov dword [esi + 8], eax
mov eax, dword [edi + 0x256c]
mov dword [esi + 0xc], eax
mov eax, dword [edi + 0x2560]
mov dword [esi], eax
mov ecx, dword [ebp - 0x74]
mov eax, dword [ebp - 0x70]
add ecx, 0xfffffff6
add eax, ecx
push eax
push dword [edi + 0x2530]
call fcn.0047fe20
add esp, 0xc
mov dword [esi + 0x18], eax
push esi
push dword [edi + 0x24d8]
push 0x8c8
push dword [edi + 0x24d4]
call dword [sym.imp.USER32.dll_PostMessageW]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [ebp - 0x30]
jmp 0x47bdce
mov edi, dword [ebp - 0x2c]
jmp 0x47bdd1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push str.m_file.Write_CHttpTask::DownloadInternetFile
push eax
mov ecx, edi
call fcn.0047e190
jmp 0x47c32a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push str.m_hFileSaveTo.WriteFile_CHttpTask::DownloadInternetFile
push eax
mov ecx, edi
call fcn.0047e190
jmp 0x47c32a
mov dword [ebp - 0x58], 0x80004004
jmp 0x47c32a
mov ecx, dword [edi + 0x2568]
mov eax, dword [edi + 0x256c]
cmp ecx, 0xffffffff
jne 0x47c308
cmp eax, 0x7fffffff
je 0x47c323
cmp dword [edi + 0x2574], eax
jg 0x47c323
jl 0x47c31a
cmp dword [edi + 0x2570], ecx
jae 0x47c323
mov dword [ebp - 0x58], 0x8000ffff
jmp 0x47c32a
mov dword [ebp - 0x58], 0
push 1
push dword [ebp - 0x5c]
call fcn.0053eb9c
mov eax, dword [ebp - 0x58]
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0053e4b1
mov esp, ebp
pop ebp
ret 4