Function at 0x5e5900
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
lea r12, [rsp + 0x8f]
mov qword [rsp + 0x110], rcx
mov r13, rdx
mov rbx, r8
and r12, 0xffffffffffffffc0
lea r14, [rcx + 0x80]
cmp r8, 0x40
ja 0x5e5c50
mov esi, 0x40
call fcn.005bfe80
sub rsi, rbx
test rbx, rbx
mov rcx, qword [rsp + 0x110]
lea rdi, [r12 + rbx]
je 0x5e5d10
mov rbp, r13
neg rbp
and ebp, 0x1f
lea r15, [rbp + 0x1f]
cmp r15, 0x2f
mov eax, 0x2f
cmovb r15, rax
lea r9, [rbx - 1]
xor eax, eax
cmp r9, r15
jb 0x5e59f8
test rbp, rbp
je 0x5e59a9
nop word [rax + rax]
movzx edx, byte [r13 + rax]
inc rax
xor edx, 0x36
mov byte [rax + r12 - 1], dl
cmp rbp, rax
jne 0x5e5990
mov rax, rbp
vmovdqu64 ymm0, ymmword [str.66666666666666666666666666666666g]
mov rdx, rbx
sub rdx, rbp
lea r10, [r13 + rbp]
vpxor ymm1, ymm0, ymmword [r10]
mov r11, rdx
lea r8, [r12 + rbp]
shr r11, 5
vmovdqu8 ymmword [r8], ymm1
cmp r11, 1
jne 0x5e5bd0
mov r8, rdx
and r8, 0xffffffffffffffe0
add rax, r8
cmp rdx, r8
je 0x5e5def
vzeroupper
nop dword [rax]
movzx edx, byte [r13 + rax]
inc rax
xor edx, 0x36
mov byte [rax + r12 - 1], dl
cmp rbx, rax
ja 0x5e59f8
mov edx, esi
movabs rax, 0x3636363636363636
cmp esi, 0x20
jae 0x5e5b68
test sil, 0x10
jne 0x5e5d9b
test dl, 8
jne 0x5e5dc7
test dl, 4
jne 0x5e5dd4
test edx, edx
jne 0x5e5cf0
mov r8d, 0x40
mov rdx, r12
mov qword [rsp + 0x28], r9
call fcn.005bfeb0
mov rcx, r14
call fcn.005bfe80
mov r9, qword [rsp + 0x28]
cmp r9, r15
jb 0x5e5d6e
xor eax, eax
test rbp, rbp
je 0x5e5a99
nop word [rax + rax]
movzx edx, byte [r13 + rax]
inc rax
xor edx, 0x5c
mov byte [rax + r12 - 1], dl
cmp rax, rbp
jne 0x5e5a80
mov rax, rbp
vmovdqu64 ymm0, ymmword [0x00741a20]
mov rdx, rbx
sub rdx, rbp
lea rcx, [r13 + rbp]
vpxor ymm1, ymm0, ymmword [rcx]
mov r8, rdx
add rbp, r12
shr r8, 5
vmovdqu8 ymmword [rbp], ymm1
cmp r8, 1
je 0x5e5ad5
vpxor ymm0, ymm0, ymmword [rcx + 0x20]
vmovdqu8 ymmword [rbp + 0x20], ymm0
mov rcx, rdx
and rcx, 0xffffffffffffffe0
add rax, rcx
cmp rdx, rcx
je 0x5e5de7
vzeroupper
nop dword [rax + rax]
movzx edx, byte [r13 + rax]
inc rax
xor edx, 0x5c
mov byte [rax + r12 - 1], dl
cmp rax, rbx
jb 0x5e5af0
mov edx, esi
movabs rax, 0x5c5c5c5c5c5c5c5c
cmp esi, 0x20
jae 0x5e5be8
and esi, 0x10
jne 0x5e5d75
test dl, 8
jne 0x5e5d8e
test dl, 4
jne 0x5e5db4
test edx, edx
jne 0x5e5cd0
mov r8d, 0x40
mov rdx, r12
mov rcx, r14
call fcn.005bfeb0
nop
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov edx, esi
lea rdx, [rdi + rdx + 8]
lea r8, [rdi + 8]
mov qword [rdi], rax
and r8, 0xfffffffffffffff8
mov qword [rdx - 0x28], rax
mov qword [rdx - 0x20], rax
mov qword [rdx - 0x18], rax
mov qword [rdx - 0x10], rax
mov rdx, rdi
sub rdx, r8
add edx, esi
and edx, 0xffffffe0
cmp edx, 0x20
jb 0x5e5a47
and edx, 0xffffffe0
xor r11d, r11d
mov r10d, r11d
add r11d, 0x20
mov qword [r8 + r10], rax
mov qword [r8 + r10 + 8], rax
mov qword [r8 + r10 + 0x10], rax
mov qword [r8 + r10 + 0x18], rax
cmp r11d, edx
jb 0x5e5ba4
jmp 0x5e5a47
vpxor ymm0, ymm0, ymmword [r10 + 0x20]
vmovdqu8 ymmword [r8 + 0x20], ymm0
jmp 0x5e59de
lea rcx, [rdi + 8]
mov edx, esi
and rcx, 0xfffffffffffffff8
lea rdx, [rdi + rdx + 8]
mov qword [rdi], rax
sub rdi, rcx
mov qword [rdx - 0x28], rax
mov qword [rdx - 0x20], rax
mov qword [rdx - 0x18], rax
mov qword [rdx - 0x10], rax
lea edx, [rsi + rdi]
and edx, 0xffffffe0
cmp edx, 0x20
jb 0x5e5b3e
and edx, 0xffffffe0
xor r9d, r9d
mov r8d, r9d
add r9d, 0x20
mov qword [rcx + r8], rax
mov qword [rcx + r8 + 8], rax
mov qword [rcx + r8 + 0x10], rax
mov qword [rcx + r8 + 0x18], rax
cmp r9d, edx
jb 0x5e5c22
jmp 0x5e5b3e
call fcn.005bfe80
mov rcx, qword [rsp + 0x110]
mov r8, rbx
mov rdx, r13
lea r13, [rsp + 0x30]
call fcn.005bfeb0
mov rbp, r13
mov rcx, qword [rsp + 0x110]
mov rdx, r13
neg rbp
call fcn.005c01d0
and ebp, 0x1f
mov rcx, qword [rsp + 0x110]
lea r15, [rbp + 0x1f]
call fcn.005bfe80
cmp r15, 0x2f
mov eax, 0x2f
cmovb r15, rax
mov rcx, qword [rsp + 0x110]
mov r9d, 0x1f
lea rdi, [r12 + 0x20]
mov esi, 0x20
mov ebx, 0x20
xor eax, eax
jmp 0x5e59f8
mov byte [rdi], 0x5c
test dl, 2
je 0x5e5b3e
mov ecx, 0x5c5c
mov word [rdi + rdx - 2], cx
jmp 0x5e5b3e
mov byte [rdi], 0x36
test dl, 2
je 0x5e5a47
mov eax, 0x3636
mov word [rdi + rdx - 2], ax
jmp 0x5e5a47
movabs rdx, 0x3636363636363636
movabs rax, 0x3636363636363636
mov qword [r12 + 8], rdx
mov qword [r12 + 0x18], rdx
mov qword [r12 + 0x28], rdx
mov qword [r12 + 0x38], rdx
mov r8d, 0x40
mov rdx, r12
mov qword [r12], rax
mov qword [r12 + 0x10], rax
mov qword [r12 + 0x20], rax
mov qword [r12 + 0x30], rax
call fcn.005bfeb0
mov rcx, r14
call fcn.005bfe80
mov rdi, r12
mov esi, 0x40
jmp 0x5e5b06
xor eax, eax
jmp 0x5e5af0
lea rdx, [rdi + rdx + 0x10]
mov qword [rdi], rax
mov qword [rdi + 8], rax
mov qword [rdx - 0x20], rax
mov qword [rdx - 0x18], rax
jmp 0x5e5b3e
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x5e5b3e
lea rdx, [rdi + rdx + 0x10]
mov qword [rdi], rax
mov qword [rdi + 8], rax
mov qword [rdx - 0x20], rax
mov qword [rdx - 0x18], rax
jmp 0x5e5a47
mov dword [rdi], 0x5c5c5c5c
mov dword [rdi + rdx - 4], 0x5c5c5c5c
jmp 0x5e5b3e
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x5e5a47
mov dword [rdi], 0x36363636
mov dword [rdi + rdx - 4], 0x36363636
jmp 0x5e5a47
vzeroupper
jmp 0x5e5b06
vzeroupper
jmp 0x5e5a0e