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

Disassembly:
cmp rsp, qword [r14 + 0x10]
jbe 0x40ed68
sub rsp, 0x70
mov qword [rsp + 0x68], rbp
lea rbp, [rsp + 0x68]
cmp dword [0x00bc1cb0], 2
nop
je 0x40ed56
test rax, rax
je 0x40ecc6
cmp byte [0x00bc2584], 0
je 0x40e563
cmp dword [0x00bc2590], 0
je 0x40e543
test rbx, rbx
je 0x40e525
test rax, 7
jne 0x40e500
mov edx, 8
jmp 0x40e52a
test rax, 3
jne 0x40e50f
mov edx, 4
jmp 0x40e52a
test rax, 1
mov edx, 1
mov esi, 2
cmove rdx, rsi
jmp 0x40e52a
mov edx, 0x10
mov rbx, rdx
lea rcx, [0x00bc7500]
call fcn.0040f1c0
mov rbp, qword [rsp + 0x68]
add rsp, 0x70
ret
cmp byte [0x00bc2340], 0
je 0x40e563
mov rdx, qword [0x00bc2348]
cmp qword [r14 + 0x98], rdx
jne 0x40e563
inc qword [0x00bc2350]
mov byte [rsp + 0x88], cl
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x78], rax
cmp dword [0x00bc1ca8], 0
nop
je 0x40e5db
mov rdx, qword [r14 + 0x30]
mov rdx, qword [rdx + 0x90]
test rdx, rdx
jne 0x40e59c
mov qword [rsp + 0x58], r14
mov rdx, qword [rsp + 0x58]
mov rsi, qword [rdx + 0x180]
sub rsi, rax
mov qword [rdx + 0x180], rsi
test rsi, rsi
jge 0x40e5dd
mov qword [rsp + 0x60], rdx
mov rax, rdx
call fcn.0041fb20
mov rax, qword [rsp + 0x78]
movzx ecx, byte [rsp + 0x88]
mov rdx, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x80]
jmp 0x40e5dd
xor edx, edx
mov rsi, qword [r14 + 0x30]
nop
inc dword [rsi + 0xd8]
mov rsi, qword [r14 + 0x30]
mov r8, r14
test byte [r8], al
cmp dword [rsi + 0xc0], 0
jne 0x40ed45
mov r8, r14
cmp qword [rsi + 0x50], r8
je 0x40ed30
mov dword [rsi + 0xc0], 1
mov r8, qword [rsi + 0xa0]
nop dword [rax]
test r8, r8
je 0x40e62b
mov r8, qword [r8 + 0x40]
jmp 0x40e632
mov r8, qword [0x00bc1f78]
test r8, r8
je 0x40ed1f
nop dword [rax + rax]
test rbx, rbx
je 0x40e650
cmp qword [rbx + 8], 0
sete r9b
jmp 0x40e656
mov r9d, 1
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x38], r8
mov byte [rsp + 0x26], r9b
mov qword [rsp + 0x58], rdx
cmp rax, 0x8000
ja 0x40ea10
test r9b, r9b
je 0x40e813
nop
cmp rax, 0x10
jae 0x40e813
mov r10, qword [r8 + 0x18]
test rax, 7
jne 0x40e6a2
add r10, 7
and r10, 0xfffffffffffffff8
nop
jmp 0x40e6c2
test rax, 3
jne 0x40e6b4
add r10, 3
and r10, 0xfffffffffffffffc
jmp 0x40e6c2
bt eax, 0
jb 0x40e6c2
nop
inc r10
and r10, 0xfffffffffffffffe
lea r11, [rax + r10]
cmp r11, 0x10
ja 0x40e721
mov r12, qword [r8 + 0x10]
test r12, r12
je 0x40e721
lea rax, [r12 + r10]
mov qword [r8 + 0x18], r11
inc qword [r8 + 0x20]
mov dword [rsi + 0xc0], 0
nop
mov ecx, dword [rsi + 0xd8]
lea edx, [rcx - 1]
mov dword [rsi + 0xd8], edx
nop dword [rax + rax]
cmp ecx, 1
jne 0x40e717
cmp byte [r14 + 0xb1], 0
je 0x40e717
mov qword [r14 + 0x10], 0xfffffffffffffade
mov rbp, qword [rsp + 0x68]
add rsp, 0x70
ret
mov r10, qword [r8 + 0x50]
mov r11, qword [r10 + 0x40]
bsf rcx, r11
mov r12d, 0x40
cmove rcx, r12
cmp rcx, 0x40
jge 0x40e7a6
mov r12, qword [r10 + 0x30]
lea r13, [r12 + rcx]
mov r15, qword [r10 + 0x38]
cmp r15, r13
jbe 0x40e7a6
lea r12, [r12 + rcx]
lea r12, [r12 + 1]
nop word [rax + rax]
test r12, 0x3f
jne 0x40e773
cmp r15, r12
je 0x40e773
xor r11d, r11d
jmp 0x40e7a9
inc rcx
cmp rcx, 0x40
sbb r15, r15
shr r11, cl
and r11, r15
mov qword [r10 + 0x40], r11
mov qword [r10 + 0x30], r12
movzx r11d, word [r10 + 0x60]
inc r11d
mov word [r10 + 0x60], r11w
mov r11, qword [r10 + 0x68]
imul r11, r13
add r11, qword [r10 + 0x18]
jmp 0x40e7a9
xor r11d, r11d
test r11, r11
je 0x40e7b2
xor ecx, ecx
jmp 0x40e7e7
mov rax, r8
mov ebx, 5
call fcn.0040e280
mov rdx, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x48]
mov r8, qword [rsp + 0x38]
movzx r9d, byte [rsp + 0x26]
mov r11, rax
mov r10, rbx
mov rax, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x80]
movups xmmword [r11], xmm15
cmp qword [r8 + 0x18], rax
ja 0x40e7f8
cmp qword [r8 + 0x10], 0
jne 0x40e805
mov r12, r11
mov qword [r8 + 0x10], r11
mov qword [r8 + 0x18], rax
jmp 0x40e808
mov r12, r11
mov r11d, 0x10
jmp 0x40ea09
cmp rax, 0x3f8
ja 0x40e83e
lea r10, [rax + 7]
shr r10, 3
cmp r10, 0x81
jae 0x40ed12
lea r11, [0x00806800]
movzx r10d, byte [r10 + r11]
jmp 0x40e862
lea r10, [rax - 0x381]
shr r10, 7
cmp r10, 0xf9
jae 0x40ed05
lea r11, str._______________________....______0001123333333333444444444455666677777888888888889999999999::::::___________________________________________________________________________AAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
movzx r10d, byte [r10 + r11]
cmp r10, 0x44
jae 0x40ecf5
lea r11, [0x00806940]
movzx r11d, word [r11 + r10*2]
nop
shl r10d, 1
movzx r12d, r9b
or r10d, r12d
movzx r12d, r10b
cmp r12, 0x88
jae 0x40ece8
mov r12, qword [r8 + r12*8 + 0x28]
mov r13, qword [r12 + 0x40]
bsf r15, r13
mov rdi, rdx
mov edx, 0x40
cmove r15, rdx
cmp r15, 0x40
jge 0x40e94c
mov rdx, qword [r12 + 0x30]
lea rsi, [rdx + r15]
mov r8, qword [r12 + 0x38]
cmp r8, rsi
jbe 0x40e942
lea rdx, [rdx + r15]
lea rdx, [rdx + 1]
test rdx, 0x3f
jne 0x40e8f3
nop dword [rax]
cmp r8, rdx
je 0x40e8f3
mov rsi, qword [rsp + 0x48]
mov r8, qword [rsp + 0x38]
xor edx, edx
jmp 0x40e94e
lea r8, [r15 + 1]
cmp r8, 0x40
sbb r15, r15
mov rcx, r8
shr r13, cl
and r13, r15
mov qword [r12 + 0x40], r13
mov qword [r12 + 0x30], rdx
movzx edx, word [r12 + 0x60]
inc edx
mov word [r12 + 0x60], dx
mov rdx, qword [r12 + 0x68]
imul rdx, rsi
add rdx, qword [r12 + 0x18]
movzx ecx, byte [rsp + 0x88]
mov rsi, qword [rsp + 0x48]
mov r8, qword [rsp + 0x38]
nop
jmp 0x40e94e
mov rsi, qword [rsp + 0x48]
mov r8, qword [rsp + 0x38]
xor edx, edx
mov qword [rsp + 0x40], r11
test rdx, rdx
je 0x40e95d
xor r10d, r10d
jmp 0x40e9a0
mov rax, r8
mov ebx, r10d
call fcn.0040e280
mov rsi, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x58]
mov r8, qword [rsp + 0x38]
movzx r9d, byte [rsp + 0x26]
mov r11, qword [rsp + 0x40]
mov rdx, rax
mov r12, rbx
mov r10d, ecx
mov rax, qword [rsp + 0x78]
movzx ecx, byte [rsp + 0x88]
mov rbx, qword [rsp + 0x80]
test cl, cl
je 0x40e9fd
cmp byte [r12 + 0x64], 0
je 0x40e9fd
mov qword [rsp + 0x50], rdx
mov byte [rsp + 0x25], r10b
mov qword [rsp + 0x28], r12
mov rax, rdx
mov rbx, r11
call fcn.00467a00
mov rax, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x58]
mov r8, qword [rsp + 0x38]
movzx r9d, byte [rsp + 0x26]
movzx r10d, byte [rsp + 0x25]
mov r11, qword [rsp + 0x40]
mov r12, qword [rsp + 0x28]
mov ecx, r10d
mov r10, r12
mov r12, rdx
mov rdx, rdi
xor edi, edi
jmp 0x40eaba
mov rbx, rax
mov ecx, r9d
mov rax, r8
call fcn.00418680
mov qword [rax + 0x30], 1
mov word [rax + 0x60], 1
mov rbx, qword [rax + 0x68]
mov rdx, qword [rax + 0x18]
movzx esi, byte [rsp + 0x88]
nop dword [rax]
test sil, sil
je 0x40ea84
cmp byte [rax + 0x64], 0
je 0x40ea84
movzx esi, byte [rsp + 0x26]
test sil, sil
jne 0x40ea80
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x50], rdx
mov rax, rdx
call fcn.00467a00
mov rax, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x40]
movzx esi, byte [rsp + 0x26]
mov ecx, esi
jmp 0x40ea8b
movzx ecx, byte [rsp + 0x26]
xor esi, esi
mov r8, qword [rsp + 0x38]
mov r9d, ecx
mov r10, rax
mov edi, esi
mov r11, rbx
mov ecx, 1
mov r12, rdx
mov rax, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x48]
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x40], r11
mov byte [rsp + 0x25], cl
mov byte [rsp + 0x27], dil
mov qword [rsp + 0x28], r10
test r9b, r9b
je 0x40eadc
xor r13d, r13d
jmp 0x40eb35
mov rcx, rax
mov rdi, rbx
mov rax, r12
mov rbx, r11
call fcn.004169a0
mov rdx, qword [rsp + 0x80]
mov rsi, qword [rdx]
mov r8, qword [rsp + 0x78]
nop dword [rax]
cmp r8, rsi
jbe 0x40eb22
mov rax, qword [rdx + 8]
mov rcx, r8
sub r8, rsi
lea rbx, [r8 + rax]
test rax, rax
mov eax, 0
cmovne rax, rbx
nop
jmp 0x40eb29
mov rax, qword [rdx + 8]
mov rcx, r8
mov rbx, qword [rsp + 0x38]
add qword [rbx + 8], rax
mov r13, rax
mov qword [rsp + 0x30], r13
call fcn.00466a60
xorps xmm15, xmm15
mov r14, qword gs:[0x28]
mov r14, qword [r14]
cmp dword [0x00bc1cb0], 0
je 0x40eb75
mov rbx, qword [rsp + 0x50]
mov rax, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x30]
call fcn.004224a0
mov rdx, qword [0x00bc1ee0]
nop dword [rax]
test rdx, rdx
jle 0x40ebc2
cmp rdx, 1
je 0x40eba5
mov rdx, qword [rsp + 0x38]
mov rsi, qword [rdx]
mov rcx, qword [rsp + 0x40]
cmp rcx, rsi
jae 0x40ebaa
sub rsi, rcx
mov qword [rdx], rsi
jmp 0x40ebc7
mov rcx, qword [rsp + 0x40]
mov rax, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x50]
call fcn.0040ef80
mov rcx, qword [rsp + 0x40]
nop
jmp 0x40ebc7
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x48]
mov dword [rdx + 0xc0], 0
nop
mov esi, dword [rdx + 0xd8]
lea edi, [rsi - 1]
mov dword [rdx + 0xd8], edi
cmp esi, 1
jne 0x40ebfd
cmp byte [r14 + 0xb1], 0
je 0x40ebfd
mov qword [r14 + 0x10], 0xfffffffffffffade
movzx edx, byte [rsp + 0x27]
test dl, dl
je 0x40ec2a
movzx edx, byte [rsp + 0x26]
test dl, dl
je 0x40ecd7
mov rax, rcx
mov rbx, qword [rsp + 0x50]
nop dword [rax + rax]
call fcn.0040eda0
mov rcx, qword [rsp + 0x40]
cmp byte [0x00bc2584], 0
je 0x40ec76
cmp dword [0x00bc2588], 0
je 0x40ec56
mov rax, qword [rsp + 0x50]
mov rbx, rcx
mov rcx, qword [rsp + 0x80]
call fcn.00430be0
mov rcx, qword [rsp + 0x40]
cmp byte [0x00bc2340], 0
je 0x40ec76
mov rdx, qword [0x00bc2348]
cmp qword [r14 + 0x98], rdx
jne 0x40ec76
add qword [0x00bc2358], rcx
mov rdx, qword [rsp + 0x58]
nop dword [rax + rax]
test rdx, rdx
je 0x40ec94
mov rsi, qword [rsp + 0x78]
sub rcx, rsi
sub qword [rdx + 0x180], rcx
movzx edx, byte [rsp + 0x25]
test dl, dl
je 0x40ecb7
xor eax, eax
xor ebx, ebx
xor ecx, ecx
call fcn.0041b4a0
test al, al
je 0x40ecb7
xor eax, eax
xor ebx, ebx
xor ecx, ecx
call fcn.0041b600
mov rax, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x68]
add rsp, 0x70
ret
lea rax, [0x00bc2048]
mov rbp, qword [rsp + 0x68]
add rsp, 0x70
ret
lea rax, [0x008e72f6]
mov ebx, 0x31
call fcn.00439600
mov rax, r12
mov ecx, 0x88
call fcn.00467360
mov eax, r10d
mov ecx, 0x44
nop dword [rax]
call fcn.00467360
mov rax, r10
mov ecx, 0xf9
call fcn.00467380
mov rax, r10
mov ecx, 0x81
call fcn.00467380
lea rax, [0x008e81a2]
mov ebx, 0x34
call fcn.00439600
lea rax, [0x008d98d3]
mov ebx, 0x14
nop dword [rax]
call fcn.00439600
lea rax, [0x008d726b]
mov ebx, 0xf
call fcn.00439600
lea rax, [0x008e7a7c]
mov ebx, 0x32
call fcn.00439600
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov byte [rsp + 0x18], cl
call fcn.00464c60
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
movzx ecx, byte [rsp + 0x18]
jmp fcn.0040e4a0