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

Disassembly:
mov rcx, qword gs:[0x28]
mov rcx, qword [rcx]
lea rax, [rsp - 0x18]
cmp rax, qword [rcx + 0x10]
jbe 0x408c32
sub rsp, 0x98
mov qword [rsp + 0x90], rbp
lea rbp, [rsp + 0x90]
mov rax, qword [rsp + 0xa8]
test rax, rax
je 0x408be0
movzx ecx, byte [rax + 8]
test cl, 4
jne 0x408bc5
or ecx, 4
mov byte [rax + 8], cl
mov rcx, qword [rsp + 0xa0]
mov rcx, qword [rcx + 0x30]
mov rcx, qword [rcx + 0x18]
mov qword [rsp + 0x78], rcx
mov ebx, dword [rax + 0xc]
mov rdx, qword [rcx]
mov qword [rsp + 8], rbx
mov rbx, qword [rsp + 0xb0]
mov qword [rsp], rbx
mov rsi, qword [rdx]
call rsi
mov rax, qword [rsp + 0x10]
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0xa8]
mov rbx, qword [rcx + 0x10]
test rbx, rbx
je 0x408b63
movzx ebx, byte [rcx + 9]
mov rdx, rcx
mov ecx, ebx
mov rsi, 1
shl rsi, cl
cmp cl, 0x40
sbb rbx, rbx
and rbx, rsi
dec rbx
and rbx, rax
mov qword [rsp + 0x38], rbx
mov rsi, qword [rdx + 0x18]
test rsi, rsi
jne 0x408b31
mov rsi, qword [rsp + 0xa0]
movzx esi, word [rsi + 0x54]
mov rdi, qword [rdx + 0x10]
imul rsi, rbx
lea rbx, [rdi + rsi]
mov rsi, rax
shr rax, 0x38
cmp al, 4
jae 0x408674
add eax, 4
mov byte [rsp + 0x27], al
xor ecx, ecx
xor edi, edi
xor r8d, r8d
mov qword [rsp + 0x70], rbx
xor r9d, r9d
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x68], rcx
mov qword [rsp + 0x60], rdi
mov qword [rsp + 0x40], r8
cmp r9, 8
jae 0x40884b
test byte [rbx], al
movzx r10d, byte [rbx + r9]
lea r11, [rbx + r9]
cmp r10b, al
je 0x4086f4
test r10b, r10b
jne 0x4086bf
test rcx, rcx
je 0x4086c4
inc r9
jmp 0x408687
mov r10, qword [rsp + 0xa0]
movzx r12d, byte [r10 + 0x50]
mov r13, r12
imul r12, r9
lea rdi, [r12 + rbx + 8]
movzx r10d, byte [r10 + 0x52]
imul r10, r9
lea r10, [r10 + r13*8 + 8]
lea r8, [r10 + rbx]
mov rcx, r11
jmp 0x4086bf
mov r10, qword [rsp + 0xa0]
movzx r11d, byte [r10 + 0x50]
imul r11, r9
lea r12, [r11 + rbx + 8]
movzx r10d, byte [r10 + 0x51]
test r10b, r10b
je 0x408843
test byte [r12], al
mov r10, qword [r11 + rbx + 8]
mov qword [rsp + 0x58], r10
mov r11, qword [rsp + 0x78]
mov r12, qword [r11 + 8]
mov r13, qword [rsp + 0xb0]
mov qword [rsp], r13
mov qword [rsp + 8], r10
mov r14, qword [r12]
mov rdx, r12
call r14
movzx eax, byte [rsp + 0x10]
test al, al
jne 0x408783
movzx eax, byte [rsp + 0x27]
mov rdx, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x30]
mov r9, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x68]
mov rdi, qword [rsp + 0x60]
mov r8, qword [rsp + 0x40]
jmp 0x4086bf
mov rax, qword [rsp + 0xa0]
movzx ecx, byte [rax + 0x57]
test cl, cl
jne 0x40881a
mov rax, qword [rsp + 0xa0]
movzx ecx, byte [rax + 0x52]
movzx eax, byte [rax + 0x50]
mov rdx, qword [rsp + 0x28]
imul rcx, rdx
lea rax, [rcx + rax*8 + 8]
mov rcx, qword [rsp + 0x70]
add rax, rcx
mov rcx, qword [rsp + 0xa8]
movzx edx, byte [rcx + 8]
test dl, 4
je 0x4087ff
and edx, 0xfffffffb
mov byte [rcx + 8], dl
mov rcx, qword [rsp + 0xa0]
movzx ecx, byte [rcx + 0x53]
test cl, cl
je 0x4087e7
mov rax, qword [rax]
mov qword [rsp + 0xb8], rax
mov rbp, qword [rsp + 0x90]
add rsp, 0x98
ret
lea rax, [0x006d48d7]
mov qword [rsp], rax
mov qword [rsp + 8], 0x15
call fcn.0042aea0
ud2
mov rax, qword [rax + 0x30]
mov qword [rsp], rax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 8], rax
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0x10], rax
call fcn.004103b0
jmp 0x408797
mov r10, r12
jmp 0x408721
mov r9, qword [rsp + 0xa0]
movzx r10d, word [r9 + 0x54]
lea r11, [r10 + rbx - 8]
test byte [r11], al
mov r10, qword [r10 + rbx - 8]
test r10, r10
je 0x408872
mov rbx, r10
jmp 0x40867f
mov r10, qword [rdx + 0x18]
test r10, r10
jne 0x408b29
mov r10, qword [rdx]
movzx r11d, byte [rdx + 9]
cmp r10, 8
jl 0x408b19
mov r12, rcx
mov ecx, r11d
mov r13, 1
shl r13, cl
cmp cl, 0x40
sbb r14, r14
mov r15, r14
and r14, r13
test r15, r13
jl 0x408afb
xorps xmm0, xmm0
cvtsi2ss xmm0, r14
movss xmm1, dword [0x006efe30]
mulss xmm1, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, r10
ucomiss xmm0, xmm1
setae r10b
test r10b, r10b
je 0x4088fe
mov qword [rsp], r9
mov qword [rsp + 8], rdx
call fcn.00409d50
mov rax, qword [rsp + 0x30]
mov rcx, qword [rsp + 0xa8]
jmp 0x40861a
movzx r10d, word [rdx + 0xa]
cmp cl, 0x10
jae 0x408aec
mov r13d, 1
shl r13d, cl
cmp cl, 0x20
sbb r11d, r11d
and r13d, r11d
cmp r10w, r13w
setae r10b
test r10b, r10b
je 0x40892d
jmp 0x4088de
test r12, r12
je 0x408a77
mov qword [rsp + 0x60], rdi
mov qword [rsp + 0x68], r12
mov qword [rsp + 0x40], r8
mov rcx, qword [rsp + 0xa0]
movzx ebx, byte [rcx + 0x51]
test bl, bl
jne 0x408a18
mov qword [rsp + 0x60], rdi
mov rcx, qword [rsp + 0xa0]
movzx ebx, byte [rcx + 0x53]
test bl, bl
jne 0x4089bc
mov rcx, qword [rsp + 0xa0]
mov rcx, qword [rcx + 0x30]
mov qword [rsp], rcx
mov qword [rsp + 8], rdi
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0x10], rcx
call fcn.004103b0
movzx eax, byte [rsp + 0x27]
mov rcx, qword [rsp + 0x68]
mov byte [rcx], al
mov rax, qword [rsp + 0xa8]
mov rcx, qword [rax]
inc rcx
mov qword [rax], rcx
mov rax, qword [rsp + 0x40]
jmp 0x4087bd
mov rcx, qword [rcx + 0x38]
mov qword [rsp], rcx
call fcn.0040f840
mov rax, qword [rsp + 0x40]
test byte [rax], al
mov rcx, qword [rsp + 8]
mov edx, dword [0x008b4340]
test edx, edx
jne 0x408a03
mov qword [rax], rcx
movzx eax, byte [rsp + 0x27]
mov rdx, qword [rsp + 0xa8]
mov rdi, qword [rsp + 0x60]
mov r8, qword [rsp + 0x40]
mov r12, qword [rsp + 0x68]
jmp 0x40896e
mov qword [rsp], rax
mov qword [rsp + 8], rcx
call fcn.00410240
mov rax, qword [rsp + 0x40]
jmp 0x4089e2
mov rcx, qword [rcx + 0x30]
mov qword [rsp], rcx
call fcn.0040f840
mov rax, qword [rsp + 0x60]
test byte [rax], al
mov rcx, qword [rsp + 8]
mov qword [rsp + 0x50], rcx
mov edx, dword [0x008b4340]
test edx, edx
jne 0x408a62
mov qword [rax], rcx
movzx eax, byte [rsp + 0x27]
mov rdx, qword [rsp + 0xa8]
mov r8, qword [rsp + 0x40]
mov r12, qword [rsp + 0x68]
mov rdi, rcx
jmp 0x408959
mov qword [rsp], rax
mov qword [rsp + 8], rcx
call fcn.00410240
mov rcx, qword [rsp + 0x50]
jmp 0x408a43
mov rcx, qword [r9 + 0x40]
mov qword [rsp], rcx
call fcn.0040f840
mov rax, qword [rsp + 8]
mov qword [rsp + 0x48], rax
mov rcx, qword [rsp + 0xa8]
mov qword [rsp], rcx
mov rdx, qword [rsp + 0xa0]
mov qword [rsp + 8], rdx
mov rdx, qword [rsp + 0x70]
mov qword [rsp + 0x10], rdx
mov qword [rsp + 0x18], rax
call fcn.004076c0
mov r12, qword [rsp + 0x48]
test byte [r12], al
mov rax, qword [rsp + 0xa0]
lea rdi, [r12 + 8]
movzx eax, byte [rax + 0x50]
lea r8, [r12 + rax*8 + 8]
movzx eax, byte [rsp + 0x27]
mov rdx, qword [rsp + 0xa8]
jmp 0x408936
cmp r10w, 0x8000
setae r10b
jmp 0x408926
mov r13, r14
shr r14, 1
and r13, 1
or r14, r13
xorps xmm0, xmm0
cvtsi2ss xmm0, r14
addss xmm0, xmm0
jmp 0x4088be
mov ecx, r11d
mov r12, qword [rsp + 0x68]
xor r10d, r10d
jmp 0x4088d9
mov r12, rcx
jmp 0x40892d
mov rcx, qword [rsp + 0xa0]
mov qword [rsp], rcx
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rbx
call fcn.00409f90
mov rax, qword [rsp + 0x30]
mov rdx, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0x38]
jmp 0x40864e
mov rdx, qword [rsp + 0xa0]
mov rdx, qword [rdx + 0x40]
mov qword [rsp], rdx
mov qword [rsp + 8], 1
call fcn.0040f8f0
mov rax, qword [rsp + 0x10]
mov ecx, dword [0x008b4340]
mov rdx, qword [rsp + 0xa8]
lea rbx, [rdx + 0x10]
test ecx, ecx
jne 0x408bad
mov qword [rdx + 0x10], rax
mov rax, qword [rsp + 0x30]
mov rcx, rdx
jmp 0x40861a
mov qword [rsp], rbx
mov qword [rsp + 8], rax
call fcn.00410240
mov rdx, qword [rsp + 0xa8]
jmp 0x408ba0
lea rax, [0x006d48d7]
mov qword [rsp], rax
mov qword [rsp + 8], 0x15
call fcn.0042aea0
ud2
lea rax, [0x006d804f]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], 0x1e
lea rax, [0x00684a60]
mov qword [rsp], rax
lea rax, [rsp + 0x80]
mov qword [rsp + 8], rax
call fcn.0040ccd0
mov rax, qword [rsp + 0x18]
mov rcx, qword [rsp + 0x10]
mov qword [rsp], rcx
mov qword [rsp + 8], rax
call fcn.0042a540
ud2
call fcn.00452210
jmp fcn.00408570