Function at 0x4ff9c0
Capabilities:
Authenticate hmac

Disassembly:
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0xb0
lea r12, [rsp + 0x7f]
mov r15, rcx
mov r13, rdx
mov rbx, r8
and r12, 0xffffffffffffffc0
lea r14, [rcx + 0x80]
cmp r8, 0x40
ja 0x4ffd90
call fcn.004dfbb0
mov esi, 0x40
lea rdi, [r12 + rbx]
sub rsi, rbx
test rbx, rbx
je 0x500030
mov rcx, rbx
cmp rbx, 0xf
jbe 0x500010
movdqu xmm0, xmmword [str.6666666666666666_]
movdqu xmm1, xmmword [r13]
mov rax, rbx
shr rax, 4
pxor xmm1, xmm0
movups xmmword [r12], xmm1
cmp rax, 1
je 0x4ffdf7
movdqu xmm1, xmmword [r13 + 0x10]
pxor xmm1, xmm0
movups xmmword [r12 + 0x10], xmm1
cmp rax, 2
je 0x4ffdf2
movdqu xmm1, xmmword [r13 + 0x20]
pxor xmm1, xmm0
movups xmmword [r12 + 0x20], xmm1
cmp rax, 4
jne 0x500020
movdqu xmm2, xmmword [r13 + 0x30]
pxor xmm0, xmm2
movups xmmword [r12 + 0x30], xmm0
movabs rcx, 0x3636363636363636
mov eax, esi
cmp esi, 8
jb 0x4ffbc0
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 0x4ffad8
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [r8 + r9], rcx
cmp edx, eax
jb 0x4ffac4
nop word [rax + rax]
mov r8d, 0x40
mov rdx, r12
mov rcx, r15
call fcn.004dfbe0
mov rcx, r14
call fcn.004dfbb0
lea rax, [rbx - 1]
cmp rax, 0xe
jbe 0x500091
movdqu xmm1, xmmword [0x005f8be0]
movdqu xmm0, xmmword [r13]
mov rax, rbx
shr rax, 4
pxor xmm0, xmm1
movups xmmword [r12], xmm0
cmp rax, 1
je 0x4ffbf0
movdqu xmm0, xmmword [r13 + 0x10]
pxor xmm0, xmm1
movups xmmword [r12 + 0x10], xmm0
cmp rax, 2
je 0x4ffbf0
movdqu xmm0, xmmword [r13 + 0x20]
pxor xmm0, xmm1
movups xmmword [r12 + 0x20], xmm0
cmp rax, 4
jne 0x4ffbf0
movdqu xmm0, xmmword [r13 + 0x30]
pxor xmm1, xmm0
movups xmmword [r12 + 0x30], xmm1
movabs rcx, 0x5c5c5c5c5c5c5c5c
mov eax, esi
cmp esi, 8
jae 0x4fffd0
and esi, 4
jne 0x500098
test eax, eax
je 0x4ffb98
mov byte [rdi], 0x5c
test al, 2
jne 0x5000c0
mov r8d, 0x40
mov rdx, r12
mov rcx, r14
call fcn.004dfbe0
nop
add rsp, 0xb0
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
test sil, 4
jne 0x5000ad
test eax, eax
je 0x4ffad8
mov byte [rdi], 0x36
test al, 2
je 0x4ffad8
mov edx, 0x3636
mov word [rdi + rax - 2], dx
jmp 0x4ffad8
mov rax, rbx
and rax, 0xfffffffffffffff0
test bl, 0xf
je 0x4ffb6b
movzx edx, byte [r13 + rax]
xor edx, 0x5c
mov byte [r12 + rax], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 1]
xor edx, 0x5c
mov byte [r12 + rax + 1], dl
lea rdx, [rax + 2]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 2]
xor edx, 0x5c
mov byte [r12 + rax + 2], dl
lea rdx, [rax + 3]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 3]
xor edx, 0x5c
mov byte [r12 + rax + 3], dl
lea rdx, [rax + 4]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 4]
xor edx, 0x5c
mov byte [r12 + rax + 4], dl
lea rdx, [rax + 5]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 5]
xor edx, 0x5c
mov byte [r12 + rax + 5], dl
lea rdx, [rax + 6]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 6]
xor edx, 0x5c
mov byte [r12 + rax + 6], dl
lea rdx, [rax + 7]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 7]
xor edx, 0x5c
mov byte [r12 + rax + 7], dl
lea rdx, [rax + 8]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 8]
xor edx, 0x5c
mov byte [r12 + rax + 8], dl
lea rdx, [rax + 9]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 9]
xor edx, 0x5c
mov byte [r12 + rax + 9], dl
lea rdx, [rax + 0xa]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 0xa]
xor edx, 0x5c
mov byte [r12 + rax + 0xa], dl
lea rdx, [rax + 0xb]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 0xb]
xor edx, 0x5c
mov byte [r12 + rax + 0xb], dl
lea rdx, [rax + 0xc]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 0xc]
xor edx, 0x5c
mov byte [r12 + rax + 0xc], dl
lea rdx, [rax + 0xd]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 0xd]
xor edx, 0x5c
mov byte [r12 + rax + 0xd], dl
lea rdx, [rax + 0xe]
cmp rdx, rbx
jae 0x4ffb6b
movzx edx, byte [r13 + rax + 0xe]
xor edx, 0x5c
mov byte [r12 + rax + 0xe], dl
jmp 0x4ffb6b
call fcn.004dfbb0
mov r8, rbx
mov rdx, r13
mov rcx, r15
lea r13, [rsp + 0x20]
lea rdi, [r12 + 0x20]
mov esi, 0x20
mov ebx, 0x20
call fcn.004dfbe0
mov rdx, r13
mov rcx, r15
call fcn.004dfdf0
mov rcx, r15
call fcn.004dfbb0
movdqu xmm1, xmmword [rsp + 0x20]
mov ecx, 0x20
movdqu xmm0, xmmword [str.6666666666666666_]
pxor xmm1, xmm0
pxor xmm0, xmmword [rsp + 0x30]
movups xmmword [r12], xmm1
movups xmmword [r12 + 0x10], xmm0
mov eax, 2
shl rax, 4
cmp rax, rcx
je 0x4ffa88
movzx edx, byte [r13 + rax]
xor edx, 0x36
mov byte [r12 + rax], dl
lea rdx, [rax + 1]
cmp rbx, rdx
jbe 0x4ffa88
movzx edx, byte [r13 + rax + 1]
xor edx, 0x36
mov byte [r12 + rax + 1], dl
lea rdx, [rax + 2]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 2]
xor edx, 0x36
mov byte [r12 + rax + 2], dl
lea rdx, [rax + 3]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 3]
xor edx, 0x36
mov byte [r12 + rax + 3], dl
lea rdx, [rax + 4]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 4]
xor edx, 0x36
mov byte [r12 + rax + 4], dl
lea rdx, [rax + 5]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 5]
xor edx, 0x36
mov byte [r12 + rax + 5], dl
lea rdx, [rax + 6]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 6]
xor edx, 0x36
mov byte [r12 + rax + 6], dl
lea rdx, [rax + 7]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 7]
xor edx, 0x36
mov byte [r12 + rax + 7], dl
lea rdx, [rax + 8]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 8]
xor edx, 0x36
mov byte [r12 + rax + 8], dl
lea rdx, [rax + 9]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 9]
xor edx, 0x36
mov byte [r12 + rax + 9], dl
lea rdx, [rax + 0xa]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 0xa]
xor edx, 0x36
mov byte [r12 + rax + 0xa], dl
lea rdx, [rax + 0xb]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 0xb]
xor edx, 0x36
mov byte [r12 + rax + 0xb], dl
lea rdx, [rax + 0xc]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 0xc]
xor edx, 0x36
mov byte [r12 + rax + 0xc], dl
lea rdx, [rax + 0xd]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 0xd]
xor edx, 0x36
mov byte [r12 + rax + 0xd], dl
lea rdx, [rax + 0xe]
cmp rbx, rdx
jbe 0x4fff77
movzx edx, byte [r13 + rax + 0xe]
xor edx, 0x36
mov byte [r12 + rax + 0xe], dl
movabs rcx, 0x3636363636363636
mov eax, esi
cmp esi, 8
jb 0x4ffbc0
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 0x4ffad8
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [r8 + r9], rcx
cmp edx, eax
jb 0x4fffb7
jmp 0x4ffad8
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 0x4ffb98
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [r8 + r9], rcx
cmp edx, eax
jb 0x4ffffb
jmp 0x4ffb98
xor eax, eax
jmp 0x4ffe04
mov eax, 3
jmp 0x4ffdf7
movabs rdx, 0x3636363636363636
mov r8d, 0x40
mov rcx, r15
mov rdi, r12
movabs rax, 0x3636363636363636
mov qword [r12 + 8], rdx
mov esi, 0x40
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.004dfbe0
mov rcx, r14
call fcn.004dfbb0
jmp 0x4ffb6b
xor eax, eax
jmp 0x4ffc00
mov edx, eax
mov dword [rdi], 0x5c5c5c5c
mov dword [rdi + rdx - 4], 0x5c5c5c5c
jmp 0x4ffb98
mov dword [rdi], 0x36363636
mov dword [rdi + rax - 4], 0x36363636
jmp 0x4ffad8
mov edx, eax
mov ecx, 0x5c5c
mov word [rdi + rdx - 2], cx
jmp 0x4ffb98