Function at 0x405ac0
Capabilities:
Check http status code
Check os version
Get number of processors
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x4c71db
mov eax, dword fs:[0]
push eax
mov eax, 0x309c
call fcn.004ae530
mov eax, dword [0x4f8458]
xor eax, esp
mov dword [esp + 0x3098], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4f8458]
xor eax, esp
push eax
lea eax, [esp + 0x30b0]
mov dword fs:[0], eax
xor eax, eax
xor edi, edi
push 0x1fff
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov byte [esp + 0x10b0], al
lea eax, [esp + 0x10b1]
push edi
push eax
mov esi, ecx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x38], edi
call fcn.0049d900
mov eax, dword [esi + 0x24]
mov edx, 8
add esp, 0xc
cmp dword [eax + 0x38], edx
jb 0x405b70
mov ecx, dword [eax + 0x24]
jmp 0x405b73
lea ecx, [eax + 0x24]
cmp dword [eax + 0x1c], edx
jb 0x405b7d
mov eax, dword [eax + 8]
jmp 0x405b80
add eax, 8
push ecx
push eax
push esi
push str.DownloadFile_begin__this0x_x__pUrl_s__pFileName_s
push 2
push str..ShortcutManagerMiniDownload.cpp
call fcn.004bc3d0
mov ecx, dword [esi + 0x18]
mov ebp, dword [0x4cf340]
add esp, 0x18
push ecx
call ebp
mov edx, dword [esi + 0x1c]
push edx
call ebp
mov eax, dword [esi + 0x24]
push 0xffffffffffffffff
mov ebx, 4
add eax, ebx
push edi
lea ecx, [esp + 0x98]
mov dword [esp + 0xb0], 7
mov dword [esp + 0xac], edi
mov word [esp + 0x9c], di
call fcn.00402780
push 0x3c
lea eax, [esp + 0x58]
push edi
push eax
mov dword [esp + 0x30c4], edi
call fcn.0049d900
mov eax, 1
add esp, 0xc
cmp dword [esp + 0xa8], 8
mov dword [esp + 0x68], eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x54], 0x3c
jae 0x405c23
lea eax, [esp + 0x94]
lea ecx, [esp + 0x54]
push ecx
push edi
push edi
push eax
call dword [0x4cf618]
test eax, eax
je 0x405e12
mov edi, dword [esp + 0x68]
cmp edi, 0x400
jae 0x405e12
cmp dword [esp + 0x84], 0x400
jae 0x405e12
cmp dword [esi + 8], 0
je 0x405e12
push 0x7fe
lea edx, [esp + 0x8b2]
push 0
push edx
mov word [esp + 0x8b8], 0
call fcn.0049d900
mov eax, dword [esp + 0x70]
add esp, 0xc
push edi
push eax
lea ecx, [esp + 0x8b4]
push ecx
call fcn.00494ae4
mov edx, dword [esp + 0x74]
add esp, 0xc
xor edi, edi
push 0x7fe
lea eax, [esp + 0xb2]
push edi
push eax
mov word [esp + edx*2 + 0x8b8], di
mov word [esp + 0xb8], di
call fcn.0049d900
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
add esp, 0xc
push ecx
push edx
lea eax, [esp + 0xb4]
push eax
call fcn.00494ae4
mov ecx, dword [esp + 0x90]
add esp, 0xc
mov word [esp + ecx*2 + 0xac], di
push 0
lea edi, [esi + 0x10]
push edi
call dword [0x4cf344]
mov eax, dword [esi + 8]
push esi
push 0
push 3
push 0
push 0
push 0
lea edx, [esp + 0x8c4]
push edx
push eax
call dword [0x4cf61c]
test eax, eax
jne 0x405d42
call dword [0x4cf348]
cmp eax, 0x3e5
jne 0x405e12
call fcn.004062f0
test eax, eax
je 0x405d4a
jmp 0x405e12
push eax
push edi
call dword [0x4cf344]
mov ecx, dword [esi + 0x18]
push ecx
call ebp
mov eax, dword [edi]
push esi
push 0x4000000
push 0
push 0
push str.HTTP_1.0
lea edx, [esp + 0xc0]
push edx
push 0x4d34c8
push eax
call dword [0x4cf5fc]
test eax, eax
jne 0x405d95
call dword [0x4cf348]
cmp eax, 0x3e5
jne 0x405e12
call fcn.004062f0
test eax, eax
je 0x405da0
jmp 0x405e12
push eax
lea ecx, [esi + 0xc]
push ecx
call dword [0x4cf344]
mov edx, dword [esi + 0x18]
push edx
call ebp
mov eax, dword [esi + 0xc]
push 0
push 0
push 0
push 0
push eax
call dword [0x4cf600]
test eax, eax
jne 0x405dd2
call dword [0x4cf348]
cmp eax, 0x3e5
jne 0x405e12
call fcn.004062f0
test eax, eax
jne 0x405e12
mov eax, dword [esi + 0xc]
mov ebp, dword [0x4cf604]
push 0
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x28]
push edx
push 0x20000013
push eax
mov dword [esp + 0x3c], ebx
call ebp
test eax, eax
mov edi, 2
jne 0x405ec9
push str.DownloadFile_error3
push str..ShortcutManagerMiniDownload.cpp
call fcn.004bc4a0
add esp, 8
mov ebp, 1
push ebp
push esi
push str.ERROR_EXIT__this0x_x__dwErrCode_d
push str..ShortcutManagerMiniDownload.cpp
mov edi, 2
call fcn.004bc4a0
mov eax, dword [esp + 0x2c]
add esp, 0x10
test eax, eax
je 0x405e41
push eax
call fcn.00494a68
add esp, 4
mov ecx, dword [esi + 0xc]
test ecx, ecx
lea edi, [esi + 0xc]
je 0x406140
mov edx, dword [edi]
push edx
call dword [0x4cf614]
push 0
push edi
call dword [0x4cf344]
mov eax, dword [esi + 0x10]
lea ebx, [esi + 0x10]
push eax
call dword [0x4cf614]
push 0
push ebx
mov dword [esp + 0x24], eax
call dword [0x4cf344]
call dword [0x4cf348]
push 0
push edi
mov ebx, eax
call dword [0x4cf344]
mov ecx, dword [esp + 0x1c]
push ebx
push ecx
push esi
push str.InternetCloseHandle__this0x_x__bRet_d__LastError_d
push str..ShortcutManagerMiniDownload.cpp
mov edi, 2
call fcn.004bc4a0
mov eax, dword [esi + 0x14]
add esp, 0x14
cmp eax, 6
jg 0x406121
test eax, eax
jle 0x406121
mov edx, dword [esi + 0x1c]
push 0x64
push edx
jmp 0x406127
mov ecx, dword [esp + 0x20]
push ecx
push str.HttpQueryInfo__return_StatusCode_d
push str..ShortcutManagerMiniDownload.cpp
call fcn.004bc4a0
add esp, 0xc
cmp dword [esp + 0x20], 0xc8
je 0x405ef4
push str.DownloadFile_error4
jmp 0x405e05
mov ecx, dword [esi + 0xc]
push 0
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x20]
push eax
push 0x20000005
push ecx
mov dword [esp + 0x38], ebx
call ebp
test eax, eax
jne 0x405f1d
push str.DownloadFile_error5
jmp 0x405e05
mov edx, dword [esp + 0x18]
push edx
push str.HttpQueryInfo__return_ContentLength_d
push str..ShortcutManagerMiniDownload.cpp
call fcn.004bc4a0
mov eax, dword [esi + 0x28]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x30]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
add esp, 0xc
push eax
mov eax, dword [esi + 0x24]
mov eax, dword [eax]
push eax
call edx
mov eax, dword [esi + 0x24]
add eax, 0x20
mov edi, 8
cmp dword [eax + 0x18], edi
jb 0x405f61
mov eax, dword [eax + 4]
jmp 0x405f64
add eax, 4
push 0x4d3558
push eax
call fcn.00494802
mov ebx, eax
mov eax, dword [esi + 0x24]
add eax, 0x20
add esp, 8
cmp dword [eax + 0x18], edi
mov dword [esp + 0x1c], ebx
jb 0x405f88
mov eax, dword [eax + 4]
jmp 0x405f8b
add eax, 4
push ebx
push eax
push str.open_file__filename_s__pFileSave0x_x
push 2
push str..ShortcutManagerMiniDownload.cpp
call fcn.004bc3d0
add esp, 0x14
test ebx, ebx
jne 0x405fc2
push str.DownloadFile_error6
push str..ShortcutManagerMiniDownload.cpp
lea edi, [ebx + 2]
call fcn.004bc4a0
add esp, 8
lea ebp, [ebx + 3]
jmp 0x405e17
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov dword [esp + 0x2c], 0x28
jbe 0x4060c8
cmp ebp, 0x2000
lea eax, [esp + 0x10ac]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ebp
jb 0x405ff5
mov dword [esp + 0x44], 0x2000
mov ecx, dword [esi + 0x18]
push ecx
call dword [0x4cf340]
mov eax, dword [esi + 0xc]
push esi
push 1
lea edx, [esp + 0x34]
push edx
push eax
call dword [0x4cf608]
test eax, eax
jne 0x40603e
call dword [0x4cf348]
cmp eax, 0x3e5
jne 0x4060cf
call fcn.004062f0
test eax, eax
je 0x406052
push str.DownloadFile_error7
mov edi, 2
jmp 0x405e05
mov ecx, dword [esi + 0x20]
push 0
push ecx
call dword [0x4cf2ec]
test eax, eax
je 0x4060ec
mov edx, dword [esp + 0x44]
push ebp
push edx
push str.InternetReadFileEx__recvlen_d__leftlen_d
push str..ShortcutManagerMiniDownload.cpp
mov edi, 2
call fcn.004bc4a0
mov eax, dword [esp + 0x54]
add esp, 0x10
test eax, eax
jbe 0x4060fb
push ebx
push eax
mov eax, dword [esp + 0x48]
push 1
push eax
call fcn.00494974
mov ecx, dword [esp + 0x54]
add esp, 0x10
cmp eax, ecx
jne 0x406105
mov eax, dword [esp + 0x18]
sub ebp, ecx
sub eax, ebp
imul eax, eax, 0x64
xor edx, edx
div dword [esp + 0x18]
mov ecx, dword [esi + 0x28]
mov ecx, dword [ecx + 4]
mov edi, dword [ecx]
push 0
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x24]
add edx, edx
push edx
mov edx, dword [eax]
mov eax, dword [edi + 0xc]
push edx
call eax
test ebp, ebp
ja 0x405fd6
xor ebp, ebp
jmp 0x405e17
push eax
push str.DownloadFile_error8__dwLastError_d
push str..ShortcutManagerMiniDownload.cpp
mov edi, 2
call fcn.004bc4a0
add esp, 0xc
jmp 0x405e12
push str.DownloadFile_error9
mov edi, 2
jmp 0x405e05
push str.DownloadFile_error10
jmp 0x405e05
push str.DownloadFile_error11
push str..ShortcutManagerMiniDownload.cpp
call fcn.004bc4a0
add esp, 8
mov ebp, 3
jmp 0x405e17
mov eax, dword [esi + 0x1c]
push 0xffffffffffffffff
push eax
call dword [0x4cf2ec]
push esi
push str.InternetCloseHandle__wait_return__this0x_x
push str..ShortcutManagerMiniDownload.cpp
call fcn.004bc4a0
add esp, 0xc
mov ecx, dword [esi + 0x28]
mov ecx, dword [ecx + 4]
mov eax, dword [esi + 0x24]
mov edx, dword [ecx]
mov eax, dword [eax]
mov edx, dword [edx + 0x10]
push ebp
push eax
call edx
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x28]
push eax
push ecx
call fcn.004068d0
xor edx, edx
test ebp, ebp
sete dl
cmp dword [esp + 0xa8], 8
mov esi, edx
jb 0x406184
mov eax, dword [esp + 0x94]
push eax
call fcn.00493b60
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x30b0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3098]
xor ecx, esp
call fcn.00493b65
add esp, 0x30a8
ret