Function at 0x50d340
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 0x50d7f9
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp + 8], 0
jne 0x50d37f
mov eax, dword [ebp - 4]
test byte [eax + 0x369], 1
je 0x50d64e
mov byte [ebp - 5], 0
test bl, bl
je 0x50d395
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.0051f720
test al, al
jne 0x50d399
xor eax, eax
jmp 0x50d39b
mov al, 1
mov ebx, eax
mov byte [ebp - 6], 0
mov eax, dword [ebp - 4]
call fcn.00508ea8
xor eax, eax
push ebp
push 0x50d647
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 0x50d406
test esi, esi
jle 0x50d3f0
mov eax, dword [ebp - 4]
call fcn.0050cb70
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa1], 0
je 0x50d406
test esi, esi
jge 0x50d406
mov eax, dword [ebp - 4]
call fcn.0050cb70
mov eax, dword [eax + 0x30]
cmp byte [eax + 0xa0], 0
xor eax, eax
push ebp
push 0x50d607
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
je 0x50d5e3
mov eax, dword [ebp - 4]
test byte [eax + 0x369], 0x10
je 0x50d555
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
cmp byte [eax + 0x15], 0
je 0x50d555
test bl, bl
je 0x50d54d
mov eax, dword [ebp - 4]
cmp byte [eax + 0x375], 0
jne 0x50d4d7
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004c80d4
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
add eax, 0x37c
call fcn.004043d4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
call fcn.004c7fcc
mov edx, dword [ebp - 4]
mov byte [edx + 0x496], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3f2], 0
je 0x50d4b7
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x496]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x50d4c7
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [ebp - 4]
mov byte [eax + 0x375], 1
mov byte [ebp - 5], 1
jmp 0x50d555
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.004c80d4
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x37c]
mov eax, dword [ebp - 0xc]
call fcn.004c813c
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 0x50d555
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3f2], 0
je 0x50d541
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x496]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x50d555
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x50d555
mov eax, dword [ebp - 4]
call fcn.0050d2e4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b75e0
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.004bc1f0
test eax, eax
jne 0x50d58f
call fcn.00403e2c
call fcn.00403e2c
jmp 0x50d7de
cmp byte [ebp - 5], 0
je 0x50d5cd
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3f2], 0
je 0x50d5bd
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x496]
xor dl, 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov ecx, dword [eax]
call dword [ecx + 0xc]
jmp 0x50d5cd
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x29c]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xc]
cmp byte [ebp + 0xc], 0
jne 0x50d5db
test esi, esi
jle 0x50d5da
dec esi
jmp 0x50d5db
inc esi
test esi, esi
jne 0x50d41c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50d60e
cmp byte [ebp - 6], 0
je 0x50d606
mov eax, dword [ebp - 4]
call fcn.0050cb70
mov eax, dword [eax + 0x30]
call fcn.004bb5ec
ret
test bl, bl
je 0x50d660
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.0051f720
test al, al
jne 0x50d664
xor eax, eax
jmp 0x50d666
mov al, 1
mov ebx, eax
test bl, bl
jne 0x50d686
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b75e0
mov edx, esi
call fcn.004bc1f0
jmp 0x50d7c7
mov eax, dword [ebp - 4]
call fcn.00508ea8
xor edx, edx
push ebp
push 0x50d7c0
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 0x50d6f9
mov eax, dword [eax + 0xc]
call fcn.00521960
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.0051edbc
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.00508e40
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x378]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.00521e9c
cmp byte [ebp + 0xc], 0
je 0x50d72c
dec esi
jne 0x50d717
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b75e0
call fcn.004bc154
jmp 0x50d741
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b75e0
call fcn.004bc07c
jmp 0x50d741
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2b0]
call fcn.004b75e0
mov edx, esi
call fcn.004bc1f0
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.0051edbc
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.00508e40
mov edx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x378]
mov eax, dword [eax + 0xc]
pop ecx
call fcn.00521e9c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50d7c7
mov eax, dword [ebp - 4]
call fcn.0050cb60
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3b0], 0
jne 0x50d7bf
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3e5], 0
je 0x50d7bf
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 0x50d7de
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 0x50d800
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.004043a4
ret