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

Disassembly:
lea r12, [rsp - 0x48]
cmp r12, qword [r14 + 0x10]
jbe 0x521cf2
sub rsp, 0xc8
mov qword [rsp + 0xc0], rbp
lea rbp, [rsp + 0xc0]
mov qword [rsp + 0xd0], rax
cmp rdi, rbx
jge 0x521a90
jae 0x521ce6
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
cmp r11, 0x1f
je 0x5218ae
xor ecx, ecx
xor esi, esi
jmp 0x5218fc
mov qword [rsp + 0xd8], rbx
mov qword [rsp + 0xd0], rax
nop
call fcn.00520f80
test rcx, rcx
jne 0x521a68
cmp rax, 0x1f
jl 0x521a01
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 0x52199e
jbe 0x521cdb
movzx r12d, byte [rax + rdi]
lea r13, [rdi + 1]
test r12b, 0x80
je 0x521995
and r12d, 0x7f
test r12, r12
je 0x521932
xor edi, edi
xor r8d, r8d
jmp 0x521b0b
mov qword [rsp + 0x38], r13
lea rcx, [0x006c3d12]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], 0x21
mov rax, qword [rsp + 0x90]
mov ebx, 0x21
nop
call fcn.0040b080
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x0072efa0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
and r12d, 0x7f
jmp 0x521ae3
mov qword [rsp + 0x38], rdi
lea rcx, [0x006bf5ae]
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xa8], 0x17
mov rax, qword [rsp + 0xa0]
mov ebx, 0x17
call fcn.0040b080
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x0072efa0]
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, [0x006bba69]
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0xb8], 0xf
mov rax, qword [rsp + 0xb0]
mov ebx, 0xf
call fcn.0040b080
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x0072efa0]
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
nop
lea rax, [0x0067fd60]
call fcn.0040da20
mov qword [rax + 8], 0x29
lea rcx, [0x006c70a3]
mov qword [rax], rcx
xor ebx, ebx
mov rcx, rbx
xor edi, edi
mov rsi, qword [rsp + 0xe8]
lea r8, [0x0072e7e0]
mov r9, rax
mov rax, rcx
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 0x521c68
nop
cmp rbx, r13
jle 0x521c08
jbe 0x521cd0
movzx r15d, byte [rax + r13]
inc r13
mov qword [rsp + 0x30], r13
nop dword [rax]
cmp r8, 0x800000
jge 0x521bb1
shl r8, 8
or r8, r15
test r8, r8
jne 0x521b08
mov qword [rsp + 0x28], r8
lea rcx, [0x006c4d5b]
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x68], 0x23
mov rax, qword [rsp + 0x60]
mov ebx, 0x23
call fcn.0040b080
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x28]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x0072ef80]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
lea rcx, [0x006bc061]
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x78], 0x10
mov rax, qword [rsp + 0x70]
mov ebx, 0x10
call fcn.0040b080
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x0072ef80]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
lea rcx, [0x006bf5ae]
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], 0x17
mov rax, qword [rsp + 0x80]
mov ebx, 0x17
call fcn.0040b080
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x0072efa0]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
cmp r8, 0x80
jl 0x521c79
mov r12, r8
jmp 0x521ae3
lea rcx, [0x006bcc32]
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x58], 0x12
mov rax, qword [rsp + 0x50]
mov ebx, 0x12
call fcn.0040b080
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x0072ef80]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
mov rax, r13
mov rcx, rbx
call fcn.00465aa0
mov rax, rdi
mov rcx, rbx
call fcn.00465aa0
mov rax, rdi
mov rcx, rbx
call fcn.00465aa0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
call fcn.00463440
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
nop
jmp fcn.00521840