Function at 0x58e330
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 0x58e6b0
mov esi, 0x40
call fcn.0056aad0
lea rdi, [r12 + rbx]
sub rsi, rbx
test rbx, rbx
je 0x58ea30
mov rcx, rbx
cmp rbx, 0xf
jbe 0x58e9b0
vmovups xmm0, xmmword [str.6666666666666666g]
mov rax, rbx
vxorps xmm1, xmm0, xmmword [r13]
shr rax, 4
vmovups xmmword [r12], xmm1
cmp rax, 1
je 0x58e715
vxorps xmm1, xmm0, xmmword [r13 + 0x10]
vmovups xmmword [r12 + 0x10], xmm1
cmp rax, 2
je 0x58e710
vxorps xmm1, xmm0, xmmword [r13 + 0x20]
vmovups xmmword [r12 + 0x20], xmm1
cmp rax, 4
jne 0x58ea20
vxorps xmm0, xmm0, xmmword [r13 + 0x30]
vmovups xmmword [r12 + 0x30], xmm0
mov edx, esi
movabs rax, 0x3636363636363636
cmp esi, 0x20
jae 0x58e9b7
nop word cs:[rax + rax]
nop dword [rax]
test sil, 0x10
jne 0x58eabe
test dl, 8
jne 0x58eaea
test dl, 4
jne 0x58eaf7
test edx, edx
jne 0x58e990
mov r8d, 0x40
mov rdx, r12
mov rcx, r15
call fcn.0056ab00
mov rcx, r14
call fcn.0056aad0
lea rax, [rbx - 1]
cmp rax, 0xe
jbe 0x58ea91
vmovups xmm0, xmmword [0x006f4290]
mov rax, rbx
vxorps xmm1, xmm0, xmmword [r13]
shr rax, 4
vmovups xmmword [r12], xmm1
cmp rax, 1
je 0x58e510
vxorps xmm1, xmm0, xmmword [r13 + 0x10]
vmovups xmmword [r12 + 0x10], xmm1
cmp rax, 2
je 0x58e510
vxorps xmm1, xmm0, xmmword [r13 + 0x20]
vmovups xmmword [r12 + 0x20], xmm1
cmp rax, 4
jne 0x58e510
vxorps xmm0, xmm0, xmmword [r13 + 0x30]
vmovups xmmword [r12 + 0x30], xmm0
mov edx, esi
movabs rax, 0x5c5c5c5c5c5c5c5c
cmp esi, 0x20
jae 0x58e910
and esi, 0x10
jne 0x58ea98
test dl, 8
jne 0x58eab1
test dl, 4
jne 0x58ead7
test edx, edx
jne 0x58e970
mov r8d, 0x40
mov rdx, r12
mov rcx, r14
call fcn.0056ab00
nop
add rsp, 0xb0
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret
mov rax, rbx
and rax, 0xfffffffffffffff0
test bl, 0xf
je 0x58e4b3
movzx edx, byte [r13 + rax]
xor edx, 0x5c
mov byte [r12 + rax], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 1]
lea rdx, [rax + 2]
xor ecx, 0x5c
mov byte [r12 + rax + 1], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 2]
lea rdx, [rax + 3]
xor ecx, 0x5c
mov byte [r12 + rax + 2], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 3]
lea rdx, [rax + 4]
xor ecx, 0x5c
mov byte [r12 + rax + 3], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 4]
lea rdx, [rax + 5]
xor ecx, 0x5c
mov byte [r12 + rax + 4], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 5]
lea rdx, [rax + 6]
xor ecx, 0x5c
mov byte [r12 + rax + 5], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 6]
lea rdx, [rax + 7]
xor ecx, 0x5c
mov byte [r12 + rax + 6], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 7]
lea rdx, [rax + 8]
xor ecx, 0x5c
mov byte [r12 + rax + 7], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 8]
lea rdx, [rax + 9]
xor ecx, 0x5c
mov byte [r12 + rax + 8], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 9]
lea rdx, [rax + 0xa]
xor ecx, 0x5c
mov byte [r12 + rax + 9], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 0xa]
lea rdx, [rax + 0xb]
xor ecx, 0x5c
mov byte [r12 + rax + 0xa], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 0xb]
lea rdx, [rax + 0xc]
xor ecx, 0x5c
mov byte [r12 + rax + 0xb], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 0xc]
lea rdx, [rax + 0xd]
xor ecx, 0x5c
mov byte [r12 + rax + 0xc], cl
cmp rdx, rbx
jae 0x58e4b3
movzx ecx, byte [r13 + rax + 0xd]
xor ecx, 0x5c
mov byte [r12 + rax + 0xd], cl
add rax, 0xe
cmp rax, rbx
jae 0x58e4b3
movzx edx, byte [r13 + rax]
xor edx, 0x5c
mov byte [r12 + rax], dl
jmp 0x58e4b3
call fcn.0056aad0
mov r8, rbx
mov rdx, r13
mov rcx, r15
lea r13, [rsp + 0x20]
call fcn.0056ab00
mov rcx, r15
lea rdi, [r12 + 0x20]
mov rdx, r13
mov esi, 0x20
mov ebx, 0x20
call fcn.0056acc0
mov rcx, r15
call fcn.0056aad0
vmovups xmm0, xmmword [str.6666666666666666g]
mov ecx, 0x20
vxorps xmm1, xmm0, xmmword [rsp + 0x20]
vxorps xmm0, xmm0, xmmword [rsp + 0x30]
vmovups xmmword [r12], xmm1
vmovups xmmword [r12 + 0x10], xmm0
mov eax, 2
shl rax, 4
cmp rax, rcx
je 0x58e3ec
movzx edx, byte [r13 + rax]
xor edx, 0x36
mov byte [r12 + rax], dl
lea rdx, [rax + 1]
cmp rbx, rdx
jbe 0x58e3ec
movzx ecx, byte [r13 + rax + 1]
lea rdx, [rax + 2]
xor ecx, 0x36
mov byte [r12 + rax + 1], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 2]
lea rdx, [rax + 3]
xor ecx, 0x36
mov byte [r12 + rax + 2], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 3]
lea rdx, [rax + 4]
xor ecx, 0x36
mov byte [r12 + rax + 3], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 4]
lea rdx, [rax + 5]
xor ecx, 0x36
mov byte [r12 + rax + 4], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 5]
lea rdx, [rax + 6]
xor ecx, 0x36
mov byte [r12 + rax + 5], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 6]
lea rdx, [rax + 7]
xor ecx, 0x36
mov byte [r12 + rax + 6], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 7]
lea rdx, [rax + 8]
xor ecx, 0x36
mov byte [r12 + rax + 7], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 8]
lea rdx, [rax + 9]
xor ecx, 0x36
mov byte [r12 + rax + 8], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 9]
lea rdx, [rax + 0xa]
xor ecx, 0x36
mov byte [r12 + rax + 9], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 0xa]
lea rdx, [rax + 0xb]
xor ecx, 0x36
mov byte [r12 + rax + 0xa], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 0xb]
lea rdx, [rax + 0xc]
xor ecx, 0x36
mov byte [r12 + rax + 0xb], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 0xc]
lea rdx, [rax + 0xd]
xor ecx, 0x36
mov byte [r12 + rax + 0xc], cl
cmp rbx, rdx
jbe 0x58e894
movzx ecx, byte [r13 + rax + 0xd]
xor ecx, 0x36
mov byte [r12 + rax + 0xd], cl
add rax, 0xe
cmp rbx, rax
jbe 0x58e894
movzx edx, byte [r13 + rax]
xor edx, 0x36
mov byte [r12 + rax], dl
mov edx, esi
movabs rax, 0x3636363636363636
cmp esi, 0x20
jb 0x58e410
mov edx, esi
lea rcx, [rdi + 8]
mov qword [rdi], rax
lea rdx, [rdi + rdx + 8]
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 0x58e434
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 0x58e8e5
jmp 0x58e434
lea rcx, [rdi + 8]
mov edx, esi
mov qword [rdi], rax
and rcx, 0xfffffffffffffff8
lea rdx, [rdi + rdx + 8]
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 0x58e4eb
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 0x58e94c
jmp 0x58e4eb
mov byte [rdi], 0x5c
test dl, 2
je 0x58e4eb
mov word [rdi + rdx - 2], 0x5c5c
jmp 0x58e4eb
mov byte [rdi], 0x36
test dl, 2
je 0x58e434
mov word [rdi + rdx - 2], 0x3636
jmp 0x58e434
xor eax, eax
jmp 0x58e722
mov edx, esi
lea rcx, [rdi + 8]
mov qword [rdi], rax
lea rdx, [rdi + rdx + 8]
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 0x58e434
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 0x58e9f3
jmp 0x58e434
mov eax, 3
jmp 0x58e715
movabs rdx, 0x3636363636363636
movabs rax, 0x3636363636363636
mov r8d, 0x40
mov rcx, r15
mov qword [r12 + 8], rdx
mov qword [r12 + 0x18], rdx
mov rdi, r12
mov esi, 0x40
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.0056ab00
mov rcx, r14
call fcn.0056aad0
jmp 0x58e4b3
xor eax, eax
jmp 0x58e51c
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 0x58e4eb
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x58e4eb
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 0x58e434
mov dword [rdi], 0x5c5c5c5c
mov dword [rdi + rdx - 4], 0x5c5c5c5c
jmp 0x58e4eb
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x58e434
mov dword [rdi], 0x36363636
mov dword [rdi + rdx - 4], 0x36363636
jmp 0x58e434