Function at 0x1004159f0
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 0x100415a30
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 0x100415a15
mov r14d, dword [rcx + 1]
bswap r14d
test r14d, r14d
je 0x100415a15
movzx eax, byte [rcx + 5]
lea edx, [rax - 1]
cmp dl, 0x13
ja 0x100415a15
movzx edx, al
add rdx, 6
cmp r15, rdx
jb 0x100415a15
mov byte [rsp + 0xf0], al
lea r9, [rsp + 0xf1]
lea rcx, [rcx + 6]
cmp eax, 8
jae 0x100416090
test al, 4
jne 0x10041629c
test eax, eax
je 0x100415a94
movzx edx, byte [rbx + 6]
mov byte [rsp + 0xf1], dl
test al, 2
jne 0x1004162b4
mov edx, r14d
shr edx, 8
cmp edx, 0xff0000
je 0x100416212
lea rdx, [0x100429f40]
cmp r14d, 0xfaceb001
je 0x100415b28
cmp r14d, 0xfaceb002
je 0x100416272
cmp r14d, 0xfaceb00e
je 0x100416272
cmp r14d, 0x51303530
je 0x10041627e
cmp r14d, 0x54303530
je 0x10041627e
lea rdx, [0x100429f60]
cmp r14d, 0x54303531
je 0x100415b28
mov ecx, r14d
lea rdx, [0x100429f00]
and ecx, 0xf0f0f0f
cmp ecx, 0xa0a0a0a
je 0x100415b28
cmp r14d, 1
lea rdx, [0x100429ee0]
lea rcx, [0x100429ec0]
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.10041a1d0
test eax, eax
jne 0x100415a15
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.10041a240
test eax, eax
jne 0x100415a15
cmp r14d, 0x6b3343cf
je 0x1004160e8
lea r14, [rsp + 0xb0]
mov r9, rsi
mov rdx, rdi
movzx eax, word [0x100429ff4]
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.10041a240
movabs r11, 0x7571203331736c74
test eax, eax
jne 0x100415a15
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.10041a240
test eax, eax
jne 0x100415a15
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 0x100415d75
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 0x100415d5e
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.10041a240
test eax, eax
jne 0x100415a15
movzx eax, byte [rbx + 5]
add rax, 6
cmp rax, r15
jae 0x100415a15
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 0x100415a15
cmp cl, 2
je 0x1004162e6
cmp cl, 3
je 0x1004162c4
mov eax, 1
cmp cl, 1
jne 0x100415e27
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 0x100415a15
cmp cl, 2
je 0x100416338
cmp cl, 3
je 0x100416316
sub cl, 1
je 0x1004162fb
movzx r11d, r8b
mov eax, 1
cmp r11, 0x13
jbe 0x100415a15
add rdi, rax
mov qword [rsp + 0x88], r11
lea rax, [rdi + r11]
mov qword [rsp + 0x80], rdi
cmp r15, rax
jb 0x100415a15
call fcn.100416b80
mov r8, qword [rsp + 0x68]
mov edx, 1
mov rcx, rsi
mov r9d, 0x10
call fcn.100418220
test eax, eax
jne 0x100415a15
lea rdx, [rbx + rdi + 4]
lea r8, [rsp + 0xd0]
mov rcx, rsi
call fcn.100418290
test eax, eax
jne 0x100415a15
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 0x100415f51
lea rdi, [rsp + 0xa8]
mov qword [rsp + 0x88], r11
mov rcx, rdi
call fcn.10040f530
mov rcx, rdi
mov rdx, rax
mov eax, esi
xor rdx, rax
call fcn.10040f540
mov r11, qword [rsp + 0x88]
sub r11, r15
lea rdi, [r11 - 0x10]
cmp qword [rbp], rdi
jb 0x100415a15
mov rax, qword [rsp + 0x80]
mov qword [rbp], rdi
add r15, rax
cmp r15, 0x100
ja 0x100415a15
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 0x100415ff1
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.100418750
test eax, eax
jne 0x100415a15
lea rcx, [r15 + rdi]
mov r8d, 0x10
mov rdx, rsi
add rcx, rbx
call sub.cygwin1.dll_memcmp
test eax, eax
sete al
jmp 0x100415a17
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 0x100415a94
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 0x1004160cd
jmp 0x100415a94
lea r14, [rsp + 0xb0]
movzx eax, word [0x100429ff4]
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.10041a240
test eax, eax
jne 0x100415a15
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.10041a240
test eax, eax
jne 0x100415a15
mov r9d, 0x12
mov edx, 0xf
mov r8d, 0x13
mov eax, 0xf
lea rcx, str.tls13_quicv2_hp
jmp 0x100415d0a
mov ecx, r14d
lea rdx, [0x100429ec0]
and ecx, 0xff
je 0x100415b28
lea rdx, [0x100429f40]
cmp ecx, 0x16
jbe 0x100415b28
lea rdx, [0x100429f20]
cmp ecx, 0x1c
jbe 0x100415b28
lea rdx, [0x100429f00]
cmp ecx, 0x20
jbe 0x100415b28
cmp ecx, 0x23
lea rdx, [0x100429ee0]
lea rcx, [0x100429ec0]
cmovae rdx, rcx
jmp 0x100415b28
lea rdx, [0x100429f20]
jmp 0x100415b28
cmp r14d, 0x51303530
lea rdx, [0x100429f80]
lea rcx, [0x100429fa0]
cmove rdx, rcx
jmp 0x100415b28
mov edx, dword [rbx + 6]
mov dword [rsp + 0xf1], edx
mov edx, dword [rcx + rax - 4]
mov dword [r9 + rax - 4], edx
jmp 0x100415a94
movzx edx, word [rcx + rax - 2]
mov word [r9 + rax - 2], dx
jmp 0x100415a94
mov rcx, r8
call fcn.10040f530
mov rdx, rax
movabs rax, 0x3fffffffffffffff
and rdx, rax
mov eax, 8
jmp 0x100415e27
mov edx, dword [r8]
mov eax, 4
bswap edx
and edx, 0x3fffffff
jmp 0x100415e27
movzx eax, word [rdx]
rol ax, 8
mov r11, rax
mov eax, 2
and r11d, 0x3fff
jmp 0x100415e74
mov rcx, rdx
call fcn.10040f530
mov r11, rax
movabs rax, 0x3fffffffffffffff
and r11, rax
mov eax, 8
jmp 0x100415e74
mov eax, dword [rdx]
bswap eax
mov r11d, eax
mov eax, 4
and r11d, 0x3fffffff
jmp 0x100415e74