Function at 0x514bb8
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 0x515071
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x514bf7
mov eax, dword [ebp - 4]
test byte [eax + 0x369], 1
je 0x514ec6
mov byte [ebp - 5], 0
test bl, bl
je 0x514c0d
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.00526e60
test al, al
jne 0x514c11
xor eax, eax
jmp 0x514c13
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.005107e0
xor eax, eax
push ebp
push 0x514ebf
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 0x514c7e
test esi, esi
jle 0x514c68
mov eax, dword [ebp - 4]
call fcn.005143e8
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x514c7e
test esi, esi
jge 0x514c7e
mov eax, dword [ebp - 4]
call fcn.005143e8
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x514e7f
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x514e5b
mov eax, dword [ebp - 4]
test byte [eax + 0x369], 0x10
je 0x514dcd
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
cmp byte [eax + 0x15], 0
je 0x514dcd
test bl, bl
je 0x514dc5
mov eax, dword [ebp - 4]
cmp byte [eax + 0x375], 0
jne 0x514d4f
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.0050ea0c
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x37c
call fcn.00404820
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.0050ea7c
mov edx, dword [ebp - 4]
mov byte [edx + 0x496], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3f2], 0
je 0x514d2f
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x496]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.0050ed2c
jmp 0x514d3f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.0050ed2c
mov eax, dword [ebp - 4]
mov byte [eax + 0x375], 1
mov byte [ebp - 5], 1
jmp 0x514dcd
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.0050ea0c
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x37c]
mov eax, dword [ebp - 0xc]
call fcn.0050e9f0
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 0x514dcd
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3f2], 0
je 0x514db9
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x496]
mov eax, dword [ebp - 0xc]
call fcn.0050ed2c
jmp 0x514dcd
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.0050ed2c
jmp 0x514dcd
mov eax, dword [ebp - 4]
call fcn.00514b5c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004d4f38
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.004d9bcc
test eax, eax
jne 0x514e07
call fcn.004041cc
call fcn.004041cc
jmp 0x515056
cmp byte [ebp - 5], 0
je 0x514e45
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3f2], 0
je 0x514e35
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x496]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.0050ed2c
jmp 0x514e45
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.0050ed2c
cmp byte [ebp + 0xc], 0
jne 0x514e53
test esi, esi
jle 0x514e52
dec esi
jmp 0x514e53
inc esi
test esi, esi
jne 0x514c94
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x514e86
cmp byte [ebp - 6], 0
je 0x514e7e
mov eax, dword [ebp - 4]
call fcn.005143e8
mov eax, dword [eax + 0x30]
call fcn.004d8f9c
ret
test bl, bl
je 0x514ed8
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.00526e60
test al, al
jne 0x514edc
xor eax, eax
jmp 0x514ede
mov al, 1
mov ebx, eax
test bl, bl
jne 0x514efe
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004d4f38
mov edx, esi
call fcn.004d9bcc
jmp 0x51503f
mov eax, dword [ebp - 4]
call fcn.005107e0
xor edx, edx
push ebp
push 0x515038
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x378]
cmp byte [eax + 0x10], 2
je 0x514f71
mov eax, dword [eax + 0xc]
call fcn.005290a0
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.00526504
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.00510778
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x378]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.005295dc
cmp byte [ebp + 0xc], 0
je 0x514fa4
dec esi
jne 0x514f8f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004d4f38
call fcn.004d9b30
jmp 0x514fb9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004d4f38
call fcn.004d9a58
jmp 0x514fb9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004d4f38
mov edx, esi
call fcn.004d9bcc
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.00526504
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.00510778
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x378]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.005295dc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x51503f
mov eax, dword [ebp - 4]
call fcn.005143d8
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3b0], 0
jne 0x515037
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3e5], 0
je 0x515037
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x13c]
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3b0], 0
jne 0x515056
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 0x515078
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.004047f0
ret