Function at 0x52bb00
Capabilities:
Reference http user-agent string

Disassembly:
lea r12, [rsp - 0x268]
cmp r12, qword [r14 + 0x10]
jbe 0x52c11a
push rbp
mov rbp, rsp
sub rsp, 0x2e0
mov qword [rsp + 0x2f8], rbx
cmp rcx, 1
jne 0x52bcb1
cmp byte [rbx], 0
jne 0x52bcb1
movups xmmword [rsp + 0x260], xmm15
movups xmmword [rsp + 0x268], xmm15
movups xmmword [rsp + 0x278], xmm15
movups xmmword [rsp + 0x288], xmm15
movups xmmword [rsp + 0x298], xmm15
movups xmmword [rsp + 0x218], xmm15
movups xmmword [rsp + 0x220], xmm15
movups xmmword [rsp + 0x230], xmm15
movups xmmword [rsp + 0x240], xmm15
movups xmmword [rsp + 0x250], xmm15
nop
movabs rdx, 0x80000000000000
mov qword [rsp + 0x218], rdx
movups xmmword [rsp + 0x1d0], xmm15
movups xmmword [rsp + 0x1d8], xmm15
movups xmmword [rsp + 0x1e8], xmm15
movups xmmword [rsp + 0x1f8], xmm15
movups xmmword [rsp + 0x208], xmm15
movups xmmword [rsp + 0x2c8], xmm15
mov qword [rsp + 0x2d8], 0
lea rdx, [rsp + 0x260]
mov qword [rsp + 0x2c8], rdx
lea rsi, [rsp + 0x218]
mov qword [rsp + 0x2d0], rsi
lea rsi, [rsp + 0x1d0]
mov qword [rsp + 0x2d8], rsi
mov rsi, qword [rax]
mov rdi, qword [rdx]
mov qword [rsi], rdi
movups xmm0, xmmword [rdx + 8]
movups xmmword [rsi + 8], xmm0
movups xmm0, xmmword [rdx + 0x18]
movups xmmword [rsi + 0x18], xmm0
movups xmm0, xmmword [rdx + 0x28]
movups xmmword [rsi + 0x28], xmm0
movups xmm0, xmmword [rdx + 0x38]
movups xmmword [rsi + 0x38], xmm0
mov rdx, qword [rax + 8]
mov rsi, qword [rsp + 0x2d0]
mov rdi, qword [rsi]
mov qword [rdx], rdi
movups xmm0, xmmword [rsi + 8]
movups xmmword [rdx + 8], xmm0
movups xmm0, xmmword [rsi + 0x18]
movups xmmword [rdx + 0x18], xmm0
movups xmm0, xmmword [rsi + 0x28]
movups xmmword [rdx + 0x28], xmm0
movups xmm0, xmmword [rsi + 0x38]
movups xmmword [rdx + 0x38], xmm0
mov rdx, qword [rax + 0x10]
mov rsi, qword [rsp + 0x2d8]
mov rdi, qword [rsi]
mov qword [rdx], rdi
movups xmm0, xmmword [rsi + 8]
movups xmmword [rdx + 8], xmm0
movups xmm0, xmmword [rsi + 0x18]
movups xmmword [rdx + 0x18], xmm0
movups xmm0, xmmword [rsi + 0x28]
movups xmmword [rdx + 0x28], xmm0
movups xmm0, xmmword [rsi + 0x38]
movups xmmword [rdx + 0x38], xmm0
xor ebx, ebx
xor ecx, ecx
add rsp, 0x2e0
pop rbp
ret
mov qword [rsp + 0x2f0], rax
mov qword [rsp + 0x2f8], rbx
cmp rcx, 0x85
jne 0x52be7e
cmp byte [rbx], 4
jne 0x52be7e
mov qword [rsp + 0x308], rdi
movups xmmword [rsp + 0x188], xmm15
movups xmmword [rsp + 0x190], xmm15
movups xmmword [rsp + 0x1a0], xmm15
movups xmmword [rsp + 0x1b0], xmm15
movups xmmword [rsp + 0x1c0], xmm15
lea rdx, [rdi - 1]
lea rsi, [rbx + 1]
lea rax, [rsp + 0x188]
mov ecx, 0x42
mov rbx, rsi
mov rdi, rdx
call sym.crypto_internal_nistec_fiat._P521Element_.SetBytes
test rbx, rbx
jne 0x52be73
mov qword [rsp + 0x2b8], rax
movups xmmword [rsp + 0x140], xmm15
movups xmmword [rsp + 0x148], xmm15
movups xmmword [rsp + 0x158], xmm15
movups xmmword [rsp + 0x168], xmm15
movups xmmword [rsp + 0x178], xmm15
mov rdi, qword [rsp + 0x308]
add rdi, 0xffffffffffffffbd
mov rbx, qword [rsp + 0x2f8]
add rbx, 0x43
lea rax, [rsp + 0x140]
mov ecx, 0x42
call sym.crypto_internal_nistec_fiat._P521Element_.SetBytes
test rbx, rbx
jne 0x52be68
mov qword [rsp + 0x2a8], rax
mov rbx, rax
mov rax, qword [rsp + 0x2b8]
call sym.crypto_internal_nistec.p521CheckOnCurve
test rax, rax
je 0x52bdcb
mov rcx, rbx
mov rbx, rax
xor eax, eax
add rsp, 0x2e0
pop rbp
ret
mov rax, qword [rsp + 0x2f0]
mov rdx, qword [rax]
mov rsi, qword [rsp + 0x2b8]
mov rdi, qword [rsi]
mov qword [rdx], rdi
movups xmm0, xmmword [rsi + 8]
movups xmmword [rdx + 8], xmm0
movups xmm0, xmmword [rsi + 0x18]
movups xmmword [rdx + 0x18], xmm0
movups xmm0, xmmword [rsi + 0x28]
movups xmmword [rdx + 0x28], xmm0
movups xmm0, xmmword [rsi + 0x38]
movups xmmword [rdx + 0x38], xmm0
mov rdx, qword [rax + 8]
mov rsi, qword [rsp + 0x2a8]
mov rdi, qword [rsi]
mov qword [rdx], rdi
movups xmm0, xmmword [rsi + 8]
movups xmmword [rdx + 8], xmm0
movups xmm0, xmmword [rsi + 0x18]
movups xmmword [rdx + 0x18], xmm0
movups xmm0, xmmword [rsi + 0x28]
movups xmmword [rdx + 0x28], xmm0
movups xmm0, xmmword [rsi + 0x38]
movups xmmword [rdx + 0x38], xmm0
mov rdx, qword [rax + 0x10]
movabs rsi, 0x80000000000000
mov qword [rdx], rsi
movups xmmword [rdx + 8], xmm15
movups xmmword [rdx + 0x18], xmm15
movups xmmword [rdx + 0x28], xmm15
movups xmmword [rdx + 0x38], xmm15
xor ebx, ebx
xor ecx, ecx
add rsp, 0x2e0
pop rbp
ret
xor eax, eax
add rsp, 0x2e0
pop rbp
ret
xor eax, eax
add rsp, 0x2e0
pop rbp
ret
nop
cmp rcx, 0x43
jne 0x52c0d9
movzx edx, byte [rbx]
cmp dl, 2
je 0x52be9b
cmp dl, 3
jne 0x52c0d9
movups xmmword [rsp + 0xf8], xmm15
movups xmmword [rsp + 0x100], xmm15
movups xmmword [rsp + 0x110], xmm15
movups xmmword [rsp + 0x120], xmm15
movups xmmword [rsp + 0x130], xmm15
dec rdi
mov rdx, rdi
neg rdx
sar rdx, 0x3f
and edx, 1
add rdx, rbx
lea rax, [rsp + 0xf8]
mov ecx, 0x42
mov rbx, rdx
call sym.crypto_internal_nistec_fiat._P521Element_.SetBytes
test rbx, rbx
jne 0x52c0ce
mov qword [rsp + 0x2b0], rax
movups xmmword [rsp + 0xb0], xmm15
movups xmmword [rsp + 0xb8], xmm15
movups xmmword [rsp + 0xc8], xmm15
movups xmmword [rsp + 0xd8], xmm15
movups xmmword [rsp + 0xe8], xmm15
mov rbx, rax
lea rax, [rsp + 0xb0]
call sym.crypto_internal_nistec.p521Polynomial
mov qword [rsp + 0x2c0], rax
mov rbx, rax
call sym.crypto_internal_nistec.p521Sqrt
test al, al
je 0x52c09b
movups xmmword [rsp + 0x68], xmm15
movups xmmword [rsp + 0x70], xmm15
movups xmmword [rsp + 0x80], xmm15
movups xmmword [rsp + 0x90], xmm15
movups xmmword [rsp + 0xa0], xmm15
mov rcx, qword [rsp + 0x2c0]
test byte [rcx], al
nop
lea rax, [rsp + 0x68]
mov rbx, rax
call sym.crypto_internal_nistec_fiat.p521Sub
movups xmmword [rsp + 0x26], xmm15
movups xmmword [rsp + 0x28], xmm15
movups xmmword [rsp + 0x38], xmm15
movups xmmword [rsp + 0x48], xmm15
movups xmmword [rsp + 0x58], xmm15
mov rax, qword [rsp + 0x2c0]
lea rbx, [rsp + 0x26]
call sym.crypto_internal_nistec_fiat._P521Element_.bytes
cmp rbx, 0x41
jbe 0x52c10c
movzx edx, byte [rax + 0x41]
and edx, 1
mov rsi, qword [rsp + 0x2f8]
movzx esi, byte [rsi]
and esi, 1
xor edx, esi
movzx ebx, dl
mov rax, qword [rsp + 0x2c0]
mov rcx, rax
lea rdi, [rsp + 0x68]
call sym.crypto_internal_nistec_fiat.p521Selectznz
mov rax, qword [rsp + 0x2f0]
mov rdx, qword [rax]
mov rsi, qword [rsp + 0x2b0]
mov r8, qword [rsi]
mov qword [rdx], r8
movups xmm0, xmmword [rsi + 8]
movups xmmword [rdx + 8], xmm0
movups xmm0, xmmword [rsi + 0x18]
movups xmmword [rdx + 0x18], xmm0
movups xmm0, xmmword [rsi + 0x28]
movups xmmword [rdx + 0x28], xmm0
movups xmm0, xmmword [rsi + 0x38]
movups xmmword [rdx + 0x38], xmm0
mov rdx, qword [rax + 8]
mov rsi, qword [rsp + 0x2c0]
mov r8, qword [rsi]
mov qword [rdx], r8
movups xmm0, xmmword [rsi + 8]
movups xmmword [rdx + 8], xmm0
movups xmm0, xmmword [rsi + 0x18]
movups xmmword [rdx + 0x18], xmm0
movups xmm0, xmmword [rsi + 0x28]
movups xmmword [rdx + 0x28], xmm0
movups xmm0, xmmword [rsi + 0x38]
movups xmmword [rdx + 0x38], xmm0
mov rdx, qword [rax + 0x10]
movabs rsi, 0x80000000000000
mov qword [rdx], rsi
movups xmmword [rdx + 8], xmm15
movups xmmword [rdx + 0x18], xmm15
movups xmmword [rdx + 0x28], xmm15
movups xmmword [rdx + 0x38], xmm15
xor ebx, ebx
xor ecx, ecx
add rsp, 0x2e0
pop rbp
ret
lea rax, [0x006951a0]
call sym.runtime.newobject
mov qword [rax + 8], 0x26
lea rcx, [0x006e115f]
mov qword [rax], rcx
lea rbx, [0x00758260]
mov rcx, rax
xor eax, eax
add rsp, 0x2e0
pop rbp
ret
xor eax, eax
add rsp, 0x2e0
pop rbp
ret
lea rax, [0x006951a0]
call sym.runtime.newobject
mov qword [rax + 8], 0x1b
lea rcx, [0x006dac77]
mov qword [rax], rcx
lea rbx, [0x00758260]
mov rcx, rax
xor eax, eax
add rsp, 0x2e0
pop rbp
ret
mov eax, 0x41
mov rcx, rbx
call sym.runtime.panicIndex
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
call sym.runtime.morestack_noctxt.abi0
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
jmp sym.crypto_internal_nistec._P521Point_.SetBytes