Function at 0x77cfe562
Capabilities:
Access peb ldr_data

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x280
mov eax, dword [0x77d1a0c4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push edi
xor edi, edi
cmp ebx, edi
je 0x77cfeae5
push esi
push edi
push edi
push edi
push 6
push edi
push edi
push edi
mov dword [ebp - 0x268], edi
mov dword [ebp - 0x258], edi
mov dword [ebp - 0x25c], edi
mov dword [ebp - 0x260], edi
mov dword [ebp - 0x20], 0x1c
call dword [ebx + 4]
mov esi, eax
cmp esi, 0xffffffff
mov dword [ebp - 0x264], esi
je 0x77cfeae4
lea eax, [ebp - 0x248]
push eax
push esi
mov dword [ebp - 0x248], 0x226
call dword [ebx + 8]
test eax, eax
je 0x77cfea8c
lea eax, [ebp - 0x20]
push eax
push edi
push esi
mov dword [ebp - 0x26c], edi
call dword [ebx + 0xc]
test eax, eax
je 0x77cfea8c
lea eax, [ebp - 0x24c]
push eax
push edi
push edi
push edi
push edi
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x264]
mov dword [ebp - 0x250], 0x190
mov dword [ebp - 0x24c], edi
mov dword [ebp - 0x254], edi
call dword [ebx + 0x10]
lea eax, [ebp - 0x254]
push eax
push edi
push edi
push edi
push 0xc
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x264]
call dword [ebx + 0x10]
mov eax, dword [ebp - 0x24c]
mov ecx, dword [ebp - 0x254]
lea esi, [eax + ecx]
add esi, dword [ebp - 0x250]
cmp dword [ebp - 0x268], edi
je 0x77cfe673
push dword [ebp - 0x268]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push edi
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push esi
push 8
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlAllocateHeap]
mov esi, eax
cmp esi, edi
mov dword [ebp - 0x268], esi
je 0x77cfea4a
lea eax, [ebp - 0x250]
push eax
mov eax, dword [ebp - 0x250]
shr eax, 1
push eax
push esi
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x264]
call dword [ebx + 0x18]
test eax, eax
je 0x77cfea4a
cmp dword [ebp - 0x24c], edi
jbe 0x77cfe82a
mov eax, dword [ebp - 0x250]
lea esi, [esi + eax*2]
lea eax, [ebp - 0x24c]
push eax
push dword [ebp - 0x24c]
lea eax, [ebp - 0x20]
push esi
push edi
push edi
push eax
push dword [ebp - 0x264]
mov dword [ebp - 0x274], edi
call dword [ebx + 0x10]
test eax, eax
je 0x77cfe82a
shr dword [ebp - 0x24c], 1
cmp dword [ebp - 0x254], edi
mov eax, dword [ebp - 0x24c]
lea eax, [esi + eax*2]
jbe 0x77cfe743
lea ecx, [ebp - 0x254]
push ecx
push dword [ebp - 0x254]
push eax
push edi
push 0xc
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x264]
call dword [ebx + 0x10]
test eax, eax
je 0x77cfe82a
shr dword [ebp - 0x254], 1
jmp 0x77cfe74d
mov dword [ebp - 0x274], 1
mov eax, dword [ebp - 0x274]
mov ecx, dword [ebp - 0x254]
add ecx, eax
add ecx, dword [ebp - 0x24c]
mov eax, dword fs:[0x18]
add ecx, dword [ebp - 0x250]
mov eax, dword [eax + 0x30]
lea ecx, [ecx + ecx + 0x2c]
push ecx
push 8
push dword [eax + 0x18]
mov dword [ebp - 0x278], ecx
call dword [sym.imp.ntdll.dll_RtlAllocateHeap]
mov esi, eax
cmp esi, edi
je 0x77cfe82a
mov word [esi + 6], 0xb16
mov eax, dword [ebp - 0x250]
mov dword [esi + 0x20], eax
mov eax, dword [ebp - 0x24c]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x254]
mov dword [esi + 0x28], eax
mov eax, dword [ebp - 0x24c]
mov ecx, dword [ebp - 0x254]
add ecx, eax
add ecx, dword [ebp - 0x250]
lea eax, [esi + 0x2c]
add ecx, ecx
push ecx
push dword [ebp - 0x268]
push eax
call sub.ntdll.dll_memcpy
add esp, 0xc
cmp dword [ebp - 0x274], edi
jbe 0x77cfe7fb
mov eax, dword [ebp - 0x24c]
mov ecx, dword [ebp - 0x254]
add ecx, eax
add ecx, dword [ebp - 0x250]
mov word [esi + ecx*2 + 0x2c], di
mov eax, dword [ebp - 0x278]
push esi
add eax, 0xffffffe0
push eax
movzx eax, word [ebp + 0xc]
push 0x40000004
push eax
call dword [sym.imp.ntdll.dll_NtTraceEvent]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push esi
push edi
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
push dword [ebp - 0x234]
lea eax, [ebp - 0x27c]
push edi
push dword [ebp - 0xc]
mov esi, 0x400
push eax
lea eax, [ebp - 0x270]
push eax
mov dword [ebp - 0x270], esi
mov dword [ebp - 0x27c], 1
call dword [ebx + 0x28]
test eax, eax
jne 0x77cfea4a
test dword [ebp - 0x270], esi
jne 0x77cfe883
push dword [ebp - 0x234]
lea eax, [ebp - 0x258]
push 2
push dword [ebp - 0xc]
push eax
call dword [ebx + 0x2c]
test eax, eax
je 0x77cfe8ce
push dword [ebp - 0x234]
lea eax, [ebp - 0x258]
push 4
push dword [ebp - 0xc]
push eax
call dword [ebx + 0x2c]
test eax, eax
je 0x77cfe8ce
test dword [ebp - 0x270], esi
je 0x77cfe8b1
cmp dword [ebp - 0x27c], 0x1d
je 0x77cfea4a
push dword [ebp - 0x234]
lea eax, [ebp - 0x258]
push 3
push dword [ebp - 0xc]
push eax
call dword [ebx + 0x2c]
test eax, eax
jne 0x77cfea4a
push dword [ebp - 0x234]
lea eax, [ebp - 0x25c]
push edi
push edi
push 4
push dword [ebp - 0x258]
push eax
call dword [ebx + 0x30]
test eax, eax
jne 0x77cfe9f5
push dword [ebp - 0x234]
lea eax, [ebp - 0x280]
push edi
push dword [ebp - 0x25c]
push eax
call dword [ebx + 0x34]
test eax, eax
jne 0x77cfe9f5
mov eax, dword fs:[0x18]
push dword [ebp - 0x280]
mov eax, dword [eax + 0x30]
mov esi, dword [sym.imp.ntdll.dll_RtlAllocateHeap]
push 8
push dword [eax + 0x18]
call esi
cmp eax, edi
mov dword [ebp - 0x260], eax
je 0x77cfea1c
push dword [ebp - 0x234]
push edi
push dword [ebp - 0x280]
push eax
push dword [ebp - 0x25c]
call dword [ebx + 0x38]
test eax, eax
jne 0x77cfe9f5
mov ecx, dword [ebp - 0x250]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
lea ecx, [ecx + ecx + 0x30]
push ecx
push 8
push dword [eax + 0x18]
mov dword [ebp - 0x278], ecx
call esi
mov esi, eax
cmp esi, edi
je 0x77cfe9f5
mov eax, dword [ebp - 0x260]
mov word [esi + 6], 0xb15
mov ecx, dword [eax + 0x10]
mov dword [esi + 0x20], ecx
mov dword [esi + 0x24], edi
mov eax, dword [eax + 0xc]
mov dword [esi + 0x28], eax
mov eax, dword [ebp - 0x250]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x250]
add eax, eax
push eax
push dword [ebp - 0x268]
lea eax, [esi + 0x30]
push eax
call sub.ntdll.dll_memcpy
mov eax, dword [esi + 0x2c]
add esp, 0xc
mov word [esi + eax*2 + 0x2e], di
mov eax, dword [ebp - 0x278]
push esi
add eax, 0xffffffe0
push eax
movzx eax, word [ebp + 0xc]
push 0x40000004
push eax
call dword [sym.imp.ntdll.dll_NtTraceEvent]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push esi
push edi
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
cmp dword [ebp - 0x260], edi
je 0x77cfea1c
push dword [ebp - 0x260]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push edi
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
mov dword [ebp - 0x260], edi
cmp dword [ebp - 0x25c], edi
je 0x77cfea33
push dword [ebp - 0x25c]
call dword [ebx + 0x3c]
mov dword [ebp - 0x25c], edi
cmp dword [ebp - 0x258], edi
je 0x77cfea4a
push dword [ebp - 0x258]
call dword [ebx + 0x40]
mov dword [ebp - 0x258], edi
inc dword [ebp - 0x26c]
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x26c]
push dword [ebp - 0x264]
call dword [ebx + 0xc]
test eax, eax
jne 0x77cfe5f6
cmp dword [ebp - 0x260], edi
je 0x77cfea8c
push dword [ebp - 0x260]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push edi
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
cmp dword [ebp - 0x25c], edi
je 0x77cfeaa3
push dword [ebp - 0x25c]
call dword [ebx + 0x3c]
mov dword [ebp - 0x25c], edi
cmp dword [ebp - 0x258], edi
je 0x77cfeaba
push dword [ebp - 0x258]
call dword [ebx + 0x40]
mov dword [ebp - 0x258], edi
cmp dword [ebp - 0x268], edi
je 0x77cfeadb
push dword [ebp - 0x268]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push edi
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
push dword [ebp - 0x264]
call dword [ebx + 0x14]
pop esi
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop ebx
call fcn.77cc744e
leave
ret 8