Function at 0x6d321d00
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 0x6d32259d
test r8d, r8d
je 0x6d321d29
test rdx, rdx
je 0x6d32242f
cmp dword [rbx + 0x10fc], 0x10
jbe 0x6d321d44
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.6d31f0d0
test eax, eax
jne 0x6d321d37
mov edx, dword [rbx + 0x10f8]
mov r8d, dword [rsp + 0x28]
test edx, edx
jne 0x6d3223e0
movsxd rdi, dword [rbx + 0x10fc]
test edi, edi
je 0x6d322410
mov ebp, dword [rbx + 0x10f4]
test ebp, ebp
jne 0x6d321d8d
cmp edi, 0xc
je 0x6d322450
movzx r11d, byte [rbx + 0x10e0]
xor byte [rbx + 0x10b0], r11b
cmp edi, 1
je 0x6d321ee2
movzx r13d, byte [rbx + 0x10e1]
xor byte [rbx + 0x10b1], r13b
cmp edi, 2
je 0x6d321ee2
movzx edx, byte [rbx + 0x10e2]
xor byte [rbx + 0x10b2], dl
cmp edi, 3
je 0x6d321ee2
movzx ecx, byte [rbx + 0x10e3]
xor byte [rbx + 0x10b3], cl
cmp edi, 4
je 0x6d321ee2
movzx ebp, byte [rbx + 0x10e4]
xor byte [rbx + 0x10b4], bpl
cmp edi, 5
je 0x6d321ee2
movzx r12d, byte [rbx + 0x10e5]
xor byte [rbx + 0x10b5], r12b
cmp edi, 6
je 0x6d321ee2
movzx r9d, byte [rbx + 0x10e6]
xor byte [rbx + 0x10b6], r9b
cmp edi, 7
je 0x6d321ee2
movzx r10d, byte [rbx + 0x10e7]
xor byte [rbx + 0x10b7], r10b
cmp edi, 8
je 0x6d321ee2
movzx r11d, byte [rbx + 0x10e8]
xor byte [rbx + 0x10b8], r11b
cmp edi, 9
je 0x6d321ee2
movzx r13d, byte [rbx + 0x10e9]
xor byte [rbx + 0x10b9], r13b
cmp edi, 0xa
je 0x6d321ee2
movzx edx, byte [rbx + 0x10ea]
xor byte [rbx + 0x10ba], dl
cmp edi, 0xb
je 0x6d321ee2
movzx ecx, byte [rbx + 0x10eb]
xor byte [rbx + 0x10bb], cl
cmp edi, 0xc
je 0x6d321ee2
movzx ebp, byte [rbx + 0x10ec]
xor byte [rbx + 0x10bc], bpl
cmp edi, 0xd
je 0x6d321ee2
movzx r12d, byte [rbx + 0x10ed]
xor byte [rbx + 0x10bd], r12b
cmp edi, 0xe
je 0x6d321ee2
movzx r9d, byte [rbx + 0x10ee]
xor byte [rbx + 0x10be], r9b
cmp edi, 0xf
je 0x6d321ee2
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.6d3191f0
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.6d31fbd0
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.6d3191f0
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.6d31fbd0
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.6d31fbd0
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 0x6d3225b6
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.6d3191f0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x6d322227
test ebp, ebp
je 0x6d322145
cmp ebp, 1
je 0x6d3220f6
cmp ebp, 2
je 0x6d3220b0
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.6d3191f0
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.6d3191f0
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.6d3191f0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x6d322227
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.6d3191f0
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.6d3191f0
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.6d3191f0
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.6d3191f0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jb 0x6d322145
mov r12d, r13d
add rsi, r12
cmp r8d, r13d
jbe 0x6d321d37
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 0x6d322545
cmp rsi, r13
je 0x6d321d37
test r12, r12
je 0x6d32231a
cmp r12, 1
je 0x6d3222e9
cmp r12, 2
je 0x6d3222bd
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 0x6d322571
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 0x6d322519
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 0x6d3223ad
cmp rsi, r13
je 0x6d321d37
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 0x6d3224ed
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 0x6d3224c1
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 0x6d322494
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 0x6d322311
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3191f0
mov dword [rbx + 0x10fc], 0
xor edx, edx
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x6d322311
cmp edx, 1
jne 0x6d321d32
mov ecx, dword [rbx + 0x10fc]
cmp ecx, 0xf
jg 0x6d321d32
xor r13d, r13d
test ecx, ecx
jne 0x6d32222d
jmp 0x6d321ff1
cmp qword [rbx + 0x1100], 0
lea rdi, [rbx + 0x10b0]
jne 0x6d321f11
mov eax, 1
jmp 0x6d321d37
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.adata___NULL
mov r8d, 0x24
call fcn.6d31f090
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 0x6d321f97
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3191f0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor r10d, r10d
mov eax, dword [rsp + 0x28]
jmp 0x6d322386
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
xor ebp, ebp
call fcn.6d3191f0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x6d322361
mov rcx, rbx
mov rdx, rdi
mov dword [rsp + 0x28], eax
call fcn.6d3191f0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor ecx, ecx
mov eax, dword [rsp + 0x28]
jmp 0x6d322340
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3191f0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6d3222e9
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3191f0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6d322277
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.6d3191f0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6d3222bd
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.gcm___NULL
mov r8d, 0x22
call fcn.6d31f090
xor r13d, r13d
jmp 0x6d322227