Function at 0x402225
Capabilities:
Check for peb ntglobalflag flag

Disassembly:
jmp 0x4258b0
push 0xffffffffffffffff
push 0x4ad950
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x70
push ebx
push ebp
push esi
mov ebp, ecx
push edi
push 0xa
lea ecx, [esp + 0x68]
mov dword [esp + 0x3c], ebp
call fcn.0046cd01
mov dword [esp + 0x64], 0x4b5b80
mov eax, dword [ebp + 4]
mov dword [esp + 0x88], 0
mov dword [esp + 0x14], 1
mov dword [esp + 0x30], 0xffffffff
mov ecx, dword [eax + 0x300]
mov eax, dword [eax + 0x238]
cmp eax, 2
mov dword [esp + 0x44], ecx
mov byte [esp + 0x13], 0
jne 0x425923
mov dword [esp + 0x14], eax
jmp 0x42593f
cmp eax, 4
jne 0x425932
mov dword [esp + 0x14], 8
jmp 0x42593f
cmp eax, 3
jne 0x42593f
mov dword [esp + 0x14], 4
mov eax, 1
cmp ecx, eax
mov dword [esp + 0x18], eax
jl 0x425d3a
mov edx, dword [esp + 0x14]
mov ebx, 1
and edx, 0xfffcffff
cmp eax, ebx
mov dword [esp + 0x1c], 0xfffffffe
mov dword [esp + 0x14], edx
jne 0x42599d
mov ecx, dword [ebp + 4]
mov esi, dword [ecx + 0x84]
test esi, esi
je 0x42599d
mov eax, esi
mov esi, dword [esi]
mov eax, dword [eax + 8]
cmp dword [eax + 0x1c], 2
jge 0x425995
push 0xffffffffffffffff
push 2
lea ecx, [eax + 0x14]
call fcn.0046dd67
test esi, esi
jne 0x42597c
mov eax, dword [esp + 0x18]
and eax, 0x80000001
jns 0x4259a9
dec eax
or eax, 0xfffffffe
inc eax
mov dword [esp + 0x34], eax
je 0x4259d4
mov edx, dword [ebp + 4]
mov esi, dword [esp + 0x14]
or esi, 0x10000
xor eax, eax
mov ecx, dword [edx + 0x54]
mov dword [esp + 0x14], esi
dec ecx
mov dword [esp + 0x3c], 1
mov dword [esp + 0x2c], ecx
jmp 0x4259ff
mov eax, dword [ebp + 4]
mov edx, dword [esp + 0x14]
or edx, 0x20000
mov dword [esp + 0x2c], 0
mov eax, dword [eax + 0x54]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], edx
sub eax, 2
mov dword [esp + 0x3c], 0xffffffff
mov edi, eax
mov eax, dword [esp + 0x14]
and eax, 0x10000
mov dword [esp + 0x40], edi
mov dword [esp + 0x48], eax
test eax, eax
je 0x425a1f
xor eax, eax
cmp edi, ecx
setle al
jmp 0x425a26
xor eax, eax
cmp edi, ecx
setge al
test eax, eax
je 0x425c2e
lea ecx, [esp + 0x50]
call fcn.0046e647
mov ecx, dword [ebp + 4]
mov byte [esp + 0x88], 1
mov edx, dword [ecx + 0xa0]
mov esi, dword [edx + edi*8]
mov eax, dword [edx + edi*8 + 4]
lea edx, [edx + edi*8]
test esi, esi
mov dword [esp + 0x24], edx
je 0x425c06
test eax, eax
je 0x425c06
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x425a8b
mov eax, dword [esp + 0x1c]
lea ecx, [edi + 1]
cmp eax, ecx
je 0x425a9a
mov eax, dword [esp + 0x34]
test eax, eax
je 0x425bd3
mov ecx, dword [esp + 0x1c]
lea eax, [edi - 1]
cmp ecx, eax
jne 0x425bd3
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0x58]
call fcn.0046e6a7
cmp esi, dword [esp + 0x28]
je 0x425ae9
mov ecx, esi
mov eax, esi
mov esi, dword [esi]
push eax
mov edi, dword [ecx + 8]
mov ecx, dword [ebp + 4]
add ecx, 0x80
call fcn.0046cf5a
mov eax, dword [esp + 0x14]
mov ecx, dword [ebp + 4]
mov edx, dword [edi]
push ebx
push eax
push ecx
mov ecx, edi
call dword [edx + 0x14]
mov edx, dword [esp + 0x58]
push edi
push edx
lea ecx, [esp + 0x58]
call fcn.0046e86b
test esi, esi
jne 0x425aa7
mov eax, dword [esp + 0x58]
lea ecx, [eax - 1]
cmp ecx, 1
jl 0x425b4d
xor esi, esi
mov dword [esp + 0x1c], 4
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x1c]
test esi, esi
mov edi, dword [edx + ecx]
mov eax, esi
jl 0x425b2f
mov edx, dword [ecx + eax*4]
mov ebp, dword [edi + 0x18]
mov ebx, dword [edx + 0x18]
mov ebp, dword [ebp]
cmp ebp, dword [ebx]
jae 0x425b2b
mov dword [ecx + eax*4 + 4], edx
mov ecx, dword [esp + 0x54]
dec eax
jns 0x425b10
mov ebp, dword [esp + 0x38]
mov dword [ecx + eax*4 + 4], edi
mov eax, dword [esp + 0x1c]
add eax, 4
inc esi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x58]
lea ecx, [esi + 1]
lea edx, [eax - 1]
cmp ecx, edx
jle 0x425aff
xor edi, edi
dec eax
test eax, eax
mov ebx, 1
jl 0x425bcb
mov eax, dword [esp + 0x54]
mov esi, dword [eax + edi*4]
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov dword [esp + 0x20], ecx
mov dword [esi + 4], eax
mov ecx, esi
mov dword [esi + 8], ebx
call dword [edx + 0x10]
lea ebx, [ebx + eax + 1]
mov eax, dword [esp + 0x28]
test eax, eax
je 0x425b95
mov ecx, dword [ebp + 4]
push esi
push eax
add ecx, 0x80
call fcn.0046cede
jmp 0x425ba4
mov ecx, dword [ebp + 4]
push esi
add ecx, 0x80
call fcn.0046ce24
test edi, edi
mov dword [esi + 0x10], eax
jne 0x425bb1
mov ecx, dword [esp + 0x24]
mov dword [ecx], eax
mov edx, dword [esp + 0x58]
dec edx
cmp edi, edx
jne 0x425bc1
mov ecx, dword [esp + 0x24]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x58]
inc edi
dec edx
cmp edi, edx
jle 0x425b59
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x40]
mov eax, dword [edx]
mov ecx, 1
test eax, eax
je 0x425bf6
cmp eax, dword [esp + 0x28]
je 0x425bf6
mov edx, eax
mov eax, dword [eax]
mov edx, dword [edx + 8]
mov edx, dword [edx + 0x18]
mov dword [edx + 4], ecx
inc ecx
test eax, eax
jne 0x425bde
lea ebx, [ecx - 1]
test ebx, ebx
jne 0x425c02
mov ebx, 1
mov dword [esp + 0x1c], edi
lea ecx, [esp + 0x50]
mov byte [esp + 0x88], 0
call fcn.0046e67a
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
add edi, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x40], edi
jmp 0x425a12
mov ecx, dword [ebp + 4]
xor edi, edi
xor esi, esi
mov eax, dword [ecx + 0x54]
test eax, eax
jle 0x425c53
push esi
call fcn.0040158c
mov ecx, dword [ebp + 4]
add edi, eax
inc esi
cmp esi, dword [ecx + 0x54]
jl 0x425c3c
cmp dword [esp + 0x30], edi
jb 0x425ca0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
cmp ecx, eax
jne 0x425c66
mov byte [esp + 0x13], 0
jmp 0x425ca0
cmp dword [esp + 0x30], edi
jbe 0x425ca0
mov ecx, dword [ebp + 4]
mov esi, dword [ecx + 0x84]
lea ecx, [esp + 0x64]
call fcn.0046cd40
test esi, esi
je 0x425c97
mov eax, esi
mov esi, dword [esi]
lea ecx, [esp + 0x64]
mov eax, dword [eax + 8]
push eax
call fcn.0046ce24
test esi, esi
jne 0x425c82
mov dword [esp + 0x30], edi
mov byte [esp + 0x13], 1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x44]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jle 0x425950
mov al, byte [esp + 0x13]
test al, al
je 0x425d3a
mov eax, dword [esp + 0x70]
test eax, eax
je 0x425d3a
mov ecx, dword [ebp + 4]
add ecx, 0x80
call fcn.0046cd40
mov edi, dword [esp + 0x68]
xor ebx, ebx
test edi, edi
je 0x425d32
mov ecx, dword [ebp + 4]
mov eax, edi
mov edi, dword [edi]
add ecx, 0x80
mov esi, dword [eax + 8]
push esi
call fcn.0046ce24
mov edx, dword [esi + 8]
mov dword [esi + 0x10], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x4c], edx
test ebx, ebx
mov dword [esp + 0x48], eax
je 0x425d21
cmp dword [ebx + 4], eax
jne 0x425d21
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x10]
mov ecx, dword [ebx + 8]
lea ecx, [eax + ecx + 1]
mov eax, dword [esp + 0x48]
jmp 0x425d26
mov ecx, 1
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
test edi, edi
mov ebx, esi
jne 0x425cdd
mov ecx, dword [ebp + 4]
call fcn.004014ab
lea ecx, [esp + 0x64]
mov dword [esp + 0x88], 0xffffffff
call fcn.0046cd60
mov ecx, dword [esp + 0x80]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x7c
ret