Function at 0x527244
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 0x5276fd
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x527283
mov eax, dword [ebp - 4]
test byte [eax + 0x3d1], 1
je 0x527552
mov byte [ebp - 5], 0
test bl, bl
je 0x527299
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.00539a8c
test al, al
jne 0x52729d
xor eax, eax
jmp 0x52729f
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.0051f514
xor eax, eax
push ebp
push 0x52754b
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
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 0x52730a
test esi, esi
jle 0x5272f4
mov eax, dword [ebp - 4]
call fcn.00526a60
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x52730a
test esi, esi
jge 0x52730a
mov eax, dword [ebp - 4]
call fcn.00526a60
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x52750b
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x5274e7
mov eax, dword [ebp - 4]
test byte [eax + 0x3d1], 0x10
je 0x527459
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
cmp byte [eax + 0x15], 0
je 0x527459
test bl, bl
je 0x527451
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3dd], 0
jne 0x5273db
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2ec]
call fcn.004eeb38
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x3e4
call fcn.0040464c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2ec]
call fcn.004eea30
mov edx, dword [ebp - 4]
mov byte [edx + 0x51e], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x472], 0
je 0x5273bb
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x51e]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2ec]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x5273cb
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2ec]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [ebp - 4]
mov byte [eax + 0x3dd], 1
mov byte [ebp - 5], 1
jmp 0x527459
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2ec]
mov dword [ebp - 0xc], eax
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0xc]
call fcn.004eeb38
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x3e4]
mov eax, dword [ebp - 0xc]
call fcn.004eeba0
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 0x527459
mov eax, dword [ebp - 4]
cmp byte [eax + 0x472], 0
je 0x527445
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x51e]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x527459
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x527459
mov eax, dword [ebp - 4]
call fcn.00527228
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
call fcn.004d4d24
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.004d9934
test eax, eax
jne 0x527493
call fcn.00404020
call fcn.00404020
jmp 0x5276e2
cmp byte [ebp - 5], 0
je 0x5274d1
mov eax, dword [ebp - 4]
cmp byte [eax + 0x472], 0
je 0x5274c1
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x51e]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2ec]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x5274d1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2ec]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
cmp byte [ebp + 0xc], 0
jne 0x5274df
test esi, esi
jle 0x5274de
dec esi
jmp 0x5274df
inc esi
test esi, esi
jne 0x527320
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x527512
cmp byte [ebp - 6], 0
je 0x52750a
mov eax, dword [ebp - 4]
call fcn.00526a60
mov eax, dword [eax + 0x30]
call fcn.004d8d30
ret
test bl, bl
je 0x527564
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.00539a8c
test al, al
jne 0x527568
xor eax, eax
jmp 0x52756a
mov al, 1
mov ebx, eax
test bl, bl
jne 0x52758a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
call fcn.004d4d24
mov edx, esi
call fcn.004d9934
jmp 0x5276cb
mov eax, dword [ebp - 4]
call fcn.0051f514
xor edx, edx
push ebp
push 0x5276c4
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3e0]
cmp byte [eax + 0x10], 2
je 0x5275fd
mov eax, dword [eax + 0xc]
call fcn.0053c110
push 1
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
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.00539284
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0051f4ac
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3e0]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.0053c64c
cmp byte [ebp + 0xc], 0
je 0x527630
dec esi
jne 0x52761b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
call fcn.004d4d24
call fcn.004d9898
jmp 0x527645
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
call fcn.004d4d24
call fcn.004d97c0
jmp 0x527645
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
call fcn.004d4d24
mov edx, esi
call fcn.004d9934
push 1
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x304]
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.00539284
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0051f4ac
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3e0]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.0053c64c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5276cb
mov eax, dword [ebp - 4]
call fcn.00526a50
mov eax, dword [ebp - 4]
cmp byte [eax + 0x417], 0
jne 0x5276c3
mov eax, dword [ebp - 4]
cmp byte [eax + 0x44d], 0
je 0x5276c3
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x168]
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x417], 0
jne 0x5276e2
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 0x527704
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.0040461c
ret