Function at 0x4046c0
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 0x40470d
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00414c00
mov eax, 0x4390b4
add esp, 0x188
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4390b8
call fcn.00414996
add esp, 4
cmp dword [0x4390b8], 0xffffffff
jne 0x4046f3
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 0x4047f7
push 0x4390e0
call fcn.00414996
add esp, 4
cmp dword [0x4390e0], 0xffffffff
jne 0x4047f7
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.00414996
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.0040f3a0
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 0x404a35
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 0x404a8b
mov eax, 0xf
mov ecx, dword [ebp - 0x190]
cmp ecx, 0x4a60
mov ebx, dword [ebp - 0x17c]
jle 0x404ac4
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 0x404b3d
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.0040f3a0
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 0x404b55
mov edx, dword [ebp - 0x194]
cmp edx, 0x45
jg 0x4049f6
cmp edx, 0x1b
ja 0x4049ce
mov eax, 0x206f780
bt eax, edx
jb 0x404bcb
mov eax, 0x8010050
bt eax, edx
jb 0x404baf
cmp edx, 1
je 0x404ba3
cmp edx, 0x30
je 0x404ba3
mov dword [edi + 0x14], 0
mov dword [0x4390b4], edi
push 0x4390b8
call fcn.00414996
add esp, 4
jmp 0x4046f3
lea eax, [edx - 0x46]
cmp eax, 0xe
ja 0x404a0c
mov ecx, 0x4005
bt ecx, eax
jb 0x404baf
add edx, 0xffffff87
cmp edx, 9
ja 0x4049d7
mov eax, 0x330
bt eax, edx
jb 0x404baf
mov eax, 3
bt eax, edx
jae 0x4049d7
mov dword [edi + 0x14], 4
jmp 0x4049de
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 0x404a6e
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x404c31
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 0x4048cc
mov eax, 0x10
cmp edx, 6
mov ebx, dword [ebp - 0x17c]
jg 0x404918
jne 0x404bd7
mov eax, dword [ebp - 0x180]
lea ecx, [eax + 3]
cmp eax, 3
mov eax, 6
cmovb eax, ecx
mov ebx, dword [ebp - 0x17c]
jmp 0x404918
mov eax, 0xe
cmp ecx, 0x47b9
jg 0x404918
mov eax, 0xd
cmp ecx, 0x4562
jg 0x404918
mov eax, 0xc
cmp ecx, 0x42ed
jg 0x404918
mov eax, 0xb
cmp ecx, 0x3faa
jg 0x404918
mov eax, 0xa
cmp ecx, 0x3ad6
jg 0x404918
mov eax, 9
cmp ecx, 0x3838
jg 0x404918
xor eax, eax
cmp ecx, 0x295a
setge al
add eax, 7
jmp 0x404918
xor esi, esi
lea edx, [esi + 1]
cmp word [ebp + esi*2 - 0x15e], 0
mov esi, edx
je 0x404948
jmp 0x404b3f
mov ecx, edi
cmp eax, 5
jne 0x404bbb
mov eax, dword [ebp - 0x16c]
cmp eax, 1
je 0x404c0f
cmp eax, 2
mov edi, ecx
jne 0x4049d7
cmp byte [ebp - 0x5a], 1
jne 0x404b8a
cmp word [0x4390bc], 9
je 0x404c15
cmp word [ebp - 0x5c], 0
js 0x404c23
mov edi, ecx
mov dword [ecx + 0x14], 2
jmp 0x4049de
mov dword [edi + 0x14], 1
jmp 0x4049de
mov dword [edi + 0x14], 3
jmp 0x4049de
cmp eax, 6
mov edi, ecx
je 0x404999
jmp 0x4049d7
mov dword [edi + 0x14], 2
jmp 0x4049de
xor eax, eax
cmp dword [ebp - 0x180], 0
je 0x404ab9
mov ecx, edx
cmp edx, 5
mov ebx, dword [ebp - 0x17c]
jne 0x404918
xor ecx, ecx
cmp dword [ebp - 0x180], 1
sete cl
mov eax, 2
sub eax, ecx
jmp 0x404918
test byte [ebp - 0x5b], 2
jne 0x404c23
mov edi, ecx
mov dword [ecx + 0x14], 1
jmp 0x4049de
mov edi, ecx
mov dword [ecx + 0x14], 0
jmp 0x4049de
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3