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

Disassembly:
lea r12, [rsp - 0xe0]
cmp r12, qword [r14 + 0x10]
jbe 0x416b06
sub rsp, 0x160
mov qword [rsp + 0x158], rbp
lea rbp, [rsp + 0x158]
cmp rbx, 8
je 0x416185
mov qword [rsp + 0x170], rbx
mov qword [rsp + 0x178], rcx
mov qword [rsp + 0x180], rdi
mov qword [rsp + 0x168], rax
call fcn.00414c00
mov rdx, qword [rsp + 0x180]
mov rsi, qword [rdx + 0x20]
mov r8, qword [rsp + 0x170]
cmp r8, 0x10
je 0x4160f3
nop word [rax + rax]
nop
cmp r8, 0x18
je 0x41601d
mov qword [rsp + 0x100], rsi
mov qword [rsp + 0x150], rdi
mov dword [rsp + 0x54], ecx
mov dword [rsp + 0x50], ebx
mov qword [rsp + 0x148], rax
mov rcx, qword [rsp + 0x168]
lea rax, [r8 + rcx]
lea rax, [rax - 1]
call fcn.00426aa0
mov ecx, dword [rsp + 0x54]
mov edx, ecx
cmp rax, rdx
je 0x415eb9
mov rsi, qword [rsp + 0x168]
mov r8, rsi
xor ebx, ebx
jmp 0x415ed1
mov r8, qword [rsp + 0x168]
mov rsi, qword [rsp + 0x148]
mov rbx, qword [rsp + 0x150]
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0xe8], rdx
mov qword [rsp + 0x128], rsi
mov rdi, qword [rsp + 0x180]
movzx r9d, byte [rdi + 0x17]
nop word [rax + rax]
nop
test r9b, 0x40
jne 0x415fad
mov r9, qword [rsp + 0x178]
cmp qword [rdi], r9
jae 0x415f95
mov r10, qword [rdi + 8]
shr r10, 3
nop
cmp r10, 0x39
ja 0x415f45
mov qword [rsp + 0xe0], r10
xor ecx, ecx
mov rbx, qword [rsp + 0x100]
xor r11d, r11d
nop dword [rax + rax]
jmp 0x416a60
lea rcx, [r10 + 7]
shr rcx, 3
lea rbx, [rcx - 1]
mov qword [rsp + 0x80], rbx
mov rax, qword [rsp + 0x100]
call fcn.004147a0
mov rcx, qword [rsp + 0x180]
mov rdx, qword [rcx]
shr rdx, 3
mov rsi, qword [rsp + 0x80]
shl rsi, 3
sub rdx, rsi
mov rbx, qword [rsp + 0x100]
xor esi, esi
xor edi, edi
jmp 0x41698b
mov rcx, qword [rsp + 0x100]
xor ebx, ebx
xor r10d, r10d
xor r11d, r11d
xor r12d, r12d
jmp 0x4163aa
mov qword [rsp + 0x118], rbx
mov rax, qword [rdi + 0x20]
mov ebx, 4
nop
call fcn.004147a0
mov rcx, qword [rsp + 0x180]
mov rsi, qword [rcx + 8]
mov r8, qword [rcx]
mov ebx, dword [rsp + 0x50]
mov ecx, dword [rsp + 0x54]
mov rdi, qword [rsp + 0x118]
mov r9, qword [rsp + 0x178]
mov r10, qword [rsp + 0x170]
mov r11, rax
mov rax, qword [rsp + 0x128]
nop
call fcn.00416b40
mov rcx, qword [rsp + 0xf0]
mov rdx, qword [rsp + 0xe8]
cmp rcx, rdx
jmp 0x416195
movzx esi, byte [rsi]
cmp qword [rdx], 8
jne 0x41602b
mov esi, 7
and esi, 7
mov edx, esi
shl esi, 4
or esi, edx
mov edx, esi
or esi, 0x10
and esi, 0x40
shr sil, 1
or esi, edx
mov edx, esi
or esi, 0x10
cmp ebx, 1
ja 0x416074
test ebx, ebx
jne 0x416065
movzx ecx, byte [rax]
and ecx, 0xffffff88
or ecx, edx
or ecx, 0x10
mov byte [rax], cl
nop dword [rax]
jmp 0x4160e3
movzx ecx, byte [rax]
and ecx, 0x11
shl esi, 1
or esi, ecx
mov byte [rax], sil
jmp 0x4160e3
mov byte [rsp + 0x47], sil
cmp ebx, 2
je 0x4160b2
nop
cmp ebx, 3
jne 0x4160e3
movzx edx, byte [rax]
and edx, 0x77
and esi, 0x11
shl esi, 3
or edx, esi
mov byte [rax], dl
call fcn.00415040
movzx edx, byte [rax]
and edx, 0xffffffcc
movzx esi, byte [rsp + 0x47]
shr sil, 1
and esi, 0x33
or esi, edx
mov byte [rax], sil
jmp 0x4160e3
movzx edx, byte [rax]
and edx, 0x33
and esi, 0x33
shl esi, 2
or edx, esi
mov byte [rax], dl
call fcn.00415040
call fcn.00415040
movzx edx, byte [rax]
and edx, 0xffffffee
movzx esi, byte [rsp + 0x47]
shr sil, 2
and esi, 0x11
or esi, edx
mov byte [rax], sil
mov rbp, qword [rsp + 0x158]
add rsp, 0x160
ret
cmp qword [rdx], 8
jne 0x416121
cmp ebx, 0x20
sbb edx, edx
movzx esi, byte [rax]
mov ecx, ebx
mov ebx, 0x33
shl ebx, cl
and ebx, edx
or esi, ebx
mov byte [rax], sil
mov rbp, qword [rsp + 0x158]
add rsp, 0x160
ret
mov rcx, qword [rdx + 8]
shr rcx, 3
cmp rcx, 0x20
sbb edx, edx
cmp ebx, 0x20
sbb edi, edi
sbb r8d, r8d
movzx esi, byte [rsi]
and esi, 3
mov r9d, 0x10
shl r9d, cl
and edx, r9d
dec edx
and edx, 0xf0
or esi, edx
movzx edx, byte [rax]
mov ecx, ebx
mov r9d, 0x33
shl r9d, cl
and r9d, edi
not r9d
and r9d, edx
shl esi, cl
and r8d, esi
or r8d, r9d
mov byte [rax], r8b
mov rbp, qword [rsp + 0x158]
add rsp, 0x160
ret
mov rbp, qword [rsp + 0x158]
add rsp, 0x160
ret
je 0x416251
mov rax, qword [rsp + 0x168]
call fcn.00414c00
mov rdx, qword [rsp + 0x170]
shr rdx, 3
mov rsi, qword [rsp + 0x168]
mov r8, rsi
nop
cmp ebx, 2
jne 0x41630e
mov qword [rsp + 0xd8], rdx
mov qword [rsp + 0x140], rsi
movzx edx, byte [rax]
and edx, 0x33
movzx r8d, byte [rsi]
or r8d, edx
mov byte [rax], r8b
call fcn.00415040
call fcn.00415040
mov qword [rsp + 0x150], rax
mov dword [rsp + 0x54], ebx
mov dword [rsp + 0x50], ecx
mov qword [rsp + 0x148], rdi
mov rax, qword [rsp + 0x140]
mov ebx, 1
call fcn.004147a0
mov rdx, qword [rsp + 0xd8]
add rdx, 0xfffffffffffffffe
mov r8, qword [rsp + 0x168]
mov ebx, dword [rsp + 0x54]
mov ecx, dword [rsp + 0x50]
mov rdi, qword [rsp + 0x148]
mov rsi, rax
mov rax, qword [rsp + 0x150]
jmp 0x41630e
mov rbp, qword [rsp + 0x158]
add rsp, 0x160
ret
mov qword [rsp + 0x98], rdx
mov qword [rsp + 0xf8], rsi
mov rsi, rdx
shr rsi, 2
shl rsi, 2
nop dword [rax]
call fcn.00415240
mov qword [rsp + 0x150], rax
mov dword [rsp + 0x54], ebx
mov dword [rsp + 0x50], ecx
mov qword [rsp + 0x148], rdi
mov qword [rsp + 0x58], rsi
shr rsi, 2
mov qword [rsp + 0xe0], rsi
mov rax, qword [rsp + 0x120]
mov rbx, qword [rsp + 0xf8]
mov rcx, rsi
call fcn.00461f80
mov rax, qword [rsp + 0xf8]
mov rbx, qword [rsp + 0xe0]
call fcn.004147a0
mov rdx, qword [rsp + 0x98]
mov r8, qword [rsp + 0x58]
sub rdx, r8
mov r8, qword [rsp + 0x168]
mov ecx, dword [rsp + 0x50]
mov ebx, dword [rsp + 0x54]
mov rdi, qword [rsp + 0x148]
mov rsi, rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0x120], rax
nop word [rax + rax]
nop
cmp rdx, 4
jae 0x416261
cmp rdx, 2
jne 0x416395
mov dword [rsp + 0x4c], ecx
mov dword [rsp + 0x48], ebx
mov qword [rsp + 0x110], rdi
movzx ecx, byte [rax]
and ecx, 0xffffffcc
movzx edx, byte [rsi]
or edx, ecx
mov byte [rax], dl
mov ebx, 1
mov rax, rsi
call fcn.004147a0
mov qword [rsp + 0xf8], rax
mov ebx, dword [rsp + 0x48]
mov ecx, dword [rsp + 0x4c]
mov rdi, qword [rsp + 0x110]
mov rax, qword [rsp + 0x120]
call fcn.00415040
nop
call fcn.00415040
mov r8, qword [rsp + 0x168]
mov rsi, qword [rsp + 0xf8]
mov rax, r8
sub rsi, r8
mov rbx, rsi
nop
call fcn.00461cc0
jmp 0x416251
mov qword [rsp + 0x90], r12
mov qword [rsp + 0x68], r11
mov qword [rsp + 0x138], r10
nop
test rcx, rcx
jne 0x4163ca
mov r13, r11
jmp 0x416432
movzx edx, byte [rcx]
mov qword [rsp + 0xe0], rdx
mov rax, rcx
call fcn.004147e0
mov rdx, qword [rsp + 0xe8]
mov rsi, qword [rsp + 0x128]
mov rdi, qword [rsp + 0x180]
mov r8, qword [rsp + 0x168]
mov r9, qword [rsp + 0x178]
mov r10, qword [rsp + 0x138]
mov r12, qword [rsp + 0x90]
mov r13, qword [rsp + 0x68]
mov r11, qword [rsp + 0xe0]
mov ebx, 8
mov rcx, rax
mov rax, qword [rsp + 0xf0]
mov r15, qword [rdi]
cmp r9, r15
jne 0x416444
mov r9, qword [rdi + 8]
shr r9, 3
jmp 0x416480
test r15, r15
je 0x416986
mov rax, r9
xor edx, edx
div r15
lea rdx, [rax - 1]
imul rdx, r15
add rdx, qword [rdi + 8]
shr rdx, 3
mov rax, qword [rsp + 0xf0]
mov r9, rdx
mov rdx, qword [rsp + 0xe8]
nop dword [rax + rax]
test r9, r9
je 0x416925
mov qword [rsp + 0x70], r9
mov qword [rsp + 0x108], rcx
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0xa0], r11
mov edi, dword [rsp + 0x50]
test edi, edi
jne 0x416500
and r11d, 0xf
or r11, 0xf0
cmp r9, 4
ja 0x4164c6
mov ecx, 4
jmp 0x416818
mov byte [rsi], r11b
mov rax, rsi
call fcn.004147e0
mov rcx, qword [rsp + 0xa0]
shr rcx, 4
mov rdx, qword [rsp + 0x78]
add rdx, 0xfffffffffffffffc
mov rbx, rcx
mov esi, 4
mov rcx, qword [rsp + 0x70]
jmp 0x41658b
cmp edi, 2
jne 0x41690f
and r11d, 3
shl r11, 2
mov rdx, r11
or r11, 0x40
or rdx, 0xc0
cmp r9, 1
cmova r11, rdx
movzx edx, byte [rsi]
and edx, 0x33
or r11d, edx
mov byte [rsi], r11b
mov rax, rsi
call fcn.004147e0
mov rcx, qword [rsp + 0x70]
cmp rcx, 2
ja 0x416571
mov rdx, qword [rsp + 0xe8]
mov r8, qword [rsp + 0x168]
mov r9, rcx
mov ecx, 6
mov rsi, rax
xor r11d, r11d
mov rax, qword [rsp + 0xf0]
jmp 0x416818
mov rbx, qword [rsp + 0xa0]
shr rbx, 2
mov rsi, qword [rsp + 0x78]
lea rdx, [rsi - 2]
mov esi, 2
add rdx, 0xfffffffffffffffc
mov rdi, qword [rsp + 0x108]
jmp 0x4165e4
mov qword [rsp + 0xe0], r10
mov qword [rsp + 0xc0], r11
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x108], rdx
mov byte [rax], dil
call fcn.004147e0
mov rbx, qword [rsp + 0xe0]
shr rbx, 4
mov rcx, qword [rsp + 0x70]
mov rsi, qword [rsp + 0xc0]
mov rdi, qword [rsp + 0x108]
mov rdx, qword [rsp + 0x78]
mov r8, rbx
and ebx, 0xf
or rbx, 0xf0
lea r9, [rsi + 4]
cmp rcx, r9
jbe 0x4167eb
mov qword [rsp + 0x78], rdx
mov qword [rsp + 0x108], rdi
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0xe0], r8
mov byte [rax], bl
call fcn.004147e0
mov qword [rsp + 0x130], rax
mov rcx, qword [rsp + 0xe0]
shr rcx, 4
mov rdx, qword [rsp + 0x108]
mov rbx, qword [rsp + 0x138]
cmp rdx, rbx
je 0x4166c0
mov rsi, qword [rsp + 0x78]
cmp rsi, 8
jb 0x416659
add rsi, 0xfffffffffffffff8
jmp 0x4166a8
mov qword [rsp + 0xd0], rcx
movzx ecx, byte [rdx]
mov qword [rsp + 0xe0], rcx
mov rax, rdx
call fcn.004147e0
mov rcx, qword [rsp + 0x78]
mov rdx, qword [rsp + 0xe0]
shl rdx, cl
mov rbx, qword [rsp + 0xd0]
or rbx, rdx
mov rdx, rax
mov rsi, rcx
mov rcx, rbx
mov rax, qword [rsp + 0x130]
mov rbx, qword [rsp + 0x138]
mov r8, qword [rsp + 0x90]
mov r9, qword [rsp + 0x68]
mov rdi, rcx
jmp 0x4167c4
test rdx, rdx
je 0x416783
mov rsi, qword [rsp + 0x78]
cmp rsi, 0x40
sbb rdi, rdi
movzx edx, byte [rdx]
mov r8, rcx
mov rcx, rsi
shl rdx, cl
and rdi, rdx
or r8, rdi
mov rdx, qword [rsp + 0x90]
lea rdi, [rcx + rdx]
cmp rdi, 8
jb 0x41670b
lea rdi, [rcx + rdx]
lea rdi, [rdi - 8]
mov rcx, qword [rsp + 0x100]
jmp 0x41676b
mov qword [rsp + 0xc8], r8
mov qword [rsp + 0x78], rdi
mov rax, qword [rsp + 0x100]
movzx ecx, byte [rax]
mov qword [rsp + 0xe0], rcx
call fcn.004147e0
mov rcx, qword [rsp + 0x78]
mov r8, qword [rsp + 0xe0]
shl r8, cl
mov rdx, qword [rsp + 0xc8]
or r8, rdx
mov rdx, qword [rsp + 0x90]
mov rbx, qword [rsp + 0x138]
mov rcx, rax
mov rdi, qword [rsp + 0x78]
mov rax, qword [rsp + 0x130]
mov r9, qword [rsp + 0x68]
mov rdx, rcx
mov rsi, rdi
mov rdi, r8
mov r8, qword [rsp + 0x90]
jmp 0x4167c4
mov rsi, qword [rsp + 0x78]
cmp rsi, 8
jae 0x4167b0
mov rdi, rcx
mov rcx, rsi
mov r8, qword [rsp + 0x68]
mov r9, r8
shl r8, cl
or rdi, r8
mov r8, qword [rsp + 0x90]
lea rsi, [rcx + r8]
jmp 0x4167c0
mov r8, qword [rsp + 0x90]
mov r9, qword [rsp + 0x68]
mov rdi, rcx
add rsi, 0xfffffffffffffff8
mov r10, rdi
and edi, 0xf
or rdi, 0xf0
mov r11, qword [rsp + 0x60]
add r11, 8
mov r12, qword [rsp + 0x70]
nop
cmp r12, r11
ja 0x416599
jmp 0x4167f4
mov r12, rcx
mov r11, r9
mov rdi, rbx
mov rdx, qword [rsp + 0xe8]
mov r8, qword [rsp + 0x168]
mov r9, r12
mov rcx, r11
mov rsi, rax
mov r11, rdi
mov rax, qword [rsp + 0xf0]
cmp rcx, r9
jbe 0x41684f
mov rbx, rcx
sub rcx, r9
add rcx, 0xfffffffffffffffc
neg rcx
cmp rcx, 0x40
sbb rdi, rdi
mov r9d, 1
shl r9, cl
and rdi, r9
dec rdi
mov r9, rdi
shl rdi, 4
or rdi, r9
and r11, rdi
jmp 0x416852
mov rbx, rcx
mov rcx, qword [rsp + 0x170]
mov rdi, rcx
shr rcx, 3
cmp rbx, rcx
ja 0x4168ea
mov qword [rsp + 0xe0], rbx
mov qword [rsp + 0xd0], rcx
mov byte [rsi], r11b
mov rax, rsi
call fcn.004147e0
mov rcx, qword [rsp + 0xe0]
add rcx, 4
jmp 0x4168b1
mov qword [rsp + 0xb8], rcx
mov byte [rax], 0
nop
call fcn.004147e0
mov rcx, qword [rsp + 0xb8]
add rcx, 4
mov rdx, qword [rsp + 0xd0]
cmp rcx, rdx
jbe 0x416893
mov rdi, qword [rsp + 0x170]
mov r8, qword [rsp + 0x168]
mov rbx, rcx
mov rsi, rax
xor r11d, r11d
mov rax, qword [rsp + 0xf0]
mov rcx, rdx
mov rdx, qword [rsp + 0xe8]
add rcx, 2
cmp rbx, rcx
jne 0x416907
movzx ecx, byte [rsi]
and ecx, 0xffffffcc
or r11d, ecx
mov byte [rsi], r11b
cmp rax, rdx
jmp 0x416195
cmp rax, rdx
jmp 0x416195
lea rax, [0x00650a59]
mov ebx, 0x21
nop dword [rax + rax]
call fcn.00436d80
mov rax, rdi
call fcn.00458d40
mov qword [rsp + 0x150], rax
mov qword [rsp + 0xb0], rbx
nop dword [rax]
call fcn.00438460
lea rax, [0x0064bd3c]
mov ebx, 0x17
call fcn.00438d00
mov rax, qword [rsp + 0x150]
mov rbx, qword [rsp + 0xb0]
call fcn.00438d00
call fcn.004386a0
call fcn.004384e0
lea rax, [0x00654cc4]
mov ebx, 0x2d
call fcn.00436d80
call fcn.004356e0
mov r8, qword [rsp + 0x168]
mov r9, qword [rsp + 0x178]
mov rcx, rbx
mov rbx, rsi
mov r10, rax
mov r11, rdi
mov r12, rdx
mov rax, qword [rsp + 0xf0]
mov rdx, qword [rsp + 0xe8]
mov rsi, qword [rsp + 0x128]
mov rdi, qword [rsp + 0x180]
jmp 0x4163aa
mov qword [rsp + 0x88], rcx
mov qword [rsp + 0xa0], r11
movzx ecx, byte [rbx]
mov qword [rsp + 0xa8], rcx
mov rax, rbx
call fcn.004147e0
mov rcx, qword [rsp + 0x88]
cmp rcx, 0x40
sbb r11, r11
lea rdx, [rcx + 8]
mov rbx, qword [rsp + 0xa8]
shl rbx, cl
and r11, rbx
mov rcx, qword [rsp + 0xa0]
or r11, rcx
mov rsi, qword [rsp + 0x128]
mov rdi, qword [rsp + 0x180]
mov r8, qword [rsp + 0x168]
mov r9, qword [rsp + 0x178]
mov r10, qword [rsp + 0xe0]
mov rcx, rdx
mov rbx, rax
mov rax, qword [rsp + 0xf0]
mov rdx, qword [rsp + 0xe8]
nop dword [rax]
cmp rcx, r10
jb 0x4169cf
mov rcx, qword [rdi]
shr rcx, 3
lea r10, [rcx + rcx]
cmp r10, 0x39
ja 0x416a7f
mov rbx, rcx
jmp 0x416aab
xor ebx, ebx
mov rsi, rcx
xor eax, eax
mov rdi, r11
mov rdx, rsi
mov rcx, qword [rsp + 0x180]
jmp 0x41698b
sbb r10, r10
mov r12, r11
shl r11, cl
and r11, r10
or r11, r12
add rcx, rcx
cmp rcx, 0x40
jbe 0x416a99
test bl, bl
je 0x416aff
movzx r10d, bl
mov r12d, 0x39
movzx r12d, r12b
mov rcx, rax
mov eax, r12d
mov r12, rdx
xor edx, edx
div r10w
movzx r10d, al
imul r10, rbx
cmp r10, 0x40
sbb r13, r13
mov rax, rcx
mov rcx, r10
mov r15d, 1
shl r15, cl
and r15, r13
lea r13, [r15 - 1]
and r11, r13
mov rdx, r12
jmp 0x416a7f
nop
call fcn.004356e0
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov qword [rsp + 0x20], rdi
call fcn.0045f280
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
jmp fcn.00415de0