Function at 0x4e16e8
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 0x4e1ba1
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x4e1727
mov eax, dword [ebp - 4]
test byte [eax + 0x361], 1
je 0x4e19f6
mov byte [ebp - 5], 0
test bl, bl
je 0x4e173d
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.004f297c
test al, al
jne 0x4e1741
xor eax, eax
jmp 0x4e1743
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.004dd1d4
xor eax, eax
push ebp
push 0x4e19ef
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 0x4e17ae
test esi, esi
jle 0x4e1798
mov eax, dword [ebp - 4]
call fcn.004e0f18
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x4e17ae
test esi, esi
jge 0x4e17ae
mov eax, dword [ebp - 4]
call fcn.004e0f18
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x4e19af
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x4e198b
mov eax, dword [ebp - 4]
test byte [eax + 0x361], 0x10
je 0x4e18fd
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
cmp byte [eax + 0x15], 0
je 0x4e18fd
test bl, bl
je 0x4e18f5
mov eax, dword [ebp - 4]
cmp byte [eax + 0x36d], 0
jne 0x4e187f
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004db434
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x374
call fcn.00404824
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004db4a4
mov edx, dword [ebp - 4]
mov byte [edx + 0x47e], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3e0], 0
je 0x4e185f
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x47e]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004db74c
jmp 0x4e186f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.004db74c
mov eax, dword [ebp - 4]
mov byte [eax + 0x36d], 1
mov byte [ebp - 5], 1
jmp 0x4e18fd
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.004db434
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x374]
mov eax, dword [ebp - 0xc]
call fcn.004db418
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 0x4e18fd
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3e0], 0
je 0x4e18e9
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x47e]
mov eax, dword [ebp - 0xc]
call fcn.004db74c
jmp 0x4e18fd
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.004db74c
jmp 0x4e18fd
mov eax, dword [ebp - 4]
call fcn.004e168c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00487a00
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.0048cbe4
test eax, eax
jne 0x4e1937
call fcn.004041f8
call fcn.004041f8
jmp 0x4e1b86
cmp byte [ebp - 5], 0
je 0x4e1975
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3e0], 0
je 0x4e1965
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x47e]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004db74c
jmp 0x4e1975
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.004db74c
cmp byte [ebp + 0xc], 0
jne 0x4e1983
test esi, esi
jle 0x4e1982
dec esi
jmp 0x4e1983
inc esi
test esi, esi
jne 0x4e17c4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4e19b6
cmp byte [ebp - 6], 0
je 0x4e19ae
mov eax, dword [ebp - 4]
call fcn.004e0f18
mov eax, dword [eax + 0x30]
call fcn.0048bfe0
ret
test bl, bl
je 0x4e1a08
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.004f297c
test al, al
jne 0x4e1a0c
xor eax, eax
jmp 0x4e1a0e
mov al, 1
mov ebx, eax
test bl, bl
jne 0x4e1a2e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00487a00
mov edx, esi
call fcn.0048cbe4
jmp 0x4e1b6f
mov eax, dword [ebp - 4]
call fcn.004dd1d4
xor edx, edx
push ebp
push 0x4e1b68
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 0x4e1aa1
mov eax, dword [eax + 0xc]
call fcn.004f49c0
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.004f2030
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.004dd16c
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.004f4ef0
cmp byte [ebp + 0xc], 0
je 0x4e1ad4
dec esi
jne 0x4e1abf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00487a00
call fcn.0048cb48
jmp 0x4e1ae9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00487a00
call fcn.0048ca70
jmp 0x4e1ae9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00487a00
mov edx, esi
call fcn.0048cbe4
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.004f2030
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.004dd16c
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.004f4ef0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4e1b6f
mov eax, dword [ebp - 4]
call fcn.004e0f08
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3a8], 0
jne 0x4e1b67
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3dd], 0
je 0x4e1b67
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x11c]
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3a8], 0
jne 0x4e1b86
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 0x4e1ba8
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.004047f4
ret