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

Disassembly:
push 0xffffffffffffffff
push 0x100f29ae
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 0x10047832
mov dword [ebx + 0x20], eax
xor edi, edi
cmp edi, 2
je 0x10047824
cmp edi, 5
ja case.default.0x100477c9
jmp dword [edi*4 + 0x10047a48]
mov eax, 0x800
jmp 0x100477f8
mov eax, 0x4000
jmp 0x100477f8
mov eax, 0x400
jmp 0x100477f8
mov eax, 0x8000
jmp 0x100477f8
mov eax, 0x1000
jmp 0x100477f8
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 0x100477bb
mov edx, dword [ebx + 0x1c]
mov dword [ebx + 0x10], edx
jmp 0x10047841
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.10055820
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.1004ac70
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.10047a60
test al, al
jne 0x100479f1
xor eax, eax
xor ecx, ecx
xor edx, edx
jmp 0x10047a01
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.0x100477c9
mov ecx, dword [ebx + 0x10]
push ecx
call fcn.10056580
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