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

Disassembly:
lea r12, [rsp - 0x10]
cmp r12, qword [r14 + 0x10]
jbe 0x4773cd
sub rsp, 0x90
mov qword [rsp + 0x88], rbp
lea rbp, [rsp + 0x88]
test rbx, rbx
je 0x47712b
test rcx, rcx
jg 0x476f55
bsf rdx, rbx
mov r9, rcx
neg rcx
nop
cmp rdx, rcx
jl 0x476f58
cmp rcx, 0x40
sbb rdi, rdi
shr rbx, cl
and rdi, rbx
mov rbx, rdi
mov rcx, rbx
mov esi, 1
xor r8d, r8d
call fcn.00477400
mov rbp, qword [rsp + 0x88]
add rsp, 0x90
ret
mov r9, rcx
mov rcx, qword [rdi]
cmp rcx, 0x40
sbb rdx, rdx
mov r10d, 1
shl r10, cl
and r10, rdx
cmp rbx, r10
jne 0x476f85
mov rdx, qword [rdi + 0x10]
sub rdx, rcx
inc rdx
nop dword [rax]
cmp r9, rdx
jne 0x476fa2
mov rdx, rbx
shl rbx, 1
lea r10, [rdx + rdx]
lea r10, [r10 - 1]
lea r11, [rdx + rdx]
lea r11, [r11 + 1]
dec r9
nop
jmp 0x476fb5
mov rdx, rbx
shl rbx, 2
lea r10, [rbx - 1]
lea r11, [rbx + 2]
add r9, 0xfffffffffffffffe
test r9, r9
je 0x477105
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x50], r10
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x40], r11
mov qword [rsp + 0x58], r9
mov qword [rsp + 0x98], rax
imul rsi, r9, 0xfffffffffffecbbf
sar rsi, 0x12
mov qword [rsp + 0x38], rsi
lea rcx, [rsi + 1]
mov qword [rsp + 0x48], rcx
lea r8, [0x0092cdc0]
cmp rdi, r8
jne 0x477065
mov rax, r10
mov rbx, r9
call fcn.00477900
mov dword [rsp + 0x30], eax
mov byte [rsp + 0x2e], cl
mov rbx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x48]
call fcn.00477900
mov dword [rsp + 0x34], eax
mov byte [rsp + 0x2f], cl
mov rbx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x48]
call fcn.00477900
mov edx, dword [rsp + 0x30]
mov edx, edx
mov esi, dword [rsp + 0x34]
mov esi, esi
mov edi, eax
movzx eax, byte [rsp + 0x2f]
movzx r8d, byte [rsp + 0x2e]
jmp 0x4770c2
mov rax, r10
mov rbx, r9
call fcn.004779e0
mov qword [rsp + 0x68], rax
mov byte [rsp + 0x2e], cl
mov rbx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x48]
call fcn.004779e0
mov qword [rsp + 0x70], rax
mov byte [rsp + 0x2f], cl
mov rbx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x48]
call fcn.004779e0
mov rdx, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
mov rdi, rax
movzx eax, byte [rsp + 0x2f]
movzx r8d, byte [rsp + 0x2e]
test rbx, rbx
jge 0x4773b9
mov r9, qword [rsp + 0x48]
cmp r9, 0x37
jle 0x4770dd
xor ecx, ecx
xor eax, eax
xor r8d, r8d
mov r10, qword [rsp + 0x38]
lea r11, [r10 + 0x19]
cmp r11, 0x18
jae 0x477141
neg r9
mov r11, qword [rsp + 0x50]
test r11, r11
je 0x4772f3
xor r12d, r12d
jmp 0x4772c1
mov rcx, rbx
mov rdi, r11
mov esi, 1
xor r8d, r8d
mov rbx, r10
call fcn.00477400
mov rbp, qword [rsp + 0x88]
add rsp, 0x90
ret
movups xmmword [rax + 0x18], xmm15
mov rbp, qword [rsp + 0x88]
add rsp, 0x90
nop
ret
mov qword [rsp + 0x60], rdi
neg rbx
cmp rbx, 0x40
sbb r9, r9
mov r11d, ecx
mov rcx, rbx
mov r12d, 1
shl r12, cl
and r12, r9
dec r12
mov r13, rdx
shr rdx, cl
and rdx, r9
mov r15, rsi
shr rsi, cl
and rsi, r9
and r15, r12
shr rdi, cl
and rdi, r9
mov r9, qword [rsp + 0x60]
and r9, r12
test r11b, r11b
je 0x4771a2
test r9, r9
seta r10b
test r11b, r11b
mov r11d, r10d
mov r10, qword [rsp + 0x38]
nop
jmp 0x4771a8
mov r11d, 1
je 0x4771c2
test r9, r9
jne 0x4771c2
mov r9, qword [rsp + 0x80]
bt r9d, 0
setae r11b
jmp 0x4771ca
mov r9, qword [rsp + 0x80]
lea r10, [rdi - 1]
movzx r11d, r11b
test r11, r11
cmovne r10, rdi
test al, al
je 0x477217
dec rcx
cmp rcx, 0x40
sbb r11, r11
mov rbx, r10
mov r10d, 1
shl r10, cl
and r10, r11
cmp r10, r15
jae 0x477205
mov rcx, rsi
mov esi, 1
jmp 0x477240
jne 0x477210
mov rcx, rsi
and rsi, 1
jmp 0x477240
mov rcx, rsi
xor esi, esi
jmp 0x477240
dec rcx
cmp rcx, 0x40
sbb r11, r11
mov rbx, r15
shr r15, cl
and r15, r11
cmp r15, 1
sete r11b
mov rcx, rsi
mov r15, rbx
mov esi, r11d
mov rbx, r10
nop
test r8b, r8b
je 0x477255
test r12, r13
jne 0x477255
bt r9d, 0
jb 0x477255
test al, al
jmp 0x47725a
inc rdx
test al, al
je 0x477265
test r15, r15
sete r9b
jmp 0x477268
xor r9d, r9d
mov rax, qword [rsp + 0x98]
mov rdi, rbx
mov r8d, esi
mov rbx, rdx
mov esi, r9d
nop dword [rax]
call fcn.00477400
mov rdx, qword [rsp + 0x98]
mov r9, qword [rdx + 0x20]
mov r10, qword [rsp + 0x38]
sub r9, r10
dec r9
mov qword [rdx + 0x20], r9
mov rbp, qword [rsp + 0x88]
add rsp, 0x90
ret
inc r12
mov eax, r13d
mov r10, qword [rsp + 0x38]
mov r11, rdx
mov rdx, r15
cmp r12, r9
jge 0x4772f3
mov r13d, eax
movabs rax, 0xcccccccccccccccd
mov r15, rdx
mul r11
shr rdx, 2
lea r10, [rdx + rdx*4]
cmp r11, r10
je 0x4772b0
mov eax, r13d
mov rdx, r15
mov r10, qword [rsp + 0x38]
jmp 0x4772f9
mov r8d, 1
mov r11, qword [rsp + 0x78]
nop
test r11, r11
je 0x477350
xor r12d, r12d
jmp 0x477320
inc r12
mov eax, r13d
mov r10, qword [rsp + 0x38]
mov r11, rdx
mov rdx, r15
nop dword [rax + rax]
cmp r12, r9
jge 0x477350
mov r13d, eax
movabs rax, 0xcccccccccccccccd
mov r15, rdx
mul r11
shr rdx, 2
mov rax, r10
lea r10, [rdx + rdx*4]
cmp r11, r10
je 0x47730a
mov rdx, r15
mov r10, rax
jmp 0x477356
mov r13d, 1
mov r11, qword [rsp + 0x40]
nop dword [rax + rax]
test r11, r11
je 0x477369
xor eax, eax
jmp 0x477387
mov eax, 1
mov ecx, eax
mov eax, r13d
jmp 0x477141
inc r12
mov r10, rax
mov rax, r12
mov r11, rdx
mov rdx, r15
cmp rax, r9
jge 0x477369
mov r12, rax
movabs rax, 0xcccccccccccccccd
mov r15, rdx
mul r11
shr rdx, 2
mov rax, r10
lea r10, [rdx + rdx*4]
cmp r11, r10
je 0x477378
mov rdx, r15
mov r10, rax
mov eax, ecx
jmp 0x47736e
lea rax, [0x009e4c00]
lea rbx, [0x00db5910]
call fcn.004373c0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
call fcn.00463440
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
jmp fcn.00476ee0