Function at 0x58f274
Capabilities:
Access peb ldr_data
Get number of processors

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xe
push 0
push 0
dec ecx
jne 0x58f27c
push ecx
push ebx
push esi
push edi
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x58fcdf
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
mov byte [eax + 0x170], 0
mov eax, dword [ebp - 8]
cmp dword [eax + 0x30], 0
je 0x58fcaf
lea edx, [ebp - 0x2c]
mov eax, dword [ebp - 8]
call fcn.005888ac
mov eax, dword [ebp - 0x2c]
lea edx, [ebp - 0x28]
call fcn.0040a1bc
cmp dword [ebp - 0x28], 0
jne 0x58f2e0
mov eax, dword [ebp - 8]
cmp dword [eax + 0x100], 0
je 0x58fcaf
mov eax, dword [ebp - 8]
mov byte [eax + 0xcc], 1
mov byte [ebp - 0xd], 0
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0xfc], edx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xe8]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 8]
mov al, byte [eax + 0x2c]
mov byte [ebp - 0x15], al
mov eax, dword [ebp - 8]
mov al, byte [eax + 0x3d]
mov byte [ebp - 0x16], al
mov eax, dword [ebp - 8]
mov byte [eax + 0x3d], 1
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xe4]
mov edx, dword [ebp - 8]
mov dword [edx + 0xe8], eax
mov eax, dword [ebp - 8]
mov byte [eax + 0x2c], 7
mov eax, dword [ebp - 8]
cmp byte [eax + 0x1a5], 0
je 0x58f352
mov dl, 1
mov eax, dword [0x411c80]
call fcn.004032d8
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
cmp byte [eax + 0x260], 0
jne 0x58f38c
mov eax, dword [ebp - 8]
cmp byte [eax + 0x178], 0
jne 0x58f38c
mov eax, dword [ebp - 8]
cmp byte [eax + 0x179], 0
jne 0x58f38c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x58f38c
push ebp
call fcn.0058e994
pop ecx
mov eax, dword [ebp - 8]
mov ebx, dword [eax + 0x1b0]
cmp byte [ebx + 0x11], 0
je 0x58f3ec
cmp byte [ebx + 0x10], 0
je 0x58f3ec
mov eax, dword [ebp - 8]
cmp byte [eax + 0x1a6], 0
je 0x58f3b4
mov esi, 0x19
jmp 0x58f3b6
xor esi, esi
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
add esi, 0x3a
imul esi
add eax, dword [ebx + 0xc]
add eax, 0x16
mov edx, dword [ebp - 8]
mov edx, dword [edx + 0x154]
movzx edx, word [edx + 0x18]
add eax, edx
add eax, 0x800
mov edx, dword [ebp - 8]
mov edx, dword [edx + 0x1b0]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x1b0]
mov al, byte [ecx + 0x11]
cmp al, 1
jne 0x58f42d
mov eax, dword [ebp - 8]
call fcn.0058ff20
push edx
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
mov eax, dword [eax + 0xc]
cdq
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x220], eax
mov dword [ecx + 0x224], edx
jmp 0x58f444
cmp al, 2
jne 0x58f444
mov eax, dword [ecx + 8]
cdq
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x220], eax
mov dword [ecx + 0x224], edx
xor ecx, ecx
push ebp
push 0x58fca5
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
je 0x58f46a
mov eax, dword [ebp - 8]
call fcn.0058a378
test eax, eax
jg 0x58f490
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 8]
call fcn.005888ac
mov eax, dword [ebp - 0x30]
call fcn.0058219c
test al, al
je 0x58f4ec
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 0
jne 0x58f4ec
push ebp
call fcn.0058f120
pop ecx
mov eax, dword [ebp - 8]
mov byte [eax + 0x228], 1
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
jne 0x58f4d3
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 8]
call fcn.0059193c
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x34]
call fcn.0058263c
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 8]
add eax, 0x258
call fcn.004040c4
mov eax, dword [ebp - 8]
call fcn.0058fd20
mov eax, dword [ebp - 8]
call fcn.00589220
push ebp
call fcn.0058e358
pop ecx
jmp 0x58f52c
push ebp
call fcn.0058f120
pop ecx
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
jne 0x58f51a
lea edx, [ebp - 0x3c]
mov eax, dword [ebp - 8]
call fcn.005888ac
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 8]
add eax, 0x258
call fcn.004040c4
mov eax, dword [ebp - 8]
mov byte [eax + 0x228], 0
mov eax, dword [ebp - 8]
call fcn.0058fd20
mov eax, dword [ebp - 8]
cmp byte [eax + 0x260], 0
jne 0x58f5be
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x58f5be
mov byte [ebp - 0x1d], 0
mov eax, dword [ebp - 8]
cmp word [eax + 0x1d2], 0
je 0x58f597
mov eax, dword [ebp - 8]
push dword [eax + 0x194]
push dword [eax + 0x190]
mov eax, dword [ebp - 8]
add eax, 0x250
push eax
lea eax, [ebp - 0x1d]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
mov ecx, eax
mov ebx, dword [ebp - 8]
mov edx, dword [ebp - 8]
mov eax, dword [ebx + 0x1d4]
call dword [ebx + 0x1d0]
cmp byte [ebp - 0x1d], 0
je 0x58f5be
lea edx, [ebp - 0x40]
mov eax, 0xbb
call fcn.0040a580
mov ecx, dword [ebp - 0x40]
mov dl, 1
mov eax, dword [0x582cd8]
call fcn.0040dc54
call fcn.00403aa0
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 0
je 0x58f5e6
mov eax, dword [ebp - 8]
fild qword [eax + 0x190]
fmul dword [0x58fcf0]
mov eax, dword [ebp - 8]
fistp qword [eax + 0x190]
wait
mov eax, dword [ebp - 8]
cmp byte [eax + 0x260], 0
jne 0x58f6c2
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x58f6c2
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
test esi, esi
jl 0x58f6c2
inc esi
xor ebx, ebx
mov dl, 1
mov eax, dword [0x57fd48]
call fcn.0057ffcc
mov edx, dword [ebp - 8]
mov dword [edx + 0x254], eax
xor eax, eax
push ebp
push 0x58f692
push dword fs:[eax]
mov dword fs:[eax], esp
lea ecx, [ebp - 0x44]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, ebx
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 8]
call fcn.00590748
test al, al
je 0x58f66f
push ebp
mov eax, ebx
call fcn.0058df50
pop ecx
jmp 0x58f688
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x254]
call fcn.00403308
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x254], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58f6ba
inc ebx
dec esi
jne 0x58f622
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x234]
call fcn.0041570c
mov edx, dword [ebp - 8]
mov ebx, dword [edx + 0x250]
mov dword [ebx + 0x14], eax
mov eax, dword [ebp - 8]
mov ax, word [eax + 0xfc]
mov word [ebx + 0xa], ax
xor eax, eax
mov dword [ebp - 0x24], eax
mov edi, dword [ebx + 0x14]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x24c]
mov esi, dword [eax + 0xc]
dec esi
test esi, esi
jl 0x58f7c5
inc esi
xor ebx, ebx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x24c]
mov edx, ebx
call fcn.0057ea64
mov edx, dword [0x57fd48]
call fcn.00403498
mov edx, dword [ebp - 8]
mov dword [edx + 0x254], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 0
je 0x58f7a6
mov eax, dword [ebp - 8]
call fcn.0058ffa8
push edx
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x254]
call fcn.00580aa4
cdq
cmp edx, dword [esp + 4]
jne 0x58f765
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x58f7a6
jmp 0x58f769
pop edx
pop eax
jle 0x58f7a6
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x234]
call fcn.0041570c
sub eax, edi
add dword [ebp - 0x24], eax
xor edi, edi
mov eax, dword [ebp - 8]
call fcn.00590120
test ebx, ebx
jne 0x58f7a6
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x250]
xor edx, edx
mov dword [eax + 0x14], edx
mov edx, dword [ebp - 8]
mov dx, word [edx + 0xfc]
mov word [eax + 0xa], dx
mov eax, dword [ebp - 8]
mov edx, dword [eax + 0x234]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x254]
call fcn.005804d4
inc ebx
dec esi
jne 0x58f70a
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x234]
call fcn.0041570c
sub eax, edi
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x250]
mov edx, dword [ebp - 0x24]
mov dword [eax + 0x10], edx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 0
je 0x58f82a
mov eax, dword [ebp - 8]
call fcn.0058ffa8
push edx
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x250]
call fcn.00580fcc
cdq
cmp edx, dword [esp + 4]
jne 0x58f81e
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x58f82a
jmp 0x58f822
pop edx
pop eax
jle 0x58f82a
mov eax, dword [ebp - 8]
call fcn.00590120
mov edx, dword [ebp - 8]
mov dx, word [edx + 0xfc]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x250]
mov word [eax + 8], dx
mov edx, dword [ebp - 8]
mov edx, dword [edx + 0x234]
call fcn.00580dc4
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 1
jne 0x58f866
mov eax, dword [ebp - 8]
call fcn.0058ffe4
mov byte [ebp - 0xd], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x58fcaf
push ebp
call fcn.0058f1bc
pop ecx
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
jne 0x58f8a3
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x234]
call fcn.00403308
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x234], edx
cmp byte [ebp - 0xd], 0
je 0x58fbff
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
jne 0x58f8d0
mov eax, dword [ebp - 8]
cmp byte [eax + 0x229], 0
jne 0x58f8d0
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 8]
call fcn.005888ac
mov eax, dword [ebp - 8]
cmp byte [eax + 0x229], 0
jne 0x58f8fc
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
jne 0x58f8fc
mov eax, dword [ebp - 8]
cmp byte [eax + 0x228], 0
je 0x58f8fc
mov eax, dword [ebp - 8]
call fcn.0058959c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 2
jne 0x58f9d5
mov eax, dword [ebp - 8]
mov ebx, dword [eax + 0xfc]
test ebx, ebx
jle 0x58f965
lea eax, [ebp - 0x50]
push eax
inc ebx
mov dword [ebp - 0x58], ebx
mov byte [ebp - 0x54], 0
lea edx, [ebp - 0x58]
xor ecx, ecx
mov eax, 0x58fcfc
call fcn.0040b5c8
mov ecx, dword [ebp - 0x50]
lea eax, [ebp - 0x4c]
mov edx, 0x58fd0c
call fcn.0040433c
mov edx, dword [ebp - 0x4c]
lea ecx, [ebp - 0x48]
mov eax, dword [ebp - 0x1c]
call fcn.0040a98c
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x30]
jmp 0x58f9f8
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x30]
lea eax, [ebp - 0x64]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xfc]
inc eax
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0
lea edx, [ebp - 0x58]
xor ecx, ecx
mov eax, 0x58fcfc
call fcn.0040b5c8
mov ecx, dword [ebp - 0x64]
lea eax, [ebp - 0x60]
mov edx, 0x58fd0c
call fcn.0040433c
mov edx, dword [ebp - 0x60]
lea ecx, [ebp - 0x5c]
mov eax, dword [ebp - 0x1c]
call fcn.0040a98c
mov edx, dword [ebp - 0x5c]
lea eax, [ebp - 0x1c]
call fcn.00404108
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 8]
call fcn.005888ac
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x1c]
call fcn.0040a8e8
jmp 0x58f9f8
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
jne 0x58f9f8
mov eax, dword [ebp - 8]
cmp byte [eax + 0x229], 0
jne 0x58f9f8
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov eax, dword [ebp - 8]
cmp byte [eax + 0x228], 0
je 0x58fa0e
mov eax, dword [ebp - 8]
call fcn.005913c8
jmp 0x58fa25
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
je 0x58fa25
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x234], edx
mov eax, dword [ebp - 8]
cmp byte [eax + 0x1a5], 0
je 0x58fa38
push ebp
call fcn.0058e000
pop ecx
mov eax, dword [ebp - 8]
cmp byte [eax + 0x229], 0
jne 0x58fa7f
mov eax, dword [ebp - 8]
mov edx, dword [eax + 0x250]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x154]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x24c]
mov edx, dword [ebp - 8]
mov dword [edx + 0xe4], eax
mov edx, dword [ebp - 8]
mov dword [edx + 0xe8], eax
mov eax, dword [ebp - 8]
mov byte [eax + 0x2c], 7
jmp 0x58faa4
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x24c]
call fcn.00403308
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x24c], edx
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x14]
mov dword [eax + 0xe8], edx
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
jne 0x58fad9
mov eax, dword [ebp - 8]
cmp byte [eax + 0x229], 0
jne 0x58fad9
lea edx, [ebp - 0x6c]
mov eax, dword [ebp - 8]
call fcn.005888ac
mov eax, dword [ebp - 0x6c]
call fcn.005820c8
mov eax, dword [ebp - 8]
fstp qword [eax + 0xf0]
wait
cmp byte [ebp - 0x15], 0
je 0x58faf8
mov eax, dword [ebp - 8]
cmp byte [eax + 0x229], 0
jne 0x58faf8
mov dl, byte [ebp - 0x15]
mov eax, dword [ebp - 8]
call fcn.0058a2e0
jmp 0x58fb21
mov eax, dword [ebp - 8]
cmp byte [eax + 0x229], 0
jne 0x58fb21
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x248]
mov edx, dword [ebp - 8]
mov dword [edx + 0xe8], eax
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x248], edx
mov eax, dword [ebp - 8]
mov edx, dword [eax + 0xfc]
inc edx
mov eax, dword [ebp - 8]
call fcn.00589128
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 0
je 0x58fb66
mov eax, dword [ebp - 8]
cmp word [eax + 0xb2], 0
je 0x58fb66
mov ebx, dword [ebp - 8]
mov ecx, 0x64
mov edx, dword [ebp - 8]
mov eax, dword [ebx + 0xb4]
call dword [ebx + 0xb0]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
mov dl, byte [eax + 0x11]
test dl, dl
je 0x58fc26
cmp byte [eax + 0x10], 0
je 0x58fc26
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x154]
cmp word [eax + 8], 0
jbe 0x58fc26
cmp dl, 1
jne 0x58fbba
mov edx, 1
mov eax, dword [ebp - 8]
call fcn.005892c4
mov eax, dword [0x5a5608]
mov eax, dword [eax]
mov dx, 0xfff5
call fcn.004543ac
lea edx, [ebp - 0x74]
mov eax, dword [ebp - 8]
call fcn.005888ac
mov eax, dword [ebp - 0x74]
lea ecx, [ebp - 0x70]
mov edx, 0x58fd18
call fcn.0040a98c
mov edx, dword [ebp - 0x70]
mov eax, dword [ebp - 8]
call fcn.00591520
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1b0]
cmp byte [eax + 0x11], 1
jne 0x58fc26
mov eax, dword [0x5a5608]
mov eax, dword [eax]
xor edx, edx
call fcn.004543ac
jmp 0x58fc26
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x24c]
call fcn.00403308
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x24c], edx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x258]
call fcn.0040a8d0
mov eax, dword [ebp - 8]
mov dl, byte [ebp - 0x15]
mov byte [eax + 0x2c], dl
mov eax, dword [ebp - 8]
mov dl, byte [ebp - 0x16]
mov byte [eax + 0x3d], dl
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x248]
call fcn.00403308
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x248], edx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x250]
call fcn.00403308
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x250], edx
mov eax, dword [ebp - 8]
call fcn.005892a4
mov eax, dword [ebp - 8]
cmp byte [eax + 0xdc], 0
je 0x58fc8f
mov eax, dword [ebp - 8]
mov edx, dword [eax + 0x100]
mov eax, dword [ebp - 8]
call fcn.00589af8
mov eax, dword [ebp - 8]
mov byte [eax + 0xcc], 0
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
call dword [edx + 0x40]
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x58fce6
lea eax, [ebp - 0x74]
mov edx, 7
call fcn.00404094
lea eax, [ebp - 0x50]
mov edx, 0xb
call fcn.00404094
lea eax, [ebp - 0x1c]
call fcn.00404070
ret