Function at 0x525f10
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
xor ebx, ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0xc], ecx
mov byte [ebp - 5], dl
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x5263d7
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x525f52
mov eax, dword [ebp - 4]
test byte [eax + 0x419], 1
je 0x52622f
mov byte [ebp - 0xd], 0
cmp byte [ebp - 5], 0
je 0x525f6a
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.005410c0
test al, al
jne 0x525f6e
xor eax, eax
jmp 0x525f70
mov al, 1
mov byte [ebp - 5], al
mov byte [ebp - 0xe], 0
mov eax, dword [ebp - 4]
call fcn.0051d52c
xor eax, eax
push ebp
push 0x526228
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x32c]
mov edx, dword [eax]
call dword [edx + 0x38]
mov ecx, eax
mov eax, dword [ebp - 0xc]
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
setle al
or al, byte [ebp + 0xc]
je 0x525fe1
cmp dword [ebp - 0xc], 0
jle 0x525fc9
mov eax, dword [ebp - 4]
call fcn.00525904
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x525fe1
cmp dword [ebp - 0xc], 0
jge 0x525fe1
mov eax, dword [ebp - 4]
call fcn.00525904
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x5261e8
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0xc], 0
je 0x5261c4
mov eax, dword [ebp - 4]
test byte [eax + 0x419], 0x10
je 0x526139
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x32c]
cmp byte [eax + 0x15], 0
je 0x526139
cmp byte [ebp - 5], 0
je 0x526131
mov eax, dword [ebp - 4]
cmp byte [eax + 0x425], 0
jne 0x5260b9
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x314]
call fcn.004c2cc4
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
add eax, 0x42c
call fcn.00404888
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x314]
call fcn.004c2b98
mov edx, dword [ebp - 4]
mov byte [edx + 0x5ee], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x502], 0
je 0x526096
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x5ee]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x314]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x5260a6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x314]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [ebp - 4]
mov byte [eax + 0x425], 1
mov byte [ebp - 0xd], 1
jmp 0x526139
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x314]
mov dword [ebp - 0x14], eax
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
call fcn.004c2cc4
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x42c]
mov eax, dword [ebp - 0x14]
call fcn.004c2d38
mov ecx, eax
mov eax, dword [ebp - 0xc]
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, dword [ebp - 0xc]
pop edx
mov ebx, edx
cdq
idiv ebx
neg eax
cmp ecx, eax
setne byte [ebp - 0xd]
cmp byte [ebp - 0xd], 0
jne 0x526139
mov eax, dword [ebp - 4]
cmp byte [eax + 0x502], 0
je 0x526125
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x5ee]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x526139
xor edx, edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x526139
mov eax, dword [ebp - 4]
call fcn.00525ee8
mov eax, dword [ebp - 0xc]
cdq
xor eax, edx
sub eax, edx
push eax
mov eax, dword [ebp - 0xc]
pop edx
mov ecx, edx
cdq
idiv ecx
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0054d458
test eax, eax
jne 0x526168
call fcn.004042a0
call fcn.004042a0
jmp 0x5263bc
cmp byte [ebp - 0xd], 0
je 0x5261a6
mov eax, dword [ebp - 4]
cmp byte [eax + 0x502], 0
je 0x526196
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x5ee]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x314]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x5261a6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x314]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
cmp byte [ebp + 0xc], 0
jne 0x5261ba
cmp dword [ebp - 0xc], 0
jle 0x5261b7
dec dword [ebp - 0xc]
jmp 0x5261ba
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0
jne 0x525ff9
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5261ef
cmp byte [ebp - 0xe], 0
je 0x5261e7
mov eax, dword [ebp - 4]
call fcn.00525904
mov eax, dword [eax + 0x30]
call fcn.004abf78
ret
cmp byte [ebp - 5], 0
je 0x526243
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.005410c0
test al, al
jne 0x526247
xor eax, eax
jmp 0x526249
mov al, 1
mov byte [ebp - 5], al
cmp byte [ebp - 5], 0
jne 0x526262
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.0054d458
jmp 0x5263a5
mov eax, dword [ebp - 4]
call fcn.0051d52c
xor eax, eax
push ebp
push 0x52639e
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x428]
cmp byte [eax + 0x10], 1
je 0x5262de
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x428]
mov eax, dword [eax + 0xc]
call fcn.00546f9c
push 1
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x32c]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x11c]
mov eax, dword [ebp - 0x20]
push eax
mov eax, dword [ebp - 4]
call fcn.00540768
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0051d448
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x428]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.00547638
cmp byte [ebp + 0xc], 0
je 0x526314
cmp dword [ebp - 0xc], 1
jne 0x5262ff
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x32c]
call fcn.004a7c28
call fcn.004acab4
jmp 0x52631f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x32c]
call fcn.004a7c28
call fcn.004ac9dc
jmp 0x52631f
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.0054d458
push 1
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x32c]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x11c]
mov eax, dword [ebp - 0x24]
push eax
mov eax, dword [ebp - 4]
call fcn.00540768
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0051d448
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x428]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.00547638
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5263a5
mov eax, dword [ebp - 4]
call fcn.0051d630
mov eax, dword [ebp - 4]
cmp byte [eax + 0x453], 0
jne 0x52639d
mov eax, dword [ebp - 4]
cmp byte [eax + 0x485], 0
je 0x52639d
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x238]
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x453], 0
jne 0x5263bc
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 0x5263de
lea eax, [ebp - 0x24]
mov edx, 4
call fcn.00404858
ret