Function at 0x100416840
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x358
mov rbx, rcx
mov r15, rdx
mov r12, r8
mov rbp, r9
cmp rdx, 8
ja 0x100416880
xor eax, eax
add rsp, 0x358
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rcx], 0
jns 0x100416865
mov r14d, dword [rcx + 1]
bswap r14d
test r14d, r14d
je 0x100416865
movzx eax, byte [rcx + 5]
lea edx, [rax - 1]
cmp dl, 0x13
ja 0x100416865
movzx edx, al
add rdx, 6
cmp r15, rdx
jb 0x100416865
mov byte [rsp + 0xf0], al
lea r9, [rsp + 0xf1]
lea rcx, [rcx + 6]
cmp eax, 8
jae 0x100416ee0
test al, 4
jne 0x1004170ec
test eax, eax
je 0x1004168e4
movzx edx, byte [rbx + 6]
mov byte [rsp + 0xf1], dl
test al, 2
jne 0x100417104
mov edx, r14d
shr edx, 8
cmp edx, 0xff0000
je 0x100417062
lea rdx, [0x10042b180]
cmp r14d, 0xfaceb001
je 0x100416978
cmp r14d, 0xfaceb002
je 0x1004170c2
cmp r14d, 0xfaceb00e
je 0x1004170c2
cmp r14d, 0x51303530
je 0x1004170ce
cmp r14d, 0x54303530
je 0x1004170ce
lea rdx, [0x10042b1a0]
cmp r14d, 0x54303531
je 0x100416978
mov ecx, r14d
lea rdx, [0x10042b140]
and ecx, 0xf0f0f0f
cmp ecx, 0xa0a0a0a
je 0x100416978
cmp r14d, 1
lea rdx, [0x10042b120]
lea rcx, [0x10042b100]
cmovne rdx, rcx
mov qword [rsp + 0x20], rax
mov r8d, 0x14
mov ecx, 1
lea r13, [rsp + 0x130]
mov qword [rsp + 0x28], r13
call fcn.10041b020
test eax, eax
jne 0x100416865
lea rdi, [rsp + 0x110]
mov ecx, 0x2000
lea rsi, [rsp + 0x230]
mov qword [rsp + 0x30], 0x20
mov qword [rsp + 0x28], rdi
mov r9, rsi
mov rdx, r13
movabs rax, 0x6c63203331736c74
mov qword [rsp + 0x20], 0x13
mov r8d, 0x20
mov qword [rsp + 0x233], rax
movabs rax, 0x6e6920746e65696c
mov word [rsp + 0x230], cx
mov ecx, 1
mov byte [rsp + 0x232], 0xf
mov qword [rsp + 0x23a], rax
mov byte [rsp + 0x242], 0
call fcn.10041b090
test eax, eax
jne 0x100416865
cmp r14d, 0x6b3343cf
je 0x100416f38
lea r14, [rsp + 0xb0]
mov r9, rsi
mov rdx, rdi
movzx eax, word [0x10042b234]
mov qword [rsp + 0x28], r14
mov r8d, 0x20
movabs r11, 0x7571203331736c74
mov ecx, 1
mov qword [rsp + 0x30], 0x10
mov qword [rsp + 0x20], 0x12
mov word [rsp + 0x68], ax
mov word [rsp + 0x230], ax
movabs rax, 0x79656b2063697571
mov qword [rsp + 0x233], r11
mov byte [rsp + 0x232], 0xe
mov qword [rsp + 0x239], rax
mov byte [rsp + 0x241], 0
call fcn.10041b090
movabs r11, 0x7571203331736c74
test eax, eax
jne 0x100416865
mov eax, 0xc00
mov r9, rsi
mov rdx, rdi
mov ecx, 1
mov word [rsp + 0x230], ax
mov r8d, 0x20
movabs rax, 0x7669206369757120
mov qword [rsp + 0x233], r11
mov qword [rsp + 0x238], rax
lea rax, [rsp + 0xa4]
mov qword [rsp + 0x30], 0xc
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0x11
mov byte [rsp + 0x232], 0xd
mov byte [rsp + 0x240], 0
mov qword [rsp + 0x70], rax
call fcn.10041b090
test eax, eax
jne 0x100416865
mov r9d, 0x10
mov edx, 0xd
mov r8d, 0x11
mov eax, 0xd
lea rcx, str.tls13_quic_hp
movzx r10d, word [rsp + 0x68]
mov byte [rsp + 0x232], dl
lea r11, [rsp + 0x238]
mov word [rsp + 0x230], r10w
mov rdx, qword [rcx]
mov qword [rsp + 0x233], rdx
mov rdx, qword [rcx + rax - 8]
mov qword [rsp + rax + 0x22b], rdx
mov rdx, 0xfffffffffffffffb
add eax, edx
sub rcx, rdx
and eax, 0xfffffff8
cmp eax, 8
jb 0x100416bc5
mov qword [rsp + 0x68], r8
and eax, 0xfffffff8
xor edx, edx
mov r10d, edx
add edx, 8
mov r8, qword [rcx + r10]
mov qword [r11 + r10], r8
cmp edx, eax
jb 0x100416bae
mov r8, qword [rsp + 0x68]
lea rax, [rsp + 0xc0]
mov rdx, rdi
mov ecx, 1
mov byte [rsp + r9 + 0x230], 0
mov qword [rsp + 0x20], r8
mov r9, rsi
mov r8d, 0x20
mov qword [rsp + 0x30], 0x10
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x68], rax
call fcn.10041b090
test eax, eax
jne 0x100416865
movzx eax, byte [rbx + 5]
add rax, 6
cmp rax, r15
jae 0x100416865
movzx edx, byte [rbx + rax]
lea rdi, [rax + rdx + 1]
mov eax, 1
lea r8, [rbx + rdi]
movzx edx, byte [r8]
mov ecx, edx
shr cl, 6
shl eax, cl
cdqe
add rax, rdi
cmp rax, r15
jae 0x100416865
cmp cl, 2
je 0x100417136
cmp cl, 3
je 0x100417114
mov eax, 1
cmp cl, 1
jne 0x100416c77
movzx edx, word [r8]
mov eax, 2
rol dx, 8
and edx, 0x3fff
add rdi, rdx
add rdi, rax
mov eax, 1
lea rdx, [rbx + rdi]
movzx r8d, byte [rdx]
mov ecx, r8d
shr cl, 6
shl eax, cl
cdqe
add rax, rdi
cmp rax, r15
jae 0x100416865
cmp cl, 2
je 0x100417188
cmp cl, 3
je 0x100417166
sub cl, 1
je 0x10041714b
movzx r11d, r8b
mov eax, 1
cmp r11, 0x13
jbe 0x100416865
add rdi, rax
mov qword [rsp + 0x88], r11
lea rax, [rdi + r11]
mov qword [rsp + 0x80], rdi
cmp r15, rax
jb 0x100416865
call fcn.1004179d0
mov r8, qword [rsp + 0x68]
mov edx, 1
mov rcx, rsi
mov r9d, 0x10
call fcn.100419070
test eax, eax
jne 0x100416865
lea rdx, [rbx + rdi + 4]
lea r8, [rsp + 0xd0]
mov rcx, rsi
call fcn.1004190e0
test eax, eax
jne 0x100416865
mov eax, dword [rsp + 0xd0]
lea rdx, [rsp + 0x9b]
xor r8d, r8d
mov r11, qword [rsp + 0x88]
lea r9, [rsp + 0xa0]
mov dword [rsp + 0x9f], eax
movzx eax, byte [rsp + 0xd4]
mov byte [rsp + 0xa3], al
movzx eax, byte [rsp + 0xd0]
and eax, 0xf
xor al, byte [rbx]
mov byte [rsp + 0x7f], al
and eax, 3
lea esi, [rax + 1]
movzx eax, al
movzx r15d, sil
mov byte [rsp + 0x68], sil
lea r10d, [rax*8]
lea rsi, [rbx + rdi]
mov rcx, r15
mov rdi, rdx
rep movsb byte [rdi], byte [rsi]
xor esi, esi
imul ecx, r8d, 0xfffffff8
movzx eax, byte [rdx + r8]
xor al, byte [r9 + r8]
add r8, 1
movzx eax, al
add ecx, r10d
shl eax, cl
or esi, eax
cmp r8b, byte [rsp + 0x68]
jb 0x100416da1
lea rdi, [rsp + 0xa8]
mov qword [rsp + 0x88], r11
mov rcx, rdi
call fcn.10040f600
mov rcx, rdi
mov rdx, rax
mov eax, esi
xor rdx, rax
call fcn.10040f610
mov r11, qword [rsp + 0x88]
sub r11, r15
lea rdi, [r11 - 0x10]
cmp qword [rbp], rdi
jb 0x100416865
mov rax, qword [rsp + 0x80]
mov qword [rbp], rdi
add r15, rax
cmp r15, 0x100
ja 0x100416865
mov rdx, rbx
mov r8, r15
mov rcx, r13
call sub.cygwin1.dll_memcpy
movzx eax, byte [rsp + 0x7f]
lea rdx, [r13 + r15]
mov byte [rsp + 0x130], al
xor eax, eax
mov r8, rax
lea ecx, [rax*8]
mov r10d, esi
add rax, 1
neg r8
shr r10d, cl
mov byte [rdx + r8 - 1], r10b
cmp al, byte [rsp + 0x68]
jb 0x100416e41
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x48], r15
xor ecx, ecx
mov r9, rdi
lea rsi, [rsp + 0xe0]
lea r8, [rbx + r15]
mov rdx, r12
mov qword [rsp + 0x58], 0x10
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x38], 0xc
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], 0x10
mov qword [rsp + 0x20], r14
call fcn.1004195a0
test eax, eax
jne 0x100416865
lea rcx, [r15 + rdi]
mov r8d, 0x10
mov rdx, rsi
add rcx, rbx
call sub.cygwin1.dll_memcmp
test eax, eax
sete al
jmp 0x100416867
mov rdx, qword [rbx + 6]
lea rsi, [rsp + 0xf8]
mov qword [rsp + 0xf1], rdx
mov rdx, qword [rcx + rax - 8]
mov qword [r9 + rax - 8], rdx
mov rdx, r9
sub rdx, rsi
sub rcx, rdx
add edx, eax
and edx, 0xfffffff8
mov r8, rcx
cmp edx, 8
jb 0x1004168e4
and edx, 0xfffffff8
xor ecx, ecx
mov r10d, ecx
add ecx, 8
mov r11, qword [r8 + r10]
mov qword [rsi + r10], r11
cmp ecx, edx
jb 0x100416f1d
jmp 0x1004168e4
lea r14, [rsp + 0xb0]
movzx eax, word [0x10042b234]
mov qword [rsp + 0x30], 0x10
movabs rdx, 0x79656b2032766369
mov qword [rsp + 0x28], r14
mov r9, rsi
mov r8d, 0x20
mov ecx, 1
mov qword [rsp + 0x20], 0x14
mov word [rsp + 0x68], ax
mov word [rsp + 0x230], ax
movabs rax, 0x7571203331736c74
mov qword [rsp + 0x23b], rdx
mov rdx, rdi
mov byte [rsp + 0x232], 0x10
mov qword [rsp + 0x233], rax
mov byte [rsp + 0x243], 0
call fcn.10041b090
test eax, eax
jne 0x100416865
mov edx, 0xc00
mov r9, rsi
movabs rax, 0x7571203331736c74
mov qword [rsp + 0x30], 0xc
mov qword [rsp + 0x233], rax
mov r8d, 0x20
mov ecx, 1
movabs rax, 0x7669203276636975
mov qword [rsp + 0x23a], rax
lea rax, [rsp + 0xa4]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0x13
mov word [rsp + 0x230], dx
mov rdx, rdi
mov byte [rsp + 0x232], 0xf
mov byte [rsp + 0x242], 0
mov qword [rsp + 0x70], rax
call fcn.10041b090
test eax, eax
jne 0x100416865
mov r9d, 0x12
mov edx, 0xf
mov r8d, 0x13
mov eax, 0xf
lea rcx, str.tls13_quicv2_hp
jmp 0x100416b5a
mov ecx, r14d
lea rdx, [0x10042b100]
and ecx, 0xff
je 0x100416978
lea rdx, [0x10042b180]
cmp ecx, 0x16
jbe 0x100416978
lea rdx, [0x10042b160]
cmp ecx, 0x1c
jbe 0x100416978
lea rdx, [0x10042b140]
cmp ecx, 0x20
jbe 0x100416978
cmp ecx, 0x23
lea rdx, [0x10042b120]
lea rcx, [0x10042b100]
cmovae rdx, rcx
jmp 0x100416978
lea rdx, [0x10042b160]
jmp 0x100416978
cmp r14d, 0x51303530
lea rdx, [0x10042b1c0]
lea rcx, [0x10042b1e0]
cmove rdx, rcx
jmp 0x100416978
mov edx, dword [rbx + 6]
mov dword [rsp + 0xf1], edx
mov edx, dword [rcx + rax - 4]
mov dword [r9 + rax - 4], edx
jmp 0x1004168e4
movzx edx, word [rcx + rax - 2]
mov word [r9 + rax - 2], dx
jmp 0x1004168e4
mov rcx, r8
call fcn.10040f600
mov rdx, rax
movabs rax, 0x3fffffffffffffff
and rdx, rax
mov eax, 8
jmp 0x100416c77
mov edx, dword [r8]
mov eax, 4
bswap edx
and edx, 0x3fffffff
jmp 0x100416c77
movzx eax, word [rdx]
rol ax, 8
mov r11, rax
mov eax, 2
and r11d, 0x3fff
jmp 0x100416cc4
mov rcx, rdx
call fcn.10040f600
mov r11, rax
movabs rax, 0x3fffffffffffffff
and r11, rax
mov eax, 8
jmp 0x100416cc4
mov eax, dword [rdx]
bswap eax
mov r11d, eax
mov eax, 4
and r11d, 0x3fffffff
jmp 0x100416cc4