Function at 0x100418300
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, 0xc8
mov rbx, rcx
mov edi, edx
mov r13, r8
mov rsi, r9
test rcx, rcx
je 0x100418433
mov qword [rcx + 0xc4], 0
mov ecx, edx
call fcn.100419450
mov ecx, edi
movsxd rbp, eax
mov dword [rbx + 8], ebp
mov r12, rbp
call fcn.100419460
mov dword [rbx], edi
mov dword [rbx + 4], eax
mov r15d, eax
cmp rbp, rsi
jb 0x100418420
test rsi, rsi
je 0x1004183b2
lea rdx, [rsi - 1]
cmp rdx, 6
jbe 0x1004186b8
mov rax, rbx
sub rax, r13
lea rcx, [rax + 0x83]
xor eax, eax
cmp rcx, 0xe
ja 0x100418470
lea r14, [rsp + 0x40]
nop dword [rax + rax]
movzx edx, byte [r13 + rax]
mov ecx, edx
xor edx, 0x5c
xor ecx, 0x36
mov byte [rbx + rax + 0x84], dl
mov byte [r14 + rax], cl
add rax, 1
cmp rsi, rax
jne 0x100418390
cmp rsi, rbp
jae 0x1004183e1
sub rbp, rsi
lea rcx, [rsp + rsi + 0x40]
mov edx, 0x36
mov r8, rbp
call sub.cygwin1.dll_memset
lea rcx, [rbx + rsi + 0x84]
mov r8, rbp
mov edx, 0x5c
call sub.cygwin1.dll_memset
lea rsi, [rbx + 0xc]
mov edx, edi
mov rcx, rsi
call fcn.100419320
mov edx, eax
mov eax, 1
test edx, edx
je 0x100418698
mov dword [rbx + 0xc8], eax
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r14, [rsp + 0x40]
mov edx, edi
mov rcx, r14
call fcn.100419320
test eax, eax
je 0x100418440
mov eax, 1
jmp 0x100418404
mov r8d, esi
mov rdx, r13
mov rcx, r14
call fcn.100419360
test eax, eax
jne 0x100418433
lea r13, [rsp + 0x20]
mov rcx, r14
mov rdx, r13
call fcn.100419400
test eax, eax
jne 0x100418433
movsxd rsi, r15d
jmp 0x10041835a
cmp rdx, 0xe
jbe 0x1004186bf
movdqu xmm0, xmmword [r13]
movdqa xmm1, xmmword [str.6666666666666666_]
mov rax, rsi
movdqa xmm2, xmmword [0x100427ca0]
shr rax, 4
pxor xmm0, xmm1
movaps xmmword [rsp + 0x40], xmm0
movdqu xmm0, xmmword [r13]
pxor xmm0, xmm2
movups xmmword [rbx + 0x84], xmm0
cmp rax, 1
je 0x100418521
movdqu xmm0, xmmword [r13 + 0x10]
pxor xmm0, xmm1
movaps xmmword [rsp + 0x50], xmm0
movdqu xmm0, xmmword [r13 + 0x10]
pxor xmm0, xmm2
movups xmmword [rbx + 0x94], xmm0
cmp rax, 2
je 0x100418521
movdqu xmm0, xmmword [r13 + 0x20]
pxor xmm0, xmm1
movaps xmmword [rsp + 0x60], xmm0
movdqu xmm0, xmmword [r13 + 0x20]
pxor xmm0, xmm2
movups xmmword [rbx + 0xa4], xmm0
cmp rax, 3
je 0x100418521
movdqu xmm3, xmmword [r13 + 0x30]
movdqa xmm0, xmm3
pxor xmm1, xmm3
pxor xmm0, xmm2
movaps xmmword [rsp + 0x70], xmm1
movups xmmword [rbx + 0xb4], xmm0
mov rax, rsi
and rax, 0xfffffffffffffff0
test sil, 0xf
je 0x1004183b2
mov rdx, rsi
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 6
jbe 0x100418583
movq xmm0, qword [r13 + rax]
mov rcx, rdx
movq xmm1, qword [str.6666666666666666_]
and rcx, 0xfffffffffffffff8
pxor xmm1, xmm0
movq qword [rsp + rax + 0x40], xmm1
movq xmm1, qword [0x100427ca0]
pxor xmm0, xmm1
movq qword [rbx + rax + 0x84], xmm0
add rax, rcx
and edx, 7
je 0x1004183b2
movzx edx, byte [r13 + rax]
mov ecx, edx
xor edx, 0x5c
xor ecx, 0x36
mov byte [rbx + rax + 0x84], dl
mov byte [rsp + rax + 0x40], cl
lea rcx, [rax + 1]
cmp rcx, rsi
jae 0x1004183b2
movzx edx, byte [r13 + rax + 1]
lea rcx, [rax + 2]
mov r8d, edx
xor edx, 0x5c
xor r8d, 0x36
mov byte [rbx + rax + 0x85], dl
mov byte [rsp + rax + 0x41], r8b
cmp rcx, rsi
jae 0x1004183b2
movzx edx, byte [r13 + rax + 2]
lea rcx, [rax + 3]
mov r8d, edx
xor edx, 0x5c
xor r8d, 0x36
mov byte [rbx + rax + 0x86], dl
mov byte [rsp + rax + 0x42], r8b
cmp rcx, rsi
jae 0x1004183b2
movzx edx, byte [r13 + rax + 3]
lea rcx, [rax + 4]
mov r8d, edx
xor edx, 0x5c
xor r8d, 0x36
mov byte [rbx + rax + 0x87], dl
mov byte [rsp + rax + 0x43], r8b
cmp rcx, rsi
jae 0x1004183b2
movzx edx, byte [r13 + rax + 4]
lea rcx, [rax + 5]
mov r8d, edx
xor edx, 0x5c
xor r8d, 0x36
mov byte [rbx + rax + 0x88], dl
mov byte [rsp + rax + 0x44], r8b
cmp rcx, rsi
jae 0x1004183b2
movzx edx, byte [r13 + rax + 5]
mov r8d, edx
xor edx, 0x5c
mov byte [rbx + rax + 0x89], dl
xor r8d, 0x36
lea rdx, [rax + 6]
mov byte [rsp + rax + 0x45], r8b
cmp rdx, rsi
jae 0x1004183b2
movzx eax, byte [r13 + rax + 6]
mov ecx, eax
xor eax, 0x5c
xor ecx, 0x36
mov byte [rbx + rdx + 0x84], al
mov byte [rsp + rdx + 0x40], cl
jmp 0x1004183b2
lea rdx, [rsp + 0x40]
mov r8d, r12d
mov rcx, rsi
call fcn.100419360
test eax, eax
setne al
movzx eax, al
jmp 0x1004183fe
xor eax, eax
jmp 0x100418386
mov rdx, rsi
xor eax, eax
jmp 0x100418542