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

Disassembly:
mov rcx, qword gs:[0x28]
mov rcx, qword [rcx]
lea rax, [rsp - 0x28]
cmp rax, qword [rcx + 0x10]
jbe 0x409d37
sub rsp, 0xa8
mov qword [rsp + 0xa0], rbp
lea rbp, [rsp + 0xa0]
mov rax, qword [rsp + 0xb0]
mov rbx, qword [rax + 0x18]
mov qword [rsp + 0x80], rbx
movzx esi, byte [rbx + 8]
test sil, 4
jne 0x409d1c
mov rsi, qword [rax + 0x10]
mov qword [rsp + 0x60], rsi
mov rdi, qword [rsi + 0x30]
mov r8, qword [rax + 0x50]
mov r9, qword [rax + 0x28]
movzx r10d, byte [rax + 0x4b]
mov rax, qword [rax + 0x58]
mov rdi, qword [rdi + 0x18]
mov qword [rsp + 0x90], rdi
test r9, r9
je 0x40969b
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], r8
mov qword [rsp + 0x88], r9
mov byte [rsp + 0x2f], r10b
cmp r10b, 8
jae 0x40967c
mov r11, qword [rsp + 0xb0]
test byte [r9], al
movzx r11d, byte [r11 + 0x48]
add r11d, r10d
movzx r12d, byte [rsi + 0x50]
mov r13d, r11d
and r11d, 7
mov r14, r11
imul r11, r12
mov qword [rsp + 0x50], r11
lea r15, [r11 + r9 + 8]
mov qword [rsp + 0x78], r15
mov rcx, r8
movzx r8d, byte [rsi + 0x52]
imul r14, r8
lea r8, [r14 + r12*8 + 8]
mov qword [rsp + 0x30], r8
lea r12, [r8 + r9]
mov qword [rsp + 0x58], r12
and r13d, 7
mov qword [rsp + 0x48], r13
cmp r13, 8
jae 0x409d15
movzx r14d, byte [r9 + r13]
test r14b, r14b
je 0x409667
cmp r14b, 1
jne 0x409811
inc r10d
mov r8, rcx
mov byte [rsp + 0x2f], r10b
cmp r10b, 8
jb 0x4095ec
movzx r11d, word [rsi + 0x54]
lea r12, [r11 + r9 - 8]
test byte [r12], al
mov r9, qword [r11 + r9 - 8]
xor r10d, r10d
test r9, r9
jne 0x4095cb
mov rax, qword [rsp + 0xb0]
mov r9, qword [rax + 0x40]
cmp r9, r8
jne 0x4096ba
movzx r9d, byte [rax + 0x49]
test r9b, r9b
jne 0x4097a8
mov r9, qword [rbx + 0x18]
test r9, r9
je 0x40978e
movzx r10d, byte [rax + 0x4a]
movzx r11d, byte [rbx + 9]
cmp r10b, r11b
jne 0x40978e
mov r10, qword [rax + 0x18]
movzx r11d, byte [r10 + 9]
movzx r10d, byte [r10 + 8]
test r10b, 8
je 0x409786
mov ecx, r11d
mov r10, 1
shl r10, cl
cmp cl, 0x40
sbb r11, r11
and r10, r11
dec r10
and r10, r8
movzx r11d, word [rsi + 0x54]
imul r10, r11
lea r12, [r9 + r10]
test byte [r12], al
movzx r9d, byte [r10 + r9]
dec r9d
cmp r9b, 3
jae 0x40977e
imul r11, r8
mov r9, qword [rax + 0x20]
add r9, r11
mov rcx, 0xffffffffffffffff
inc r8
movzx r10d, byte [rax + 0x4a]
mov rdx, rcx
mov ecx, r10d
mov r11, 1
shl r11, cl
cmp cl, 0x40
sbb r10, r10
and r10, r11
cmp r8, r10
jne 0x409779
mov byte [rax + 0x49], 1
xor eax, eax
xor r10d, r10d
mov r8, rax
mov rax, rdx
jmp 0x4095cb
mov rax, r8
jmp 0x40976b
mov rcx, r8
mov r9, r12
jmp 0x40973f
dec r11d
jmp 0x4096f2
movzx r10d, word [rsi + 0x54]
imul r10, r8
mov r11, qword [rax + 0x20]
lea r9, [r10 + r11]
mov rcx, 0xffffffffffffffff
jmp 0x40973f
mov ecx, dword [0x008b4340]
test ecx, ecx
jne 0x4097fd
mov qword [rax], 0
mov rax, qword [rsp + 0xb0]
test byte [rax], al
mov ecx, dword [0x008b4340]
lea rdx, [rax + 8]
test ecx, ecx
jne 0x4097e9
mov qword [rax + 8], 0
mov rbp, qword [rsp + 0xa0]
add rsp, 0xa8
ret
mov qword [rsp], rdx
mov qword [rsp + 8], 0
call fcn.00410240
jmp 0x4097d9
mov qword [rsp], rax
mov qword [rsp + 8], 0
call fcn.00410240
jmp 0x4097b9
cmp rax, 0xffffffffffffffff
je 0x4098d7
movzx r14d, byte [rbx + 8]
test r14b, 8
jne 0x4098d7
movzx r14d, byte [rsi + 0x51]
test r14b, r14b
je 0x409d0d
test byte [r15], al
mov r14, qword [r11 + r9 + 8]
mov qword [rsp + 0x98], r14
mov rdx, r8
movzx r8d, byte [rsi + 0x56]
test r8b, r8b
je 0x409c27
mov r8, qword [rdi]
mov r12d, dword [rbx + 0xc]
mov qword [rsp + 8], r12
mov qword [rsp], r14
mov r12, qword [r8]
mov rdx, r8
call r12
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0x10]
movzx eax, byte [rax + 0x4a]
mov rdx, rcx
mov ecx, eax
mov rbx, 1
shl rbx, cl
cmp al, 0x40
sbb rax, rax
and rax, rbx
dec rax
and rdx, rax
mov rax, qword [rsp + 0x38]
cmp rdx, rax
je 0x4098d7
mov rcx, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x90]
mov r9, qword [rsp + 0x88]
movzx r10d, byte [rsp + 0x2f]
jmp 0x409667
mov rcx, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x88]
movzx ecx, byte [rbx + rcx]
cmp cl, 2
je 0x4098f6
cmp cl, 3
jne 0x409b5f
mov rcx, qword [rsp + 0x60]
movzx esi, byte [rcx + 0x51]
test sil, sil
je 0x409b55
mov rsi, qword [rsp + 0x78]
test byte [rsi], al
mov rsi, qword [rsp + 0x50]
mov rsi, qword [rsi + rbx + 8]
mov qword [rsp + 0x70], rsi
movzx edi, byte [rcx + 0x56]
test dil, dil
je 0x409a71
mov qword [rsp], rcx
mov rdx, qword [rsp + 0x80]
mov qword [rsp + 8], rdx
mov qword [rsp + 0x10], rsi
call fcn.00408310
mov rax, qword [rsp + 0x18]
mov rcx, qword [rsp + 0x20]
mov qword [rsp + 0x68], rcx
test rax, rax
jne 0x40998c
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x90]
mov r9, qword [rsp + 0x88]
movzx r10d, byte [rsp + 0x2f]
jmp 0x409667
mov rdx, qword [rsp + 0xb0]
test byte [rdx], al
mov ebx, dword [0x008b4340]
test ebx, ebx
jne 0x409a59
mov qword [rdx], rax
mov rax, qword [rsp + 0xb0]
test byte [rax], al
mov edx, dword [0x008b4340]
lea rbx, [rax + 8]
test edx, edx
jne 0x409a46
mov qword [rax + 8], rcx
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0x40]
mov qword [rax + 0x50], rcx
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rax + 0x28]
mov rdx, qword [rsp + 0x88]
cmp rcx, rdx
je 0x409a03
mov ecx, dword [0x008b4340]
lea rbx, [rax + 0x28]
test ecx, ecx
jne 0x409a36
mov qword [rax + 0x28], rdx
mov rax, qword [rsp + 0xb0]
movzx ecx, byte [rsp + 0x2f]
inc ecx
mov byte [rax + 0x4b], cl
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0x38]
mov qword [rax + 0x58], rcx
mov rbp, qword [rsp + 0xa0]
add rsp, 0xa8
ret
mov qword [rsp], rbx
mov qword [rsp + 8], rdx
call fcn.00410240
jmp 0x409a03
mov qword [rsp], rbx
mov qword [rsp + 8], rcx
call fcn.00410240
jmp 0x4099c7
mov qword [rsp], rdx
mov qword [rsp + 8], rax
call fcn.00410240
mov rcx, qword [rsp + 0x68]
jmp 0x4099a7
mov rdi, qword [rsp + 0x90]
mov rdx, qword [rdi + 8]
mov qword [rsp], rsi
mov qword [rsp + 8], rsi
mov r8, qword [rdx]
call r8
movzx eax, byte [rsp + 0x10]
test al, al
je 0x409ab1
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x88]
mov rsi, qword [rsp + 0x70]
jmp 0x40992b
mov rax, qword [rsp + 0xb0]
test byte [rax], al
mov ecx, dword [0x008b4340]
test ecx, ecx
jne 0x409b3d
mov rcx, qword [rsp + 0x70]
mov qword [rax], rcx
mov rax, qword [rsp + 0x60]
movzx eax, byte [rax + 0x53]
test al, al
je 0x409b2e
mov rax, qword [rsp + 0x58]
test byte [rax], al
mov rax, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x30]
mov rcx, qword [rcx + rax]
mov rdx, qword [rsp + 0xb0]
test byte [rdx], al
mov ebx, dword [0x008b4340]
lea rsi, [rdx + 8]
test ebx, ebx
jne 0x409b13
mov qword [rdx + 8], rcx
jmp 0x4099c7
mov qword [rsp], rsi
mov qword [rsp + 8], rcx
call fcn.00410240
mov rax, qword [rsp + 0x88]
jmp 0x4099c7
mov rax, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x58]
jmp 0x409af2
mov qword [rsp], rax
mov rax, qword [rsp + 0x70]
mov qword [rsp + 8], rax
call fcn.00410240
jmp 0x409acd
mov rsi, qword [rsp + 0x78]
jmp 0x409919
mov rcx, qword [rsp + 0x60]
movzx edx, byte [rcx + 0x51]
test dl, dl
je 0x409c1d
mov rdx, qword [rsp + 0x78]
test byte [rdx], al
mov rdx, qword [rsp + 0x50]
mov rdx, qword [rdx + rbx + 8]
mov rsi, qword [rsp + 0xb0]
test byte [rsi], al
mov edi, dword [0x008b4340]
test edi, edi
jne 0x409bf8
mov qword [rsi], rdx
movzx ecx, byte [rcx + 0x53]
test cl, cl
je 0x409bf1
mov rcx, qword [rsp + 0x58]
test byte [rcx], al
mov rcx, qword [rsp + 0x30]
mov rcx, qword [rcx + rbx]
mov rdx, qword [rsp + 0xb0]
test byte [rdx], al
mov esi, dword [0x008b4340]
lea rdi, [rdx + 8]
test esi, esi
jne 0x409bd1
mov qword [rdx + 8], rcx
jmp 0x4099c7
mov qword [rsp], rdi
mov qword [rsp + 8], rcx
call fcn.00410240
mov rax, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x88]
jmp 0x4099c7
mov rcx, qword [rsp + 0x58]
jmp 0x409bb0
mov qword [rsp], rsi
mov qword [rsp + 8], rdx
call fcn.00410240
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x88]
jmp 0x409b98
mov rdx, qword [rsp + 0x78]
jmp 0x409b81
mov r8, qword [rdi + 8]
mov qword [rsp], r14
mov qword [rsp + 8], r14
mov r12, qword [r8]
mov rdx, r8
call r12
movzx eax, byte [rsp + 0x10]
test al, al
jne 0x409cba
mov rax, qword [rsp + 0xb0]
mov rbx, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x88]
movzx edi, byte [rsi + rbx]
movzx eax, byte [rax + 0x4a]
lea ecx, [rax - 1]
mov rax, qword [rsp + 0x38]
mov r8, rax
shr rax, cl
cmp cl, 0x40
sbb r9, r9
and r9, rax
and edi, 1
cmp r9, rdi
je 0x409cb2
mov rax, r8
mov rcx, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x90]
mov r9, qword [rsp + 0x88]
movzx r10d, byte [rsp + 0x2f]
jmp 0x409667
mov rax, r8
jmp 0x4098d7
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x90]
mov r9, qword [rsp + 0x88]
movzx r10d, byte [rsp + 0x2f]
mov r11, qword [rsp + 0x50]
mov r12, qword [rsp + 0x58]
mov r13, qword [rsp + 0x48]
mov r14, qword [rsp + 0x98]
mov r15, qword [rsp + 0x78]
jmp 0x409859
mov r14, r15
jmp 0x409840
call fcn.004293e0
ud2
lea rax, [0x006da56b]
mov qword [rsp], rax
mov qword [rsp + 8], 0x26
call fcn.0042aea0
ud2
call fcn.00452210
jmp fcn.00409540