Function at 0x57bdd8
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push ebx
push esi
push edi
mov esi, ecx
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x57c24b
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x57be17
mov eax, dword [ebp - 4]
test byte [eax + 0x361], 1
je 0x57c0c3
mov byte [ebp - 5], 0
test bl, bl
je 0x57be2d
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.00588a00
test al, al
jne 0x57be31
xor eax, eax
jmp 0x57be33
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.00578410
xor eax, eax
push ebp
push 0x57c0bc
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
mov edx, dword [eax]
call dword [edx + 0x38]
mov ecx, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
setle al
or al, byte [ebp + 0xc]
je 0x57be9e
test esi, esi
jle 0x57be88
mov eax, dword [ebp - 4]
call fcn.0057b600
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x57be9e
test esi, esi
jge 0x57be9e
mov eax, dword [ebp - 4]
call fcn.0057b600
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x57c09f
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x57c07b
mov eax, dword [ebp - 4]
test byte [eax + 0x361], 0x10
je 0x57bfed
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
cmp byte [eax + 0x15], 0
je 0x57bfed
test bl, bl
je 0x57bfe5
mov eax, dword [ebp - 4]
cmp byte [eax + 0x36d], 0
jne 0x57bf6f
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.00576c70
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x374
call fcn.00404cc8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.00576ce0
mov edx, dword [ebp - 4]
mov byte [edx + 0x45a], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3ae], 0
je 0x57bf4f
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x45a]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.00576f88
jmp 0x57bf5f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.00576f88
mov eax, dword [ebp - 4]
mov byte [eax + 0x36d], 1
mov byte [ebp - 5], 1
jmp 0x57bfed
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dword [ebp - 0xc], eax
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0xc]
call fcn.00576c70
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x374]
mov eax, dword [ebp - 0xc]
call fcn.00576c54
mov ecx, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, esi
pop edx
mov edi, edx
cdq
idiv edi
neg eax
cmp ecx, eax
setne byte [ebp - 5]
cmp byte [ebp - 5], 0
jne 0x57bfed
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3ae], 0
je 0x57bfd9
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x45a]
mov eax, dword [ebp - 0xc]
call fcn.00576f88
jmp 0x57bfed
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.00576f88
jmp 0x57bfed
mov eax, dword [ebp - 4]
call fcn.0057bd84
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b1db4
push eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, esi
pop edx
mov ecx, edx
cdq
idiv ecx
mov edx, eax
pop eax
call fcn.004b8580
test eax, eax
jne 0x57c027
call fcn.004046c0
call fcn.004046c0
jmp 0x57c230
cmp byte [ebp - 5], 0
je 0x57c065
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3ae], 0
je 0x57c055
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x45a]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.00576f88
jmp 0x57c065
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.00576f88
cmp byte [ebp + 0xc], 0
jne 0x57c073
test esi, esi
jle 0x57c072
dec esi
jmp 0x57c073
inc esi
test esi, esi
jne 0x57beb4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x57c0a6
cmp byte [ebp - 6], 0
je 0x57c09e
mov eax, dword [ebp - 4]
call fcn.0057b600
mov eax, dword [eax + 0x30]
call fcn.004b7638
ret
test bl, bl
je 0x57c0d5
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.00588a00
test al, al
jne 0x57c0d9
xor eax, eax
jmp 0x57c0db
mov al, 1
mov ebx, eax
test bl, bl
jne 0x57c0fb
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b1db4
mov edx, esi
call fcn.004b8580
jmp 0x57c219
mov eax, dword [ebp - 4]
call fcn.00578410
xor edx, edx
push ebp
push 0x57c212
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
cmp byte [eax + 0x10], 2
je 0x57c16e
mov eax, dword [eax + 0xc]
call fcn.0058a844
push 1
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x11c]
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 4]
call fcn.005880b4
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.005783a8
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.0058ad2c
cmp byte [ebp + 0xc], 0
je 0x57c1a1
dec esi
jne 0x57c18c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b1db4
call fcn.004b84e4
jmp 0x57c1b6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b1db4
call fcn.004b83f4
jmp 0x57c1b6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b1db4
mov edx, esi
call fcn.004b8580
push 1
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x11c]
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 4]
call fcn.005880b4
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.005783a8
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.0058ad2c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x57c219
mov eax, dword [ebp - 4]
call fcn.0057b5f0
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3a4], 0
jne 0x57c230
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x88]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x57c252
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.00404c98
ret