Function at 0x4e9e08
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 0x4ea27b
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x4e9e47
mov eax, dword [ebp - 4]
test byte [eax + 0x361], 1
je 0x4ea0f3
mov byte [ebp - 5], 0
test bl, bl
je 0x4e9e5d
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.004f6a38
test al, al
jne 0x4e9e61
xor eax, eax
jmp 0x4e9e63
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.004e6454
xor eax, eax
push ebp
push 0x4ea0ec
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 0x4e9ece
test esi, esi
jle 0x4e9eb8
mov eax, dword [ebp - 4]
call fcn.004e9630
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x4e9ece
test esi, esi
jge 0x4e9ece
mov eax, dword [ebp - 4]
call fcn.004e9630
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x4ea0cf
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x4ea0ab
mov eax, dword [ebp - 4]
test byte [eax + 0x361], 0x10
je 0x4ea01d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
cmp byte [eax + 0x15], 0
je 0x4ea01d
test bl, bl
je 0x4ea015
mov eax, dword [ebp - 4]
cmp byte [eax + 0x36d], 0
jne 0x4e9f9f
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004e4cb0
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x374
call fcn.00404358
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004e4d20
mov edx, dword [ebp - 4]
mov byte [edx + 0x45a], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3ae], 0
je 0x4e9f7f
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x45a]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004e4fc8
jmp 0x4e9f8f
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.004e4fc8
mov eax, dword [ebp - 4]
mov byte [eax + 0x36d], 1
mov byte [ebp - 5], 1
jmp 0x4ea01d
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.004e4cb0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x374]
mov eax, dword [ebp - 0xc]
call fcn.004e4c94
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 0x4ea01d
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3ae], 0
je 0x4ea009
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x45a]
mov eax, dword [ebp - 0xc]
call fcn.004e4fc8
jmp 0x4ea01d
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.004e4fc8
jmp 0x4ea01d
mov eax, dword [ebp - 4]
call fcn.004e9db4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00499688
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.0049e84c
test eax, eax
jne 0x4ea057
call fcn.00403dd0
call fcn.00403dd0
jmp 0x4ea260
cmp byte [ebp - 5], 0
je 0x4ea095
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3ae], 0
je 0x4ea085
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x45a]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004e4fc8
jmp 0x4ea095
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
call fcn.004e4fc8
cmp byte [ebp + 0xc], 0
jne 0x4ea0a3
test esi, esi
jle 0x4ea0a2
dec esi
jmp 0x4ea0a3
inc esi
test esi, esi
jne 0x4e9ee4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ea0d6
cmp byte [ebp - 6], 0
je 0x4ea0ce
mov eax, dword [ebp - 4]
call fcn.004e9630
mov eax, dword [eax + 0x30]
call fcn.0049dc48
ret
test bl, bl
je 0x4ea105
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.004f6a38
test al, al
jne 0x4ea109
xor eax, eax
jmp 0x4ea10b
mov al, 1
mov ebx, eax
test bl, bl
jne 0x4ea12b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00499688
mov edx, esi
call fcn.0049e84c
jmp 0x4ea249
mov eax, dword [ebp - 4]
call fcn.004e6454
xor edx, edx
push ebp
push 0x4ea242
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 0x4ea19e
mov eax, dword [eax + 0xc]
call fcn.004f887c
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.004f60ec
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.004e63ec
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.004f8d64
cmp byte [ebp + 0xc], 0
je 0x4ea1d1
dec esi
jne 0x4ea1bc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00499688
call fcn.0049e7b0
jmp 0x4ea1e6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00499688
call fcn.0049e6d8
jmp 0x4ea1e6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.00499688
mov edx, esi
call fcn.0049e84c
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.004f60ec
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.004e63ec
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.004f8d64
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ea249
mov eax, dword [ebp - 4]
call fcn.004e9620
ret
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3a4], 0
jne 0x4ea260
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 0x4ea282
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.00404328
ret