Function at 0x1401e46c0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x340
mov rax, qword [0x1403291e8]
xor rax, rsp
mov qword [rsp + 0x330], rax
mov rdi, r9
movzx r13d, dl
mov byte [rsp + 0x20], dl
mov r14, rcx
mov rsi, qword [rsp + 0x3a8]
mov r12, qword [rsp + 0x3b8]
mov qword [rsp + 0x28], r12
mov rbx, qword [rsp + 0x3c0]
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rsp + 0x38], xmm0
mov qword [rsp + 0x48], rax
movzx r9d, byte [rbx + 0x162]
lea r8, str.gcm_process
mov rdx, rbx
lea rcx, [rsp + 0x38]
call fcn.1400a0af0
nop
mov ebp, dword [rsp + 0x3b0]
test ebp, ebp
je 0x1401e479a
test rsi, rsi
jne 0x1401e479a
mov rax, qword [rbx]
lea rdx, str.NULL_input.
mov rcx, rbx
call qword [rax + 0x28]
xor bl, bl
lea rcx, [rsp + 0x38]
call fcn.1400a0bb0
movzx eax, bl
mov rcx, qword [rsp + 0x330]
xor rcx, rsp
call fcn.1401feaa0
mov rbx, qword [rsp + 0x388]
add rsp, 0x340
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rcx, r12
call fcn.140091190
mov r15d, eax
add eax, ebp
mov dword [rsp + 0x30], eax
lea edx, [rax + 0x20]
mov rcx, r12
call fcn.140090970
test al, al
jne 0x1401e47c6
mov rax, qword [rbx]
lea rdx, str.Unable_to_allocate_GCM_output_buffer.
jmp 0x1401e475a
mov edx, r15d
mov rcx, r12
test r13b, r13b
je 0x1401e47de
mov rbp, rsi
call fcn.140090e30
mov rsi, rax
jmp 0x1401e47e6
call fcn.140090e30
mov rbp, rax
movzx r15d, byte [0x14046da50]
movsxd rax, dword [rdi + 0x558]
cmp eax, 0x10
ja 0x1401e4760
mov ecx, dword [rdi + 0x554]
cmp ecx, 1
jne 0x1401e48ab
test eax, eax
je 0x1401e4864
shl rax, 3
add qword [rdi + 0x560], rax
xor edx, edx
mov r8d, 0x170
lea rcx, [rsp + 0x1c0]
call sub.VCRUNTIME140.dll_memset
lea rcx, [rsp + 0x1c0]
call fcn.1400a2490
nop
lea rdx, [rdi + 0x510]
lea r8, [rsp + 0x1c0]
mov rcx, rdi
call fcn.1401e4420
nop
lea rcx, [rsp + 0x1c0]
call fcn.1400a24c0
lea rcx, [rdi + 0x52f]
mov rdx, 0xfffffffffffffae0
sub rdx, rdi
add byte [rcx], 1
jne 0x1401e4887
dec rcx
lea rax, [rdx + rcx]
cmp rax, 0xc
jge 0x1401e4875
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
mov qword [rdi + 0x554], 2
jmp 0x1401e48b4
cmp ecx, 2
jne 0x1401e4760
xor edx, edx
mov r8d, 0x170
lea rcx, [rsp + 0x50]
call sub.VCRUNTIME140.dll_memset
lea rcx, [rsp + 0x50]
call fcn.1400a2490
nop
xor ebx, ebx
cmp dword [rdi + 0x558], ebx
jne 0x1401e4edc
mov r12d, dword [rsp + 0x3b0]
and r12d, 0xfffffff0
test r13b, r13b
je 0x1401e4be3
test r15b, r15b
je 0x1401e4b4f
test r12d, r12d
je 0x1401e4ed7
lea r11, [rdi + 0x510]
mov r15, 0xfffffffffffffae0
sub r15, rdi
nop word [rax + rax]
lea r9, [rdi + 0x546]
mov r10d, 2
nop dword [rax]
movzx ecx, byte [rbx + rbp + 7]
shl rcx, 8
movzx eax, byte [rbx + rbp + 6]
or rcx, rax
shl rcx, 8
movzx eax, byte [rbx + rbp + 5]
or rcx, rax
shl rcx, 8
movzx eax, byte [rbx + rbp + 4]
or rcx, rax
shl rcx, 8
movzx eax, byte [rbx + rbp + 3]
or rcx, rax
shl rcx, 8
movzx eax, byte [rbx + rbp + 2]
or rcx, rax
shl rcx, 8
movzx eax, byte [rbx + rbp + 1]
or rcx, rax
shl rcx, 8
movzx eax, byte [rbx + rbp]
or rcx, rax
movzx r8d, byte [r9 + 1]
shl r8, 8
movzx eax, byte [r9]
or r8, rax
shl r8, 8
movzx eax, byte [r9 - 1]
or r8, rax
shl r8, 8
movzx eax, byte [r9 - 2]
or r8, rax
shl r8, 8
movzx eax, byte [r9 - 3]
or r8, rax
shl r8, 8
movzx eax, byte [r9 - 4]
or r8, rax
shl r8, 8
movzx eax, byte [r9 - 5]
or r8, rax
shl r8, 8
movzx eax, byte [r9 - 6]
or r8, rax
xor r8, rcx
mov rax, r8
shr rax, 0x38
mov byte [rbx + rsi + 7], al
mov rax, r8
shr rax, 0x30
mov byte [rbx + rsi + 6], al
mov rax, r8
shr rax, 0x28
mov byte [rbx + rsi + 5], al
mov rax, r8
shr rax, 0x20
mov byte [rbx + rsi + 4], al
mov rax, r8
shr rax, 0x18
mov byte [rbx + rsi + 3], al
mov rax, r8
shr rax, 0x10
mov byte [rbx + rsi + 2], al
mov rax, r8
shr rax, 8
mov byte [rbx + rsi + 1], al
mov byte [rbx + rsi], r8b
movzx ecx, byte [r9 - 0x2f]
shl rcx, 8
movzx eax, byte [r9 - 0x30]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 0x31]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 0x32]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 0x33]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 0x34]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 0x35]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 0x36]
or rcx, rax
xor rcx, r8
mov rax, rcx
shr rax, 0x38
mov byte [r9 - 0x2f], al
mov rax, rcx
shr rax, 0x30
mov byte [r9 - 0x30], al
mov rax, rcx
shr rax, 0x28
mov byte [r9 - 0x31], al
mov rax, rcx
shr rax, 0x20
mov byte [r9 - 0x32], al
mov rax, rcx
shr rax, 0x18
mov byte [r9 - 0x33], al
mov rax, rcx
shr rax, 0x10
mov byte [r9 - 0x34], al
mov rax, rcx
shr rax, 8
mov byte [r9 - 0x35], al
mov byte [r9 - 0x36], cl
add ebx, 8
lea r9, [r9 + 8]
sub r10, 1
jne 0x1401e4930
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
mov rdx, r11
mov rcx, rdi
call fcn.1401e4420
lea rcx, [rdi + 0x52f]
add byte [rcx], 1
jne 0x1401e4b23
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x1401e4b11
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
lea r11, [rdi + 0x510]
jb 0x1401e4920
jmp 0x1401e4ed1
test r12d, r12d
je 0x1401e4ed7
mov r15, 0xfffffffffffffae0
sub r15, rdi
lea rdx, [rdi + 0x510]
mov r8d, 2
nop
mov rax, qword [rbx + rbp]
xor rax, qword [rdx + 0x30]
mov qword [rbx + rsi], rax
xor qword [rdx], rax
add ebx, 8
lea rdx, [rdx + 8]
sub r8, 1
jne 0x1401e4b70
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
lea rdx, [rdi + 0x510]
mov rcx, rdi
call fcn.1401e4420
lea rcx, [rdi + 0x52f]
nop
add byte [rcx], 1
jne 0x1401e4bc2
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x1401e4bb0
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
jb 0x1401e4b62
jmp 0x1401e4ed1
test r15b, r15b
je 0x1401e4e3f
test r12d, r12d
je 0x1401e4ed7
lea r11, [rdi + 0x510]
mov r15, 0xfffffffffffffae0
sub r15, rdi
nop word [rax + rax]
lea r9, [rdi + 0x516]
mov r10d, 2
nop dword [rax]
movzx r8d, byte [rbx + rsi + 7]
shl r8, 8
movzx eax, byte [rbx + rsi + 6]
or r8, rax
shl r8, 8
movzx eax, byte [rbx + rsi + 5]
or r8, rax
shl r8, 8
movzx eax, byte [rbx + rsi + 4]
or r8, rax
shl r8, 8
movzx eax, byte [rbx + rsi + 3]
or r8, rax
shl r8, 8
movzx eax, byte [rbx + rsi + 2]
or r8, rax
shl r8, 8
movzx eax, byte [rbx + rsi + 1]
or r8, rax
shl r8, 8
movzx eax, byte [rbx + rsi]
or r8, rax
movzx ecx, byte [r9 + 1]
shl rcx, 8
movzx eax, byte [r9]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 1]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 2]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 3]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 4]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 5]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 - 6]
or rcx, rax
xor rcx, r8
mov rax, rcx
shr rax, 0x38
mov byte [r9 + 1], al
mov rax, rcx
shr rax, 0x30
mov byte [r9], al
mov rax, rcx
shr rax, 0x28
mov byte [r9 - 1], al
mov rax, rcx
shr rax, 0x20
mov byte [r9 - 2], al
mov rax, rcx
shr rax, 0x18
mov byte [r9 - 3], al
mov rax, rcx
shr rax, 0x10
mov byte [r9 - 4], al
mov rax, rcx
shr rax, 8
mov byte [r9 - 5], al
mov byte [r9 - 6], cl
movzx ecx, byte [r9 + 0x31]
shl rcx, 8
movzx eax, byte [r9 + 0x30]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 + 0x2f]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 + 0x2e]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 + 0x2d]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 + 0x2c]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 + 0x2b]
or rcx, rax
shl rcx, 8
movzx eax, byte [r9 + 0x2a]
or rcx, rax
xor r8, rcx
mov rax, r8
shr rax, 0x38
mov byte [rbx + rbp + 7], al
mov rax, r8
shr rax, 0x30
mov byte [rbx + rbp + 6], al
mov rax, r8
shr rax, 0x28
mov byte [rbx + rbp + 5], al
mov rax, r8
shr rax, 0x20
mov byte [rbx + rbp + 4], al
mov rax, r8
shr rax, 0x18
mov byte [rbx + rbp + 3], al
mov rax, r8
shr rax, 0x10
mov byte [rbx + rbp + 2], al
mov rax, r8
shr rax, 8
mov byte [rbx + rbp + 1], al
mov byte [rbx + rbp], r8b
add ebx, 8
lea r9, [r9 + 8]
sub r10, 1
jne 0x1401e4c20
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
mov rdx, r11
mov rcx, rdi
call fcn.1401e4420
lea rcx, [rdi + 0x52f]
add byte [rcx], 1
jne 0x1401e4e13
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x1401e4e01
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
lea r11, [rdi + 0x510]
jb 0x1401e4c10
jmp 0x1401e4ed1
test r12d, r12d
je 0x1401e4ed7
mov r15, 0xfffffffffffffae0
sub r15, rdi
lea rdx, [rdi + 0x510]
mov r8d, 2
nop
mov rax, qword [rbx + rsi]
xor qword [rdx], rax
mov rax, qword [rdx + 0x30]
xor rax, qword [rbx + rsi]
mov qword [rbx + rbp], rax
add ebx, 8
lea rdx, [rdx + 8]
sub r8, 1
jne 0x1401e4e60
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
lea rdx, [rdi + 0x510]
mov rcx, rdi
call fcn.1401e4420
lea rcx, [rdi + 0x52f]
add byte [rcx], 1
jne 0x1401e4eb5
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x1401e4ea3
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
jb 0x1401e4e52
movzx r13d, byte [rsp + 0x20]
mov r12, qword [rsp + 0x28]
cmp ebx, dword [rsp + 0x3b0]
jae 0x1401e4fb9
mov r15d, ebx
add r15, rbp
sub rsi, rbp
mov eax, dword [rsp + 0x3b0]
sub eax, ebx
mov ebx, eax
nop dword [rax]
mov eax, dword [rdi + 0x558]
cmp eax, 0x10
jne 0x1401e4f6d
sub qword [rdi + 0x568], 0xffffffffffffff80
lea rdx, [rdi + 0x510]
lea r8, [rsp + 0x50]
mov rcx, rdi
call fcn.1401e4420
lea rcx, [rdi + 0x52f]
mov rdx, 0xfffffffffffffae0
sub rdx, rdi
add byte [rcx], 1
jne 0x1401e4f4a
dec rcx
lea rax, [rdx + rcx]
cmp rax, 0xc
jge 0x1401e4f38
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
mov dword [rdi + 0x558], 0
xor eax, eax
movsxd rdx, eax
test r13b, r13b
je 0x1401e4f86
movzx ecx, byte [r15]
xor cl, byte [rdx + rdi + 0x540]
mov byte [r15 + rsi], cl
jmp 0x1401e4f98
movzx ecx, byte [r15 + rsi]
movzx eax, cl
xor al, byte [rdx + rdi + 0x540]
mov byte [r15], al
movsxd rax, dword [rdi + 0x558]
xor byte [rax + rdi + 0x510], cl
inc dword [rdi + 0x558]
inc r15
sub rbx, 1
jne 0x1401e4f00
mov edx, dword [rsp + 0x30]
mov rcx, r12
call fcn.140092cb0
mov bl, 1
lea rcx, [rsp + 0x50]
call fcn.1400a24c0
jmp 0x1401e4762