Function at 0x476db0
Capabilities:
Access peb ldr_data
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4ba720
mov eax, dword fs:[0]
push eax
sub esp, 0x64
push ebx
push ebp
push esi
push edi
mov eax, dword [0x57e030]
xor eax, esp
push eax
lea eax, [esp + 0x78]
mov dword fs:[0], eax
mov esi, ecx
mov ebp, dword [esp + 0x8c]
mov eax, dword [esi]
mov edx, dword [eax + 0x60]
call edx
mov edi, eax
mov eax, dword [esi]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x2c]
push ecx
mov ecx, esi
mov dword [esp + 0x2c], edi
call edx
mov eax, dword [eax + 4]
mov edx, dword [esi]
mov edx, dword [edx + 0x48]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x38]
push eax
mov ecx, esi
mov dword [esp + 0x30], vtable.Dimension.0
call edx
movzx ecx, byte [esp + 0x46]
mov bl, byte [esp + 0x40]
mov al, byte [esp + 0x3e]
mov dl, byte [esp + 0x3c]
shl bl, cl
movzx ecx, byte [esp + 0x44]
shl al, cl
movzx ecx, byte [esp + 0x42]
or bl, al
mov eax, dword [ebp + 8]
imul eax, dword [esp + 0x1c]
add eax, dword [ebp + 4]
shl dl, cl
movzx ecx, byte [eax + edi]
mov edi, dword [esp + 0x88]
or bl, dl
and cl, bl
mov byte [esp + 0x8c], cl
sub esp, 0x14
mov eax, esp
xor ecx, ecx
add edi, 0xc
mov esi, edi
mov byte [esp + 0x2c], bl
mov dword [esp + 0x40], esp
mov dword [eax], vtable.Rect.0
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
call fcn.00477de0
lea edx, [esp + 0x60]
push edx
call fcn.00477d50
mov dword [esp + 0x80], 0
mov ecx, dword [ebp + 8]
cmp ecx, dword [ebp + 0x10]
mov dword [esp + 0x24], ecx
jge 0x476fea
mov eax, ecx
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x28]
mov dword [esp + 0x28], eax
jmp 0x476ec0
mov esi, dword [ebp + 4]
cmp esi, dword [ebp + 0xc]
jge 0x476fd4
lea esp, [esp]
mov al, byte [eax + esi]
and al, bl
cmp al, byte [esp + 0x8c]
je 0x476fc2
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
sub edx, ecx
je 0x476f24
mov edx, dword [esp + 0x28]
mov dl, byte [edx + esi - 1]
and dl, bl
cmp al, dl
jne 0x476f24
mov eax, edi
call fcn.00477ce0
mov ecx, dword [esp + 0x24]
sub ecx, dword [ebp + 8]
cmp dword [eax + 8], ecx
jne 0x476f20
mov eax, edi
call fcn.00477ce0
add eax, 0xc
inc dword [eax]
jmp 0x476fc2
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x28]
mov al, bl
and al, byte [edx + esi]
mov byte [esp + 0x14], al
test ecx, ecx
jne 0x476f39
xor edx, edx
jmp 0x476f3f
mov edx, dword [esp + 0x74]
sub edx, ecx
mov ebx, dword [esp + 0x70]
sub ebx, ecx
cmp ebx, edx
jae 0x476f56
mov ecx, dword [esp + 0x70]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x70], ecx
jmp 0x476f7e
mov eax, dword [esp + 0x70]
mov ebx, eax
cmp ecx, eax
jbe 0x476f65
call fcn.00480e22
mov eax, dword [esp + 0x60]
push ebx
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x38]
push ecx
lea eax, [esp + 0x70]
call fcn.0046fdb0
mov dword [esp + 0x4c], vtable.Rect.0
mov eax, dword [esp + 0x24]
mov byte [esp + 0x80], 1
sub eax, dword [ebp + 8]
mov ecx, esi
sub ecx, dword [ebp + 4]
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], ecx
lea edx, [esp + 0x4c]
inc ecx
inc eax
push edx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], eax
call fcn.004311b0
mov byte [esp + 0x80], 0
mov bl, byte [esp + 0x18]
mov eax, dword [esp + 0x28]
inc esi
cmp esi, dword [ebp + 0xc]
jl 0x476ed0
mov ecx, dword [esp + 0x24]
add eax, dword [esp + 0x1c]
inc ecx
cmp ecx, dword [ebp + 0x10]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
jl 0x476ec0
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x88]
sub eax, dword [esp + 0x6c]
mov ebx, dword [ecx + 8]
call fcn.00423300
mov edx, dword [esp + 0x88]
mov ebp, dword [edx + 8]
xor esi, esi
mov ebx, 1
mov ecx, dword [ebp + 4]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
push ebx
lea edx, [esp + esi + 0x90]
push edx
call eax
add esi, eax
sub ebx, eax
cmp esi, 1
jb 0x477012
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
xor esi, esi
sub eax, ecx
mov dword [esp + 0x24], esi
je 0x47725b
mov dword [esp + 0x28], esi
jmp 0x477054
mov esi, dword [esp + 0x24]
cmp esi, eax
jb 0x477061
call fcn.00480e22
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x88]
mov ebp, dword [edx + 8]
add ecx, esi
mov dword [esp + 0x2c], ecx
xor ebx, ebx
mov esi, 1
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
push esi
add edx, ebx
push edx
call eax
add ebx, eax
sub esi, eax
cmp ebx, 1
jb 0x477078
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp dword [esp + 0x24], ecx
jb 0x4770b5
call fcn.00480e22
mov edx, dword [edi + 0xc]
mov eax, dword [esp + 0x28]
movzx eax, word [eax + edx + 4]
mov ecx, dword [esp + 0x88]
mov ebp, dword [ecx + 8]
mov edx, eax
shr edx, 8
mov byte [esp + 0x18], dl
mov byte [esp + 0x19], al
xor ebx, ebx
mov esi, 2
nop
mov ecx, dword [ebp + 4]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
push esi
lea edx, [esp + ebx + 0x1c]
push edx
call eax
add ebx, eax
sub esi, eax
cmp ebx, 2
jb 0x4770e0
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp dword [esp + 0x24], ecx
jb 0x47711b
call fcn.00480e22
mov edx, dword [edi + 0xc]
mov eax, dword [esp + 0x28]
movzx eax, word [eax + edx + 8]
mov ecx, dword [esp + 0x88]
mov ebp, dword [ecx + 8]
mov edx, eax
shr edx, 8
mov byte [esp + 0x14], dl
mov byte [esp + 0x15], al
xor ebx, ebx
mov esi, 2
mov ecx, dword [ebp + 4]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
push esi
lea edx, [esp + ebx + 0x18]
push edx
call eax
add ebx, eax
sub esi, eax
cmp ebx, 2
jb 0x477145
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp dword [esp + 0x24], ecx
jb 0x477180
call fcn.00480e22
mov eax, dword [edi + 0xc]
add eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x88]
mov dx, word [eax + 0xc]
sub dx, word [eax + 4]
mov ebp, dword [ecx + 8]
movzx eax, dx
mov edx, eax
shr edx, 8
mov byte [esp + 0x1c], dl
mov byte [esp + 0x1d], al
xor ebx, ebx
mov esi, 2
mov ecx, dword [ebp + 4]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
push esi
lea edx, [esp + ebx + 0x20]
push edx
call eax
add ebx, eax
sub esi, eax
cmp ebx, 2
jb 0x4771b0
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp dword [esp + 0x24], ecx
jb 0x4771eb
call fcn.00480e22
mov eax, dword [edi + 0xc]
add eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x88]
mov dx, word [eax + 0x10]
sub dx, word [eax + 8]
mov ebp, dword [ecx + 8]
movzx eax, dx
mov edx, eax
shr edx, 8
mov byte [esp + 0x20], dl
mov byte [esp + 0x21], al
xor ebx, ebx
mov esi, 2
jmp 0x477220
mov ecx, dword [ebp + 4]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
push esi
lea edx, [esp + ebx + 0x24]
push edx
call eax
add ebx, eax
sub esi, eax
cmp ebx, 2
jb 0x477220
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
add dword [esp + 0x28], 0x14
inc edx
sub eax, ecx
mov dword [esp + 0x24], edx
cmp edx, eax
jb 0x477050
xor esi, esi
cmp ecx, esi
je 0x477268
push ecx
call fcn.00480e32
add esp, 4
mov ecx, dword [esp + 0x60]
push ecx
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], esi
call fcn.00480e32
add esp, 4
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret 8