Function at 0x40fea0
Capabilities:
Check os version
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x188
mov eax, dword [0x438014]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [0x4390b8]
mov ecx, dword [0x4380f8]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40feed
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00417da0
mov eax, 0x4390b4
add esp, 0x188
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4390b8
call fcn.00417b36
add esp, 4
cmp dword [0x4390b8], 0xffffffff
jne 0x40fed3
lea esi, [ebp - 0x170]
xor ebx, ebx
push 0x118
push ebx
push esi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [esi - 4], 0x11c
lea edi, [ebp - 0x174]
push edi
call dword [sym.imp.kernel32.dll_GetVersionExW]
lea esi, [ebp - 0x178]
mov dword [esi], ebx
push esi
push ebx
push ebx
push dword [edi + 8]
push dword [edi + 4]
call dword [sym.imp.kernel32.dll_GetProductInfo]
push 0x74
call sub.mozglue.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov edi, eax
mov dword [ebp - 0x17c], eax
mov eax, dword [esi]
mov dword [ebp - 0x194], eax
mov eax, dword [0x4380f8]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [0x4390e0]
cmp ecx, dword [eax + 4]
jle 0x40ffd7
push 0x4390e0
call fcn.00417b36
add esp, 4
cmp dword [0x4390e0], 0xffffffff
jne 0x40ffd7
xorps xmm0, xmm0
lea esi, [ebp - 0x58]
movups xmmword [esi + 0x10], xmm0
movups xmmword [esi], xmm0
mov dword [esi + 0x20], 0
push esi
call dword [sym.imp.kernel32.dll_GetNativeSystemInfo]
mov eax, dword [esi + 0x20]
mov dword [0x4390dc], eax
movups xmm0, xmmword [esi]
movups xmm1, xmmword [esi + 0x10]
movups xmmword [0x4390cc], xmm1
movups xmmword [0x4390bc], xmm0
push 0x4390e0
call fcn.00417b36
add esp, 4
mov dword [edi], ebx
mov dword [edi + 0x20], ebx
mov dword [edi + 0x30], ebx
mov eax, 0xf
mov dword [edi + 0x34], eax
mov byte [edi + 0x20], bl
mov dword [edi + 0x38], ebx
mov dword [edi + 0x48], ebx
mov dword [edi + 0x4c], eax
mov byte [edi + 0x38], bl
call dword [sym.imp.kernel32.dll_GetCurrentProcess]
lea esi, [ebp - 0x58]
mov dword [esi], ebx
push esi
push eax
call dword [sym.imp.kernel32.dll_IsWow64Process]
xor ecx, ecx
cmp dword [esi], ebx
mov edx, esi
setne cl
test eax, eax
mov eax, 2
cmovne eax, ecx
mov dword [edi + 0x58], eax
mov dword [edi + 0x5c], ebx
mov dword [edi + 0x6c], ebx
mov ecx, 0xf
mov dword [edi + 0x70], ecx
mov byte [edi + 0x5c], bl
mov eax, dword [ebp - 0x170]
mov dword [ebp - 0x18c], eax
mov dword [edi + 4], eax
mov eax, dword [ebp - 0x16c]
mov dword [ebp - 0x180], eax
mov dword [edi + 8], eax
lea esi, [ebp - 0x28]
mov dword [esi], ebx
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], ecx
mov eax, dword [ebp - 0x168]
mov dword [ebp - 0x190], eax
mov dword [edi + 0xc], eax
mov dword [edx], ebx
mov dword [edx + 0x10], ebx
mov dword [edx + 0x14], 7
mov word [edx], 0
mov byte [esi], bl
push esi
push ebx
push edx
mov ebx, edx
call fcn.00412020
add esp, 0xc
mov ecx, dword [esi]
movsd xmm0, qword [esi + 4]
movsd qword [ebp - 0x34], xmm0
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x2c], eax
mov edx, dword [esi + 0x10]
mov esi, dword [esi + 0x14]
mov eax, dword [ebx + 0x14]
cmp eax, 8
jae 0x410215
mov dword [edi + 0x10], 0
mov dword [edi + 0x20], ecx
movsd xmm0, qword [ebp - 0x34]
movsd qword [edi + 0x24], xmm0
mov eax, dword [ebp - 0x2c]
mov dword [edi + 0x2c], eax
mov dword [edi + 0x30], edx
mov dword [edi + 0x34], esi
mov edx, dword [ebp - 0x18c]
cmp edx, 0xa
jne 0x41026b
mov eax, 0xf
mov ecx, dword [ebp - 0x190]
cmp ecx, 0x4a60
mov ebx, dword [ebp - 0x17c]
jle 0x4102a4
add ebx, 0x38
mov dword [edi], eax
lea eax, [ebp - 0x160]
movzx ecx, word [eax + 0x100]
mov dword [edi + 0x18], ecx
movzx ecx, word [eax + 0x102]
mov dword [edi + 0x1c], ecx
xor ecx, ecx
cmp word [eax], 0
mov edx, 0
jne 0x41031d
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], 0xf
mov byte [ebp - 0x58], 0
lea ecx, [ebp - 0x58]
push ecx
push edx
push eax
call fcn.00412020
add esp, 0xc
mov eax, dword [ebp - 0x170]
mov ecx, dword [0x4390d8]
mov edx, dword [0x4390d0]
movups xmm0, xmmword [ebp - 0x58]
movups xmmword [ebx], xmm0
movsd xmm0, qword [ebp - 0x48]
movsd qword [ebx + 0x10], xmm0
mov dword [edi + 0x50], edx
mov dword [edi + 0x54], ecx
cmp eax, 0xa
jne 0x410335
mov edx, dword [ebp - 0x194]
cmp edx, 0x45
jg 0x4101d6
cmp edx, 0x1b
ja 0x4101ae
mov eax, 0x206f780
bt eax, edx
jb 0x4103ab
mov eax, 0x8010050
bt eax, edx
jb 0x41038f
cmp edx, 1
je 0x410383
cmp edx, 0x30
je 0x410383
mov dword [edi + 0x14], 0
mov dword [0x4390b4], edi
push 0x4390b8
call fcn.00417b36
add esp, 4
jmp 0x40fed3
lea eax, [edx - 0x46]
cmp eax, 0xe
ja 0x4101ec
mov ecx, 0x4005
bt ecx, eax
jb 0x41038f
add edx, 0xffffff87
cmp edx, 9
ja 0x4101b7
mov eax, 0x330
bt eax, edx
jb 0x41038f
mov eax, 3
bt eax, edx
jae 0x4101b7
mov dword [edi + 0x14], 4
jmp 0x4101be
mov dword [ebp - 0x184], esi
mov dword [ebp - 0x188], edx
mov ebx, ecx
mov ecx, dword [ebp - 0x58]
lea edx, [eax + eax]
add edx, 2
cmp edx, 0x1000
jb 0x41024e
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x410411
add eax, eax
add eax, 0x25
mov edx, eax
mov ecx, esi
push edx
push ecx
call sub.mozglue.dll_void___cdecl_operator_delete_void___unsigned_int_
add esp, 8
mov ecx, ebx
mov edx, dword [ebp - 0x188]
mov esi, dword [ebp - 0x184]
jmp 0x4100ac
mov eax, 0x10
cmp edx, 6
mov ebx, dword [ebp - 0x17c]
jg 0x4100f8
jne 0x4103b7
mov eax, dword [ebp - 0x180]
lea ecx, [eax + 3]
cmp eax, 3
mov eax, 6
cmovb eax, ecx
mov ebx, dword [ebp - 0x17c]
jmp 0x4100f8
mov eax, 0xe
cmp ecx, 0x47b9
jg 0x4100f8
mov eax, 0xd
cmp ecx, 0x4562
jg 0x4100f8
mov eax, 0xc
cmp ecx, 0x42ed
jg 0x4100f8
mov eax, 0xb
cmp ecx, 0x3faa
jg 0x4100f8
mov eax, 0xa
cmp ecx, 0x3ad6
jg 0x4100f8
mov eax, 9
cmp ecx, 0x3838
jg 0x4100f8
xor eax, eax
cmp ecx, 0x295a
setge al
add eax, 7
jmp 0x4100f8
xor esi, esi
lea edx, [esi + 1]
cmp word [ebp + esi*2 - 0x15e], 0
mov esi, edx
je 0x410128
jmp 0x41031f
mov ecx, edi
cmp eax, 5
jne 0x41039b
mov eax, dword [ebp - 0x16c]
cmp eax, 1
je 0x4103ef
cmp eax, 2
mov edi, ecx
jne 0x4101b7
cmp byte [ebp - 0x5a], 1
jne 0x41036a
cmp word [0x4390bc], 9
je 0x4103f5
cmp word [ebp - 0x5c], 0
js 0x410403
mov edi, ecx
mov dword [ecx + 0x14], 2
jmp 0x4101be
mov dword [edi + 0x14], 1
jmp 0x4101be
mov dword [edi + 0x14], 3
jmp 0x4101be
cmp eax, 6
mov edi, ecx
je 0x410179
jmp 0x4101b7
mov dword [edi + 0x14], 2
jmp 0x4101be
xor eax, eax
cmp dword [ebp - 0x180], 0
je 0x410299
mov ecx, edx
cmp edx, 5
mov ebx, dword [ebp - 0x17c]
jne 0x4100f8
xor ecx, ecx
cmp dword [ebp - 0x180], 1
sete cl
mov eax, 2
sub eax, ecx
jmp 0x4100f8
test byte [ebp - 0x5b], 2
jne 0x410403
mov edi, ecx
mov dword [ecx + 0x14], 1
jmp 0x4101be
mov edi, ecx
mov dword [ecx + 0x14], 0
jmp 0x4101be
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3