Function at 0x52110e10
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 0x521116ad
test r8d, r8d
je 0x52110e39
test rdx, rdx
je 0x5211153f
cmp dword [rbx + 0x10fc], 0x10
jbe 0x52110e54
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.5210e1e0
test eax, eax
jne 0x52110e47
mov edx, dword [rbx + 0x10f8]
mov r8d, dword [rsp + 0x28]
test edx, edx
jne 0x521114f0
movsxd rdi, dword [rbx + 0x10fc]
test edi, edi
je 0x52111520
mov ebp, dword [rbx + 0x10f4]
test ebp, ebp
jne 0x52110e9d
cmp edi, 0xc
je 0x52111560
movzx r11d, byte [rbx + 0x10e0]
xor byte [rbx + 0x10b0], r11b
cmp edi, 1
je 0x52110ff2
movzx r13d, byte [rbx + 0x10e1]
xor byte [rbx + 0x10b1], r13b
cmp edi, 2
je 0x52110ff2
movzx edx, byte [rbx + 0x10e2]
xor byte [rbx + 0x10b2], dl
cmp edi, 3
je 0x52110ff2
movzx ecx, byte [rbx + 0x10e3]
xor byte [rbx + 0x10b3], cl
cmp edi, 4
je 0x52110ff2
movzx ebp, byte [rbx + 0x10e4]
xor byte [rbx + 0x10b4], bpl
cmp edi, 5
je 0x52110ff2
movzx r12d, byte [rbx + 0x10e5]
xor byte [rbx + 0x10b5], r12b
cmp edi, 6
je 0x52110ff2
movzx r9d, byte [rbx + 0x10e6]
xor byte [rbx + 0x10b6], r9b
cmp edi, 7
je 0x52110ff2
movzx r10d, byte [rbx + 0x10e7]
xor byte [rbx + 0x10b7], r10b
cmp edi, 8
je 0x52110ff2
movzx r11d, byte [rbx + 0x10e8]
xor byte [rbx + 0x10b8], r11b
cmp edi, 9
je 0x52110ff2
movzx r13d, byte [rbx + 0x10e9]
xor byte [rbx + 0x10b9], r13b
cmp edi, 0xa
je 0x52110ff2
movzx edx, byte [rbx + 0x10ea]
xor byte [rbx + 0x10ba], dl
cmp edi, 0xb
je 0x52110ff2
movzx ecx, byte [rbx + 0x10eb]
xor byte [rbx + 0x10bb], cl
cmp edi, 0xc
je 0x52110ff2
movzx ebp, byte [rbx + 0x10ec]
xor byte [rbx + 0x10bc], bpl
cmp edi, 0xd
je 0x52110ff2
movzx r12d, byte [rbx + 0x10ed]
xor byte [rbx + 0x10bd], r12b
cmp edi, 0xe
je 0x52110ff2
movzx r9d, byte [rbx + 0x10ee]
xor byte [rbx + 0x10be], r9b
cmp edi, 0xf
je 0x52110ff2
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.52108300
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.5210ece0
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.52108300
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.5210ece0
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.5210ece0
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 0x521116c6
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.52108300
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x52111337
test ebp, ebp
je 0x52111255
cmp ebp, 1
je 0x52111206
cmp ebp, 2
je 0x521111c0
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.52108300
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.52108300
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.52108300
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jae 0x52111337
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.52108300
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.52108300
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.52108300
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.52108300
sub qword [rbx + 0x1100], 0xffffffffffffff80
cmp r13d, r12d
mov eax, dword [rsp + 0x28]
mov r8d, dword [rsp + 0x2c]
jb 0x52111255
mov r12d, r13d
add rsi, r12
cmp r8d, r13d
jbe 0x52110e47
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 0x52111655
cmp rsi, r13
je 0x52110e47
test r12, r12
je 0x5211142a
cmp r12, 1
je 0x521113f9
cmp r12, 2
je 0x521113cd
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 0x52111681
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 0x52111629
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 0x521114bd
cmp rsi, r13
je 0x52110e47
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 0x521115fd
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 0x521115d1
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 0x521115a4
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 0x52111421
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.52108300
mov dword [rbx + 0x10fc], 0
xor edx, edx
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x52111421
cmp edx, 1
jne 0x52110e42
mov ecx, dword [rbx + 0x10fc]
cmp ecx, 0xf
jg 0x52110e42
xor r13d, r13d
test ecx, ecx
jne 0x5211133d
jmp 0x52111101
cmp qword [rbx + 0x1100], 0
lea rdi, [rbx + 0x10b0]
jne 0x52111021
mov eax, 1
jmp 0x52110e47
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.adata___NULL
mov r8d, 0x24
call fcn.5210e1a0
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 0x521110a7
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.52108300
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor r10d, r10d
mov eax, dword [rsp + 0x28]
jmp 0x52111496
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
xor ebp, ebp
call fcn.52108300
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
mov eax, dword [rsp + 0x28]
jmp 0x52111471
mov rcx, rbx
mov rdx, rdi
mov dword [rsp + 0x28], eax
call fcn.52108300
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor ecx, ecx
mov eax, dword [rsp + 0x28]
jmp 0x52111450
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.52108300
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x521113f9
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.52108300
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x52111387
mov rdx, rdi
mov rcx, rbx
mov dword [rsp + 0x28], eax
call fcn.52108300
mov dword [rbx + 0x10fc], 0
sub qword [rbx + 0x1100], 0xffffffffffffff80
xor edx, edx
mov eax, dword [rsp + 0x28]
jmp 0x521113cd
lea rdx, str.src_encauth_gcm_gcm_add_aad.c
lea rcx, str.gcm___NULL
mov r8d, 0x22
call fcn.5210e1a0
xor r13d, r13d
jmp 0x52111337