Function at 0x6d321de0
Capabilities:
Encode data using xor

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
test rcx, rcx
mov rbx, rcx
mov rsi, rdx
je 0x6d32267d
test r8d, r8d
je 0x6d321e09
test rdx, rdx
je 0x6d32250f
cmp dword [rbx + 0x10fc], 0x10
jbe 0x6d321e24
mov eax, 0x10
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
mov ecx, dword [rbx + 0x10f0]
mov dword [rsp + 0x28], r8d
call fcn.6d31f1b0
test eax, eax
jne 0x6d321e17
mov edx, dword [rbx + 0x10f8]
mov r8d, dword [rsp + 0x28]
test edx, edx
jne 0x6d3224c0
movsxd rdi, dword [rbx + 0x10fc]
test edi, edi
je 0x6d3224f0
mov ebp, dword [rbx + 0x10f4]
test ebp, ebp
jne 0x6d321e6d
cmp edi, 0xc
je 0x6d322530
movzx r11d, byte [rbx + 0x10e0]
xor byte [rbx + 0x10b0], r11b
cmp edi, 1
je 0x6d321fc2
movzx r13d, byte [rbx + 0x10e1]
xor byte [rbx + 0x10b1], r13b
cmp edi, 2
je 0x6d321fc2
movzx edx, byte [rbx + 0x10e2]
xor byte [rbx + 0x10b2], dl
cmp edi, 3
je 0x6d321fc2
movzx ecx, byte [rbx + 0x10e3]
xor byte [rbx + 0x10b3], cl
cmp edi, 4
je 0x6d321fc2
movzx ebp, byte [rbx + 0x10e4]
xor byte [rbx + 0x10b4], bpl
cmp edi, 5
je 0x6d321fc2
movzx r12d, byte [rbx + 0x10e5]
xor byte [rbx + 0x10b5], r12b
cmp edi, 6
je 0x6d321fc2
movzx r9d, byte [rbx + 0x10e6]
xor byte [rbx + 0x10b6], r9b
cmp edi, 7
je 0x6d321fc2
movzx r10d, byte [rbx + 0x10e7]
xor byte [rbx + 0x10b7], r10b
cmp edi, 8
je 0x6d321fc2
movzx r11d, byte [rbx + 0x10e8]
xor byte [rbx + 0x10b8], r11b
cmp edi, 9
je 0x6d321fc2
movzx r13d, byte [rbx + 0x10e9]
xor byte [rbx + 0x10b9], r13b
cmp edi, 0xa
je 0x6d321fc2
movzx edx, byte [rbx + 0x10ea]
xor byte [rbx + 0x10ba], dl
cmp edi, 0xb
je 0x6d321fc2
movzx ecx, byte [rbx + 0x10eb]
xor byte [rbx + 0x10bb], cl
cmp edi, 0xc
je 0x6d321fc2
movzx ebp, byte [rbx + 0x10ec]
xor byte [rbx + 0x10bc], bpl
cmp edi, 0xd
je 0x6d321fc2
movzx r12d, byte [rbx + 0x10ed]
xor byte [rbx + 0x10bd], r12b
cmp edi, 0xe
je 0x6d321fc2
movzx r9d, byte [rbx + 0x10ee]
xor byte [rbx + 0x10be], r9b
cmp edi, 0xf
je 0x6d321fc2
movzx r10d, byte [rbx + 0x10ef]
xor byte [rbx + 0x10bf], r10b
shl rdi, 3
add qword [rbx + 0x1100], rdi
lea rdi, [rbx + 0x10b0]
mov rcx, rbx
mov dword [rsp + 0x2c], r8d
mov dword [rsp + 0x28], eax
mov rdx, rdi
call fcn.6d3192d0
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
lea r12, [rbx + 0x10e0]
mov edx, 8
mov dword [rsp + 0x2c], r8d
mov dword [rsp + 0x28], eax
mov rcx, r12
call fcn.6d31fcb0
mov rax, qword [rbx + 0x1100]
mov rdx, rdi
mov rcx, rbx
movdqu xmm1, xmmword [rbx + 0x10b0]
bswap rax
mov qword [rbx + 0x10e8], rax
movdqu xmm0, xmmword [rbx + 0x10e0]
pxor xmm0, xmm1
movups xmmword [rbx + 0x10b0], xmm0
call fcn.6d3192d0
mov r8, qword [rbx + 0x10b0]
mov r11, qword [rbx + 0x10b8]
mov edx, 0x10
mov rcx, rdi
mov qword [rbx + 0x10c0], r8
mov qword [rbx + 0x10c8], r11
call fcn.6d31fcb0
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
mov rdx, qword [rbx + 0x10c8]
mov r13, qword [rbx + 0x10c0]
mov rcx, r12
mov dword [rsp + 0x2c], r8d
mov dword [rsp + 0x28], eax
mov qword [rbx + 0x10d8], rdx
mov qword [rbx + 0x10d0], r13
mov edx, 0x10
call fcn.6d31fcb0
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
mov dword [rbx + 0x10fc], 0
mov qword [rbx + 0x1100], 0
mov dword [rbx + 0x10f8], 1
mov r12d, r8d
and r12d, 0xfffffff0
je 0x6d322696
mov rcx, qword [rsi]
xor qword [rbx + 0x10b0], rcx
lea rdi, [rbx + 0x10b0]
mov r9, qword [rsi + 8]
xor qword [rbx + 0x10b8], r9
lea ebp, [r12 - 1]
mov rdx, rdi
mov rcx, rbx
mov r13d, 0x10
shr ebp, 4
mov dword [rsp + 0x2c], r8d
and ebp, 3
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x6d322307
test ebp, ebp
je 0x6d322225
cmp ebp, 1
je 0x6d3221d6
cmp ebp, 2
je 0x6d322190
mov r10, qword [rsi + 0x10]
xor qword [rbx + 0x10b0], r10
mov rdx, rdi
mov dword [rsp + 0x28], eax
mov rax, qword [rsi + 0x18]
mov rcx, rbx
xor qword [rbx + 0x10b8], rax
mov dword [rsp + 0x2c], r8d
mov r13d, 0x20
call fcn.6d3192d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov r8d, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x28]
lea edx, [r13 + 8]
mov dword [rsp + 0x2c], r8d
mov r8d, r13d
mov r11, qword [rsi + r8]
mov rcx, rbx
add r13d, 0x10
xor qword [rbx + 0x10b0], r11
mov rbp, qword [rsi + rdx]
xor qword [rbx + 0x10b8], rbp
mov rdx, rdi
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov r8d, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x28]
mov ecx, r13d
lea r10d, [r13 + 8]
mov dword [rsp + 0x28], eax
mov r9, qword [rsi + rcx]
mov rdx, rdi
mov rcx, rbx
xor qword [rbx + 0x10b0], r9
add r13d, 0x10
mov rax, qword [rsi + r10]
xor qword [rbx + 0x10b8], rax
mov dword [rsp + 0x2c], r8d
call fcn.6d3192d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x6d322307
mov r11d, r13d
lea ebp, [r13 + 8]
mov dword [rsp + 0x2c], r8d
mov rdx, qword [rsi + r11]
xor qword [rbx + 0x10b0], rdx
mov rdx, rdi
mov rcx, qword [rsi + rbp]
xor qword [rbx + 0x10b8], rcx
mov rcx, rbx
mov dword [rsp + 0x28], eax
lea ebp, [r13 + 0x28]
call fcn.6d3192d0
lea r9d, [r13 + 0x10]
lea eax, [r13 + 0x18]
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov rdx, rdi
mov rcx, rbx
mov r10, qword [rsi + r9]
xor qword [rbx + 0x10b0], r10
mov r8, qword [rsi + rax]
xor qword [rbx + 0x10b8], r8
call fcn.6d3192d0
lea r11d, [r13 + 0x20]
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov rdx, qword [rsi + r11]
xor qword [rbx + 0x10b0], rdx
mov rdx, rdi
mov rcx, qword [rsi + rbp]
xor qword [rbx + 0x10b8], rcx
mov rcx, rbx
call fcn.6d3192d0
lea r9d, [r13 + 0x30]
sub qword [rbx + 0x1100], 0xffffffffffffff80
lea eax, [r13 + 0x38]
mov rdx, rdi
mov rcx, rbx
add r13d, 0x40
mov r10, qword [rsi + r9]
xor qword [rbx + 0x10b0], r10
mov r8, qword [rsi + rax]
xor qword [rbx + 0x10b8], r8
call fcn.6d3192d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jb 0x6d322225
mov r12d, r13d
add rsi, r12
cmp r8d, r13d
jbe 0x6d321e17
movsxd r11, dword [rbx + 0x10fc]
lea r12d, [r8 - 1]
lea rdi, [rbx + 0x10b0]
sub r12d, r13d
lea r13, [rsi + r12 + 1]
add rsi, 1
movzx ebp, byte [rsi - 1]
lea edx, [r11 + 1]
and r12d, 3
mov dword [rbx + 0x10fc], edx
xor byte [rbx + r11 + 0x10b0], bpl
cmp edx, 0x10
je 0x6d322625
cmp rsi, r13
je 0x6d321e17
test r12, r12
je 0x6d3223fa
cmp r12, 1
je 0x6d3223c9
cmp r12, 2
je 0x6d32239d
lea ecx, [rdx + 1]
add rsi, 1
movzx r9d, byte [rsi - 1]
movsxd rdx, edx
mov dword [rbx + 0x10fc], ecx
xor byte [rbx + rdx + 0x10b0], r9b
cmp ecx, 0x10
mov edx, ecx
je 0x6d322651
lea r8d, [rdx + 1]
add rsi, 1
movzx r10d, byte [rsi - 1]
movsxd r11, edx
mov dword [rbx + 0x10fc], r8d
mov edx, r8d
xor byte [rbx + r11 + 0x10b0], r10b
cmp r8d, 0x10
je 0x6d3225f9
lea ebp, [rdx + 1]
add rsi, 1
movzx r12d, byte [rsi - 1]
movsxd r9, edx
mov dword [rbx + 0x10fc], ebp
mov edx, ebp
xor byte [rbx + r9 + 0x10b0], r12b
cmp ebp, 0x10
je 0x6d32248d
cmp rsi, r13
je 0x6d321e17
add rsi, 1
lea ecx, [rdx + 1]
movzx r10d, byte [rsi - 1]
movsxd r8, edx
mov dword [rbx + 0x10fc], ecx
xor byte [rbx + r8 + 0x10b0], r10b
cmp ecx, 0x10
je 0x6d3225cd
lea ebp, [rcx + 1]
movzx r11d, byte [rsi]
movsxd r12, ecx
mov dword [rbx + 0x10fc], ebp
xor byte [rbx + r12 + 0x10b0], r11b
cmp ebp, 0x10
je 0x6d3225a1
lea r10d, [rbp + 1]
movzx r9d, byte [rsi + 1]
movsxd rdx, ebp
mov dword [rbx + 0x10fc], r10d
xor byte [rbx + rdx + 0x10b0], r9b
cmp r10d, 0x10
je 0x6d322574
add rsi, 3
lea edx, [r10 + 1]
movzx r8d, byte [rsi - 1]
movsxd rcx, r10d
mov dword [rbx + 0x10fc], edx
xor byte [rbx + rcx + 0x10b0], r8b
cmp edx, 0x10
jne 0x6d3223f1
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
mov dword [rbx + 0x10fc], 0
xor edx, edx
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x6d3223f1
cmp edx, 1
jne 0x6d321e12
mov ecx, dword [rbx + 0x10fc]
cmp ecx, 0xf
jg 0x6d321e12
xor r13d, r13d
test ecx, ecx
jne 0x6d32230d
jmp 0x6d3220d1
cmp qword [rbx + 0x1100], 0
lea rdi, [rbx + 0x10b0]
jne 0x6d321ff1
mov eax, 1
jmp 0x6d321e17
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.adata___NULL
mov r8d, 0x24
call fcn.6d31f170
nop dword [rax + rax]
mov r9, qword [rbx + 0x10e0]
mov r10d, dword [rbx + 0x10e8]
lea r12, [rbx + 0x10e0]
mov byte [rbx + 0x10cc], 0
mov byte [rbx + 0x10cd], 0
mov byte [rbx + 0x10ce], 0
mov byte [rbx + 0x10cf], 1
mov qword [rbx + 0x10c0], r9
mov dword [rbx + 0x10c8], r10d
jmp 0x6d322077
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor r10d, r10d
mov eax, dword [rsp + 0x28]
jmp 0x6d322466
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
xor ebp, ebp
call fcn.6d3192d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x6d322441
mov rcx, rbx
mov rdx, rdi
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor ecx, ecx
mov eax, dword [rsp + 0x28]
jmp 0x6d322420
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6d3223c9
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6d322357
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3192d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6d32239d
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.gcm___NULL
mov r8d, 0x22
call fcn.6d31f170
xor r13d, r13d
jmp 0x6d322307