Function at 0x557ad0
Capabilities:
Authenticate hmac

Disassembly:
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
add rsp, 0xffffffffffffff80
mov r15, rcx
mov r12, rdx
mov rbx, r8
lea r13, [rcx + 0x80]
cmp r8, 0x40
ja 0x557da0
mov esi, 0x40
call fcn.0054f020
sub rsi, rbx
test rbx, rbx
je 0x558080
mov rcx, rbx
cmp rbx, 0xf
jbe 0x558000
vmovdqu xmm0, xmmword [str.666666666666666666666666]
mov rax, rbx
vpxor xmm1, xmm0, xmmword [r12]
shr rax, 4
vmovdqu xmmword [rsp + 0x40], xmm1
cmp rax, 1
je 0x557dff
vpxor xmm1, xmm0, xmmword [r12 + 0x10]
vmovdqu xmmword [rsp + 0x50], xmm1
cmp rax, 2
je 0x557dfa
vpxor xmm1, xmm0, xmmword [r12 + 0x20]
vmovdqu xmmword [rsp + 0x60], xmm1
cmp rax, 4
jne 0x558070
vpxor xmm0, xmm0, xmmword [r12 + 0x30]
vmovdqu xmmword [rsp + 0x70], xmm0
lea r14, [rsp + 0x40]
lea rdi, [rsp + rbx + 0x40]
mov edx, esi
movabs rax, 0x3636363636363636
cmp esi, 0x20
jae 0x558010
test sil, 0x10
jne 0x558114
test dl, 8
jne 0x558140
test dl, 4
jne 0x55814d
test edx, edx
jne 0x557fe0
mov rdx, r14
mov r8d, 0x40
mov rcx, r15
call fcn.0054f050
mov rcx, r13
call fcn.0054f020
lea rdx, [rbx - 1]
cmp rdx, 0xe
jbe 0x5580e7
vmovdqu xmm0, xmmword [0x006fc640]
mov rax, rbx
vpxor xmm1, xmm0, xmmword [r12]
shr rax, 4
vmovdqu xmmword [rsp + 0x40], xmm1
cmp rax, 1
je 0x557ca0
vpxor xmm1, xmm0, xmmword [r12 + 0x10]
vmovdqu xmmword [rsp + 0x50], xmm1
cmp rax, 2
je 0x557ca0
vpxor xmm1, xmm0, xmmword [r12 + 0x20]
vmovdqu xmmword [rsp + 0x60], xmm1
cmp rax, 4
jne 0x557ca0
vpxor xmm0, xmm0, xmmword [r12 + 0x30]
vmovdqu xmmword [rsp + 0x70], xmm0
mov edx, esi
movabs rax, 0x5c5c5c5c5c5c5c5c
cmp esi, 0x20
jae 0x557f60
and esi, 0x10
jne 0x5580ee
test dl, 8
jne 0x558107
test dl, 4
jne 0x55812d
test edx, edx
jne 0x557fc0
mov r8d, 0x40
mov rdx, r14
mov rcx, r13
call fcn.0054f050
nop
sub rsp, 0xffffffffffffff80
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 0x557c42
mov rcx, rbx
sub rdx, rax
sub rcx, rax
cmp rdx, 6
jbe 0x557ce6
mov rdx, rcx
vmovq xmm0, qword [r12 + rax]
vmovq xmm1, qword [0x006fc650]
vpxor xmm0, xmm0, xmm1
and rdx, 0xfffffffffffffff8
vmovq qword [rsp + rax + 0x40], xmm0
add rax, rdx
cmp rcx, rdx
je 0x557c42
movzx edx, byte [r12 + rax]
xor edx, 0x5c
mov byte [rsp + rax + 0x40], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x557c42
movzx ecx, byte [r12 + rax + 1]
lea rdx, [rax + 2]
xor ecx, 0x5c
mov byte [rsp + rax + 0x41], cl
cmp rdx, rbx
jae 0x557c42
movzx ecx, byte [r12 + rax + 2]
lea rdx, [rax + 3]
xor ecx, 0x5c
mov byte [rsp + rax + 0x42], cl
cmp rdx, rbx
jae 0x557c42
movzx ecx, byte [r12 + rax + 3]
lea rdx, [rax + 4]
xor ecx, 0x5c
mov byte [rsp + rax + 0x43], cl
cmp rdx, rbx
jae 0x557c42
movzx ecx, byte [r12 + rax + 4]
lea rdx, [rax + 5]
xor ecx, 0x5c
mov byte [rsp + rax + 0x44], cl
cmp rbx, rdx
jbe 0x557c42
movzx ecx, byte [r12 + rax + 5]
xor ecx, 0x5c
mov byte [rsp + rax + 0x45], cl
add rax, 6
cmp rbx, rax
jbe 0x557c42
movzx edx, byte [r12 + rax]
xor edx, 0x5c
mov byte [rsp + rax + 0x40], dl
jmp 0x557c42
call fcn.0054f020
mov r8, rbx
mov rdx, r12
mov rcx, r15
lea r12, [rsp + 0x20]
call fcn.0054f050
mov rcx, r15
mov esi, 0x20
mov rdx, r12
mov ebx, 0x20
call fcn.0054f690
mov rcx, r15
call fcn.0054f020
vmovdqu xmm0, xmmword [str.666666666666666666666666]
mov ecx, 0x20
vpxor xmm1, xmm0, xmmword [rsp + 0x20]
vpxor xmm0, xmm0, xmmword [rsp + 0x30]
vmovdqu xmmword [rsp + 0x40], xmm1
vmovdqu xmmword [rsp + 0x50], xmm0
mov eax, 2
shl rax, 4
cmp rax, rcx
je 0x557b7c
mov r8, rcx
dec rcx
sub rcx, rax
sub r8, rax
cmp rcx, 6
jbe 0x557e49
mov rdx, r8
vmovq xmm0, qword [r12 + rax]
vmovq xmm1, qword [0x006fc630]
vpxor xmm0, xmm0, xmm1
and rdx, 0xfffffffffffffff8
vmovq qword [rsp + rax + 0x40], xmm0
add rax, rdx
cmp r8, rdx
je 0x557b7c
movzx edx, byte [r12 + rax]
xor edx, 0x36
mov byte [rsp + rax + 0x40], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x557b7c
movzx ecx, byte [r12 + rax + 1]
lea rdx, [rax + 2]
xor ecx, 0x36
mov byte [rsp + rax + 0x41], cl
cmp rdx, rbx
jae 0x557edc
movzx ecx, byte [r12 + rax + 2]
lea rdx, [rax + 3]
xor ecx, 0x36
mov byte [rsp + rax + 0x42], cl
cmp rdx, rbx
jae 0x557edc
movzx ecx, byte [r12 + rax + 3]
lea rdx, [rax + 4]
xor ecx, 0x36
mov byte [rsp + rax + 0x43], cl
cmp rdx, rbx
jae 0x557edc
movzx ecx, byte [r12 + rax + 4]
lea rdx, [rax + 5]
xor ecx, 0x36
mov byte [rsp + rax + 0x44], cl
cmp rdx, rbx
jae 0x557edc
movzx ecx, byte [r12 + rax + 5]
xor ecx, 0x36
mov byte [rsp + rax + 0x45], cl
add rax, 6
cmp rax, rbx
jae 0x557edc
movzx edx, byte [r12 + rax]
xor edx, 0x36
mov byte [rsp + rax + 0x40], dl
lea r14, [rsp + 0x40]
lea rdi, [rsp + rbx + 0x40]
mov edx, esi
movabs rax, 0x3636363636363636
cmp esi, 0x20
jb 0x557b9b
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 0x557bbf
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 0x557f37
jmp 0x557bbf
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 0x557c7a
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 0x557f9c
jmp 0x557c7a
mov byte [rdi], 0x5c
test dl, 2
je 0x557c7a
mov word [rdi + rdx - 2], 0x5c5c
jmp 0x557c7a
mov byte [rdi], 0x36
test dl, 2
je 0x557bbf
mov word [rdi + rdx - 2], 0x3636
jmp 0x557bbf
xor eax, eax
jmp 0x557e0c
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 0x557bbf
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 0x55804c
jmp 0x557bbf
mov eax, 3
jmp 0x557dff
movabs rdx, 0x3636363636363636
lea r14, [rsp + 0x40]
movabs rax, 0x3636363636363636
mov r8d, 0x40
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x58], rdx
mov rcx, r15
mov rdi, r14
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x78], rdx
mov rdx, r14
mov esi, 0x40
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x70], rax
call fcn.0054f050
mov rcx, r13
call fcn.0054f020
jmp 0x557c42
xor eax, eax
jmp 0x557cac
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 0x557c7a
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x557c7a
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 0x557bbf
mov dword [rdi], 0x5c5c5c5c
mov dword [rdi + rdx - 4], 0x5c5c5c5c
jmp 0x557c7a
mov qword [rdi], rax
mov qword [rdi + rdx - 8], rax
jmp 0x557bbf
mov dword [rdi], 0x36363636
mov dword [rdi + rdx - 4], 0x36363636
jmp 0x557bbf