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

Disassembly:
mov rcx, qword gs:[0x28]
mov rcx, qword [rcx]
cmp rsp, qword [rcx + 0x10]
jbe 0x56b348
sub rsp, 0x68
mov qword [rsp + 0x60], rbp
lea rbp, [rsp + 0x60]
mov rcx, qword [rsp + 0x98]
test rcx, rcx
je 0x56b2a5
mov rbx, qword [rsp + 0x80]
cmp rbx, rcx
jl 0x56b32b
mov rbx, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x90]
nop word [rax + rax]
cmp rbx, rsi
jne 0x56b265
mov rdi, qword [rsp + 0x70]
mov r8, qword [rdi + 0x70]
test r8, r8
je 0x56b249
lea rax, [r8 - 0x40]
neg rax
cmp rax, 0x40
ja 0x56b305
mov r9, r8
neg r8
sar r8, 0x3f
and r8, rax
lea r8, [r8 + rdi]
lea r8, [r8 + 0x30]
cmp r9, rcx
jle 0x56b23e
mov rax, rcx
lea r9, [rcx - 1]
cmp r9, rax
jae 0x56b2f6
xor edx, edx
jmp 0x56ae92
movzx r9d, byte [rdx + r8]
movzx r10d, byte [rsi + rdx]
xor r10d, r9d
mov byte [rbx + rdx], r10b
inc rdx
cmp rdx, rcx
jl 0x56ae7e
sub qword [rdi + 0x70], rcx
mov r8, qword [rsp + 0x88]
sub r8, rcx
mov r9, r8
neg r8
sar r8, 0x3f
and r8, rcx
add rbx, r8
sub rax, rcx
mov r8, qword [rsp + 0xa0]
sub r8, rcx
mov r10, r8
neg r8
sar r8, 0x3f
and rcx, r8
add rsi, rcx
test rax, rax
je 0x56b234
cmp byte [rdi + 0x78], 0
jne 0x56b2da
lea r8, [rax + 0x3f]
shr r8, 6
mov r11d, dword [rdi + 0x20]
add r8, r11
movabs r11, 0x100000000
cmp r8, r11
ja 0x56b2da
jne 0x56af0f
mov byte [rdi + 0x78], 1
mov qword [rsp + 0xa0], r10
mov qword [rsp + 0x98], rax
mov qword [rsp + 0x90], rsi
mov qword [rsp + 0x88], r9
mov qword [rsp + 0x78], rbx
mov rcx, rax
and rax, 0x3f
sub rcx, rax
mov qword [rsp + 0x38], rcx
test rcx, rcx
jle 0x56af85
cmp rcx, r9
ja 0x56b2d2
cmp rcx, r10
ja 0x56b2ca
mov qword [rsp], rdi
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rcx
mov qword [rsp + 0x18], r9
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x30], r10
nop dword [rax]
call fcn.0056b360
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x98]
cmp rax, rcx
ja 0x56b2c5
mov rdx, rcx
sub rcx, rax
mov rbx, qword [rsp + 0x88]
mov rsi, rax
sub rax, rbx
sar rax, 0x3f
and rax, rsi
mov rbx, qword [rsp + 0x78]
add rbx, rax
nop
cmp rsi, rdx
ja 0x56b2b9
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x78], rbx
mov rdx, qword [rsp + 0xa0]
mov rdi, rsi
sub rsi, rdx
sar rsi, 0x3f
and rsi, rdi
mov rdx, qword [rsp + 0x90]
add rdx, rsi
mov rsi, qword [rsp + 0x70]
mov edi, dword [rsi + 0x20]
inc rdi
movabs r8, 0x100000000
cmp r8, rdi
jae 0x56b140
xorps xmm0, xmm0
movups xmmword [rsi + 0x30], xmm0
movups xmmword [rsi + 0x40], xmm0
movups xmmword [rsi + 0x50], xmm0
movups xmmword [rsi + 0x60], xmm0
lea rdi, [rcx + 0x3f]
sar rdi, 0x3f
shr rdi, 0x3a
lea rdi, [rdi + rcx]
lea rdi, [rdi + 0x3f]
sar rdi, 6
shl rdi, 6
lea rax, [rdi - 0x40]
neg rax
cmp rax, 0x40
ja 0x56b2af
mov qword [rsp + 0x48], rdi
cmp rdi, rcx
mov r8, rdi
cmovg rdi, rcx
mov r9, r8
neg r8
sar r8, 0x3f
and r8, rax
lea rax, [r8 + rsi]
lea rax, [rax + 0x30]
mov qword [rsp + 0x50], rax
nop dword [rax]
cmp rdx, rax
jne 0x56b111
mov qword [rsp], rsi
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], r9
mov qword [rsp + 0x18], r9
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x30], r9
call fcn.0056b360
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x80]
cmp rax, rcx
cmovl rcx, rax
mov rdx, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x50]
cmp rdx, rbx
jne 0x56b0e9
sub rax, rcx
mov rcx, qword [rsp + 0x70]
mov qword [rcx + 0x70], rax
mov rbp, qword [rsp + 0x60]
add rsp, 0x68
ret
mov qword [rsp + 0x40], rcx
mov qword [rsp], rdx
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rcx
nop dword [rax]
call fcn.0046d6c0
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x40]
jmp 0x56b0d3
mov qword [rsp], rax
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rdi
nop
call fcn.0046d6c0
mov rax, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x70]
mov r9, qword [rsp + 0x48]
jmp 0x56b089
test rcx, rcx
jle 0x56b1e7
xorps xmm0, xmm0
movups xmmword [rsi + 0x30], xmm0
movups xmmword [rsi + 0x40], xmm0
movups xmmword [rsi + 0x50], xmm0
movups xmmword [rsi + 0x60], xmm0
cmp rcx, 0x40
mov eax, 0x40
cmovl rax, rcx
lea rdi, [rsi + 0x30]
mov qword [rsp + 0x58], rdi
cmp rdx, rdi
jne 0x56b210
nop
mov qword [rsp], rsi
mov qword [rsp + 8], rdi
mov qword [rsp + 0x10], 0x40
mov qword [rsp + 0x18], 0x40
mov qword [rsp + 0x20], rdi
mov qword [rsp + 0x28], 0x40
mov qword [rsp + 0x30], 0x40
call fcn.0056b360
mov rax, qword [rsp + 0x80]
cmp rax, 0x40
mov ecx, 0x40
cmovg rax, rcx
mov rcx, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x58]
cmp rcx, rdx
jne 0x56b1f1
add rax, 0xffffffffffffffc0
neg rax
mov rcx, qword [rsp + 0x70]
mov qword [rcx + 0x70], rax
mov rbp, qword [rsp + 0x60]
add rsp, 0x68
ret
mov qword [rsp + 0x48], rax
mov qword [rsp], rcx
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rax
call fcn.0046d6c0
mov rax, qword [rsp + 0x48]
jmp 0x56b1d7
mov qword [rsp], rdi
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rax
nop
call fcn.0046d6c0
mov rsi, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x58]
jmp 0x56b17b
mov rbp, qword [rsp + 0x60]
add rsp, 0x68
ret
mov rax, rcx
mov rcx, r9
jmp 0x56ae6d
mov rax, rcx
mov r10, qword [rsp + 0xa0]
mov r9, qword [rsp + 0x88]
nop dword [rax]
jmp 0x56aed4
nop
mov rdi, rbx
lea r8, [rsi + rcx]
lea r8, [r8 - 1]
cmp rbx, r8
ja 0x56b299
lea r8, [rcx + rdi]
lea r8, [r8 - 1]
nop
cmp rsi, r8
jbe 0x56b30f
mov rbx, rdi
mov rsi, qword [rsp + 0x90]
jmp 0x56ae29
mov rbx, rdi
nop dword [rax]
jmp 0x56ae29
mov rbp, qword [rsp + 0x60]
add rsp, 0x68
ret
mov ecx, 0x40
call fcn.0046ce80
mov rax, rsi
mov rcx, rdx
nop
call fcn.0046ce80
call fcn.0046ce80
mov rdx, r10
call fcn.0046ce40
mov rdx, r9
call fcn.0046ce40
lea rax, [0x00613e40]
mov qword [rsp], rax
lea rax, [0x006a1340]
mov qword [rsp + 8], rax
call fcn.00438920
mov rcx, rax
mov rax, r9
nop dword [rax]
call fcn.0046cdc0
mov ecx, 0x40
call fcn.0046ce80
lea rax, [0x00613e40]
mov qword [rsp], rax
lea rax, [0x006a1330]
mov qword [rsp + 8], rax
call fcn.00438920
lea rax, [0x00613e40]
mov qword [rsp], rax
lea rax, [0x006a1320]
mov qword [rsp + 8], rax
call fcn.00438920
nop
call fcn.0046abe0
jmp fcn.0056adc0