Function at 0x505888
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 0x505d41
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x5058c7
mov eax, dword [ebp - 4]
test byte [eax + 0x3c1], 1
je 0x505b96
mov byte [ebp - 5], 0
test bl, bl
je 0x5058dd
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.00516c0c
test al, al
jne 0x5058e1
xor eax, eax
jmp 0x5058e3
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.005010e4
xor eax, eax
push ebp
push 0x505b8f
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
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 0x50594e
test esi, esi
jle 0x505938
mov eax, dword [ebp - 4]
call fcn.005050b8
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x50594e
test esi, esi
jge 0x50594e
mov eax, dword [ebp - 4]
call fcn.005050b8
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x505b4f
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x505b2b
mov eax, dword [ebp - 4]
test byte [eax + 0x3c1], 0x10
je 0x505a9d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
cmp byte [eax + 0x15], 0
je 0x505a9d
test bl, bl
je 0x505a95
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3cd], 0
jne 0x505a1f
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
call fcn.004b1ae8
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x3d4
call fcn.004046e0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
call fcn.004b19e0
mov edx, dword [ebp - 4]
mov byte [edx + 0x50e], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x462], 0
je 0x5059ff
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x50e]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x505a0f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [ebp - 4]
mov byte [eax + 0x3cd], 1
mov byte [ebp - 5], 1
jmp 0x505a9d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov dword [ebp - 0xc], eax
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0xc]
call fcn.004b1ae8
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x3d4]
mov eax, dword [ebp - 0xc]
call fcn.004b1b50
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 0x505a9d
mov eax, dword [ebp - 4]
cmp byte [eax + 0x462], 0
je 0x505a89
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x50e]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x505a9d
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x505a9d
mov eax, dword [ebp - 4]
call fcn.0050582c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.00497790
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.0049c63c
test eax, eax
jne 0x505ad7
call fcn.004040b4
call fcn.004040b4
jmp 0x505d26
cmp byte [ebp - 5], 0
je 0x505b15
mov eax, dword [ebp - 4]
cmp byte [eax + 0x462], 0
je 0x505b05
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x50e]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x505b15
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2dc]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
cmp byte [ebp + 0xc], 0
jne 0x505b23
test esi, esi
jle 0x505b22
dec esi
jmp 0x505b23
inc esi
test esi, esi
jne 0x505964
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x505b56
cmp byte [ebp - 6], 0
je 0x505b4e
mov eax, dword [ebp - 4]
call fcn.005050b8
mov eax, dword [eax + 0x30]
call fcn.0049ba38
ret
test bl, bl
je 0x505ba8
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.00516c0c
test al, al
jne 0x505bac
xor eax, eax
jmp 0x505bae
mov al, 1
mov ebx, eax
test bl, bl
jne 0x505bce
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.00497790
mov edx, esi
call fcn.0049c63c
jmp 0x505d0f
mov eax, dword [ebp - 4]
call fcn.005010e4
xor edx, edx
push ebp
push 0x505d08
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3d0]
cmp byte [eax + 0x10], 2
je 0x505c41
mov eax, dword [eax + 0xc]
call fcn.00518f9c
push 1
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
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.0051640c
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0050107c
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3d0]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.005194d8
cmp byte [ebp + 0xc], 0
je 0x505c74
dec esi
jne 0x505c5f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.00497790
call fcn.0049c5a0
jmp 0x505c89
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.00497790
call fcn.0049c4c8
jmp 0x505c89
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
call fcn.00497790
mov edx, esi
call fcn.0049c63c
push 1
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2f4]
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.0051640c
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0050107c
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3d0]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.005194d8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x505d0f
mov eax, dword [ebp - 4]
call fcn.005050a8
mov eax, dword [ebp - 4]
cmp byte [eax + 0x408], 0
jne 0x505d07
mov eax, dword [ebp - 4]
cmp byte [eax + 0x43d], 0
je 0x505d07
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x15c]
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x408], 0
jne 0x505d26
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 0x505d48
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.004046b0
ret