Function at 0x576d1de0
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 0x576d267d
test r8d, r8d
je 0x576d1e09
test rdx, rdx
je 0x576d250f
cmp dword [rbx + 0x10fc], 0x10
jbe 0x576d1e24
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.576cf1b0
test eax, eax
jne 0x576d1e17
mov edx, dword [rbx + 0x10f8]
mov r8d, dword [rsp + 0x28]
test edx, edx
jne 0x576d24c0
movsxd rdi, dword [rbx + 0x10fc]
test edi, edi
je 0x576d24f0
mov ebp, dword [rbx + 0x10f4]
test ebp, ebp
jne 0x576d1e6d
cmp edi, 0xc
je 0x576d2530
movzx r11d, byte [rbx + 0x10e0]
xor byte [rbx + 0x10b0], r11b
cmp edi, 1
je 0x576d1fc2
movzx r13d, byte [rbx + 0x10e1]
xor byte [rbx + 0x10b1], r13b
cmp edi, 2
je 0x576d1fc2
movzx edx, byte [rbx + 0x10e2]
xor byte [rbx + 0x10b2], dl
cmp edi, 3
je 0x576d1fc2
movzx ecx, byte [rbx + 0x10e3]
xor byte [rbx + 0x10b3], cl
cmp edi, 4
je 0x576d1fc2
movzx ebp, byte [rbx + 0x10e4]
xor byte [rbx + 0x10b4], bpl
cmp edi, 5
je 0x576d1fc2
movzx r12d, byte [rbx + 0x10e5]
xor byte [rbx + 0x10b5], r12b
cmp edi, 6
je 0x576d1fc2
movzx r9d, byte [rbx + 0x10e6]
xor byte [rbx + 0x10b6], r9b
cmp edi, 7
je 0x576d1fc2
movzx r10d, byte [rbx + 0x10e7]
xor byte [rbx + 0x10b7], r10b
cmp edi, 8
je 0x576d1fc2
movzx r11d, byte [rbx + 0x10e8]
xor byte [rbx + 0x10b8], r11b
cmp edi, 9
je 0x576d1fc2
movzx r13d, byte [rbx + 0x10e9]
xor byte [rbx + 0x10b9], r13b
cmp edi, 0xa
je 0x576d1fc2
movzx edx, byte [rbx + 0x10ea]
xor byte [rbx + 0x10ba], dl
cmp edi, 0xb
je 0x576d1fc2
movzx ecx, byte [rbx + 0x10eb]
xor byte [rbx + 0x10bb], cl
cmp edi, 0xc
je 0x576d1fc2
movzx ebp, byte [rbx + 0x10ec]
xor byte [rbx + 0x10bc], bpl
cmp edi, 0xd
je 0x576d1fc2
movzx r12d, byte [rbx + 0x10ed]
xor byte [rbx + 0x10bd], r12b
cmp edi, 0xe
je 0x576d1fc2
movzx r9d, byte [rbx + 0x10ee]
xor byte [rbx + 0x10be], r9b
cmp edi, 0xf
je 0x576d1fc2
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.576c92d0
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.576cfcb0
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.576c92d0
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.576cfcb0
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.576cfcb0
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 0x576d2696
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.576c92d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x576d2307
test ebp, ebp
je 0x576d2225
cmp ebp, 1
je 0x576d21d6
cmp ebp, 2
je 0x576d2190
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.576c92d0
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.576c92d0
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.576c92d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x576d2307
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.576c92d0
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.576c92d0
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.576c92d0
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.576c92d0
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jb 0x576d2225
mov r12d, r13d
add rsi, r12
cmp r8d, r13d
jbe 0x576d1e17
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 0x576d2625
cmp rsi, r13
je 0x576d1e17
test r12, r12
je 0x576d23fa
cmp r12, 1
je 0x576d23c9
cmp r12, 2
je 0x576d239d
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 0x576d2651
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 0x576d25f9
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 0x576d248d
cmp rsi, r13
je 0x576d1e17
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 0x576d25cd
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 0x576d25a1
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 0x576d2574
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 0x576d23f1
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.576c92d0
mov dword [rbx + 0x10fc], 0
xor edx, edx
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x576d23f1
cmp edx, 1
jne 0x576d1e12
mov ecx, dword [rbx + 0x10fc]
cmp ecx, 0xf
jg 0x576d1e12
xor r13d, r13d
test ecx, ecx
jne 0x576d230d
jmp 0x576d20d1
cmp qword [rbx + 0x1100], 0
lea rdi, [rbx + 0x10b0]
jne 0x576d1ff1
mov eax, 1
jmp 0x576d1e17
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.adata___NULL
mov r8d, 0x24
call fcn.576cf170
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 0x576d2077
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.576c92d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor r10d, r10d
mov eax, dword [rsp + 0x28]
jmp 0x576d2466
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
xor ebp, ebp
call fcn.576c92d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x576d2441
mov rcx, rbx
mov rdx, rdi
mov dword [rsp + 0x28], eax
call fcn.576c92d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor ecx, ecx
mov eax, dword [rsp + 0x28]
jmp 0x576d2420
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.576c92d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x576d23c9
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.576c92d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x576d2357
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.576c92d0
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x576d239d
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.gcm___NULL
mov r8d, 0x22
call fcn.576cf170
xor r13d, r13d
jmp 0x576d2307