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

Disassembly:
lea r12, [rsp - 0x1c0]
cmp r12, qword [r14 + 0x10]
jbe 0x615abe
push rbp
mov rbp, rsp
sub rsp, 0x238
mov qword [rsp + 0x250], rbx
mov qword [rsp + 0x248], rax
movups xmmword [rsp + 0x1d8], xmm15
mov rcx, qword [rax]
mov qword [rsp + 0x1b0], rcx
mov rdx, qword [rax + 0x138]
mov qword [rsp + 0x78], rdx
mov rsi, qword [rax + 0x140]
mov qword [rsp + 0x1c0], rsi
mov rdi, qword [rax + 0x148]
mov qword [rsp + 0x50], rdi
lea r8, [rcx + 0x58]
mov qword [rsp + 0x1a0], r8
mov r9, qword [rbx + 0xa8]
mov qword [rsp + 0xa0], r9
mov r10, rax
xor eax, eax
mov r11d, 1
lock cmpxchg dword [rcx + 0x58], r11d
sete r12b
test r12b, r12b
jne 0x614fa5
mov rax, r8
call fcn.00480e60
mov rcx, qword [rsp + 0x1b0]
mov rdx, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x250]
mov rsi, qword [rsp + 0x1c0]
mov rdi, qword [rsp + 0x50]
mov r8, qword [rsp + 0x1a0]
mov r9, qword [rsp + 0xa0]
mov r10, qword [rsp + 0x248]
mov r11d, 1
mov r12d, dword [rcx + 0x100]
mov qword [rsp + 0x98], r12
nop
mov r13d, 0xffffffff
lock xadd dword [rcx + 0x58], r13d
dec r13d
test r13d, r13d
je 0x61501c
mov rax, r8
mov ebx, r13d
call fcn.00481140
mov rcx, qword [rsp + 0x1b0]
mov rdx, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x250]
mov rsi, qword [rsp + 0x1c0]
mov rdi, qword [rsp + 0x50]
mov r8, qword [rsp + 0x1a0]
mov r9, qword [rsp + 0xa0]
mov r10, qword [rsp + 0x248]
mov r11d, 1
mov r12, qword [rsp + 0x98]
mov r13, qword [r10 + 0x148]
cmp r12, 0x80000
mov r15d, 0x80000
mov rax, r12
cmovg r12, r15
cmp r13, 0xffffffffffffffff
je 0x615045
inc r13
cmp r12, r13
jg 0x615048
mov r13, r12
mov qword [rsp + 0x90], r13
lea rax, [0x00658a60]
call fcn.0040d680
mov qword [rsp + 0x1d0], rax
mov qword [rax], 0
lea rax, [0x008ccb20]
call fcn.00481500
mov rcx, qword [rsp + 0x90]
test rcx, rcx
mov edx, 1
cmovle rcx, rdx
lea rsi, [0x00658920]
cmp rax, rsi
je 0x61509c
mov ebx, 0
nop dword [rax]
jne 0x61517e
cmp qword [rbx + 8], rcx
jl 0x61517e
mov qword [rsp + 0x1b8], rbx
movups xmmword [rsp + 0x218], xmm15
movups xmmword [rsp + 0x228], xmm15
lea rcx, [0x00615ba0]
mov qword [rsp + 0x218], rcx
lea rcx, [0x008ccb20]
mov qword [rsp + 0x220], rcx
mov qword [rsp + 0x228], rsi
mov qword [rsp + 0x230], rbx
lea rcx, [rsp + 0x218]
mov qword [rsp + 0x108], rcx
lea rax, [rsp + 0xf0]
call fcn.004359a0
test eax, eax
jne 0x61515c
mov rdx, qword [rsp + 0x1b8]
mov rsi, qword [rdx + 8]
mov r8, qword [rdx + 0x10]
mov rdx, qword [rdx]
mov r9, qword [rsp + 0x1d0]
mov qword [r9 + 8], rsi
mov qword [r9 + 0x10], r8
cmp dword [0x00921500], 0
je 0x615154
call fcn.004665c0
mov qword [r11], rdx
mov rsi, qword [r9]
mov qword [r11 + 8], rsi
mov qword [r9], rdx
jmp 0x615232
nop dword [rax]
call fcn.00435fa0
mov rax, qword [rsp + 0x1d8]
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x238
pop rbp
ret
mov qword [rsp + 0x48], rcx
lea rax, [0x0065bae0]
mov rbx, rcx
call fcn.0044b7a0
mov rdx, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x1d0]
mov qword [rsi + 8], rdx
mov qword [rsi + 0x10], rdx
cmp dword [0x00921500], 0
je 0x6151bf
call fcn.004665c0
mov qword [r11], rax
mov rcx, qword [rsi]
mov qword [r11 + 8], rcx
mov qword [rsi], rax
movups xmmword [rsp + 0x1f8], xmm15
movups xmmword [rsp + 0x208], xmm15
lea rcx, [0x00615b40]
mov qword [rsp + 0x1f8], rcx
lea rcx, [0x008ccb20]
mov qword [rsp + 0x200], rcx
lea rcx, [0x00658920]
mov qword [rsp + 0x208], rcx
mov qword [rsp + 0x210], rsi
lea rcx, [rsp + 0x1f8]
mov qword [rsp + 0xc0], rcx
lea rax, [rsp + 0xa8]
call fcn.004359a0
test eax, eax
jne 0x61523d
mov r9, qword [rsp + 0x1d0]
xor eax, eax
mov rcx, qword [rsp + 0x50]
xor edx, edx
jmp 0x615269
nop dword [rax]
call fcn.00435fa0
mov rax, qword [rsp + 0x1d8]
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x238
pop rbp
ret
mov r9, r8
mov eax, edi
mov rcx, rsi
mov edx, r12d
test al, al
jne 0x615561
mov byte [rsp + 0x43], al
mov qword [rsp + 0x90], rcx
mov byte [rsp + 0x42], dl
mov rbx, qword [r9]
mov rcx, qword [r9 + 8]
mov rdi, qword [r9 + 0x10]
mov rdx, qword [rsp + 0x78]
mov rsi, qword [rdx + 0x20]
mov rax, qword [rsp + 0x1c0]
call rsi
mov qword [rsp + 0x68], rax
mov rdx, qword [rsp + 0x50]
cmp rdx, 0xffffffffffffffff
je 0x61530a
mov rsi, qword [rsp + 0x90]
sub rsi, rax
test rsi, rsi
jne 0x615300
nop
test rbx, rbx
jne 0x615300
lea rax, [0x0065e4c0]
call fcn.0040d680
mov rcx, qword [rsp + 0x78]
mov rdx, qword [rcx + 0x20]
mov rbx, rax
mov edi, 1
mov rax, qword [rsp + 0x1c0]
mov rcx, rdi
call rdx
neg rax
mov rdx, qword [rsp + 0x50]
mov rsi, rax
mov rax, qword [rsp + 0x68]
nop
test rsi, rsi
jge 0x615312
jmp 0x6154ae
mov rsi, qword [rsp + 0x90]
mov qword [rsp + 0x90], rsi
test rbx, rbx
jne 0x615329
movzx edi, byte [rsp + 0x43]
jmp 0x615468
mov qword [rsp + 0x1a8], rcx
mov qword [rsp + 0x70], rbx
nop
mov rdi, rax
xor eax, eax
mov r8, qword [rsp + 0x1b0]
mov r9d, 1
lock cmpxchg dword [r8 + 0x58], r9d
sete r10b
test r10b, r10b
jne 0x615393
mov rax, qword [rsp + 0x1a0]
call fcn.00480e60
mov rcx, qword [rsp + 0x1a8]
mov rdx, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x90]
mov rdi, qword [rsp + 0x68]
mov r8, qword [rsp + 0x1b0]
mov r9d, 1
nop
mov r10, qword [rsp + 0x248]
mov r11, qword [r10 + 0x150]
test r11, r11
mov r12d, 0xffffffff
lock xadd dword [r8 + 0x58], r12d
dec r12d
test r12d, r12d
jne 0x6153bf
test r11, r11
jmp 0x615417
mov qword [rsp + 0x88], r11
mov rax, qword [rsp + 0x1a0]
mov ebx, r12d
call fcn.00481140
mov rcx, qword [rsp + 0x88]
test rcx, rcx
mov rcx, qword [rsp + 0x1a8]
mov rdx, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x90]
mov rdi, qword [rsp + 0x68]
mov r8, qword [rsp + 0x1b0]
mov r9d, 1
mov r10, qword [rsp + 0x248]
jne 0x615525
nop dword [rax]
cmp qword [0x008bd9f0], rbx
jne 0x6154f7
mov rdx, qword [0x008bd9f8]
mov rax, rbx
mov rbx, rcx
mov rcx, rdx
nop dword [rax]
call fcn.00404940
test al, al
je 0x6154ea
mov rax, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x90]
xor ebx, ebx
xor ecx, ecx
mov edi, 1
mov r8, qword [rsp + 0x1d0]
mov r9, qword [r8 + 0x10]
cmp rax, r9
ja 0x615ab2
mov byte [rsp + 0x43], dil
mov r10, qword [r8]
mov r11, qword [rsp + 0x248]
movzx r12d, byte [rsp + 0x42]
jmp 0x615896
test rbx, rbx
je 0x61525e
jmp 0x615a74
mov rax, qword [0x008be090]
mov rcx, qword [0x008be098]
mov qword [rsp + 0x1d8], rax
mov qword [rsp + 0x1e0], rcx
call fcn.00435fa0
mov rbx, qword [rsp + 0x1e0]
mov rax, qword [rsp + 0x1d8]
add rsp, 0x238
pop rbp
ret
mov rcx, qword [rsp + 0x1a8]
mov rbx, qword [rsp + 0x70]
mov qword [rsp + 0x1d8], rbx
mov qword [rsp + 0x1e0], rcx
call fcn.00435fa0
mov rbx, qword [rsp + 0x1e0]
mov rax, qword [rsp + 0x1d8]
add rsp, 0x238
pop rbp
ret
mov rax, qword [0x008be080]
mov rcx, qword [0x008be088]
mov qword [rsp + 0x1d8], rax
mov qword [rsp + 0x1e0], rcx
call fcn.00435fa0
mov rbx, qword [rsp + 0x1e0]
mov rax, qword [rsp + 0x1d8]
add rsp, 0x238
pop rbp
ret
test dl, dl
jne 0x61582c
nop
xor eax, eax
mov rcx, qword [rsp + 0x1b0]
mov edx, 1
lock cmpxchg dword [rcx + 0x58], edx
sete sil
test sil, sil
jne 0x6155a1
mov rax, qword [rsp + 0x1a0]
call fcn.00480e60
mov rcx, qword [rsp + 0x1b0]
mov edx, 1
mov rsi, qword [rsp + 0x248]
mov rdi, qword [rsi + 0xd0]
mov r8, qword [rsi + 0xd8]
mov r9, qword [rsp + 0x250]
mov r9, qword [r9 + 0xa8]
mov qword [rsp + 0x180], r9
mov qword [rsp + 0x1d8], rdi
mov qword [rsp + 0x1e0], r8
nop
mov ebx, 0xffffffff
lock xadd dword [rcx + 0x58], ebx
dec ebx
test ebx, ebx
je 0x615619
mov rax, qword [rsp + 0x1a0]
call fcn.00481140
mov rcx, qword [rsp + 0x1b0]
mov edx, 1
mov rsi, qword [rsp + 0x248]
mov r9, qword [rsp + 0x180]
cmp qword [rsp + 0x1d8], 0
jne 0x61580e
lea rbx, [rcx + 0x120]
xor eax, eax
lock cmpxchg dword [rcx + 0x120], edx
sete dl
nop dword [rax]
test dl, dl
jne 0x61565c
mov qword [rsp + 0x190], rbx
mov rax, rbx
call fcn.00480e60
mov rbx, qword [rsp + 0x190]
movups xmmword [rsp + 0x1e8], xmm15
lea rcx, [0x00615ae0]
mov qword [rsp + 0x1e8], rcx
mov qword [rsp + 0x1f0], rbx
lea rcx, [rsp + 0x1e8]
mov qword [rsp + 0x150], rcx
lea rax, [rsp + 0x138]
call fcn.004359a0
nop dword [rax]
test eax, eax
jne 0x6157f0
mov rbx, qword [rsp + 0x180]
test rbx, rbx
je 0x6156ba
mov rdx, qword [rbx]
jmp 0x6156c0
xor edx, edx
nop dword [rax]
test rdx, rdx
jg 0x6156cd
xor ebx, ebx
xor ecx, ecx
xor eax, eax
jmp 0x6156f3
mov rax, qword [rsp + 0x1b0]
call fcn.00617320
mov qword [rsp + 0x1d8], rdi
mov qword [rsp + 0x1e0], rsi
test rdi, rdi
jne 0x6157d2
test rbx, rbx
je 0x61573a
mov rdx, qword [rsp + 0x248]
mov edx, dword [rdx + 0x28]
mov rdi, qword [rsp + 0x98]
mov rsi, rax
mov r8, rbx
mov r9, rcx
mov rax, qword [rsp + 0x1b0]
mov ebx, edx
mov ecx, 1
call fcn.00614ca0
mov qword [rsp + 0x1d8], rax
mov qword [rsp + 0x1e0], rbx
jmp 0x615780
mov rdx, qword [rsp + 0x1b0]
mov rax, qword [rdx + 0x130]
mov r12, qword [rsp + 0x248]
mov ebx, dword [r12 + 0x28]
mov ecx, 1
xor edi, edi
xor esi, esi
mov r8, rsi
mov r9, rdi
mov r10, rsi
mov r11, rsi
call fcn.00608760
mov qword [rsp + 0x1d8], rax
mov qword [rsp + 0x1e0], rbx
mov rcx, qword [rsp + 0x1b0]
mov rax, qword [rcx + 0x128]
call fcn.004efe40
test rax, rax
je 0x6157b4
cmp qword [rsp + 0x1d8], 0
jne 0x6157b4
mov qword [rsp + 0x1d8], rax
mov qword [rsp + 0x1e0], rbx
call fcn.00435fa0
mov rax, qword [rsp + 0x1d8]
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x238
pop rbp
ret
call fcn.00435fa0
mov rax, qword [rsp + 0x1d8]
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x238
pop rbp
ret
call fcn.00435fa0
mov rax, qword [rsp + 0x1d8]
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x238
pop rbp
ret
call fcn.00435fa0
mov rax, qword [rsp + 0x1d8]
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x238
pop rbp
ret
movups xmmword [rsp + 0x1d8], xmm15
call fcn.00435fa0
mov rbx, qword [rsp + 0x1e0]
mov rax, qword [rsp + 0x1d8]
add rsp, 0x238
pop rbp
ret
mov r11, qword [rsp + 0x248]
movzx r12d, byte [rsp + 0x42]
mov r10, qword [rsp + 0x188]
mov r9, qword [rsp + 0x60]
mov r13, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x90]
movzx edi, byte [rsp + 0x43]
mov r8, qword [rsp + 0x1d0]
mov rcx, rbx
mov rbx, rax
mov rax, r13
test rax, rax
je 0x6154a0
nop
test rbx, rbx
jne 0x6154a0
mov qword [rsp + 0x60], r9
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x188], r10
mov rbx, rax
mov rax, r11
call fcn.00615c00
test rbx, rbx
jne 0x615a46
mov r12, qword [rsp + 0x1b0]
lea r13, [r12 + 0x120]
mov qword [rsp + 0x198], r13
mov ecx, eax
xor eax, eax
mov r15d, 1
lock cmpxchg dword [r12 + 0x120], r15d
sete al
nop
test al, al
jne 0x61592a
mov dword [rsp + 0x44], ecx
mov rax, r13
call fcn.00480e60
mov ecx, dword [rsp + 0x44]
mov r12, qword [rsp + 0x1b0]
mov r13, qword [rsp + 0x198]
mov r15d, 1
movsxd rcx, ecx
mov rdx, qword [rsp + 0x60]
cmp rdx, rcx
jb 0x615aad
mov r15, qword [rsp + 0x58]
cmp r15, rcx
jb 0x615aa2
mov r8, rdx
sub rdx, rcx
mov qword [rsp + 0x60], rdx
mov rax, rdx
neg rdx
sar rdx, 0x3f
and rdx, rcx
sub r15, rcx
mov qword [rsp + 0x58], r15
mov rdi, qword [rsp + 0x188]
add rdx, rdi
mov qword [rsp + 0x188], rdx
mov rbx, r13
movzx r13d, byte [rsp + 0x43]
test r13b, r13b
je 0x6159a2
test r15, r15
jne 0x6159a2
mov r13, qword [rsp + 0xa0]
test r13, r13
sete r9b
nop
jmp 0x6159a5
xor r9d, r9d
mov byte [rsp + 0x42], r9b
mov rax, qword [r12 + 0x130]
mov rdx, qword [rsp + 0x248]
mov ebx, dword [rdx + 0x28]
mov rsi, rcx
xor r10d, r10d
mov r11, r10
mov ecx, r9d
xor r9d, r9d
call fcn.00608760
test rax, rax
jne 0x6159ea
mov rcx, qword [rsp + 0x1b0]
mov rax, qword [rcx + 0x128]
call fcn.004efe40
nop
mov edx, 0xffffffff
mov rsi, qword [rsp + 0x1b0]
lock xadd dword [rsi + 0x120], edx
dec edx
test edx, edx
je 0x615853
mov qword [rsp + 0x1c8], rbx
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x198]
mov ebx, edx
call fcn.00481140
mov rax, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x1c8]
mov rsi, qword [rsp + 0x1b0]
jmp 0x615853
mov qword [rsp + 0x1d8], rbx
mov qword [rsp + 0x1e0], rcx
call fcn.00435fa0
mov rax, qword [rsp + 0x1d8]
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x238
pop rbp
ret
mov qword [rsp + 0x1d8], rbx
mov qword [rsp + 0x1e0], rcx
call fcn.00435fa0
mov rbx, qword [rsp + 0x1e0]
mov rax, qword [rsp + 0x1d8]
add rsp, 0x238
pop rbp
ret
mov rax, rcx
mov rcx, r15
call fcn.00466a20
call fcn.004669e0
mov rcx, rax
mov rdx, r9
call fcn.004669e0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
call fcn.004646a0
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
jmp fcn.00614ec0