Function at 0x100356b0
Capabilities:
Check os version
Get number of processors

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100ac718
mov eax, dword fs:[0]
push eax
sub esp, 0x64
push ebx
push esi
push edi
mov eax, dword [0x100df0c0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x18], edi
push 0
push 0xb
call fcn.10035fa0
mov ecx, dword [edi + 0x38]
call fcn.100349e0
mov esi, eax
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x28], esi
mov word [ebp - 0x58], 0
push dword [ebp + 8]
lea ecx, [ebp - 0x58]
mov dword [ebp - 4], 0
push edi
call fcn.10035e20
mov eax, dword [edi + 0x38]
mov ebx, dword [ebp + 0xc]
mov ecx, dword [eax + 8]
add ecx, dword [eax]
mov dword [ebx + 4], esi
push dword [ebx + 0x30]
mov dword [ebp - 0x24], ecx
call fcn.1009cfdf
inc esi
mov dword [ebx + 0x30], 0
xor ecx, ecx
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1009cfe4
mov dword [ebx + 0x30], eax
push dword [ebx + 0x34]
call fcn.1009cfdf
push dword [ebp - 0x28]
mov dword [ebx + 0x34], 0
call fcn.1009cfe4
mov dword [ebx + 0x34], eax
push dword [ebx + 0x38]
call fcn.1009cfdf
xor ecx, ecx
mov dword [ebx + 0x38], 0
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1009cfe4
mov dword [ebx + 0x38], eax
push dword [ebx + 0x2c]
call fcn.1009cfdf
xor ecx, ecx
mov dword [ebx + 0x2c], 0
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1009cfe4
add esp, 0x20
mov dword [ebx + 0x2c], eax
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov esi, dword [edi + 0x38]
xor ecx, ecx
mov byte [ebp - 4], 2
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x20], ecx
cmp dword [ebp - 0x28], ecx
jbe 0x10035bc4
lea esp, [esp]
mov ecx, dword [edi + 0x38]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebx + 0x38]
mov dword [ebp - 0x30], 0
lea edi, [eax*4]
mov eax, dword [ecx + 8]
sub eax, dword [ebp - 0x24]
add eax, dword [ecx]
mov ecx, esi
mov dword [edi + edx], eax
mov dword [ebp - 0x40], edi
xor edi, edi
mov dword [ebp - 0x10], edi
call fcn.100349e0
mov ecx, esi
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x2c], 0x100b3d70
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x10035ce1
cmp edx, 0x40
ja 0x10035ce1
mov dword [ebp - 0x3c], edi
test edx, edx
je 0x10035a79
mov edi, dword [esi]
mov ecx, esi
add edi, dword [esi + 8]
call fcn.10032010
mov byte [ebp + 0xb], al
test al, al
jne 0x100358aa
mov byte [edi], 1
mov edi, dword [esi]
mov ecx, esi
add edi, dword [esi + 8]
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov ecx, esi
call fcn.10032010
mov ebx, dword [edi]
mov edi, dword [esi]
add edi, dword [esi + 8]
cmp byte [ebp + 0xb], 0
jne 0x1003591e
push ebx
push edi
lea eax, [ebp - 0x2c]
push eax
call fcn.1005ff80
push ebx
push edi
lea eax, [ebp - 0x2c]
push eax
call fcn.1005fff0
push ebx
push edi
lea eax, [ebp - 0x2c]
push eax
call fcn.1005fe80
mov ecx, dword [0x101f42ac]
cmp dword [ecx + 0xac], 0
je 0x1003591e
push 0
push ebx
lea eax, [ecx + 0x35610]
push edi
push eax
mov eax, dword [ecx + 0x98]
call eax
add esp, 0x10
mov ecx, esi
call fcn.10032010
mov byte [ebp + 0xb], al
test al, 0xc0
jne 0x10035ce1
movzx edx, al
and edx, 0xf
mov dword [ebp - 0x38], edx
cmp edx, 8
ja 0x10035ce1
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
sub eax, ecx
cmp edx, eax
ja 0x10035ce6
mov eax, dword [esi]
xorps xmm0, xmm0
add eax, ecx
movlpd qword [ebp - 0x50], xmm0
mov ebx, dword [ebp - 0x4c]
xor ecx, ecx
mov edi, dword [ebp - 0x50]
mov dword [ebp - 0x48], eax
test edx, edx
je 0x1003598e
mov esi, edx
nop
movzx eax, byte [ecx + eax]
inc ecx
shld ebx, edi, 8
cdq
shl edi, 8
or ebx, edx
or edi, eax
mov eax, dword [ebp - 0x48]
cmp ecx, esi
jb 0x10035970
mov esi, dword [ebp - 0x44]
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp + 0xc]
add dword [esi + 8], edx
cmp dword [eax + 0x50], 0x80
jae 0x100359a7
push ebx
push edi
lea ecx, [eax + 0x4c]
call fcn.10030f40
mov cl, byte [ebp + 0xb]
mov eax, 1
test cl, 0x10
je 0x100359dd
mov ecx, esi
call fcn.100349e0
mov dword [ebp - 0x48], eax
cmp eax, 0x40
ja 0x10035ce1
mov ecx, esi
call fcn.100349e0
cmp eax, 1
jne 0x10035ce1
mov eax, dword [ebp - 0x48]
mov cl, byte [ebp + 0xb]
mov edx, dword [ebp - 0x10]
add edx, eax
mov dword [ebp - 0x10], edx
cmp edx, 0x40
ja 0x10035ce1
test cl, 0x20
je 0x10035a61
mov ecx, esi
call fcn.100349e0
mov ecx, dword [esi + 4]
mov edx, eax
sub ecx, dword [esi + 8]
cmp edx, ecx
ja 0x10035ce6
cmp edi, 0x21
jne 0x10035a33
test ebx, ebx
jne 0x10035a33
cmp edx, 1
jne 0x10035a5e
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x38]
mov ecx, dword [eax + 8]
mov eax, dword [eax]
mov cl, byte [ecx + eax]
mov eax, dword [ebp + 0xc]
cmp byte [eax + 0x44], cl
jae 0x10035a5e
mov byte [eax + 0x44], cl
jmp 0x10035a5e
cmp edi, 0x30101
jne 0x10035a5e
test ebx, ebx
jne 0x10035a5e
cmp edx, 5
jne 0x10035a5e
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x38]
mov ecx, dword [eax + 8]
mov eax, dword [eax]
mov ecx, dword [ecx + eax + 1]
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x48], ecx
jae 0x10035a5e
mov dword [eax + 0x48], ecx
add dword [esi + 8], edx
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x3c], eax
cmp eax, edx
jb 0x10035894
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x10]
cmp edx, 1
jne 0x10035a90
cmp edi, edx
jne 0x10035a90
mov dword [ebp - 0x30], 0
mov ecx, edx
jmp 0x10035b78
lea eax, [edx - 1]
cmp edi, eax
jb 0x10035ce1
mov edx, edi
lea ecx, [ebp - 0x70]
call fcn.10031010
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x64]
call fcn.10031010
mov eax, dword [ebp - 0x14]
xor edi, edi
dec eax
je 0x10035b14
jmp 0x10035ac0
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax + 0x38]
call fcn.100349e0
cmp eax, dword [ebp - 0x10]
jae 0x10035ce1
mov ecx, dword [ebp - 0x70]
cmp byte [ecx + eax], 0
jne 0x10035ce1
mov byte [ecx + eax], 1
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax + 0x38]
call fcn.100349e0
mov ecx, dword [ebp - 0x14]
cmp eax, ecx
jae 0x10035ce1
mov edx, dword [ebp - 0x64]
cmp byte [edx + eax], 0
jne 0x10035ce1
mov byte [edx + eax], 1
inc edi
lea eax, [ecx - 1]
cmp edi, eax
jb 0x10035ac0
mov ecx, dword [ebp - 0x10]
sub ecx, eax
mov dword [ebp + 8], ecx
cmp ecx, 1
je 0x10035b50
xor edi, edi
test ecx, ecx
je 0x10035b50
mov ecx, esi
call fcn.100349e0
cmp eax, dword [ebp - 0x10]
jae 0x10035ce1
mov ecx, dword [ebp - 0x70]
cmp byte [ecx + eax], 0
jne 0x10035ce1
mov byte [ecx + eax], 1
inc edi
mov ecx, dword [ebp + 8]
cmp edi, ecx
jb 0x10035b27
mov edx, dword [ebp - 0x14]
xor eax, eax
test edx, edx
je 0x10035b70
mov edi, dword [ebp - 0x64]
lea esp, [esp]
cmp byte [edi + eax], 0
je 0x10035b6d
inc eax
cmp eax, edx
jb 0x10035b60
jmp 0x10035b70
mov dword [ebp - 0x30], eax
cmp eax, edx
je 0x10035ce1
mov eax, dword [ebx + 0x2c]
mov esi, dword [ebp - 0x40]
mov edi, dword [ebp - 0x1c]
mov dword [esi + eax], edi
add edi, edx
mov eax, dword [ebx + 0x30]
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x1c], edi
mov edi, esi
mov esi, dword [ebp - 0x44]
mov dword [edi + eax], edx
mov eax, dword [ebx]
sub eax, edx
cmp ecx, eax
ja 0x10035ce6
mov eax, dword [ebx + 0x34]
add edx, ecx
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x30]
mov byte [eax + ecx], dl
inc ecx
mov dword [ebp - 0x20], ecx
cmp ecx, dword [ebp - 0x28]
jb 0x10035810
mov eax, dword [edi + 0x38]
mov edx, dword [ebp - 0x1c]
mov esi, dword [eax + 8]
sub esi, dword [ebp - 0x24]
add esi, dword [eax]
mov eax, dword [ebx + 0x2c]
mov dword [eax + ecx*4], edx
mov eax, dword [ebx + 0x30]
mov edx, dword [ebp - 0x34]
mov dword [eax + ecx*4], edx
mov ecx, dword [edi + 0x38]
mov edx, dword [ebx + 0x38]
mov eax, dword [ecx + 8]
sub eax, dword [ebp - 0x24]
add eax, dword [ecx]
mov ecx, dword [ebp - 0x20]
mov dword [edx + ecx*4], eax
cmp esi, dword [ebx + 0x40]
je 0x10035c2b
mov eax, dword [ebx + 0x3c]
test eax, eax
je 0x10035c11
push eax
call fcn.1009cfdf
add esp, 4
mov dword [ebx + 0x3c], 0
mov dword [ebx + 0x40], 0
test esi, esi
je 0x10035c3e
push esi
call fcn.1009cfe4
add esp, 4
mov dword [ebx + 0x3c], eax
mov dword [ebx + 0x40], esi
test esi, esi
je 0x10035c3e
push esi
push dword [ebp - 0x24]
push dword [ebx + 0x3c]
call fcn.1009b860
add esp, 0xc
push dword [ebp - 0x64]
call fcn.1009cfdf
push dword [ebp - 0x70]
call fcn.1009cfdf
add esp, 8
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x58]
call fcn.10035d80
push 0
push 0xc
mov ecx, edi
call fcn.10035fa0
push dword [ebx + 0x28]
call fcn.1009cfdf
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
mov edx, 8
mov dword [ebx + 0x28], 0
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1009cfe4
xor esi, esi
mov dword [ebx + 0x28], eax
add esp, 8
cmp dword [ebp - 0x1c], esi
jbe 0x10035cb8
mov ecx, dword [edi + 0x38]
call fcn.10034a00
mov ecx, dword [ebx + 0x28]
mov dword [ecx + esi*8], eax
mov dword [ecx + esi*8 + 4], edx
inc esi
cmp esi, dword [ebp - 0x1c]
jb 0x10035ca0
mov ecx, dword [edi + 0x38]
call fcn.10034a00
mov esi, eax
mov ecx, esi
or ecx, edx
je 0x10035d01
cmp esi, 0xa
jne 0x10035ceb
test edx, edx
jne 0x10035ceb
lea eax, [ebx + 0xc]
mov ecx, edi
push eax
push dword [ebp - 0x28]
call fcn.10034250
jmp 0x10035cf3
call fcn.10035f80
call fcn.10035f60
mov ecx, dword [edi + 0x38]
call fcn.10035e80
mov ecx, dword [edi + 0x38]
call fcn.10034a00
mov esi, eax
or eax, edx
jne 0x10035cc8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8