Function at 0x509820
Capabilities:
Access peb ldr_data

Disassembly:
lea r12, [rsp - 0x110]
cmp r12, qword [r14 + 0x10]
jbe 0x509cbb
push rbp
mov rbp, rsp
sub rsp, 0x188
mov qword [rsp + 0x198], rax
mov qword [rsp + 0x1a0], rbx
mov qword [rsp + 0x1a8], rcx
movups xmmword [rsp + 0x158], xmm15
movups xmmword [rsp + 0x160], xmm15
movups xmmword [rsp + 0x170], xmm15
movups xmmword [rsp + 0x130], xmm15
movups xmmword [rsp + 0x138], xmm15
movups xmmword [rsp + 0x148], xmm15
lea rdx, [rsp + 0x130]
mov qword [rsp], rdx
mov qword [rsp + 8], rcx
nop dword [rax]
call sym.crypto_internal_edwards25519_field.feSquare.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
movups xmmword [rsp + 0x108], xmm15
movups xmmword [rsp + 0x110], xmm15
movups xmmword [rsp + 0x120], xmm15
lea rax, [rsp + 0x158]
mov qword [rsp], rax
lea rcx, [rsp + 0x130]
mov qword [rsp + 8], rcx
mov rdx, qword [rsp + 0x1a8]
mov qword [rsp + 0x10], rdx
call sym.crypto_internal_edwards25519_field.feMul.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
lea rax, [rsp + 0x108]
mov qword [rsp], rax
mov rcx, qword [rsp + 0x1a0]
mov qword [rsp + 8], rcx
lea rdx, [rsp + 0x158]
mov qword [rsp + 0x10], rdx
call sym.crypto_internal_edwards25519_field.feMul.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
movups xmmword [rsp + 0xe0], xmm15
movups xmmword [rsp + 0xe8], xmm15
movups xmmword [rsp + 0xf8], xmm15
lea rax, [rsp + 0x158]
mov qword [rsp], rax
lea rcx, [rsp + 0x130]
mov qword [rsp + 8], rcx
call sym.crypto_internal_edwards25519_field.feSquare.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
lea rax, [rsp + 0xe0]
mov qword [rsp], rax
lea rcx, [rsp + 0x108]
mov qword [rsp + 8], rcx
lea rdx, [rsp + 0x158]
mov qword [rsp + 0x10], rdx
nop dword [rax]
call sym.crypto_internal_edwards25519_field.feMul.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
movups xmmword [rsp + 0xb8], xmm15
movups xmmword [rsp + 0xc0], xmm15
movups xmmword [rsp + 0xd0], xmm15
lea rax, [rsp + 0x158]
lea rbx, [rsp + 0xe0]
call sym.crypto_internal_edwards25519_field._Element_.Pow22523
lea rcx, [rsp + 0xb8]
mov qword [rsp], rcx
lea rdx, [rsp + 0x108]
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rax
call sym.crypto_internal_edwards25519_field.feMul.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
movups xmmword [rsp + 0x90], xmm15
movups xmmword [rsp + 0x98], xmm15
movups xmmword [rsp + 0xa8], xmm15
lea rax, [rsp + 0x158]
mov qword [rsp], rax
lea rcx, [rsp + 0xb8]
mov qword [rsp + 8], rcx
call sym.crypto_internal_edwards25519_field.feSquare.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
lea rax, [rsp + 0x90]
mov qword [rsp], rax
mov rcx, qword [rsp + 0x1a8]
mov qword [rsp + 8], rcx
lea rcx, [rsp + 0x158]
mov qword [rsp + 0x10], rcx
call sym.crypto_internal_edwards25519_field.feMul.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
movups xmmword [rsp + 0x68], xmm15
movups xmmword [rsp + 0x70], xmm15
movups xmmword [rsp + 0x80], xmm15
mov rbx, qword [0x008d70b8]
lea rax, [rsp + 0x68]
mov rcx, qword [rsp + 0x1a0]
call sym.crypto_internal_edwards25519_field._Element_.Subtract
mov qword [rsp + 0x180], rax
mov rbx, qword [rsp + 0x1a0]
lea rax, [rsp + 0x90]
call sym.crypto_internal_edwards25519_field._Element_.Equal
mov qword [rsp + 0x28], rax
mov rbx, qword [rsp + 0x180]
lea rax, [rsp + 0x90]
call sym.crypto_internal_edwards25519_field._Element_.Equal
mov qword [rsp + 0x20], rax
mov rcx, qword [0x008d70c8]
mov rdx, qword [rsp + 0x28]
or rdx, rax
mov qword [rsp + 0x38], rdx
lea rbx, [rsp + 0x158]
mov qword [rsp], rbx
mov rsi, qword [rsp + 0x180]
mov qword [rsp + 8], rsi
mov qword [rsp + 0x10], rcx
call sym.crypto_internal_edwards25519_field.feMul.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
lea rax, [rsp + 0x90]
lea rbx, [rsp + 0x158]
call sym.crypto_internal_edwards25519_field._Element_.Equal
movups xmmword [rsp + 0x40], xmm15
movups xmmword [rsp + 0x48], xmm15
movups xmmword [rsp + 0x58], xmm15
mov rcx, qword [0x008d70c8]
mov rdx, qword [rsp + 0x20]
or rax, rdx
neg rax
mov qword [rsp + 0x18], rax
not rax
mov qword [rsp + 0x30], rax
lea rbx, [rsp + 0x40]
mov qword [rsp], rbx
lea rbx, [rsp + 0xb8]
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rcx
call sym.crypto_internal_edwards25519_field.feMul.abi0
xorps xmm15, xmm15
mov r14, qword [0x009746c0]
mov r14, qword gs:[r14]
mov r14, qword [r14]
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x18]
and rax, rcx
mov rdx, qword [rsp + 0xb8]
mov rbx, qword [rsp + 0x30]
and rdx, rbx
or rdx, rax
nop
mov qword [rsp + 0xb8], rdx
mov rax, qword [rsp + 0x48]
and rax, rcx
mov rdx, qword [rsp + 0xc0]
and rdx, rbx
or rdx, rax
mov qword [rsp + 0xc0], rdx
mov rax, qword [rsp + 0x50]
and rax, rcx
mov rdx, qword [rsp + 0xc8]
and rdx, rbx
or rdx, rax
mov qword [rsp + 0xc8], rdx
mov rax, qword [rsp + 0x58]
and rax, rcx
mov rdx, qword [rsp + 0xd0]
and rdx, rbx
or rdx, rax
mov qword [rsp + 0xd0], rdx
mov rax, qword [rsp + 0x60]
and rax, rcx
mov rcx, qword [rsp + 0xd8]
and rcx, rbx
or rcx, rax
mov qword [rsp + 0xd8], rcx
mov rax, qword [rsp + 0x198]
lea rbx, [rsp + 0xb8]
call sym.crypto_internal_edwards25519_field._Element_.Absolute
mov rax, qword [rsp + 0x198]
mov rbx, qword [rsp + 0x38]
add rsp, 0x188
pop rbp
ret
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
call sym.runtime.morestack_noctxt.abi0
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
nop
jmp sym.crypto_internal_edwards25519_field._Element_.SqrtRatio