Function at 0x51ad50
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x5bc92f
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov al, byte [esp + 0x28]
push ebx
push esi
push edi
push 0
lea ecx, [esp + 0x14]
mov dword [esp + 0x10], 0
mov byte [esp + 0x14], al
call fcn.0050c2c0
mov ebx, dword [esp + 0x34]
mov edi, 1
cmp ebx, 0x7f
mov dword [esp + 0x28], edi
ja 0x51ade7
mov eax, dword [esp + 0x18]
cmp eax, edi
jb 0x51adb3
mov ecx, dword [0x71802c]
push ecx
push edi
lea ecx, [esp + 0x18]
call fcn.0051c690
jmp 0x51adc3
mov edx, edi
push 0
sub edx, eax
lea ecx, [esp + 0x14]
push edx
call fcn.0051c5c0
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51addd
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov eax, dword [esp + 0x14]
jmp 0x51b057
mov eax, 0x717bd8
jmp 0x51b057
cmp ebx, 0x7ff
ja 0x51ae87
mov eax, dword [esp + 0x18]
cmp eax, 2
jb 0x51ae0f
mov eax, dword [0x71802c]
lea ecx, [esp + 0x10]
push eax
push 2
call fcn.0051c690
jmp 0x51ae22
mov ecx, 2
push 0
sub ecx, eax
push ecx
lea ecx, [esp + 0x18]
call fcn.0051c5c0
cmp dword [esp + 0x18], edi
jb 0x51ae42
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51ae42
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov edx, dword [esp + 0x14]
lea eax, [edx + 1]
jmp 0x51ae47
mov eax, 0x717bd8
mov cl, bl
and cl, 0x3f
or cl, 0x80
mov byte [eax], cl
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51ae74
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov eax, dword [esp + 0x14]
shr ebx, 6
and bl, 0x1f
or bl, 0xc0
jmp 0x51b057
shr ebx, 6
and bl, 0x1f
mov eax, 0x717bd8
or bl, 0xc0
jmp 0x51b057
cmp ebx, 0xffff
ja 0x51af5d
mov eax, dword [esp + 0x18]
cmp eax, 3
jb 0x51aeb0
mov edx, dword [0x71802c]
lea ecx, [esp + 0x10]
push edx
push 3
call fcn.0051c690
jmp 0x51aec3
mov ecx, 3
push 0
sub ecx, eax
push ecx
lea ecx, [esp + 0x18]
call fcn.0051c5c0
cmp dword [esp + 0x18], 2
jb 0x51aee4
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51aee4
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov edx, dword [esp + 0x14]
lea eax, [edx + 2]
jmp 0x51aee9
mov eax, 0x717bd8
mov cl, bl
and cl, 0x3f
or cl, 0x80
mov byte [eax], cl
mov eax, dword [esp + 0x18]
cmp eax, edi
jb 0x51af15
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51af15
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov edx, dword [esp + 0x14]
lea eax, [edx + 1]
jmp 0x51af1a
mov eax, 0x717bd8
mov ecx, ebx
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [eax], cl
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51af4a
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov eax, dword [esp + 0x14]
shr ebx, 0xc
and bl, 0xf
or bl, 0xe0
jmp 0x51b057
shr ebx, 0xc
and bl, 0xf
mov eax, 0x717bd8
or bl, 0xe0
jmp 0x51b057
cmp ebx, 0x10ffff
ja 0x51b059
mov eax, dword [esp + 0x18]
cmp eax, 4
jb 0x51af86
mov edx, dword [0x71802c]
lea ecx, [esp + 0x10]
push edx
push 4
call fcn.0051c690
jmp 0x51af99
mov ecx, 4
push 0
sub ecx, eax
push ecx
lea ecx, [esp + 0x18]
call fcn.0051c5c0
cmp dword [esp + 0x18], 3
jb 0x51afba
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51afba
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov edx, dword [esp + 0x14]
lea eax, [edx + 3]
jmp 0x51afbf
mov eax, 0x717bd8
mov cl, bl
and cl, 0x3f
or cl, 0x80
mov byte [eax], cl
mov eax, dword [esp + 0x18]
cmp eax, 2
jb 0x51afec
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51afec
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov edx, dword [esp + 0x14]
lea eax, [edx + 2]
jmp 0x51aff1
mov eax, 0x717bd8
mov ecx, ebx
shr ecx, 6
and cl, 0x3f
or cl, 0x80
mov byte [eax], cl
mov eax, dword [esp + 0x18]
cmp eax, edi
jb 0x51b020
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51b020
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov edx, dword [esp + 0x14]
lea eax, [edx + 1]
jmp 0x51b025
mov eax, 0x717bd8
mov ecx, ebx
shr ecx, 0xc
and cl, 0x3f
or cl, 0x80
mov byte [eax], cl
mov eax, dword [esp + 0x14]
test eax, eax
je 0x51b049
lea ecx, [esp + 0x10]
call fcn.00516bf0
mov eax, dword [esp + 0x14]
jmp 0x51b04e
mov eax, 0x717bd8
shr ebx, 0x12
and bl, 7
or bl, 0xf0
mov byte [eax], bl
mov esi, dword [esp + 0x30]
lea edx, [esp + 0x10]
push edx
mov ecx, esi
call fcn.0051bb50
mov dword [esp + 0xc], edi
push edi
lea ecx, [esp + 0x14]
mov byte [esp + 0x2c], 0
call fcn.0050c2c0
mov ecx, dword [esp + 0x20]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x20
ret