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

Disassembly:
lea r12, [rsp - 0xb8]
cmp r12, qword [r14 + 0x10]
jbe 0x69554b
sub rsp, 0x138
mov qword [rsp + 0x130], rbp
lea rbp, [rsp + 0x130]
mov qword [rsp + 0x140], rax
mov qword [rsp + 0x148], rbx
mov qword [rsp + 0x150], rcx
mov qword [rsp + 0x158], rdi
mov qword [rsp + 0x160], rsi
mov qword [rsp + 0x168], r8
mov qword [rsp + 0x170], r9
mov rcx, rax
xor eax, eax
mov edx, 1
lock cmpxchg dword [rcx + 0x34], edx
sete dl
lea rax, [rcx + 0x34]
mov qword [rsp + 0xc0], rax
nop
test dl, dl
jne 0x694cf1
call fcn.0047d500
mov rcx, qword [rsp + 0x140]
mov rbx, qword [rcx + 0x40]
mov rdx, qword [rsp + 0x150]
mov rdi, qword [rsp + 0x158]
lea rax, [0x006cc900]
mov rcx, rdx
call fcn.00412f00
mov rdx, qword [rax]
mov rsi, qword [rax + 8]
nop
mov r8d, 0xffffffff
mov r9, qword [rsp + 0x140]
lock xadd dword [r9 + 0x34], r8d
dec r8d
test r8d, r8d
je 0x694d6b
mov byte [rsp + 0x46], bl
mov qword [rsp + 0xe0], rsi
mov qword [rsp + 0x68], rdx
mov rax, qword [rsp + 0xc0]
mov ebx, r8d
call fcn.0047d800
mov rdx, qword [rsp + 0x68]
movzx ebx, byte [rsp + 0x46]
mov rsi, qword [rsp + 0xe0]
test bl, bl
je 0x694f09
test rdx, rdx
je 0x694deb
nop
cmp byte [0x009b00e0], 0
je 0x694da7
mov qword [0x009b00e8], rdx
cmp dword [0x00a04ed0], 0
jne 0x694d9b
mov qword [0x009b00f0], rsi
jmp 0x694da7
lea rdi, [0x009b00f0]
call fcn.00465b80
mov qword [rsp + 0x110], rdx
mov qword [rsp + 0x118], rsi
mov rdx, qword [rsp + 0x110]
nop
test rdx, rdx
je 0x694de2
movzx edi, byte [rdx + 0x17]
mov r8d, edi
and edi, 0x1f
mov r9, rdi
bts rdi, 7
test r8b, 0x20
cmove r9, rdi
nop
jmp 0x694df2
xor r9d, r9d
xor edx, edx
xor esi, esi
jmp 0x694df2
xor r9d, r9d
xor edx, edx
xor esi, esi
mov qword [rsp + 0x50], r9
mov qword [rsp + 0xb0], rsi
mov qword [rsp + 0xa0], rdx
test r9, r9
je 0x694e1c
bt r9d, 9
jb 0x694e1c
lea rax, [0x007f7248]
jmp 0x694e2d
mov rax, rdx
mov rbx, rsi
mov rcx, r9
call fcn.00491600
mov rdx, rbx
mov rcx, qword [rax + 0x88]
mov rax, rdx
call rcx
mov byte [rsp + 0x47], al
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x694e5e
bt ecx, 9
jb 0x694e5e
lea rdx, [0x007f7248]
mov rbx, qword [rsp + 0xa0]
jmp 0x694e76
mov rax, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0xb0]
call fcn.00491600
mov rdx, rax
mov rcx, qword [rdx + 0xc8]
mov rax, rbx
call rcx
movzx ecx, byte [rsp + 0x47]
test cl, cl
je 0x694ea0
lea rdx, [rax - 1]
cmp qword [rsp + 0x168], rdx
jl 0x694eaa
test cl, cl
jne 0x694ee6
nop dword [rax]
cmp qword [rsp + 0x168], rax
je 0x694ee6
lea rax, [0x006d8800]
call fcn.0040daa0
mov qword [rax + 8], 0x1b
lea rcx, [0x007243dd]
mov qword [rax], rcx
xor ebx, ebx
lea rcx, [0x007f1c00]
mov rdi, rax
xor eax, eax
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
mov qword [rsp + 0x58], rax
mov rdx, qword [rsp + 0x168]
mov qword [rsp + 0x90], rdx
xor ebx, ebx
xor esi, esi
lea rdi, [rsp + 0x40]
xor r8d, r8d
jmp 0x694f40
xor eax, eax
xor ebx, ebx
mov rcx, rax
mov rdi, rbx
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
mov rbx, qword [rsp + 0x60]
inc rbx
mov rax, qword [rsp + 0x58]
movzx ecx, byte [rsp + 0x47]
mov r8, rdx
mov rdx, qword [rsp + 0x90]
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x70], r8
mov qword [rsp + 0xf0], rdi
cmp rbx, rdx
jge 0x6951af
mov qword [rsp + 0x60], rbx
test cl, cl
je 0x694ff1
lea r9, [rax - 1]
cmp rbx, r9
jl 0x694fe7
mov qword [rsp + 0x88], r9
mov r10, qword [rsp + 0x50]
nop
test r10, r10
je 0x694f9d
bt r10d, 9
jb 0x694f9d
lea r11, [0x007f7248]
mov r12, qword [rsp + 0xa0]
jmp 0x694fc3
mov rax, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0xb0]
mov rcx, r10
call fcn.00491600
mov r9, qword [rsp + 0x88]
mov r11, rax
mov r12, rbx
mov rcx, qword [r11 + 0x80]
mov rax, r12
mov rbx, r9
call rcx
mov rcx, qword [rax + 0x48]
mov rax, rbx
call rcx
nop dword [rax + rax]
call fcn.00492260
jmp 0x695047
mov r9, qword [rsp + 0x50]
test r9, r9
jmp 0x694ff9
mov r9, qword [rsp + 0x50]
test r9, r9
je 0x695013
bt r9d, 9
jb 0x695013
lea r10, [0x007f7248]
mov r11, qword [rsp + 0xa0]
jmp 0x695036
mov rax, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0xb0]
mov rcx, r9
call fcn.00491600
mov r10, rax
mov r11, rbx
mov rbx, qword [rsp + 0x60]
mov rcx, qword [r10 + 0x80]
mov rax, r11
call rcx
call fcn.00492260
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0xa8], rbx
mov qword [rsp + 0x98], rax
mov edi, 1
call fcn.0048f100
mov rdx, qword [rsp + 0x160]
mov rcx, qword [rsp + 0x168]
mov rsi, qword [rsp + 0x60]
nop dword [rax + rax]
cmp rsi, rcx
jae 0x695542
lea r8, [rsi + rsi*2]
mov r9, qword [rdx + r8*8]
mov r10, qword [rdx + r8*8 + 8]
mov rcx, qword [rdx + r8*8 + 0x10]
mov rdi, rax
mov rax, r9
mov rdx, rbx
mov rbx, r10
mov rsi, rdx
call fcn.006401a0
test rax, rax
jne 0x695195
mov rax, qword [rsp + 0x98]
mov rbx, qword [rsp + 0xa8]
mov rcx, qword [rsp + 0x48]
call fcn.0048ec40
mov rdx, qword [rsp + 0x70]
inc rdx
mov rsi, qword [rsp + 0x78]
nop
cmp rsi, rdx
jb 0x6950ef
mov rdi, qword [rsp + 0xf0]
jmp 0x695147
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x108], rbx
mov qword [rsp + 0x100], rax
mov rax, qword [rsp + 0xf0]
mov rbx, rdx
mov rcx, rsi
mov edi, 1
lea rsi, [0x00719120]
call fcn.0044aa20
mov rdi, rax
mov rdx, rbx
mov rsi, rcx
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x108]
lea r8, [rdx + rdx*2]
mov qword [rdi + r8*8 - 8], rcx
lea r9, [rdi + r8*8]
lea r9, [r9 - 0x18]
lea r10, [rdi + r8*8]
lea r10, [r10 - 0x10]
cmp dword [0x00a04ed0], 0
jne 0x695178
mov qword [rdi + r8*8 - 0x18], rax
mov qword [rdi + r8*8 - 0x10], rbx
jmp 0x694f23
mov rcx, rdi
mov rdi, r9
nop
call fcn.00465a20
mov rdi, r10
call fcn.00465b60
mov rdi, rcx
jmp 0x694f23
mov rcx, rax
mov rdi, rbx
xor eax, eax
xor ebx, ebx
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
lea rcx, [0x006b16a0]
mov qword [rsp + 0x120], rcx
mov qword [rsp + 0x128], 0
mov rcx, qword [rsp + 0x120]
test rcx, rcx
je 0x6951e2
lea rax, [0x007f7248]
nop
jmp 0x6951e6
xor eax, eax
xor ecx, ecx
mov rdx, qword [rax + 0x48]
mov rax, rcx
call rdx
mov qword [rsp + 0xf8], rax
mov qword [rsp + 0xe8], rbx
mov rcx, qword [rsp + 0x50]
mov rdi, qword [rsp + 0xf0]
mov rsi, qword [rsp + 0x70]
mov r8, qword [rsp + 0x78]
mov rax, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0xb0]
call fcn.0048bb40
test rbx, rbx
je 0x695528
mov qword [rsp + 0xb8], rax
nop dword [rax]
cmp rbx, 1
jne 0x695360
mov rcx, qword [rax + 0x10]
mov rdx, qword [rax]
mov rbx, qword [rax + 8]
test rcx, rcx
je 0x69526b
bt ecx, 9
nop
jb 0x69526b
lea rcx, [0x007f7248]
jmp 0x695279
mov rax, rdx
call fcn.00491600
mov rcx, rax
mov rdx, rbx
mov rsi, qword [rcx + 0x78]
mov rax, rdx
mov rbx, qword [rsp + 0xf8]
mov rcx, qword [rsp + 0xe8]
call rsi
test al, al
je 0x69532c
mov rdx, qword [rsp + 0xb8]
mov rbx, qword [rdx + 8]
mov rcx, qword [rdx + 0x10]
mov rax, qword [rdx]
mov edi, 1
call fcn.0048f100
test rax, rax
je 0x695312
mov rdx, qword [rsp + 0xb8]
mov rax, qword [rdx]
mov rbx, qword [rdx + 8]
mov rcx, qword [rdx + 0x10]
mov edi, 1
call fcn.0048f100
mov qword [rsp + 0xc8], rbx
mov rcx, rax
lea rax, [0x006d3680]
mov rbx, rcx
call fcn.0040b460
xor ebx, ebx
mov rcx, rax
mov rdi, qword [rsp + 0xc8]
xor eax, eax
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
xor eax, eax
xor ebx, ebx
mov rcx, rax
mov rdi, rbx
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
mov rdx, qword [rsp + 0xb8]
mov rax, qword [rdx]
mov rbx, qword [rdx + 8]
mov rcx, qword [rdx + 0x10]
mov edi, 1
call fcn.0048f100
xor ecx, ecx
xor edi, edi
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
cmp rbx, 2
jne 0x6954ec
mov rcx, qword [rax + 0x28]
mov rdx, qword [rax + 0x18]
mov rbx, qword [rax + 0x20]
test rcx, rcx
je 0x69538b
bt ecx, 9
nop
jb 0x69538b
lea rcx, [0x007f7248]
jmp 0x695399
mov rax, rdx
call fcn.00491600
mov rcx, rax
mov rdx, rbx
mov rsi, qword [rcx + 0x78]
mov rax, rdx
mov rbx, qword [rsp + 0xf8]
mov rcx, qword [rsp + 0xe8]
call rsi
test al, al
je 0x6954b0
mov rdx, qword [rsp + 0xb8]
mov rbx, qword [rdx + 0x20]
mov rcx, qword [rdx + 0x28]
mov rax, qword [rdx + 0x18]
mov edi, 1
call fcn.0048f100
nop dword [rax + rax]
test rax, rax
je 0x69547f
mov rdx, qword [rsp + 0xb8]
mov rax, qword [rdx]
mov rcx, qword [rdx + 0x10]
mov rbx, qword [rdx + 8]
mov edi, 1
call fcn.0048f100
mov qword [rsp + 0xf8], rax
mov qword [rsp + 0xd8], rbx
mov rdx, qword [rsp + 0xb8]
mov rsi, qword [rdx + 0x18]
mov r8, qword [rdx + 0x20]
mov rcx, qword [rdx + 0x28]
mov edi, 1
mov rax, rsi
mov rbx, r8
call fcn.0048f100
mov qword [rsp + 0xd0], rbx
mov rcx, rax
lea rax, [0x006d3680]
mov rbx, rcx
call fcn.0040b460
mov rbx, qword [rsp + 0xd8]
mov rcx, rax
mov rdi, qword [rsp + 0xd0]
mov rax, qword [rsp + 0xf8]
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
mov rdx, qword [rsp + 0xb8]
mov rax, qword [rdx]
mov rbx, qword [rdx + 8]
mov rcx, qword [rdx + 0x10]
mov edi, 1
call fcn.0048f100
xor ecx, ecx
xor edi, edi
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
lea rax, [0x006d8800]
call fcn.0040daa0
mov qword [rax + 8], 0x24
lea rcx, [0x00729252]
mov qword [rax], rcx
xor ebx, ebx
lea rcx, [0x007f1c00]
mov rdi, rax
xor eax, eax
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
lea rax, [0x006d8800]
call fcn.0040daa0
mov qword [rax + 8], 0x22
lea rcx, [0x00728481]
mov qword [rax], rcx
xor ebx, ebx
lea rcx, [0x007f1c00]
mov rdi, rax
xor eax, eax
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
xor eax, eax
xor ebx, ebx
mov rcx, rax
mov rdi, rbx
mov rbp, qword [rsp + 0x130]
add rsp, 0x138
ret
mov rax, rsi
call fcn.00465ec0
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
mov qword [rsp + 0x38], r9
call fcn.00463860
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]
mov r9, qword [rsp + 0x38]
jmp fcn.00694c60