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

Disassembly:
lea r12, [rsp - 0x48]
cmp r12, qword [r14 + 0x10]
jbe 0x531772
sub rsp, 0xc8
mov qword [rsp + 0xc0], rbp
lea rbp, [rsp + 0xc0]
mov qword [rsp + 0xd0], rax
cmp rdi, rbx
jge 0x531510
jae 0x531766
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 0x53132e
xor ecx, ecx
xor esi, esi
jmp 0x53137c
mov qword [rsp + 0xd8], rbx
mov qword [rsp + 0xd0], rax
nop
call fcn.00530a00
test rcx, rcx
jne 0x5314e8
cmp rax, 0x1f
jl 0x531481
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 0x53141e
jbe 0x53175b
movzx r12d, byte [rax + rdi]
lea r13, [rdi + 1]
test r12b, 0x80
je 0x531415
and r12d, 0x7f
test r12, r12
je 0x5313b2
xor edi, edi
xor r8d, r8d
jmp 0x53158b
mov qword [rsp + 0x38], r13
lea rcx, [0x00727854]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x98], 0x21
mov rax, qword [rsp + 0x90]
mov ebx, 0x21
nop
call fcn.0040b100
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x007f2420]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
and r12d, 0x7f
jmp 0x531563
mov qword [rsp + 0x38], rdi
lea rcx, [0x007223c0]
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xa8], 0x17
mov rax, qword [rsp + 0xa0]
mov ebx, 0x17
call fcn.0040b100
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x007f2420]
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, [0x0071d9de]
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0xb8], 0xf
mov rax, qword [rsp + 0xb0]
mov ebx, 0xf
call fcn.0040b100
mov rbx, qword [rsp + 0x40]
xor ecx, ecx
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x38]
lea r8, [0x007f2420]
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, [0x006d8800]
call fcn.0040daa0
mov qword [rax + 8], 0x29
lea rcx, [0x0072b14e]
mov qword [rax], rcx
xor ebx, ebx
mov rcx, rbx
xor edi, edi
mov rsi, qword [rsp + 0xe8]
lea r8, [0x007f1c00]
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 0x5316e8
nop
cmp rbx, r13
jle 0x531688
jbe 0x531750
movzx r15d, byte [rax + r13]
inc r13
mov qword [rsp + 0x30], r13
nop dword [rax]
cmp r8, 0x800000
jge 0x531631
shl r8, 8
or r8, r15
test r8, r8
jne 0x531588
mov qword [rsp + 0x28], r8
lea rcx, [0x00728a7e]
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x68], 0x23
mov rax, qword [rsp + 0x60]
mov ebx, 0x23
call fcn.0040b100
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x28]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x007f2400]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
lea rcx, [0x0071e149]
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x78], 0x10
mov rax, qword [rsp + 0x70]
mov ebx, 0x10
call fcn.0040b100
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x007f2400]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
lea rcx, [0x007223c0]
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], 0x17
mov rax, qword [rsp + 0x80]
mov ebx, 0x17
call fcn.0040b100
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x007f2420]
mov r9, rax
mov rax, qword [rsp + 0x48]
mov rbp, qword [rsp + 0xc0]
add rsp, 0xc8
ret
cmp r8, 0x80
jl 0x5316f9
mov r12, r8
jmp 0x531563
lea rcx, [0x0071f0d3]
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x58], 0x12
mov rax, qword [rsp + 0x50]
mov ebx, 0x12
call fcn.0040b100
mov rbx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
movzx edi, byte [rsp + 0x27]
mov rsi, qword [rsp + 0x30]
lea r8, [0x007f2400]
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.00465ec0
mov rax, rdi
mov rcx, rbx
call fcn.00465ec0
mov rax, rdi
mov rcx, rbx
call fcn.00465ec0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
call fcn.00463860
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
nop
jmp fcn.005312c0