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

Disassembly:
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0xb0
lea r13, [rsp + 0x7f]
mov r15, rcx
mov r12, rdx
mov rbx, r8
and r13, 0xffffffffffffffc0
lea r14, [rcx + 0x80]
cmp r8, 0x40
ja 0x59e060
call fcn.0057a630
mov esi, 0x40
lea rdi, [r13 + rbx]
sub rsi, rbx
test rbx, rbx
je 0x59e0d0
cmp rbx, 0x1f
jbe 0x59e0c0
vmovdqu xmm3, xmmword [r12]
vmovdqu ymm1, ymmword [str.66666666666666666666666666666666g]
mov rax, rbx
vinserti128 ymm0, ymm3, xmmword [r12 + 0x10], 1
shr rax, 5
vpxor ymm0, ymm0, ymm1
vmovdqu ymmword [r13], ymm0
cmp rax, 2
jne 0x59dfa3
vmovdqu xmm4, xmmword [r12 + 0x20]
vinserti128 ymm0, ymm4, xmmword [r12 + 0x30], 1
vpxor ymm0, ymm0, ymm1
vmovdqu ymmword [r13 + 0x20], ymm0
vzeroupper
movabs r8, 0x3636363636363636
mov eax, esi
cmp esi, 8
jae 0x59e020
test sil, 4
jne 0x59e155
test eax, eax
je 0x59dea5
mov byte [rdi], 0x36
test al, 2
jne 0x59e146
mov r8d, 0x40
mov rdx, r13
mov rcx, r15
call fcn.0057a660
mov rcx, r14
call fcn.0057a630
lea rax, [rbx - 1]
cmp rax, 0x1e
jbe 0x59e12a
vmovdqu xmm2, xmmword [r12]
vmovdqu ymm1, ymmword [0x006d7220]
mov rax, rbx
vinserti128 ymm0, ymm2, xmmword [r12 + 0x10], 1
shr rax, 5
vpxor ymm0, ymm0, ymm1
vmovdqu ymmword [r13], ymm0
cmp rax, 2
jne 0x59df70
vmovdqu xmm5, xmmword [r12 + 0x20]
vinserti128 ymm0, ymm5, xmmword [r12 + 0x30], 1
vpxor ymm0, ymm0, ymm1
vmovdqu ymmword [r13 + 0x20], ymm0
vzeroupper
movabs rcx, 0x5c5c5c5c5c5c5c5c
mov eax, esi
cmp esi, 8
jae 0x59dfd8
and esi, 4
jne 0x59e131
test eax, eax
je 0x59df42
mov byte [rdi], 0x5c
test al, 2
jne 0x59e168
mov r8d, 0x40
mov rdx, r13
mov rcx, r14
call fcn.0057a660
nop
add rsp, 0xb0
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
cmp rbx, 0x20
je 0x59e177
mov eax, 0x20
vzeroupper
nop word [rax + rax]
movzx edx, byte [r12 + rax]
add rax, 1
xor edx, 0x5c
mov byte [rax + r13 - 1], dl
cmp rax, rbx
jb 0x59df88
jmp 0x59df15
cmp rbx, 0x20
je 0x59e17f
mov eax, 0x20
vzeroupper
nop dword [rax]
movzx edx, byte [r12 + rax]
add rax, 1
xor edx, 0x36
mov byte [rax + r13 - 1], dl
cmp rbx, rax
ja 0x59dfb8
jmp 0x59de77
mov eax, esi
lea r8, [rdi + 8]
mov qword [rdi], rcx
and r8, 0xfffffffffffffff8
mov qword [rdi + rax - 8], rcx
mov rax, rdi
sub rax, r8
add eax, esi
and eax, 0xfffffff8
cmp eax, 8
jb 0x59df42
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [r8 + r9], rcx
cmp edx, eax
jb 0x59e003
jmp 0x59df42
mov eax, esi
lea rcx, [rdi + 8]
mov qword [rdi], r8
and rcx, 0xfffffffffffffff8
mov qword [rdi + rax - 8], r8
mov rax, rdi
sub rax, rcx
add eax, esi
and eax, 0xfffffff8
cmp eax, 8
jb 0x59dea5
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [rcx + r9], r8
cmp edx, eax
jb 0x59e04b
jmp 0x59dea5
call fcn.0057a630
mov r8, rbx
mov rdx, r12
mov rcx, r15
lea r12, [rsp + 0x20]
lea rdi, [r13 + 0x20]
mov esi, 0x20
mov ebx, 0x20
call fcn.0057a660
mov rdx, r12
mov rcx, r15
call fcn.0057a850
mov rcx, r15
call fcn.0057a630
vmovdqu xmm4, xmmword [rsp + 0x20]
vinserti128 ymm0, ymm4, xmmword [rsp + 0x30], 1
vpxor ymm0, ymm0, ymmword [str.66666666666666666666666666666666g]
vmovdqu ymmword [r13], ymm0
vzeroupper
jmp 0x59de77
xor eax, eax
jmp 0x59dfb8
movabs rdx, 0x3636363636363636
mov r8d, 0x40
mov rcx, r15
mov rdi, r13
movabs rax, 0x3636363636363636
mov qword [r13 + 8], rdx
mov esi, 0x40
mov qword [r13 + 0x18], rdx
mov qword [r13 + 0x28], rdx
mov qword [r13 + 0x38], rdx
mov rdx, r13
mov qword [r13], rax
mov qword [r13 + 0x10], rax
mov qword [r13 + 0x20], rax
mov qword [r13 + 0x30], rax
call fcn.0057a660
mov rcx, r14
call fcn.0057a630
jmp 0x59df15
xor eax, eax
jmp 0x59df88
mov edx, eax
mov dword [rdi], 0x5c5c5c5c
mov dword [rdi + rdx - 4], 0x5c5c5c5c
jmp 0x59df42
mov edx, 0x3636
mov word [rdi + rax - 2], dx
jmp 0x59dea5
mov dword [rdi], 0x36363636
mov dword [rdi + rax - 4], 0x36363636
jmp 0x59dea5
mov ecx, 0x5c5c
mov word [rdi + rax - 2], cx
jmp 0x59df42
vzeroupper
jmp 0x59df15
vzeroupper
jmp 0x59de77