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

Disassembly:
lea r12, [rsp - 0x48]
cmp r12, qword [r14 + 0x10]
jbe 0x51b17c
sub rsp, 0xc8
mov qword [rsp + 0xc0], rbp
lea rbp, [rsp + 0xc0]
mov qword [rsp + 0xd0], rax
cmp rdi, rbx
jge 0x51af50
movzx edx, byte [rdi + rax]
test dl, 0x20
setne r10b
mov byte [rsp + 0x27], r10b
inc rdi
mov r11d, edx
shr dl, 6
movzx edx, dl
mov qword [rsp + 0x48], rdx
and r11d, 0x1f
nop dword [rax]
cmp r11, 0x1f
je 0x51ad6c
xor ecx, ecx
xor esi, esi
jmp 0x51adbc
mov qword [rsp + 0xd8], rbx
mov qword [rsp + 0xd0], rax
nop dword [rax]
call fcn.0051a1a0
test rcx, rcx
jne 0x51af28
cmp rax, 0x1f
jl 0x51aec1
mov rdx, qword [rsp + 0x48]
movzx r10d, byte [rsp + 0x27]
mov r11, rax
mov rsi, rdi
mov rax, qword [rsp + 0xd0]
mov rdi, rbx
mov rbx, qword [rsp + 0xd8]
mov qword [rsp + 0x40], r11
cmp rbx, rdi
jle 0x51ae5e
movzx r12d, byte [rax + rdi]
lea r13, [rdi + 1]
test r12b, 0x80
je 0x51ae55
and r12d, 0x7f
nop dword [rax]
test r12, r12
je 0x51adef
xor edi, edi
xor r8d, r8d
jmp 0x51afb9
mov qword [rsp + 0x38], r13
lea rcx, [0x00650afe]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], 0x21
mov rax, qword [rsp + 0x90]
mov ebx, 0x21
nop dword [rax]
call fcn.0040a840
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x00685ce0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
and r12d, 0x7f
jmp 0x51af91
mov qword [rsp + 0x38], rdi
lea rcx, [0x0064be7e]
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xa8], 0x17
mov rax, qword [rsp + 0xa0]
mov ebx, 0x17
call fcn.0040a840
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x00685ce0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
nop
ret
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], rbx
lea rcx, [0x00647d46]
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0xb8], 0xf
mov rax, qword [rsp + 0xb0]
mov ebx, 0xf
call fcn.0040a840
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x00685ce0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
mov rsi, rbx
mov r8, rcx
mov r9, rdi
mov rbx, rax
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
mov qword [rsp + 0xe8], rdi
lea rax, [0x0065399c]
mov ebx, 0x29
call fcn.00468600
xor ecx, ecx
xor edi, edi
mov rsi, qword [rsp + 0xe8]
mov r8, rax
mov r9, rbx
mov rax, rcx
mov rbx, rax
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
mov rax, rdx
mov rbx, r11
mov edi, r10d
mov r8, rcx
mov r9, rsi
mov rcx, r12
mov rsi, r13
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
inc rdi
mov qword [rsp + 0x38], r8
mov qword [rsp + 0x30], r13
cmp rdi, r12
jge 0x51b10f
cmp rbx, r13
jle 0x51b0af
movzx r15d, byte [rax + r13]
inc r13
mov qword [rsp + 0x30], r13
cmp r8, 0x800000
jge 0x51b058
shl r8, 8
or r8, r15
test r8, r8
jne 0x51afb6
mov qword [rsp + 0x28], r8
lea rcx, [0x00651ae5]
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x68], 0x23
mov rax, qword [rsp + 0x60]
mov ebx, 0x23
nop dword [rax + rax]
call fcn.0040a840
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x28]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x00685cc0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
lea rcx, [0x00648423]
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x78], 0x10
mov rax, qword [rsp + 0x70]
mov ebx, 0x10
call fcn.0040a840
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x00685cc0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
lea rcx, [0x0064be7e]
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], 0x17
mov rax, qword [rsp + 0x80]
mov ebx, 0x17
call fcn.0040a840
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x00685ce0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
cmp r8, 0x80
jl 0x51b125
mov r12, r8
nop dword [rax + rax]
jmp 0x51af91
lea rcx, [0x006491ab]
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x58], 0x12
mov rax, qword [rsp + 0x50]
mov ebx, 0x12
call fcn.0040a840
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x00685cc0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
call fcn.0045f280
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
jmp fcn.0051ad00