Function at 0x41db70
Capabilities:
Check os version
Print debug messages

Disassembly:
push 0xffffffffffffffff
push 0x4d7c86
mov eax, dword fs:[0]
push eax
sub esp, 0x84
push ebx
push ebp
push esi
push edi
mov eax, dword [0x54d158]
xor eax, esp
push eax
lea eax, [esp + 0x98]
mov dword fs:[0], eax
mov ebx, ecx
mov esi, dword [ebx + 0x14]
push 0
lea edi, [esp + 0x20]
call fcn.00415c10
mov esi, ebx
mov dword [esp + 0xa0], 0
call fcn.00428160
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x30]
call eax
mov edx, dword [eax]
mov edx, dword [edx + 0x18]
mov ecx, edi
push ecx
mov ecx, eax
call edx
test eax, eax
jge 0x41dc06
push 1
push 0x6d
mov eax, edi
push eax
push ebx
xor ecx, ecx
call fcn.004278e0
mov ebx, dword [ebx + 0x220]
mov ecx, edi
mov dword [esp + 0xa0], 0xffffffff
call fcn.004732d0
mov eax, ebx
jmp 0x41e2ba
mov ebp, dword [esp + 0xa8]
mov ecx, ebp
call fcn.00488b60
xor edi, edi
cmp eax, edi
mov dword [esp + 0x54], eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], 1
jle 0x41e2a4
mov dword [esp + 0x28], edi
cmp dword [ebx + 0x218], 1
je 0x41e2d6
lea ecx, [esp + 0x64]
push ecx
call fcn.0041c800
mov edx, dword [esp + 0xac]
push edx
push ebp
push ebx
lea esi, [esp + 0x70]
mov byte [esp + 0xac], 1
call fcn.004236a0
mov eax, dword [esp + 0x7c]
push 0x51b93c
push eax
call fcn.00477600
add esp, 8
test eax, eax
jne 0x41e281
mov eax, dword [esp + 0x90]
cmp eax, 6
je 0x41e200
cmp eax, 7
je 0x41e200
cmp eax, 9
je 0x41dcb8
cmp eax, 0xa
je 0x41dcb8
lea edx, [esp + 0x70]
lea ebp, [ebx + 0x214]
push edx
mov ecx, ebp
call fcn.00474c20
jmp 0x41de68
lea eax, [esp + 0x70]
lea ebp, [ebx + 0x214]
push eax
mov ecx, ebp
call fcn.00474c20
mov eax, dword [esp + 0x84]
test eax, eax
je 0x41de68
cmp word [eax], 0
je 0x41de68
mov eax, dword [esp + 0x88]
test eax, eax
je 0x41de68
cmp word [eax], 0
je 0x41de68
lea esi, [esp + 0x50]
call fcn.00418d30
mov byte [esp + 0xa0], 3
mov eax, dword [0x5546c0]
test eax, eax
mov ecx, dword [ebx + 8]
mov dword [esp + 0x5c], ecx
je 0x41dd26
lea edx, [esp + 0x5c]
push edx
push 2
call eax
lea ecx, [esp + 0x44]
call fcn.00474bb0
push 0
push 2
push ecx
mov byte [esp + 0xac], 4
lea eax, [ebx + 0xc]
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.004755e0
lea ecx, [esp + 0x50]
push ecx
push ecx
mov byte [esp + 0xb4], 5
lea edx, [esp + 0x80]
mov ecx, esp
mov dword [esp + 0x54], esp
push edx
call fcn.004755e0
mov byte [esp + 0xb4], 4
call fcn.00419380
test eax, eax
jne 0x41de40
lea eax, [esp + 0x84]
push eax
lea ecx, [esp + 0x30]
call fcn.004755e0
push 8
mov byte [esp + 0xa4], 6
mov ecx, dword [esp + 0x30]
push 0x51ec6c
push ecx
call fcn.00478500
add esp, 0xc
test eax, eax
jne 0x41dde5
push 8
lea edx, [esp + 0x5c]
push edx
lea ecx, [esp + 0x34]
call fcn.00401040
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0xa4], 7
call fcn.00474c20
lea ecx, [esp + 0x58]
mov byte [esp + 0xa0], 6
call fcn.004732d0
push ecx
lea eax, [esp + 0x30]
mov ecx, esp
mov dword [esp + 0x44], esp
push eax
call fcn.004755e0
push ecx
mov byte [esp + 0xa8], 8
lea edx, [esp + 0x4c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.004755e0
mov byte [esp + 0xa8], 6
call fcn.00423f20
test eax, eax
jl 0x41de2f
lea eax, [esp + 0x88]
push eax
mov ecx, ebp
call fcn.00474c20
lea ecx, [esp + 0x2c]
mov byte [esp + 0xa0], 4
call fcn.004732d0
lea ecx, [esp + 0x44]
mov byte [esp + 0xa0], 3
call fcn.004732d0
mov byte [esp + 0xa0], 1
sub dword [0x554674], 1
mov dword [esp + 0x50], vtable.Cy_Msi.0
mov ecx, dword [esp + 0x34]
lea edx, [esp + 0x68]
mov dword [ebx + 0x1fc], ecx
push edx
lea ecx, [esp + 0x1c]
call fcn.004755e0
push 0x51ec60
push 0x51cb10
lea ecx, [esp + 0x20]
mov byte [esp + 0xa8], 9
call fcn.004737b0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x41dea8
mov eax, dword [eax - 0xc]
shr eax, 1
add eax, 0xffffffff
push eax
lea ecx, [esp + 0x1c]
call fcn.00473350
cmp ax, 0x2f
je 0x41dec6
push 0x2f
lea ecx, [esp + 0x1c]
call fcn.00474070
push ebp
lea ecx, [esp + 0x1c]
call fcn.00473f90
lea ecx, [esp + 0x30]
call fcn.00474bb0
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa0], 0xa
call fcn.00474bb0
lea ecx, [esp + 0x14]
mov byte [esp + 0xa0], 0xb
call fcn.00474bb0
lea edi, [ebx + 0x1e4]
push edi
lea ecx, [esp + 0x18]
mov byte [esp + 0xa4], 0xc
call fcn.00474c20
lea ecx, [esp + 0x30]
call fcn.00473330
push 0x51ec60
push 0x51cb10
lea ecx, [esp + 0x1c]
call fcn.004737b0
mov eax, dword [esp + 0x14]
push 0x2f
push eax
call fcn.00475bc0
add esp, 8
test eax, eax
je 0x41df81
sub eax, dword [esp + 0x14]
sar eax, 1
cmp eax, 0xffffffff
je 0x41df81
push eax
lea ecx, [esp + 0x64]
push ecx
lea ecx, [esp + 0x1c]
call fcn.004743b0
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xa4], 0xd
call fcn.00474c20
lea ecx, [esp + 0x60]
mov byte [esp + 0xa0], 0xc
call fcn.004732d0
jmp 0x41df8a
lea ecx, [esp + 0x14]
call fcn.00473330
mov eax, dword [esp + 0x14]
test eax, eax
je 0x41df97
mov eax, dword [eax - 0xc]
shr eax, 1
add eax, 0xffffffff
push eax
lea ecx, [esp + 0x18]
call fcn.00473350
cmp ax, 0x2f
je 0x41dfb5
push 0x2f
lea ecx, [esp + 0x18]
call fcn.00474070
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x1c]
lea esi, [esp + 0x44]
call fcn.0041d660
push 0x51ec30
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x54]
push edx
call fcn.00474150
mov ecx, esi
push ecx
push eax
lea edx, [esp + 0x50]
push edx
mov byte [esp + 0xac], 0xe
call fcn.004740c0
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa4], 0xf
call fcn.00474c20
lea ecx, [esp + 0x48]
mov byte [esp + 0xa0], 0xe
call fcn.004732d0
lea ecx, [esp + 0x4c]
mov byte [esp + 0xa0], 0xc
call fcn.004732d0
call fcn.00426eb0
mov esi, dword [esp + 0x38]
mov eax, dword [ebx + 0x1f4]
push esi
push eax
push 3
push ecx
mov ecx, esp
mov dword [esp + 0x50], esp
push ebp
call fcn.004755e0
push ecx
mov byte [esp + 0xb4], 0x10
mov ecx, esp
mov dword [esp + 0x34], esp
push edi
call fcn.004755e0
mov eax, dword [ebx]
mov edx, dword [eax + 4]
add eax, 4
mov ecx, ebx
mov byte [esp + 0xb4], 0xc
call edx
call fcn.00426eb0
add dword [esp + 0x28], 1
add esi, 1
cmp dword [ebx + 0x210], 0
mov dword [esp + 0x38], esi
push ebp
je 0x41e09c
lea eax, [esp + 0x20]
push eax
mov ecx, ebx
call fcn.0041e840
jmp 0x41e0ab
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0041e9d0
lea ecx, [esp + 0x24]
mov dword [esp + 0x20], eax
call fcn.00474bb0
mov byte [esp + 0xa0], 0x11
mov eax, dword [ebp]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push eax
push ecx
push edx
lea eax, [esp + 0x30]
push str.DownLoadFile_Start:__s__s__s_n
push eax
call fcn.00473270
mov ecx, dword [esp + 0x38]
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
add esp, 0x14
push ecx
call esi
cmp dword [esp + 0x20], 0
jl 0x41e2f1
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0xa8]
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x51b92c
push str.STATUS
push edx
call fcn.0048e660
call fcn.00426eb0
mov eax, dword [edi]
push eax
lea ecx, [esp + 0x28]
push str.DownLoadFile_End:__s_n
push ecx
call fcn.00473270
mov edx, dword [esp + 0x30]
add esp, 0xc
push edx
call esi
mov eax, dword [esp + 0x28]
mov ecx, dword [ebx + 0x1f4]
push eax
push ecx
push 3
push ecx
mov ecx, esp
mov dword [esp + 0x50], esp
push ebp
call fcn.004755e0
push ecx
mov byte [esp + 0xb4], 0x12
mov ecx, esp
mov dword [esp + 0x34], esp
push edi
call fcn.004755e0
mov eax, dword [ebx]
mov edx, dword [eax + 8]
add eax, 8
mov ecx, ebx
mov byte [esp + 0xb4], 0x11
call edx
push edi
mov ecx, ebp
call fcn.00474c20
call fcn.00426eb0
lea ecx, [esp + 0x24]
mov byte [esp + 0xa0], 0xc
call fcn.004732d0
lea ecx, [esp + 0x14]
mov byte [esp + 0xa0], 0xb
call fcn.004732d0
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa0], 0xa
call fcn.004732d0
lea ecx, [esp + 0x30]
mov byte [esp + 0xa0], 9
call fcn.004732d0
lea ecx, [esp + 0x18]
mov byte [esp + 0xa0], 1
call fcn.004732d0
lea eax, [esp + 0x64]
push eax
mov byte [esp + 0xa4], 0
call fcn.0041c8c0
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0xa8]
jmp 0x41e293
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x51b92c
push str.STATUS
push edi
mov ecx, ebp
call fcn.0048e660
mov eax, dword [esp + 0x28]
mov ecx, dword [ebx + 0x1f4]
add dword [esp + 0x38], 1
add eax, 1
push eax
push ecx
push 3
push ecx
lea edx, [esp + 0x80]
mov ecx, esp
mov dword [esp + 0x50], esp
push edx
mov dword [esp + 0x3c], eax
call fcn.004755e0
push ecx
mov byte [esp + 0xb4], 2
lea esi, [ebx + 0x1e4]
mov ecx, esp
mov dword [esp + 0x34], esp
push esi
call fcn.004755e0
mov eax, dword [ebx]
add eax, 8
mov eax, dword [eax]
mov ecx, ebx
mov byte [esp + 0xb4], 1
call eax
push esi
lea ecx, [esp + 0x74]
call fcn.00474c20
call fcn.00426eb0
lea ecx, [esp + 0x64]
push ecx
mov byte [esp + 0xa4], 0
call fcn.0041c8c0
add edi, 1
cmp edi, dword [esp + 0x54]
mov dword [esp + 0x34], edi
jl 0x41dc32
lea ecx, [esp + 0x1c]
mov dword [esp + 0xa0], 0xffffffff
call fcn.004732d0
xor eax, eax
mov ecx, dword [esp + 0x98]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret 8
lea ecx, [esp + 0x1c]
mov dword [esp + 0xa0], 0xffffffff
call fcn.004732d0
mov eax, 0x80004004
jmp 0x41e2ba
lea ecx, [esp + 0x24]
mov byte [esp + 0xa0], 0xc
call fcn.004732d0
lea ecx, [esp + 0x14]
mov byte [esp + 0xa0], 0xb
call fcn.004732d0
lea ecx, [esp + 0x3c]
mov byte [esp + 0xa0], 0xa
call fcn.004732d0
lea ecx, [esp + 0x30]
mov byte [esp + 0xa0], 9
call fcn.004732d0
lea ecx, [esp + 0x18]
mov byte [esp + 0xa0], 1
call fcn.004732d0
lea edx, [esp + 0x64]
push edx
mov byte [esp + 0xa4], 0
call fcn.0041c8c0
lea ecx, [esp + 0x1c]
mov dword [esp + 0xa0], 0xffffffff
call fcn.004732d0
mov eax, dword [esp + 0x20]
jmp 0x41e2ba