Function at 0x58f030
Capabilities:
Authenticate hmac

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov r15, rcx
mov r12, rdx
mov rbx, r8
lea r13, [rcx + 0x80]
cmp r8, 0x40
ja 0x58f620
mov esi, 0x40
call fcn.00584600
sub rsi, rbx
test rbx, rbx
je 0x58f730
cmp rbx, 0x1f
jbe 0x58f6c0
vmovdqu8 ymm0, ymmword [str.666666666666666666666666666666666666666666666666]
mov rax, rbx
vpxor ymm1, ymm0, ymmword [r12]
shr rax, 5
vmovdqu8 ymmword [rsp + 0x40], ymm1
cmp rax, 2
jne 0x58f389
vpxor ymm0, ymm0, ymmword [r12 + 0x20]
lea rbp, [rbx - 1]
vmovdqu8 ymmword [rsp + 0x60], ymm0
vzeroupper
lea r14, [rsp + 0x40]
lea rdi, [r14 + rbx]
mov edx, esi
movabs rax, 0x3636363636363636
cmp esi, 0x20
jae 0x58f6c7
nop word [rax + rax]
test sil, 0x10
jne 0x58f7c4
test dl, 8
jne 0x58f7f0
test dl, 4
jne 0x58f7fd
test edx, edx
jne 0x58f6a0
mov rcx, r15
mov r8d, 0x40
mov rdx, r14
call fcn.00584630
mov rcx, r13
call fcn.00584600
cmp rbp, 0x1e
jbe 0x58f797
vmovdqu8 ymm0, ymmword [0x0077ce00]
mov rax, rbx
vpxor ymm1, ymm0, ymmword [r12]
shr rax, 5
vmovdqu8 ymmword [rsp + 0x40], ymm1
cmp rax, 2
jne 0x58f1c0
vpxor ymm0, ymm0, ymmword [r12 + 0x20]
vmovdqu8 ymmword [rsp + 0x60], ymm0
vzeroupper
mov edx, esi
movabs rax, 0x5c5c5c5c5c5c5c5c
cmp esi, 0x20
jae 0x58f5c0
and esi, 0x10
jne 0x58f79e
test dl, 8
jne 0x58f7b7
test dl, 4
jne 0x58f7dd
test edx, edx
jne 0x58f680
mov r8d, 0x40
mov rdx, r14
mov rcx, r13
call fcn.00584630
nop
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp rbx, 0x20
je 0x58f81d
mov eax, 0x20
vzeroupper
mov rcx, rbx
sub rbp, rax
sub rcx, rax
cmp rbp, 0xe
jbe 0x58f20c
vmovdqu8 xmm0, xmmword [0x0077ce20]
mov rdx, rcx
vpxor xmm0, xmm0, xmmword [r12 + rax]
and rdx, 0xfffffffffffffff0
vmovdqu8 xmmword [rsp + rax + 0x40], xmm0
add rax, rdx
cmp rcx, rdx
je 0x58f15e
movzx edx, byte [r12 + rax]
lea rcx, [rax + 1]
xor edx, 0x5c
mov byte [rsp + rax + 0x40], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 1]
lea rcx, [rax + 2]
xor edx, 0x5c
mov byte [rsp + rax + 0x41], dl
cmp rcx, rbx
jae 0x58f15e
movzx edx, byte [r12 + rax + 2]
lea rcx, [rax + 3]
xor edx, 0x5c
mov byte [rsp + rax + 0x42], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 3]
lea rcx, [rax + 4]
xor edx, 0x5c
mov byte [rsp + rax + 0x43], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 4]
lea rcx, [rax + 5]
xor edx, 0x5c
mov byte [rsp + rax + 0x44], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 5]
lea rcx, [rax + 6]
xor edx, 0x5c
mov byte [rsp + rax + 0x45], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 6]
lea rcx, [rax + 7]
xor edx, 0x5c
mov byte [rsp + rax + 0x46], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 7]
lea rcx, [rax + 8]
xor edx, 0x5c
mov byte [rsp + rax + 0x47], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 8]
lea rcx, [rax + 9]
xor edx, 0x5c
mov byte [rsp + rax + 0x48], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 9]
lea rcx, [rax + 0xa]
xor edx, 0x5c
mov byte [rsp + rax + 0x49], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 0xa]
lea rcx, [rax + 0xb]
xor edx, 0x5c
mov byte [rsp + rax + 0x4a], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 0xb]
lea rcx, [rax + 0xc]
xor edx, 0x5c
mov byte [rsp + rax + 0x4b], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 0xc]
lea rcx, [rax + 0xd]
xor edx, 0x5c
mov byte [rsp + rax + 0x4c], dl
cmp rbx, rcx
jbe 0x58f15e
movzx edx, byte [r12 + rax + 0xd]
xor edx, 0x5c
mov byte [rsp + rax + 0x4d], dl
lea rdx, [rax + 0xe]
cmp rbx, rdx
jbe 0x58f15e
movzx eax, byte [r12 + rax + 0xe]
xor eax, 0x5c
mov byte [rsp + rdx + 0x40], al
jmp 0x58f15e
cmp rbx, 0x20
je 0x58f810
mov eax, 0x20
vzeroupper
lea rbp, [rbx - 1]
mov rdx, rbp
mov rcx, rbx
sub rdx, rax
sub rcx, rax
cmp rdx, 0xe
jbe 0x58f3dc
vmovdqu8 xmm0, xmmword [0x0077cde0]
mov rdx, rcx
vpxor xmm0, xmm0, xmmword [r12 + rax]
and rdx, 0xfffffffffffffff0
vmovdqu8 xmmword [rsp + rax + 0x40], xmm0
add rax, rdx
cmp rcx, rdx
je 0x58f0bc
movzx edx, byte [r12 + rax]
lea rcx, [rax + 1]
xor edx, 0x36
mov byte [rsp + rax + 0x40], dl
cmp rbx, rcx
jbe 0x58f0bc
movzx edx, byte [r12 + rax + 1]
lea rcx, [rax + 2]
xor edx, 0x36
mov byte [rsp + rax + 0x41], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 2]
lea rcx, [rax + 3]
xor edx, 0x36
mov byte [rsp + rax + 0x42], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 3]
lea rcx, [rax + 4]
xor edx, 0x36
mov byte [rsp + rax + 0x43], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 4]
lea rcx, [rax + 5]
xor edx, 0x36
mov byte [rsp + rax + 0x44], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 5]
lea rcx, [rax + 6]
xor edx, 0x36
mov byte [rsp + rax + 0x45], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 6]
lea rcx, [rax + 7]
xor edx, 0x36
mov byte [rsp + rax + 0x46], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 7]
lea rcx, [rax + 8]
xor edx, 0x36
mov byte [rsp + rax + 0x47], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 8]
lea rcx, [rax + 9]
xor edx, 0x36
mov byte [rsp + rax + 0x48], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 9]
lea rcx, [rax + 0xa]
xor edx, 0x36
mov byte [rsp + rax + 0x49], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 0xa]
lea rcx, [rax + 0xb]
xor edx, 0x36
mov byte [rsp + rax + 0x4a], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 0xb]
lea rcx, [rax + 0xc]
xor edx, 0x36
mov byte [rsp + rax + 0x4b], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 0xc]
lea rcx, [rax + 0xd]
xor edx, 0x36
mov byte [rsp + rax + 0x4c], dl
cmp rbx, rcx
jbe 0x58f53c
movzx edx, byte [r12 + rax + 0xd]
xor edx, 0x36
mov byte [rsp + rax + 0x4d], dl
lea rdx, [rax + 0xe]
cmp rbx, rdx
jbe 0x58f53c
movzx eax, byte [r12 + rax + 0xe]
xor eax, 0x36
mov byte [rsp + rdx + 0x40], al
lea r14, [rsp + 0x40]
lea rdi, [r14 + rbx]
mov edx, esi
movabs rax, 0x3636363636363636
cmp esi, 0x20
jb 0x58f0e0
mov edx, esi
lea rdx, [rdi + rdx + 8]
lea rcx, [rdi + 8]
mov qword [rdi], rax
and rcx, 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, rcx
add edx, esi
and edx, 0xffffffe0
cmp edx, 0x20
jb 0x58f104
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 0x58f596
jmp 0x58f104
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
mov rdx, rdi
add edx, esi
and edx, 0xffffffe0
cmp edx, 0x20
jb 0x58f196
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 0x58f5fc
jmp 0x58f196
call fcn.00584600
mov r8, rbx
mov rdx, r12
mov rcx, r15
lea r12, [rsp + 0x20]
call fcn.00584630
mov rdx, r12
mov rcx, r15
call fcn.00584ce0
mov rcx, r15
call fcn.00584600
vmovdqu8 ymm0, ymmword [str.666666666666666666666666666666666666666666666666]
mov ebx, 0x20
vpxor ymm0, ymm0, ymmword [rsp + 0x20]
mov esi, 0x20
mov ebp, 0x1f
vmovdqu8 ymmword [rsp + 0x40], ymm0
vzeroupper
jmp 0x58f0bc
mov byte [rdi], 0x5c
test dl, 2
je 0x58f196
mov ecx, 0x5c5c
mov word [rdi + rdx - 2], cx
jmp 0x58f196
mov byte [rdi], 0x36
test dl, 2
je 0x58f104
mov eax, 0x3636
mov word [rdi + rdx - 2], ax
jmp 0x58f104
xor eax, eax
jmp 0x58f39b
mov edx, esi
lea rdx, [rdi + rdx + 8]
lea rcx, [rdi + 8]
mov qword [rdi], rax
and rcx, 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, rcx
add edx, esi
and edx, 0xffffffe0
cmp edx, 0x20
jb 0x58f104
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 0x58f703
jmp 0x58f104
movabs rdx, 0x3636363636363636
lea r14, [rsp + 0x40]
movabs rax, 0x3636363636363636
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x58], rdx
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x78], rdx
mov r8d, 0x40
mov rdx, r14
mov rcx, r15
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x70], rax
call fcn.00584630
mov rcx, r13
call fcn.00584600
mov rdi, r14
mov esi, 0x40
jmp 0x58f15e
xor eax, eax
jmp 0x58f1d2
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 0x58f196
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x58f196
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 0x58f104
mov dword [rdi], 0x5c5c5c5c
mov dword [rdi + rdx - 4], 0x5c5c5c5c
jmp 0x58f196
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x58f104
mov dword [rdi], 0x36363636
mov dword [rdi + rdx - 4], 0x36363636
jmp 0x58f104
mov ebp, 0x1f
vzeroupper
jmp 0x58f0bc
vzeroupper
jmp 0x58f15e