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

Disassembly:
lea r12, [rsp - 0x10]
cmp r12, qword [r14 + 0x10]
jbe 0x478179
push rbp
mov rbp, rsp
sub rsp, 0x88
mov qword [rsp + 0x98], rax
lea rdx, [rsi - 2]
cmp rdx, 0x22
ja 0x478165
movups xmmword [rsp + 0x2f], xmm15
movups xmmword [rsp + 0x30], xmm15
movups xmmword [rsp + 0x40], xmm15
movups xmmword [rsp + 0x50], xmm15
movups xmmword [rsp + 0x60], xmm15
test r8b, r8b
je 0x477d36
neg rdi
cmp rsi, 0xa
jne 0x477d46
mov edx, 0x41
jmp 0x477fe0
lea rdx, [rsi - 1]
test rsi, rdx
jne 0x477d66
lea rdx, [rsi - 1]
bsf r10, rsi
and r10d, 7
mov r11d, 0x41
jmp 0x477f63
mov edx, 0x41
jmp 0x477d80
mov byte [rsp + r11 + 0x2e], r12b
mov rdi, rdx
mov rdx, rax
mov rax, r10
nop dword [rax + rax]
cmp rsi, rdi
ja 0x477dcb
mov r10, rax
mov rax, rdi
mov r11, rdx
xor edx, edx
div rsi
mov rdx, rax
imul rax, rsi
sub rdi, rax
nop dword [rax]
cmp rdi, 0x24
jae 0x477f3f
lea rax, [r11 - 1]
lea r12, [0x004e7e47]
movzx r12d, byte [rdi + r12]
nop word [rax + rax]
cmp rax, 0x41
jb 0x477d6d
jmp 0x477f35
lea r10, [rdx - 1]
lea r11, [0x004e7e47]
movzx r11d, byte [rdi + r11]
nop dword [rax + rax]
cmp r10, 0x41
jae 0x477f28
mov byte [rsp + rdx + 0x2e], r11b
test r8b, r8b
je 0x477e12
lea rdx, [r10 - 1]
nop dword [rax + rax]
cmp rdx, 0x41
jae 0x477f1b
mov byte [rsp + r10 + 0x2e], 0x2d
jmp 0x477e15
mov rdx, r10
test r9b, r9b
je 0x477ec5
nop
cmp rdx, 0x41
ja 0x477f0e
mov r8, rbx
sub r8, rdx
add r8, 0x41
lea rdi, [rdx - 0x41]
mov r9, rdi
sar r9, 0x3f
and rdx, r9
neg rdi
cmp rcx, r8
jae 0x477e80
mov qword [rsp + 0xa0], rbx
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x70], rdx
mov rbx, r8
lea rsi, [0x004c3680]
call fcn.0044bb60
mov rdx, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x78]
mov r8, rbx
mov rbx, qword [rsp + 0xa0]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x78], r8
mov qword [rsp + 0x70], rcx
lea rsi, [rax + rbx]
lea rbx, [rsp + rdx + 0x2f]
mov rax, rsi
mov rcx, rdi
call fcn.00467180
mov rax, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x70]
xor edi, edi
xor esi, esi
add rsp, 0x88
pop rbp
ret
cmp rdx, 0x41
ja 0x477f01
lea rcx, [rdx - 0x41]
mov rsi, rcx
neg rsi
sar rcx, 0x3f
and rdx, rcx
lea rbx, [rsp + rdx + 0x2f]
xor eax, eax
mov rcx, rsi
call fcn.0044fbc0
xor ecx, ecx
mov rdi, rax
mov rsi, rbx
xor eax, eax
mov rbx, rcx
add rsp, 0x88
pop rbp
ret
mov rax, rdx
mov ecx, 0x41
call fcn.004668c0
mov rax, rdx
mov ecx, 0x41
call fcn.004668c0
mov rax, rdx
mov ecx, 0x41
call fcn.00466800
mov rax, r10
mov ecx, 0x41
call fcn.00466800
mov ecx, 0x41
call fcn.00466800
mov rax, rdi
mov ecx, 0x24
call fcn.00466820
mov byte [rsp + r11 + 0x2e], r15b
mov rdi, rcx
mov rcx, r10
shr r13, cl
mov rcx, rdi
mov rdi, r13
mov r11, r12
cmp rsi, rdi
ja 0x477f88
lea r12, [r11 - 1]
mov r13, rdi
and rdi, rdx
lea r15, [0x004e7e47]
movzx r15d, byte [rdi + r15]
nop
cmp r12, 0x41
jb 0x477f4c
jmp 0x477fbb
lea rdx, [r11 - 1]
lea r10, [0x004e7e47]
movzx r10d, byte [rdi + r10]
cmp rdx, 0x41
jae 0x477fae
mov byte [rsp + r11 + 0x2e], r10b
test r8b, r8b
mov r10, rdx
jmp 0x477df2
mov rax, rdx
mov ecx, 0x41
call fcn.00466800
mov rax, r12
mov ecx, 0x41
call fcn.00466800
movzx r10d, byte [r10]
mov byte [rsp + r11 + 0x2d], r10b
mov rdi, rdx
mov rdx, rax
mov rax, rsi
nop word [rax + rax]
cmp rdi, 0x64
jb 0x478085
mov r10, rdi
shr rdi, 1
mov rsi, rax
movabs rax, 0xa3d70a3d70a3d70b
mov r11, rdx
mul rdi
shr rdx, 5
imul r12, rdx, 0x64
sub r10, r12
lea rax, [r10 + r10]
lea rax, [rax + 1]
nop word [rax + rax]
nop
cmp rax, 0xc8
jae 0x478159
lea rax, [r11 - 1]
lea r12, [0x004eb1bf]
lea r13, [r12 + r10*2]
lea r13, [r13 + 1]
nop
cmp rax, 0x41
jae 0x47814f
mov rax, r10
shl rax, 1
movzx r13d, byte [r13]
mov byte [rsp + r11 + 0x2e], r13b
nop word [rax + rax]
cmp rax, 0xc8
jae 0x478145
lea rax, [r11 - 2]
lea r10, [r12 + r10*2]
cmp rax, 0x41
jb 0x477fc8
nop
jmp 0x478139
lea r10, [rdi + rdi]
lea r10, [r10 + 1]
cmp r10, 0xc8
jae 0x47812c
lea r10, [rdx - 1]
lea r11, [0x004eb1bf]
lea r12, [r11 + rdi*2]
lea r12, [r12 + 1]
cmp r10, 0x41
jae 0x47811f
movzx r12d, byte [r12]
mov byte [rsp + rdx + 0x2e], r12b
nop
cmp rdi, 0xa
jb 0x4780f4
mov r10, rdi
shl rdi, 1
cmp rdi, 0xc8
jae 0x478112
lea r12, [rdx - 2]
lea r10, [r11 + r10*2]
nop dword [rax]
cmp r12, 0x41
jae 0x478105
movzx r11d, byte [r10]
mov byte [rsp + rdx + 0x2d], r11b
test r8b, r8b
jmp 0x4780fa
test r8b, r8b
mov r12, r10
mov r10, r12
nop dword [rax]
jmp 0x477df2
mov rax, r12
mov ecx, 0x41
call fcn.00466800
mov rax, rdi
mov ecx, 0xc8
call fcn.00466820
mov rax, r10
mov ecx, 0x41
call fcn.00466800
mov rax, r10
mov ecx, 0xc8
call fcn.00466820
mov ecx, 0x41
nop
call fcn.00466800
mov ecx, 0xc8
call fcn.00466820
mov ecx, 0x41
call fcn.00466800
mov ecx, 0xc8
nop
call fcn.00466820
lea rax, [0x004c3600]
lea rbx, [0x00509938]
call fcn.00436480
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 byte [rsp + 0x30], r8b
mov byte [rsp + 0x31], r9b
nop dword [rax]
call fcn.00464520
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]
movzx r8d, byte [rsp + 0x30]
movzx r9d, byte [rsp + 0x31]
jmp fcn.00477ce0