Function at 0x4f3d90
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, 0xb8
lea r12, [rsp + 0x7f]
mov r15, rcx
mov r14, rdx
lea r13, [rcx + 0x80]
mov rbx, r8
and r12, 0xffffffffffffffc0
cmp r8, 0x40
ja 0x4f3fd0
call fcn.004dbb50
lea rbp, [r12 + rbx]
mov esi, 0x40
sub rsi, rbx
test rbx, rbx
je 0x4f4040
cmp rbx, 0x1f
jbe 0x4f4030
vmovdqu ymm1, ymmword [str.66666666666666666666666666666666_]
mov rax, rbx
shr rax, 5
vmovdqu xmm3, xmmword [r14]
vinsertf128 ymm0, ymm3, xmmword [r14 + 0x10], 1
vxorps ymm0, ymm0, ymm1
vmovdqu ymmword [r12], ymm0
cmp rax, 2
jne 0x4f3f63
vmovdqu xmm4, xmmword [r14 + 0x20]
vinsertf128 ymm0, ymm4, xmmword [r14 + 0x30], 1
vxorps ymm0, ymm0, ymm1
vmovdqu ymmword [r12 + 0x20], ymm0
vzeroupper
movabs rax, 0x3636363636363636
mov ecx, esi
cmp esi, 8
jae 0x4f3fb0
test sil, 4
jne 0x4f40cb
test ecx, ecx
je 0x4f3e64
mov byte [rbp], 0x36
test cl, 2
jne 0x4f40bc
mov r8d, 0x40
mov rdx, r12
mov rcx, r15
call fcn.004dbb80
mov rcx, r13
call fcn.004dbb50
lea rax, [rbx - 1]
cmp rax, 0x1e
jbe 0x4f40a1
vmovdqu ymm1, ymmword [0x005e20e0]
mov rax, rbx
shr rax, 5
vmovdqu xmm2, xmmword [r14]
vinsertf128 ymm0, ymm2, xmmword [r14 + 0x10], 1
vxorps ymm0, ymm0, ymm1
vmovdqu ymmword [r12], ymm0
cmp rax, 2
jne 0x4f3f30
vmovdqu xmm5, xmmword [r14 + 0x20]
vinsertf128 ymm0, ymm5, xmmword [r14 + 0x30], 1
vxorps ymm0, ymm0, ymm1
vmovdqu ymmword [r12 + 0x20], ymm0
vzeroupper
movabs rax, 0x5c5c5c5c5c5c5c5c
mov ecx, esi
cmp esi, 8
jae 0x4f3f98
and esi, 4
jne 0x4f40a8
test ecx, ecx
je 0x4f3f00
mov byte [rbp], 0x5c
test cl, 2
jne 0x4f40df
mov r8d, 0x40
mov rdx, r12
mov rcx, r13
call fcn.004dbb80
nop
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp rbx, 0x20
je 0x4f40ee
mov eax, 0x20
vzeroupper
nop word [rax + rax]
movzx edx, byte [r14 + rax]
add rax, 1
xor edx, 0x5c
mov byte [rax + r12 - 1], dl
cmp rax, rbx
jb 0x4f3f48
jmp 0x4f3ed1
cmp rbx, 0x20
je 0x4f40f6
mov eax, 0x20
vzeroupper
nop dword [rax]
movzx edx, byte [r14 + rax]
add rax, 1
xor edx, 0x36
mov byte [rax + r12 - 1], dl
cmp rbx, rax
ja 0x4f3f78
jmp 0x4f3e34
lea ecx, [rsi - 1]
mov edx, esi
mov rdi, rbp
shr ecx, 3
mov qword [rbp + rdx - 8], rax
rep stosq qword [rdi], rax
jmp 0x4f3f00
lea ecx, [rsi - 1]
mov edx, esi
mov rdi, rbp
shr ecx, 3
mov qword [rbp + rdx - 8], rax
rep stosq qword [rdi], rax
jmp 0x4f3e64
call fcn.004dbb50
mov r8, rbx
mov rdx, r14
mov rcx, r15
lea r14, [rsp + 0x20]
mov esi, 0x20
mov ebx, 0x20
call fcn.004dbb80
lea rbp, [r12 + 0x20]
mov rdx, r14
mov rcx, r15
call fcn.004dbd40
mov rcx, r15
call fcn.004dbb50
vmovdqu xmm4, xmmword [rsp + 0x20]
vinsertf128 ymm0, ymm4, xmmword [rsp + 0x30], 1
vxorps ymm0, ymm0, ymmword [str.66666666666666666666666666666666_]
vmovdqu ymmword [r12], ymm0
vzeroupper
jmp 0x4f3e34
xor eax, eax
jmp 0x4f3f78
movabs rdx, 0x3636363636363636
mov r8d, 0x40
mov rcx, r15
mov qword [r12 + 8], rdx
mov rbp, r12
mov esi, 0x40
movabs rax, 0x3636363636363636
mov qword [r12 + 0x18], rdx
mov qword [r12 + 0x28], rdx
mov qword [r12 + 0x38], rdx
mov rdx, r12
mov qword [r12], rax
mov qword [r12 + 0x10], rax
mov qword [r12 + 0x20], rax
mov qword [r12 + 0x30], rax
call fcn.004dbb80
mov rcx, r13
call fcn.004dbb50
jmp 0x4f3ed1
xor eax, eax
jmp 0x4f3f48
mov dword [rbp], 0x5c5c5c5c
mov dword [rbp + rcx - 4], 0x5c5c5c5c
jmp 0x4f3f00
mov eax, 0x3636
mov word [rbp + rcx - 2], ax
jmp 0x4f3e64
mov dword [rbp], 0x36363636
mov dword [rbp + rcx - 4], 0x36363636
jmp 0x4f3e64
mov edx, 0x5c5c
mov word [rbp + rcx - 2], dx
jmp 0x4f3f00
vzeroupper
jmp 0x4f3ed1
vzeroupper
jmp 0x4f3e34