Function at 0x10047530
Capabilities:
Access peb ldr_data
Check os version
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x100f294e
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x90
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0xa4]
push ebx
mov ebx, ecx
mov ecx, dword [esp + 0xa4]
push ebp
push esi
xor ebp, ebp
lea esi, [ebx + 0x64]
mov dword [ebx], eax
mov dword [ebx + 4], 1
mov dword [ebx + 8], ecx
mov dword [ebx + 0xc], edx
mov dword [ebx + 0x10], ebp
mov dword [ebx + 0x14], ebp
mov dword [ebx + 0x30], ebp
mov dword [ebx + 0x34], ebp
mov dword [ebx + 0x3c], ebp
mov dword [ebx + 0x44], ebp
mov dword [ebx + 0x50], ebp
push edi
mov dword [esp + 0x20], ebx
mov dword [esi + 0x2c], ebp
mov al, byte [ebx]
mov dword [esp + 0xa8], ebp
test al, 0x80
mov eax, dword [ebx + 0xc]
je 0x10047622
mov dword [ebx + 0x20], eax
xor edi, edi
cmp edi, 2
je 0x10047614
cmp edi, 5
ja case.default.0x100475b9
jmp dword [edi*4 + 0x10047838]
mov eax, 0x800
jmp 0x100475e8
mov eax, 0x4000
jmp 0x100475e8
mov eax, 0x400
jmp 0x100475e8
mov eax, 0x8000
jmp 0x100475e8
mov eax, 0x1000
jmp 0x100475e8
mov eax, 0x2000
xor ecx, ecx
or ah, 2
mov dword [esp + 0x14], ecx
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
lea ecx, [ebx + edi*4 + 0x18]
push ecx
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], ebp
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x30]
inc edi
cmp edi, 6
jl 0x100475ab
mov edx, dword [ebx + 0x1c]
mov dword [ebx + 0x10], edx
jmp 0x10047631
mov dword [ebx + 0x10], eax
mov ecx, 6
xor eax, eax
lea edi, [ebx + 0x18]
rep stosd dword es:[edi], eax
mov ecx, 0x1e
xor eax, eax
lea edi, [esp + 0x28]
mov dword [esp + 0x24], 0x7c
rep stosd dword es:[edi], eax
mov eax, dword [ebx + 0x10]
lea edx, [esp + 0x24]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x58]
lea eax, [esp + 0x6c]
mov ecx, esi
push eax
call fcn.10055590
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov dword [ebx + 0x5c], eax
add eax, 0x1f
cdq
and edx, 0x1f
lea edi, [ebx + 0x54]
add eax, edx
mov dword [ebx + 0x58], ebp
sar eax, 5
inc eax
mov dword [edi], ebp
mov dword [ebx + 0x4c], eax
mov dword [ebx + 0x60], ecx
mov cl, byte [esi + 0x22]
xor edx, edx
shr edx, cl
mov cl, byte [esi + 0x23]
mov eax, dword [esi + 0x14]
shl edx, cl
mov cl, byte [esi + 0x20]
and edx, eax
xor eax, eax
shr eax, cl
mov cl, byte [esi + 0x21]
shl eax, cl
mov ecx, dword [esi + 0x10]
and eax, ecx
mov cl, byte [esi + 0x1e]
or edx, eax
xor eax, eax
shr eax, cl
mov cl, byte [esi + 0x1f]
shl eax, cl
mov ecx, dword [esi + 0xc]
and eax, ecx
mov cl, byte [esi + 0x1c]
or edx, eax
xor eax, eax
shr eax, cl
mov cl, byte [esi + 0x1d]
shl eax, cl
mov ecx, dword [esi + 8]
mov dword [ebx + 0xc4], 0xffffffff
and eax, ecx
or edx, eax
mov dword [ebx + 0xbc], edx
mov cl, byte [esi + 0x22]
or edx, 0xffffffff
mov eax, dword [esi + 0x14]
shr edx, cl
mov cl, byte [esi + 0x23]
shl edx, cl
mov cl, byte [esi + 0x20]
and edx, eax
or eax, 0xffffffff
shr eax, cl
mov cl, byte [esi + 0x21]
shl eax, cl
mov ecx, dword [esi + 0x10]
and eax, ecx
mov cl, byte [esi + 0x1e]
or edx, eax
or eax, 0xffffffff
shr eax, cl
mov cl, byte [esi + 0x1f]
shl eax, cl
mov ecx, dword [esi + 0xc]
and eax, ecx
mov cl, byte [esi + 0x1c]
or edx, eax
or eax, 0xffffffff
shr eax, cl
mov cl, byte [esi + 0x1d]
shl eax, cl
and eax, dword [esi + 8]
or edx, eax
mov dword [ebx + 0xc0], edx
mov cl, byte [esi + 0x22]
mov edx, 0xff000000
mov eax, dword [esi + 0x14]
shr edx, cl
mov cl, byte [esi + 0x23]
shl edx, cl
mov cl, byte [esi + 0x20]
and edx, eax
mov eax, 0xff000000
shr eax, cl
mov cl, byte [esi + 0x21]
shl eax, cl
mov ecx, dword [esi + 0x10]
and eax, ecx
mov cl, byte [esi + 0x1e]
or edx, eax
mov eax, 0xff000000
shr eax, cl
mov cl, byte [esi + 0x1f]
shl eax, cl
mov ecx, dword [esi + 0xc]
and eax, ecx
mov cl, byte [esi + 0x1c]
or edx, eax
mov eax, 0xff000000
shr eax, cl
mov cl, byte [esi + 0x1d]
shl eax, cl
mov ecx, dword [esi + 8]
mov dword [ebx + 0xac], ebp
mov dword [ebx + 0xb0], ebp
mov dword [ebx + 0xb4], ebp
mov dword [ebx + 0xb8], ebp
and eax, ecx
mov ecx, dword [ebx + 8]
or edx, eax
mov dword [ebx + 0xc8], edx
call fcn.1004a910
mov ecx, dword [ebx + 0x5c]
mov edx, dword [ebx + 0x60]
mov dword [ebx + 0x98], eax
lea eax, [esp + 0x10]
push eax
push edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
call fcn.10047850
test al, al
jne 0x100477e1
xor eax, eax
xor ecx, ecx
xor edx, edx
jmp 0x100477f1
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
lea esi, [ebx + 0x9c]
mov dword [ebx + 0x9c], eax
mov eax, dword [ebx]
test eax, 0x10000
mov dword [esi + 4], ecx
mov dword [esi + 8], edx
mov dword [esi + 0xc], ebp
je case.default.0x100475b9
mov ecx, dword [ebx + 0x10]
push ecx
call fcn.100562f0
mov ecx, dword [esp + 0xa0]
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x9c
ret 0xc