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

Disassembly:
lea r12, [rsp - 0x18]
cmp r12, qword [r14 + 0x10]
jbe 0x47852d
sub rsp, 0x98
mov qword [rsp + 0x90], rbp
lea rbp, [rsp + 0x90]
mov qword [rsp + 0xa0], rax
lea rdx, [rsi - 2]
cmp rdx, 0x22
ja 0x478519
mov qword [rsp + 0x47], 0
lea rdx, [rsp + 0x48]
movups xmmword [rdx], xmm15
lea rdx, [rsp + 0x58]
movups xmmword [rdx], xmm15
lea rdx, [rsp + 0x68]
movups xmmword [rdx], xmm15
lea rdx, [rsp + 0x78]
movups xmmword [rdx], xmm15
test r8b, r8b
je 0x4780b1
neg rdi
cmp rsi, 0xa
jne 0x4780c5
mov edx, 0x41
nop dword [rax]
jmp 0x478380
lea rdx, [rsi - 1]
test rsi, rdx
jne 0x4780e5
bsf rdx, rsi
and rdx, 7
lea r10, [rsi - 1]
mov r11d, 0x41
jmp 0x4782f4
mov edx, 0x41
jmp 0x4780fa
mov byte [rsp + r11 + 0x46], r12b
mov rdi, rdx
mov rdx, rax
mov rax, r10
cmp rsi, rdi
ja 0x47814b
mov r10, rax
mov rax, rdi
mov r11, rdx
xor edx, edx
div rsi
mov rdx, rax
imul rax, rsi
sub rdi, rax
nop word [rax + rax]
cmp rdi, 0x24
jae 0x4782d0
lea rax, [r11 - 1]
lea r12, [0x00ad379d]
movzx r12d, byte [rdi + r12]
nop word [rax + rax]
cmp rax, 0x41
jb 0x4780ec
jmp 0x4782c6
lea r10, [rdx - 1]
lea r11, [0x00ad379d]
movzx r11d, byte [rdi + r11]
nop dword [rax + rax]
cmp r10, 0x41
jae 0x4782b9
mov byte [rsp + rdx + 0x46], r11b
test r8b, r8b
je 0x478192
lea rdx, [r10 - 1]
nop dword [rax + rax]
cmp rdx, 0x41
jae 0x4782ac
mov byte [rsp + r10 + 0x46], 0x2d
jmp 0x478195
mov rdx, r10
test r9b, r9b
je 0x47824f
nop
cmp rdx, 0x41
ja 0x47829f
mov r8, rbx
sub rbx, rdx
lea rsi, [rbx + 0x41]
mov qword [rsp + 0x38], rsi
lea r9, [rdx - 0x41]
mov r10, r9
sar r9, 0x3f
and rdx, r9
lea rbx, [rsp + rdx + 0x47]
cmp rcx, rsi
jae 0x47820a
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x28], r8
mov qword [rsp + 0x88], rbx
mov rbx, rax
mov rdi, rcx
lea rax, [0x009e4e00]
mov rcx, r8
call fcn.0044b060
mov rbx, qword [rsp + 0x88]
mov r8, qword [rsp + 0x28]
mov r10, qword [rsp + 0x30]
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x88], rax
lea rdx, [rax + r8]
neg r10
mov rax, rdx
mov rcx, r10
call fcn.004664e0
mov rax, qword [rsp + 0x88]
mov rbx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
xor edi, edi
xor esi, esi
mov rbp, qword [rsp + 0x90]
add rsp, 0x98
ret
cmp rdx, 0x41
ja 0x478292
lea rcx, [rdx - 0x41]
mov rsi, rcx
sar rcx, 0x3f
and rdx, rcx
lea rbx, [rsp + rdx + 0x47]
neg rsi
xor eax, eax
mov rcx, rsi
call fcn.0044ee60
xor ecx, ecx
mov rdi, rax
mov rsi, rbx
xor eax, eax
mov rbx, rcx
mov rbp, qword [rsp + 0x90]
add rsp, 0x98
ret
mov rax, rdx
mov ecx, 0x41
call fcn.00465c20
mov rax, rdx
mov ecx, 0x41
call fcn.00465c20
mov rax, rdx
mov ecx, 0x41
call fcn.00465b60
mov rax, r10
mov ecx, 0x41
call fcn.00465b60
mov ecx, 0x41
call fcn.00465b60
mov rax, rdi
mov ecx, 0x24
call fcn.00465b80
mov byte [rsp + r11 + 0x46], r15b
mov rdi, rcx
mov rcx, rdx
shr r12, cl
mov rcx, rdi
mov rdi, r12
mov r11, r13
cmp rsi, rdi
ja 0x47831e
mov r12, rdi
and rdi, r10
nop
cmp rdi, 0x24
jae 0x47835f
lea r13, [r11 - 1]
lea r15, [0x00ad379d]
movzx r15d, byte [rdi + r15]
cmp r13, 0x41
jb 0x4782dd
jmp 0x478352
lea rdx, [r11 - 1]
lea r10, [0x00ad379d]
movzx r10d, byte [rdi + r10]
cmp rdx, 0x41
jae 0x478345
mov byte [rsp + r11 + 0x46], r10b
test r8b, r8b
mov r10, rdx
nop
jmp 0x478172
mov rax, rdx
mov ecx, 0x41
call fcn.00465b60
mov rax, r13
mov ecx, 0x41
call fcn.00465b60
mov rax, rdi
mov ecx, 0x24
call fcn.00465b80
mov byte [rsp + r11 + 0x45], r10b
mov rdi, rdx
mov rdx, rax
mov rax, rsi
nop word [rax + rax]
cmp rdi, 0x64
jb 0x47842f
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 0x47850f
lea rax, [r11 - 1]
lea r12, [0x00ae1f95]
lea r13, [r12 + r10*2]
lea r13, [r13 + 1]
movzx r13d, byte [r13]
cmp rax, 0x41
jae 0x478505
mov byte [rsp + r11 + 0x46], r13b
mov rax, r10
shl rax, 1
nop dword [rax]
cmp rax, 0xc8
jae 0x4784f6
lea rax, [r11 - 2]
lea r10, [r12 + r10*2]
movzx r10d, byte [r10]
nop dword [rax + rax]
cmp rax, 0x41
jb 0x47836c
jmp 0x4784ec
lea r10, [rdi + rdi]
lea r10, [r10 + 1]
nop word [rax + rax]
cmp r10, 0xc8
jae 0x4784df
lea r10, [rdx - 1]
lea r11, [0x00ae1f95]
lea r12, [r11 + rdi*2]
lea r12, [r12 + 1]
movzx r12d, byte [r12]
cmp r10, 0x41
jae 0x4784d2
mov byte [rsp + rdx + 0x46], r12b
cmp rdi, 0xa
jb 0x4784a5
mov r10, rdi
shl rdi, 1
nop dword [rax]
cmp rdi, 0xc8
jae 0x4784c5
lea r12, [rdx - 2]
lea r10, [r11 + r10*2]
movzx r10d, byte [r10]
cmp r12, 0x41
jae 0x4784b3
mov byte [rsp + rdx + 0x45], r10b
test r8b, r8b
jmp 0x4784ab
test r8b, r8b
mov r12, r10
mov r10, r12
jmp 0x478172
mov rax, r12
mov ecx, 0x41
nop dword [rax + rax]
call fcn.00465b60
mov rax, rdi
mov ecx, 0xc8
call fcn.00465b80
mov rax, r10
mov ecx, 0x41
call fcn.00465b60
mov rax, r10
mov ecx, 0xc8
call fcn.00465b80
mov ecx, 0x41
call fcn.00465b60
mov ecx, 0xc8
nop dword [rax + rax]
call fcn.00465b80
mov ecx, 0x41
call fcn.00465b60
mov ecx, 0xc8
call fcn.00465b80
lea rax, [0x009e4c00]
lea rbx, [0x00db5940]
call fcn.004373c0
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
call fcn.00463440
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.00478040