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

Disassembly:
cmp rsp, qword [r14 + 0x10]
jbe 0x58a4bf
push rbp
mov rbp, rsp
sub rsp, 0x40
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x70], rsi
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x50], rax
call fcn.00527ae0
mov rcx, qword [rsp + 0x60]
mov rdx, qword [rcx]
test rdx, rdx
je 0x58a2a2
mov r8, qword [rcx + 8]
cmp r8, 2
jge 0x58a280
mov r8, qword [0x0089a620]
mov r9, qword [0x0089a628]
jmp 0x58a2b0
cmp r8, 0x7fffffff
jle 0x58a299
mov r8, qword [0x0089a630]
mov r9, qword [0x0089a638]
jmp 0x58a2b0
xor r8d, r8d
xor r9d, r9d
nop
jmp 0x58a2b0
mov r8, qword [0x0089a610]
mov r9, qword [0x0089a618]
test r8, r8
jne 0x58a481
mov r8, qword [rdx + 0x10]
lea r9, [r8 - 1]
nop
test r9, r9
jl 0x58a328
mov rdx, qword [rdx + 8]
mov rdx, qword [rdx + r8*8 - 8]
mov r8, rdx
shr rdx, 1
or rdx, r8
mov r8, rdx
shr rdx, 2
or rdx, r8
mov r8, rdx
shr rdx, 4
or rdx, r8
mov r8, rdx
shr rdx, 8
or rdx, r8
mov r8, rdx
shr rdx, 0x10
or rdx, r8
mov r8, rdx
shr rdx, 0x20
or rdx, r8
shl r9, 6
bsr rdx, rdx
mov r8, 0xffffffffffffffff
cmove rdx, r8
lea rdx, [rdx + r9]
lea rdx, [rdx + 1]
jmp 0x58a32a
xor edx, edx
lea r8, [rdx + 7]
sar r8, 0x3f
shr r8, 0x3d
lea rbx, [r8 + rdx]
lea rbx, [rbx + 7]
sar rbx, 3
lea rdx, [rbx - 0xb]
mov r8, qword [rsp + 0x70]
cmp r8, rdx
jg 0x58a466
mov qword [rsp + 0x28], rbx
lea rax, [0x0066d1c0]
mov rcx, rbx
call fcn.004479c0
mov rcx, qword [rsp + 0x28]
cmp rcx, 1
jbe 0x58a4b4
mov byte [rax + 1], 2
mov r8, qword [rsp + 0x70]
mov rbx, rcx
sub rbx, r8
lea r9, [rbx - 1]
cmp rcx, r9
jb 0x58a4a9
cmp r9, 2
jb 0x58a49c
lea rdx, [rcx - 2]
mov r9, rdx
neg rdx
sar rdx, 0x3f
and edx, 2
add rdx, rax
cmp rcx, rbx
jb 0x58a494
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], rbx
lea r8, [rbx - 3]
mov rax, rdx
mov rcx, r9
mov rdi, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
mov rbx, r8
nop dword [rax + rax]
call fcn.0058a520
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x28]
mov r8, rdx
sub rdx, rcx
sar rdx, 0x3f
and rdx, r8
mov rdi, rcx
sub rcx, r8
mov r9, qword [rsp + 0x38]
add rdx, r9
test rax, rax
jne 0x58a453
mov byte [r8 + r9 - 1], 0
mov rsi, qword [rsp + 0x70]
cmp rsi, rcx
cmovl rcx, rsi
mov rbx, qword [rsp + 0x68]
cmp rbx, rdx
je 0x58a43d
mov rax, rdx
call fcn.00460ba0
mov rdi, qword [rsp + 0x28]
mov r9, qword [rsp + 0x38]
mov rax, qword [rsp + 0x60]
mov rbx, r9
mov rcx, rdi
call fcn.0058b880
add rsp, 0x40
pop rbp
ret
xor ecx, ecx
mov rdi, rax
mov rsi, rbx
xor eax, eax
mov rbx, rcx
add rsp, 0x40
pop rbp
ret
mov rdi, qword [0x0089a640]
mov rsi, qword [0x0089a648]
xor eax, eax
xor ebx, ebx
mov rcx, rbx
add rsp, 0x40
pop rbp
ret
xor eax, eax
xor ebx, ebx
mov rcx, rbx
mov rdi, r8
mov rsi, r9
add rsp, 0x40
pop rbp
ret
mov rax, rbx
call fcn.004602a0
mov eax, 2
mov rcx, r9
call fcn.004602a0
mov rdx, rcx
mov rcx, r9
call fcn.00460260
mov eax, 1
call fcn.004601e0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], r8
nop dword [rax]
call fcn.0045df00
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
mov r8, qword [rsp + 0x30]
jmp fcn.0058a220