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

Disassembly:
lea r12, [rsp - 0x30]
cmp r12, qword [r14 + 0x10]
jbe 0x609d79
sub rsp, 0xb0
mov qword [rsp + 0xa8], rbp
lea rbp, [rsp + 0xa8]
mov qword [rsp + 0xc0], rbx
mov qword [rsp + 0xb8], rax
mov rcx, qword [rax]
mov qword [rsp + 0x88], rcx
mov edx, dword [rbx + 8]
mov ebx, edx
call fcn.00609f80
nop
nop
mov rcx, qword [rsp + 0xc0]
cmp byte [rcx], 0
je 0x609d65
mov rdx, qword [rcx + 0x18]
mov rbx, qword [rcx + 0x10]
mov rdi, qword [rcx + 0x20]
test rax, rax
je 0x609b5a
mov qword [rsp + 0x80], rax
cmp byte [rax + 0x15f], 0
jne 0x609ab9
cmp byte [rax + 0x15b], 0
je 0x609a1f
cmp dword [rcx + 4], 0
jbe 0x6099ef
cmp byte [rax + 0xb9], 0
je 0x6096a7
test rdx, rdx
je 0x6096a7
mov rdx, qword [rsp + 0x88]
test byte [rdx], al
nop
lea rax, [0x006c8504]
mov ebx, 0x2f
xor ecx, ecx
xor edi, edi
mov rsi, rdi
call fcn.004fe400
mov rdx, qword [rsp + 0xc0]
mov edx, dword [rdx + 8]
mov dword [rsp + 0x90], edx
mov dword [rsp + 0x94], 1
movups xmmword [rsp + 0x98], xmm15
lea rax, [0x00699c60]
lea rbx, [rsp + 0x90]
call fcn.0040ac40
mov rdx, qword [rsp + 0x80]
mov byte [rdx + 0x160], 1
lea rbx, [0x0073bbc0]
mov rcx, rax
mov rax, rdx
call fcn.005fd360
xor eax, eax
xor ebx, ebx
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
mov qword [rsp + 0x30], rdx
mov rsi, rax
xor eax, eax
mov r8, qword [rsp + 0x88]
mov r9d, 1
lock cmpxchg dword [r8 + 0x50], r9d
sete r10b
lea rax, [r8 + 0x50]
mov qword [rsp + 0x60], rax
test r10b, r10b
jne 0x609718
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x50], rbx
call fcn.00470dc0
mov rax, qword [rsp + 0x60]
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x80]
mov rdi, qword [rsp + 0x38]
mov r8, qword [rsp + 0x88]
mov r9d, 1
mov r10d, dword [rsi + 0x118]
mov r11, qword [rsi + 0x120]
test r11, r11
je 0x60973e
mov r12d, dword [r11]
cmp r12d, r10d
jge 0x60973e
mov r13d, r12d
mov r12d, r10d
mov r10d, r13d
jmp 0x609741
mov r12d, r10d
mov r13d, dword [rcx + 4]
cmp r10d, r13d
jl 0x6099ba
nop
test r11, r11
je 0x609767
mov r10d, dword [r11]
cmp r10d, r12d
jge 0x609767
mov r11d, r10d
mov r10d, r12d
mov r12d, r11d
jmp 0x60976a
mov r10d, r12d
cmp r12d, r13d
jl 0x609d51
sub r10d, r13d
mov dword [rsi + 0x118], r10d
mov r10, qword [rsi + 0x120]
test r10, r10
je 0x60978c
sub dword [r10], r13d
mov r10d, dword [rcx + 4]
sub r10, rdx
test r10, r10
mov r11d, 0
cmovg r11, r10
test rdx, rdx
jne 0x6097ad
xor edx, edx
xor ebx, ebx
xor edi, edi
jmp 0x609800
mov qword [rsp + 0x40], r11
lea rax, [rsi + 0x30]
mov rcx, rdx
call fcn.005fbec0
test rbx, rbx
setne dl
mov rsi, qword [rsp + 0x30]
mov r11, qword [rsp + 0x40]
add rsi, r11
test rbx, rbx
cmovne r11, rsi
mov rax, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x80]
mov r8, qword [rsp + 0x88]
mov r9d, 1
mov rdi, rcx
mov rcx, qword [rsp + 0xc0]
nop
test r11, r11
jle 0x609853
mov r10d, dword [r8 + 0x70]
lea r12d, [r11 + r10]
cmp r11d, r12d
setl r13b
test r10d, r10d
setg r10b
nop
nop dword [rax]
cmp r10b, r13b
jne 0x609829
mov dword [r8 + 0x70], r12d
test dl, dl
jne 0x609853
mov r10d, dword [rsi + 0x118]
lea r12d, [r11 + r10]
cmp r11d, r12d
setl r13b
test r10d, r10d
setg r10b
nop
cmp r10b, r13b
jne 0x609853
mov dword [rsi + 0x118], r12d
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x40], r11
mov byte [rsp + 0x2b], dl
nop
mov r10d, 0xffffffff
lock xadd dword [r8 + 0x50], r10d
dec r10d
test r10d, r10d
jne 0x609882
test r11, r11
nop
jmp 0x6098c4
mov ebx, r10d
call fcn.004710c0
mov rcx, qword [rsp + 0x40]
test rcx, rcx
mov rcx, qword [rsp + 0xc0]
movzx edx, byte [rsp + 0x2b]
mov rbx, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x80]
mov rdi, qword [rsp + 0x78]
mov r8, qword [rsp + 0x88]
mov r9d, 1
mov r11, qword [rsp + 0x40]
jle 0x60998e
xor eax, eax
lock cmpxchg dword [r8 + 0x120], r9d
sete r9b
lea rax, [r8 + 0x120]
mov qword [rsp + 0x58], rax
test r9b, r9b
jne 0x6098fc
call fcn.00470dc0
mov r8, qword [rsp + 0x88]
mov r11, qword [rsp + 0x40]
mov rax, qword [r8 + 0x130]
xor ebx, ebx
mov rcx, r11
call fcn.005f83e0
movzx edx, byte [rsp + 0x2b]
test dl, dl
jne 0x60993a
mov rdx, qword [rsp + 0x88]
mov rax, qword [rdx + 0x130]
mov rsi, qword [rsp + 0x80]
mov ebx, dword [rsi + 0x28]
mov rcx, qword [rsp + 0x40]
call fcn.005f83e0
mov rcx, qword [rsp + 0x88]
mov rax, qword [rcx + 0x128]
call fcn.005cd240
nop
mov ebx, 0xffffffff
mov rcx, qword [rsp + 0x88]
lock xadd dword [rcx + 0x120], ebx
dec ebx
test ebx, ebx
je 0x609974
mov rax, qword [rsp + 0x58]
call fcn.004710c0
mov rcx, qword [rsp + 0xc0]
mov rbx, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x80]
mov rdi, qword [rsp + 0x78]
test rbx, rbx
je 0x6099f2
nop
mov byte [rsi + 0x160], 1
mov rax, rsi
mov rcx, rdi
call fcn.005fd360
xor eax, eax
xor ebx, ebx
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
nop
mov ebx, 0xffffffff
lock xadd dword [r8 + 0x50], ebx
dec ebx
test ebx, ebx
je 0x6099d1
call fcn.004710c0
lea rax, [0x0073bb80]
lea rbx, [0x0073a0b0]
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
mov rsi, rax
movzx ecx, byte [rcx + 2]
test cl, 1
je 0x609a0b
mov rax, qword [rsp + 0xb8]
mov rbx, rsi
call fcn.00609da0
xor eax, eax
xor ebx, ebx
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
mov rdx, qword [rsp + 0x88]
test byte [rdx], al
nop
lea rax, [0x006ca30b]
mov ebx, 0x34
xor ecx, ecx
xor edi, edi
mov rsi, rdi
nop dword [rax]
call fcn.004fe400
mov rdx, qword [rsp + 0xc0]
mov edx, dword [rdx + 8]
mov dword [rsp + 0x90], edx
mov dword [rsp + 0x94], 1
movups xmmword [rsp + 0x98], xmm15
lea rax, [0x00699c60]
lea rbx, [rsp + 0x90]
call fcn.0040ac40
mov rdx, qword [rsp + 0x80]
mov byte [rdx + 0x160], 1
lea rbx, [0x0073bbc0]
mov rcx, rax
mov rax, rdx
nop dword [rax + rax]
call fcn.005fd360
xor eax, eax
xor ebx, ebx
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
mov rdx, qword [rsp + 0x88]
test byte [rdx], al
nop
lea rax, [0x006c7bea]
mov ebx, 0x2e
xor ecx, ecx
xor edi, edi
mov rsi, rdi
call fcn.004fe400
mov qword [rsp + 0x90], 0
movups xmmword [rsp + 0x98], xmm15
mov rdx, qword [rsp + 0xc0]
mov edx, dword [rdx + 8]
mov dword [rsp + 0x90], edx
mov dword [rsp + 0x94], 1
lea rax, [0x00699c60]
lea rbx, [rsp + 0x90]
nop dword [rax]
call fcn.0040ac40
mov rdx, qword [rsp + 0x80]
mov byte [rdx + 0x160], 1
lea rbx, [0x0073bbc0]
mov rcx, rax
mov rax, rdx
call fcn.005fd360
xor eax, eax
xor ebx, ebx
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
xor eax, eax
mov rdx, qword [rsp + 0x88]
mov r8d, 1
lock cmpxchg dword [rdx + 0x50], r8d
sete r9b
lea rax, [rdx + 0x50]
mov qword [rsp + 0x70], rax
nop dword [rax]
test r9b, r9b
jne 0x609ba5
call fcn.00470dc0
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0x88]
mov r8d, 1
mov r9d, dword [rdx + 0xb0]
nop
mov ebx, 0xffffffff
lock xadd dword [rdx + 0x50], ebx
dec ebx
test ebx, ebx
je 0x609be7
mov dword [rsp + 0x2c], r9d
call fcn.004710c0
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0x88]
mov r8d, 1
mov r9d, dword [rsp + 0x2c]
cmp dword [rcx + 8], r9d
jae 0x609d19
cmp dword [rcx + 4], 0
jbe 0x609d05
nop
mov rbx, rax
xor eax, eax
lock cmpxchg dword [rdx + 0x50], r8d
sete sil
test sil, sil
jne 0x609c33
mov rax, rbx
call fcn.00470dc0
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0x88]
mov rbx, qword [rsp + 0x70]
mov r8d, 1
mov esi, dword [rcx + 4]
mov edi, dword [rdx + 0x70]
lea r9d, [rsi + rdi]
cmp esi, r9d
setl sil
test edi, edi
setg dil
cmp dil, sil
jne 0x609c53
mov dword [rdx + 0x70], r9d
nop
mov esi, 0xffffffff
lock xadd dword [rdx + 0x50], esi
dec esi
test esi, esi
je 0x609c84
mov rax, rbx
mov ebx, esi
call fcn.004710c0
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0x88]
mov r8d, 1
xor eax, eax
lock cmpxchg dword [rdx + 0x120], r8d
sete sil
lea rax, [rdx + 0x120]
mov qword [rsp + 0x68], rax
nop
test sil, sil
jne 0x609cba
call fcn.00470dc0
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0x88]
mov rax, qword [rdx + 0x130]
mov ecx, dword [rcx + 4]
xor ebx, ebx
call fcn.005f83e0
mov rdx, qword [rsp + 0x88]
mov rax, qword [rdx + 0x128]
call fcn.005cd240
nop
mov ebx, 0xffffffff
mov rdx, qword [rsp + 0x88]
lock xadd dword [rdx + 0x120], ebx
dec ebx
test ebx, ebx
je 0x609d05
mov rax, qword [rsp + 0x68]
call fcn.004710c0
xor eax, eax
xor ebx, ebx
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
nop
nop
lea rax, [0x006cd473]
mov ebx, 0x44
xor ecx, ecx
xor edi, edi
mov rsi, rdi
call fcn.004fe400
lea rax, [0x0073bb80]
lea rbx, [0x0073a0e0]
mov rbp, qword [rsp + 0xa8]
add rsp, 0xb0
ret
lea rax, [0x006654e0]
lea rbx, [0x0073a760]
nop
call fcn.00437460
lea rax, [0x006654e0]
lea rbx, [0x0073a770]
call fcn.00437460
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
call fcn.004629a0
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
jmp fcn.00609560