Function at 0x52fa86
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
test edx, edx
je 0x52fde5
mov esi, ecx
push 0x15
pop ecx
lea eax, [esp + 0x50]
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], edx
mov esi, edx
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x10]
mov cl, byte [eax + 0x52]
or byte [edi + 0x52], cl
push 0xfffffffffffffffe
pop ecx
test ecx, ecx
je 0x52fada
movzx edx, byte [ecx + str.bidirectionalunidirectionalclientserverbiunidirectional_stream]
mov esi, eax
inc ecx
or esi, edx
mov bl, byte [esi + 0x50]
or byte [edi + edx + 0x50], bl
jmp 0x52fac1
mov esi, edi
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov eax, dword [esi]
mov ebx, dword [esi + 8]
mov ecx, edi
mov dword [esp + 0x18], edx
sub eax, ebx
shl ecx, 4
cmp eax, edi
jae 0x52fb13
mov dword [esp], ecx
mov ecx, esi
mov edx, ebx
push edi
call fcn.005231db
pop ecx
mov ecx, eax
call fcn.0041c279
mov ecx, dword [esp]
mov ebx, dword [esi + 8]
mov eax, ebx
shl eax, 4
add eax, dword [esi + 4]
push ecx
push dword [esp + 0x1c]
push eax
call fcn.00616830
add esp, 0xc
add edi, ebx
mov edx, dword [esp + 0x60]
mov dword [esi + 8], edi
mov edi, dword [esp + 0x64]
mov eax, dword [esi + 0xc]
mov ebx, dword [esi + 0x14]
mov dword [esp + 0x14], edx
mov ecx, edi
sub eax, ebx
shl ecx, 4
cmp eax, edi
jae 0x52fb67
mov dword [esp], ecx
lea ecx, [esi + 0xc]
mov edx, ebx
push edi
call fcn.005231db
pop ecx
mov ecx, eax
call fcn.0041c279
mov ecx, dword [esp]
mov ebx, dword [esi + 0x14]
mov eax, ebx
shl eax, 4
add eax, dword [esi + 0x10]
push ecx
push dword [esp + 0x18]
push eax
call fcn.00616830
add esp, 0xc
add edi, ebx
mov ebx, dword [esp + 0x90]
lea ecx, [esi + 0x40]
mov dword [esi + 0x14], edi
mov edi, dword [esp + 0x9c]
mov dword [esp], ecx
movdqa xmm0, xmmword [ebx]
lea edx, [edi + 1]
shr edx, 1
cmp dword [esi + 0x4c], 0
pmovmskb eax, xmm0
not eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x94]
cmove edx, edi
mov dword [esp + 0x1c], eax
lea eax, [eax + ebx + 1]
mov dword [esp + 0xc], eax
lea eax, [ebx + 0x10]
mov dword [esp + 8], eax
call fcn.00522cc5
mov eax, dword [esp + 8]
lea esi, [esp + 0x34]
mov dword [esp + 0x20], ebx
mov dword [esi - 0xc], ebx
mov dword [esi - 8], eax
mov eax, dword [esp + 0xc]
mov dword [esi - 4], eax
mov eax, dword [esp + 4]
mov word [esi], ax
mov ecx, esi
call fcn.0040135d
cmp eax, 1
je 0x52fc20
test edi, edi
je 0x52fc40
mov eax, dword [esp + 0x2c]
movdqa xmm0, xmmword [eax]
add eax, 0x10
pmovmskb ecx, xmm0
not ecx
mov word [esp + 0x34], cx
add dword [esp + 0x28], 0xffffff80
mov dword [esp + 0x2c], eax
jmp 0x52fbef
mov eax, dword [esp + 0x28]
shl edx, 3
mov ecx, dword [esp]
mov ebx, eax
sub ebx, edx
neg edx
mov edx, dword [eax + edx - 8]
push dword [ebx - 4]
call fcn.00522c2d
pop ecx
dec edi
jmp 0x52fbef
mov eax, dword [esp + 0x10]
movq xmm0, qword [esp + 0x68]
movsd xmm1, qword [esp + 0x70]
movq qword [esp + 0x40], xmm0
movsd qword [esp + 0x48], xmm1
add eax, 0x18
mov dword [esp + 4], eax
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
lea ebx, [eax - 1]
add eax, edx
mov dword [esp], edx
xor edx, edx
imul eax, eax, 0x18
lea edi, [eax + ecx - 0x18]
cmp ebx, 0xffffffff
je 0x52fcd9
mov eax, dword [esp]
add eax, ebx
cmp eax, esi
mov eax, esi
cmovb eax, edx
imul eax, eax, 0xffffffe8
movsd xmm0, qword [edi + eax]
movsd xmm1, qword [edi + eax + 8]
movsd qword [esp + 0x28], xmm0
movq xmm0, qword [edi + eax + 0x10]
cmp dword [esp + 0x28], 0
movsd qword [esp + 0x30], xmm1
movq qword [esp + 0x38], xmm0
je 0x52fcd7
mov ecx, dword [esp + 4]
lea edx, [esp + 0x28]
call fcn.0052b4ec
xor edx, edx
dec ebx
add edi, 0xffffffe8
jmp 0x52fc84
mov edx, ebx
lea ecx, [esp + 0x40]
mov dword [ecx + 0xc], edx
call fcn.005241f3
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x80]
mov edx, dword [esp + 0x7c]
mov eax, dword [edi + 0x28]
mov esi, dword [edi + 0x30]
imul ecx, ebx, 0x30
mov dword [esp], edx
sub eax, esi
cmp eax, ebx
jae 0x52fd24
mov dword [esp + 4], ecx
lea ecx, [edi + 0x28]
mov edx, esi
push ebx
call fcn.00523155
pop ecx
mov ecx, eax
call fcn.0041c279
mov ecx, dword [esp + 4]
mov esi, dword [edi + 0x30]
imul eax, esi, 0x30
add eax, dword [edi + 0x2c]
push ecx
push dword [esp + 4]
push eax
call fcn.00616830
add esp, 0xc
add ebx, esi
mov esi, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
lea ecx, [edi + 0x34]
mov dword [edi + 0x30], ebx
mov dword [esp + 4], esi
mov esi, dword [esp + 0x8c]
mov dword [esp + 0xc], eax
lea edx, [esi*8]
mov dword [esp + 8], edx
mov edx, esi
call fcn.00523263
mov ebx, dword [edi + 0x3c]
lea eax, [ebx*8]
add eax, dword [edi + 0x38]
push dword [esp + 8]
push dword [esp + 8]
push eax
call fcn.00616830
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 4]
add ebx, esi
mov dword [edi + 0x3c], ebx
call fcn.00523281
mov al, byte [esp + 0xa3]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x18]
or byte [edi + 0x53], al
call fcn.005d2b40
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x14]
call fcn.005d2b40
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
call fcn.0052d30e
mov ecx, dword [esp + 0x78]
mov edx, dword [esp]
call fcn.0052d2de
mov ecx, dword [esp + 0x24]
call fcn.004152e1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret