Function at 0x409310
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 [0x450010]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [0x451558]
mov ecx, dword [0x4502e0]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40935d
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004230e0
mov eax, 0x451554
add esp, 0x188
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x451558
call fcn.00422a27
add esp, 4
cmp dword [0x451558], 0xffffffff
jne 0x409343
lea esi, [ebp - 0x170]
xor ebx, ebx
push 0x118
push ebx
push esi
call sub.ntdll.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 [0x4502e0]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [0x451580]
cmp ecx, dword [eax + 4]
jle 0x409447
push 0x451580
call fcn.00422a27
add esp, 4
cmp dword [0x451580], 0xffffffff
jne 0x409447
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 [0x45157c], eax
movups xmm0, xmmword [esi]
movups xmm1, xmmword [esi + 0x10]
movups xmmword [0x45156c], xmm1
movups xmmword [0x45155c], xmm0
push 0x451580
call fcn.00422a79
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.00409e30
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 0x409685
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 0x4096dc
mov eax, 0xf
mov ecx, dword [ebp - 0x190]
cmp ecx, 0x4a60
mov ebx, dword [ebp - 0x17c]
jle 0x409715
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 0x40978e
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.00409e30
add esp, 0xc
mov eax, dword [ebp - 0x170]
mov ecx, dword [0x451578]
mov edx, dword [0x451570]
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 0x4097a6
mov edx, dword [ebp - 0x194]
cmp edx, 0x45
jg 0x409646
cmp edx, 0x1b
ja 0x40961e
mov eax, 0x206f780
bt eax, edx
jb 0x40981c
mov eax, 0x8010050
bt eax, edx
jb 0x409800
cmp edx, 1
je 0x4097f4
cmp edx, 0x30
je 0x4097f4
mov dword [edi + 0x14], 0
mov dword [0x451554], edi
push 0x451558
call fcn.00422a79
add esp, 4
jmp 0x409343
lea eax, [edx - 0x46]
cmp eax, 0xe
ja 0x40965c
mov ecx, 0x4005
bt ecx, eax
jb 0x409800
add edx, 0xffffff87
cmp edx, 9
ja 0x409627
mov eax, 0x330
bt eax, edx
jb 0x409800
mov eax, 3
bt eax, edx
jae 0x409627
mov dword [edi + 0x14], 4
jmp 0x40962e
mov dword [ebp - 0x184], esi
mov dword [ebp - 0x188], edx
mov ebx, ecx
mov ecx, dword [ebp - 0x58]
lea edx, [eax*2 + 2]
cmp edx, 0x1000
jb 0x4096bf
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x40987c
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 0x40951c
mov eax, 0x10
cmp edx, 6
mov ebx, dword [ebp - 0x17c]
jg 0x409568
jne 0x409828
mov eax, dword [ebp - 0x180]
lea ecx, [eax + 3]
cmp eax, 3
mov eax, 6
cmovb eax, ecx
mov ebx, dword [ebp - 0x17c]
jmp 0x409568
mov eax, 0xe
cmp ecx, 0x47b9
jg 0x409568
mov eax, 0xd
cmp ecx, 0x4562
jg 0x409568
mov eax, 0xc
cmp ecx, 0x42ed
jg 0x409568
mov eax, 0xb
cmp ecx, 0x3faa
jg 0x409568
mov eax, 0xa
cmp ecx, 0x3ad6
jg 0x409568
mov eax, 9
cmp ecx, 0x3838
jg 0x409568
xor eax, eax
cmp ecx, 0x295a
setge al
add eax, 7
jmp 0x409568
xor esi, esi
lea edx, [esi + 1]
cmp word [ebp + esi*2 - 0x15e], 0
mov esi, edx
je 0x409598
jmp 0x409790
mov ecx, edi
cmp eax, 5
jne 0x40980c
mov eax, dword [ebp - 0x16c]
cmp eax, 1
je 0x40985a
cmp eax, 2
mov edi, ecx
jne 0x409627
cmp byte [ebp - 0x5a], 1
jne 0x4097db
cmp word [0x45155c], 9
je 0x409860
cmp word [ebp - 0x5c], 0
js 0x40986e
mov edi, ecx
mov dword [ecx + 0x14], 2
jmp 0x40962e
mov dword [edi + 0x14], 1
jmp 0x40962e
mov dword [edi + 0x14], 3
jmp 0x40962e
cmp eax, 6
mov edi, ecx
je 0x4095e9
jmp 0x409627
mov dword [edi + 0x14], 2
jmp 0x40962e
xor eax, eax
cmp dword [ebp - 0x180], 0
je 0x40970a
mov ecx, edx
cmp edx, 5
mov ebx, dword [ebp - 0x17c]
jne 0x409568
xor eax, eax
cmp dword [ebp - 0x180], 1
setne al
inc eax
jmp 0x409568
test byte [ebp - 0x5b], 2
jne 0x40986e
mov edi, ecx
mov dword [ecx + 0x14], 1
jmp 0x40962e
mov edi, ecx
mov dword [ecx + 0x14], 0
jmp 0x40962e
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3