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

Disassembly:
cmp rsp, qword [r14 + 0x10]
jbe 0x609df1
sub rsp, 0x70
mov qword [rsp + 0x68], rbp
lea rbp, [rsp + 0x68]
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x88], rcx
mov rdx, qword [rax]
mov qword [rsp + 0x58], rdx
cmp dword [rax + 0x28], 0
jne 0x6099df
mov rax, rdx
nop
call fcn.00607c20
mov rax, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x80]
mov rsi, rax
xor eax, eax
mov r8d, 1
lock cmpxchg dword [rdx + 0x58], r8d
sete r9b
lea rax, [rdx + 0x58]
mov qword [rsp + 0x48], rax
nop dword [rax]
test r9b, r9b
jne 0x609a2f
call fcn.0046e200
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x78]
mov r8d, 1
cmp qword [rsi + 0x140], 0
je 0x609ab4
cmp qword [rsi + 0x158], 0
je 0x609a47
xor edi, edi
jmp 0x609ab6
lea rax, [0x00655d60]
xor ebx, ebx
call fcn.00405660
cmp dword [0x008f2cf0], 0
jne 0x609a6c
mov rbx, qword [rsp + 0x78]
mov qword [rbx + 0x158], rax
jmp 0x609a88
mov rdi, qword [rsp + 0x78]
lea rdx, [rdi + 0x158]
mov rcx, rdi
mov rdi, rdx
nop
call fcn.004654a0
mov rbx, rcx
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x78]
mov r8d, 1
mov edi, 1
jmp 0x609ab6
xor edi, edi
mov r9, qword [rsi + 0x158]
mov qword [rsp + 0x60], r9
nop
mov r10d, 0xffffffff
lock xadd dword [rdx + 0x58], r10d
dec r10d
test r10d, r10d
je 0x609b0f
mov byte [rsp + 0x2b], dil
mov ebx, r10d
nop
call fcn.0046e500
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x78]
movzx edi, byte [rsp + 0x2b]
mov r8d, 1
mov r9, qword [rsp + 0x60]
test dil, dil
je 0x609b57
mov rcx, qword [rsi + 0x140]
mov rax, qword [rsi + 0x148]
mov rcx, qword [rcx + 0x18]
call rcx
mov rax, qword [rsp + 0x60]
call fcn.00406160
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x78]
mov r8d, 1
mov r9, qword [rsp + 0x60]
test r9, r9
je 0x609b86
mov rax, r9
xor ebx, ebx
call fcn.004065a0
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x78]
mov r8d, 1
test rbx, rbx
je 0x609bd2
cmp byte [rsi + 0x160], 0
je 0x609bd2
mov rbx, qword [rsi + 0xe0]
xor eax, eax
nop dword [rax]
call fcn.00406fa0
test al, al
je 0x609baf
xor eax, eax
xor ecx, ecx
jmp 0x609bbf
mov rax, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x78]
mov r8d, 1
mov rbx, rax
test rbx, rbx
jne 0x609c2a
cmp byte [rsi + 0x161], 0
nop
je 0x609c01
cmp byte [rsi + 0x160], 0
jne 0x609c01
mov ebx, dword [rsi + 0x28]
mov rax, rdx
xor ecx, ecx
xor edi, edi
xor esi, esi
call fcn.006122a0
mov rsi, qword [rsp + 0x78]
lea rax, [rsi + 0x30]
mov rcx, qword [0x0089d9d0]
mov rdi, qword [0x0089d9d8]
lea rbx, [rsi + 0x88]
xor esi, esi
nop dword [rax]
call fcn.00602d60
jmp 0x609d09
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x30], rbx
mov rax, rsi
call fcn.00603dc0
mov rax, qword [rsp + 0x78]
cmp byte [rax + 0x161], 0
je 0x609cea
mov rdi, qword [rsp + 0x30]
lea rdx, [0x00719b00]
cmp rdi, rdx
jne 0x609c71
mov rsi, qword [rsp + 0x50]
mov edx, dword [rsi + 4]
mov r8, qword [rsi + 8]
mov r9, qword [rsi + 0x10]
jmp 0x609c87
mov rsi, qword [rsp + 0x50]
mov r8d, 0
mov edx, 0
mov r9d, 0
jne 0x609cd0
mov rcx, qword [0x0089d928]
cmp qword [0x0089d920], r8
jne 0x609cbf
mov dword [rsp + 0x2c], edx
mov rax, r8
mov rbx, r9
call fcn.00403fe0
test al, al
jne 0x609ce5
mov rax, qword [rsp + 0x78]
mov edx, dword [rsp + 0x2c]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x30]
mov ebx, dword [rax + 0x28]
mov ecx, edx
mov rax, qword [rsp + 0x58]
call fcn.006122a0
jmp 0x609ce5
mov ebx, dword [rax + 0x28]
mov ecx, 8
mov rax, qword [rsp + 0x58]
nop dword [rax]
call fcn.006122a0
mov rax, qword [rsp + 0x78]
lea rdx, [rax + 0x30]
lea rbx, [rax + 0x88]
mov rcx, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x50]
xor esi, esi
mov rax, rdx
call fcn.00602d60
mov rcx, qword [rsp + 0x78]
mov ebx, dword [rcx + 0x28]
test ebx, ebx
je 0x609d24
mov rax, qword [rsp + 0x58]
call fcn.0060cc40
mov rcx, qword [rsp + 0x78]
xor eax, eax
mov rdx, qword [rsp + 0x58]
mov esi, 1
lock cmpxchg dword [rdx + 0x128], esi
sete sil
lea rax, [rdx + 0x128]
test sil, sil
jne 0x609d61
mov qword [rsp + 0x40], rax
call fcn.0046e200
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x58]
mov rsi, qword [rdx + 0x140]
test rsi, rsi
nop
mov ebx, 0xffffffff
lock xadd dword [rdx + 0x128], ebx
dec ebx
test ebx, ebx
jne 0x609d84
test rsi, rsi
jmp 0x609da0
mov qword [rsp + 0x38], rsi
call fcn.0046e500
mov rcx, qword [rsp + 0x38]
test rcx, rcx
mov rcx, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x58]
je 0x609ddb
nop
nop
lea rax, [0x0066df60]
call fcn.0040d960
mov qword [rax + 8], 0x3a
lea rcx, [0x006b69e3]
mov qword [rax], rcx
lea rbx, [0x007191c0]
mov rcx, rax
mov rax, qword [rsp + 0x58]
call fcn.006073a0
mov rcx, qword [rsp + 0x78]
mov rax, qword [rcx + 0xe8]
call fcn.00406160
mov rbp, qword [rsp + 0x68]
add rsp, 0x70
ret
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
call fcn.004632e0
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
jmp fcn.00609980