Function at 0x65396d80
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 0x653973f7
test rdx, rdx
jne 0x65396da9
test r8d, r8d
jne 0x65397215
mov edx, dword [rbx + 0x10f8]
mov eax, 0x10
test edx, edx
je 0x65396dc5
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
cmp dword [rbx + 0x10fc], 0xf
ja 0x65396db8
mov ecx, dword [rbx + 0x10f0]
mov dword [rsp + 0x28], r8d
call fcn.6539d620
test eax, eax
jne 0x65396db8
mov edi, dword [rbx + 0x10fc]
mov r11d, dword [rsp + 0x28]
lea ecx, [rdi + r11]
cmp ecx, 0xc
jbe 0x65396dfd
or dword [rbx + 0x10f4], 1
xor r13d, r13d
test edi, edi
jne 0x65397044
mov r12d, r11d
and r12d, 0xfffffff0
je 0x653973ed
mov dword [rsp + 0x28], eax
mov rax, qword [rsi]
lea rdi, [rbx + 0x10b0]
xor qword [rbx + 0x10b0], rax
lea ebp, [r12 - 1]
mov rcx, rbx
mov r8, qword [rsi + 8]
xor qword [rbx + 0x10b8], r8
mov rdx, rdi
shr ebp, 4
mov r13d, 0x10
mov dword [rsp + 0x2c], r11d
and ebp, 3
call fcn.65397740
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r11d, dword [rsp + 0x2c]
jae 0x6539703e
test ebp, ebp
je 0x65396f5c
cmp ebp, 1
je 0x65396f0d
cmp ebp, 2
je 0x65396ec7
mov r9, qword [rsi + 0x10]
xor qword [rbx + 0x10b0], r9
mov rdx, rdi
mov r10, qword [rsi + 0x18]
xor qword [rbx + 0x10b8], r10
mov rcx, rbx
mov dword [rsp + 0x2c], r11d
mov dword [rsp + 0x28], eax
mov r13d, 0x20
call fcn.65397740
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov r11d, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x28]
lea ecx, [r13 + 8]
mov dword [rsp + 0x2c], r11d
mov r11d, r13d
mov rdx, qword [rsi + r11]
add r13d, 0x10
xor qword [rbx + 0x10b0], rdx
mov rdx, rdi
mov rbp, qword [rsi + rcx]
xor qword [rbx + 0x10b8], rbp
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.65397740
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov r11d, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x28]
lea r9d, [r13 + 8]
mov dword [rsp + 0x28], eax
mov eax, r13d
mov r8, qword [rsi + rax]
mov rdx, rdi
mov rcx, rbx
xor qword [rbx + 0x10b0], r8
add r13d, 0x10
mov r10, qword [rsi + r9]
xor qword [rbx + 0x10b8], r10
mov dword [rsp + 0x2c], r11d
call fcn.65397740
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r11d, dword [rsp + 0x2c]
jae 0x6539703e
mov edx, r13d
lea ebp, [r13 + 8]
mov dword [rsp + 0x28], eax
mov rcx, qword [rsi + rdx]
mov rdx, rdi
xor qword [rbx + 0x10b0], rcx
mov rcx, rbx
mov rax, qword [rsi + rbp]
xor qword [rbx + 0x10b8], rax
lea ebp, [r13 + 0x28]
mov dword [rsp + 0x2c], r11d
call fcn.65397740
lea r8d, [r13 + 0x10]
lea r10d, [r13 + 0x18]
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov rdx, rdi
mov rcx, rbx
mov r9, qword [rsi + r8]
xor qword [rbx + 0x10b0], r9
mov r11, qword [rsi + r10]
xor qword [rbx + 0x10b8], r11
call fcn.65397740
lea edx, [r13 + 0x20]
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov rcx, qword [rsi + rdx]
xor qword [rbx + 0x10b0], rcx
mov rdx, rdi
mov rax, qword [rsi + rbp]
mov rcx, rbx
xor qword [rbx + 0x10b8], rax
call fcn.65397740
lea r8d, [r13 + 0x30]
sub qword [rbx + 0x1100], 0xffffffffffffff80
lea r10d, [r13 + 0x38]
mov rdx, rdi
mov rcx, rbx
add r13d, 0x40
mov r9, qword [rsi + r8]
xor qword [rbx + 0x10b0], r9
mov r11, qword [rsi + r10]
xor qword [rbx + 0x10b8], r11
call fcn.65397740
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r11d, dword [rsp + 0x2c]
jb 0x65396f5c
mov ebp, r13d
add rsi, rbp
cmp r11d, r13d
jbe 0x65396db8
movsxd rcx, dword [rbx + 0x10fc]
lea r12d, [r11 - 1]
sub r12d, r13d
lea r13, [rbx + 0x10b0]
lea rdi, [rsi + r12 + 1]
add rsi, 1
and r12d, 3
lea edx, [rcx + 1]
mov dword [rbx + 0x10fc], edx
movzx ebp, byte [rsi - 1]
cmp edx, 0x10
mov byte [rbx + rcx + 0x10e0], bpl
je 0x65397318
cmp rsi, rdi
je 0x65396db8
test r12, r12
je 0x65397137
cmp r12, 1
je 0x65397103
cmp r12, 2
je 0x653970d7
lea r9d, [rdx + 1]
add rsi, 1
movsxd rdx, edx
mov dword [rbx + 0x10fc], r9d
movzx r8d, byte [rsi - 1]
cmp r9d, 0x10
mov byte [rbx + rdx + 0x10e0], r8b
mov edx, r9d
je 0x653973a6
lea r10d, [rdx + 1]
add rsi, 1
movsxd rcx, edx
mov dword [rbx + 0x10fc], r10d
movzx r11d, byte [rsi - 1]
cmp r10d, 0x10
mov edx, r10d
mov byte [rbx + rcx + 0x10e0], r11b
je 0x6539735f
lea r12d, [rdx + 1]
add rsi, 1
movsxd r9, edx
mov dword [rbx + 0x10fc], r12d
movzx ebp, byte [rsi - 1]
cmp r12d, 0x10
mov edx, r12d
mov byte [rbx + r9 + 0x10e0], bpl
je 0x653971ce
cmp rsi, rdi
je 0x65396db8
lea r11d, [rdx + 1]
add rsi, 1
movsxd r10, edx
mov dword [rbx + 0x10fc], r11d
movzx r8d, byte [rsi - 1]
cmp r11d, 0x10
mov byte [rbx + r10 + 0x10e0], r8b
je 0x653972d0
lea ebp, [r11 + 1]
movsxd rcx, r11d
mov dword [rbx + 0x10fc], ebp
movzx r12d, byte [rsi]
cmp ebp, 0x10
mov byte [rbx + rcx + 0x10e0], r12b
je 0x65397280
lea r10d, [rbp + 1]
movsxd rdx, ebp
mov dword [rbx + 0x10fc], r10d
movzx r9d, byte [rsi + 1]
cmp r10d, 0x10
mov byte [rbx + rdx + 0x10e0], r9b
je 0x65397230
lea edx, [r10 + 1]
add rsi, 3
movsxd r11, r10d
mov dword [rbx + 0x10fc], edx
movzx r8d, byte [rsi - 1]
cmp edx, 0x10
mov byte [rbx + r11 + 0x10e0], r8b
jne 0x6539712e
movdqu xmm1, xmmword [rbx + 0x10b0]
mov rdx, r13
mov rcx, rbx
mov dword [rsp + 0x28], eax
movdqu xmm0, xmmword [rbx + 0x10e0]
pxor xmm0, xmm1
movups xmmword [rbx + 0x10b0], xmm0
call fcn.65397740
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6539712e
lea rdx, str.src_encauth_gcm_gcm_add_iv.c
lea rcx, str.IV___NULL
mov r8d, 0x21
call fcn.6539d5e0
nop
movdqu xmm1, xmmword [rbx + 0x10b0]
mov rdx, r13
mov rcx, rbx
mov dword [rsp + 0x28], eax
movdqu xmm0, xmmword [rbx + 0x10e0]
pxor xmm0, xmm1
movups xmmword [rbx + 0x10b0], xmm0
call fcn.65397740
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor r10d, r10d
mov eax, dword [rsp + 0x28]
jmp 0x653971a7
movdqu xmm5, xmmword [rbx + 0x10b0]
mov rdx, r13
mov rcx, rbx
mov dword [rsp + 0x28], eax
xor ebp, ebp
movdqu xmm4, xmmword [rbx + 0x10e0]
pxor xmm4, xmm5
movups xmmword [rbx + 0x10b0], xmm4
call fcn.65397740
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x65397182
movdqu xmm3, xmmword [rbx + 0x10b0]
mov rdx, r13
mov rcx, rbx
mov dword [rsp + 0x28], eax
movdqu xmm2, xmmword [rbx + 0x10e0]
pxor xmm2, xmm3
movups xmmword [rbx + 0x10b0], xmm2
call fcn.65397740
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor r11d, r11d
mov eax, dword [rsp + 0x28]
jmp 0x65397160
movdqu xmm1, xmmword [rbx + 0x10b0]
mov rdx, r13
mov rcx, rbx
mov dword [rsp + 0x28], eax
movdqu xmm0, xmmword [rbx + 0x10e0]
pxor xmm0, xmm1
movups xmmword [rbx + 0x10b0], xmm0
call fcn.65397740
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x6539708d
movdqu xmm5, xmmword [rbx + 0x10b0]
mov rdx, r13
mov rcx, rbx
mov dword [rsp + 0x28], eax
movdqu xmm4, xmmword [rbx + 0x10e0]
pxor xmm4, xmm5
movups xmmword [rbx + 0x10b0], xmm4
call fcn.65397740
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x65397103
movdqu xmm3, xmmword [rbx + 0x10b0]
mov rdx, r13
mov rcx, rbx
mov dword [rsp + 0x28], eax
movdqu xmm2, xmmword [rbx + 0x10e0]
pxor xmm2, xmm3
movups xmmword [rbx + 0x10b0], xmm2
call fcn.65397740
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x653970d7
mov r13d, edi
xor ebp, ebp
jmp 0x65397041
lea rdx, str.src_encauth_gcm_gcm_add_iv.c
lea rcx, [0x6540d2bd]
mov r8d, 0x1f
call fcn.6539d5e0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop