Function at 0x1801c84a0
Capabilities:
Encode data using xor

Disassembly:
mov r11, rsp
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x60
mov qword [r11 - 0x68], 0xfffffffffffffffe
mov qword [r11 + 0x10], rbx
mov rax, qword [0x18036d060]
xor rax, rsp
mov qword [rsp + 0x50], rax
mov rdi, r9
movzx r15d, dl
mov byte [rsp + 0x20], dl
mov r14, rcx
mov rsi, qword [rsp + 0xc8]
mov rbp, qword [rsp + 0xd8]
mov qword [rsp + 0x28], rbp
mov r12, qword [rsp + 0xe0]
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rsp + 0x38], xmm0
mov qword [r11 - 0x50], rax
movzx r9d, byte [r12 + 0x162]
lea r8, str.gcm_process
mov rdx, r12
lea rcx, [r11 - 0x60]
call fcn.180105ba0
nop
mov r13d, dword [rsp + 0xd0]
test r13d, r13d
je 0x1801c857a
test rsi, rsi
jne 0x1801c857a
mov rax, qword [r12]
lea rdx, str.NULL_input.
mov rcx, r12
call qword [rax + 0x28]
xor bl, bl
lea rcx, [rsp + 0x38]
call fcn.180105c80
movzx eax, bl
mov rcx, qword [rsp + 0x50]
xor rcx, rsp
call fcn.18007b140
mov rbx, qword [rsp + 0xa8]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rcx, rbp
call fcn.1800be430
mov ebx, eax
add eax, r13d
mov dword [rsp + 0x24], eax
lea edx, [rax + 0x20]
mov rcx, rbp
call fcn.1800bdb80
test al, al
jne 0x1801c85a7
mov rax, qword [r12]
lea rdx, str.Unable_to_allocate_GCM_output_buffer.
jmp 0x1801c8540
mov edx, ebx
test r15b, r15b
je 0x1801c85c0
mov rbp, rsi
mov rcx, qword [rsp + 0x28]
call fcn.1800bdf80
mov rsi, rax
jmp 0x1801c85cb
mov rcx, rbp
call fcn.1800bdf80
mov rbp, rax
movzx edx, byte [0x1803883a0]
mov byte [rsp + 0x21], dl
movsxd rax, dword [rdi + 0x550]
cmp eax, 0x10
ja 0x1801c8546
mov ecx, dword [rdi + 0x54c]
cmp ecx, 1
jne 0x1801c8666
test eax, eax
je 0x1801c8612
shl rax, 3
add qword [rdi + 0x558], rax
lea rdx, [rdi + 0x508]
mov r8, r12
mov rcx, rdi
call fcn.1801c8210
lea rcx, [rdi + 0x527]
mov rdx, 0xfffffffffffffae8
sub rdx, rdi
add byte [rcx], 1
jne 0x1801c8635
dec rcx
lea rax, [rdx + rcx]
cmp rax, 0xc
jge 0x1801c8623
lea r8, [rdi + 0x538]
mov rax, qword [r14]
lea rdx, [rdi + 0x518]
mov rcx, r14
call qword [rax + 0x20]
mov qword [rdi + 0x54c], 2
xor eax, eax
movzx edx, byte [rsp + 0x21]
movzx r15d, byte [rsp + 0x20]
jmp 0x1801c866f
cmp ecx, 2
jne 0x1801c8546
xor ebx, ebx
test eax, eax
jne 0x1801c8c99
and r13d, 0xfffffff0
test r15b, r15b
je 0x1801c898e
test dl, dl
je 0x1801c88e5
test r13d, r13d
je 0x1801c8c99
lea rax, [rdi + 0x53e]
lea r11, [rdi + 0x508]
mov r15, 0xfffffffffffffae8
sub r15, rdi
nop
mov r9, rax
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 [rsi + rbx + 7], al
mov rax, r8
shr rax, 0x30
mov byte [rsi + rbx + 6], al
mov rax, r8
shr rax, 0x28
mov byte [rsi + rbx + 5], al
mov rax, r8
shr rax, 0x20
mov byte [rsi + rbx + 4], al
mov rax, r8
shr rax, 0x18
mov byte [rsi + rbx + 3], al
mov rax, r8
shr rax, 0x10
mov byte [rsi + rbx + 2], al
mov rax, r8
shr rax, 8
mov byte [rsi + rbx + 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 0x1801c86c0
sub qword [rdi + 0x560], 0xffffffffffffff80
mov r8, r12
mov rdx, r11
mov rcx, rdi
call fcn.1801c8210
lea rcx, [rdi + 0x527]
nop
add byte [rcx], 1
jne 0x1801c88b2
dec rcx
lea rax, [rcx + r15]
cmp rax, 0xc
jge 0x1801c88a0
mov rax, qword [r14]
lea r8, [rdi + 0x538]
lea rdx, [rdi + 0x518]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r13d
lea rax, [rdi + 0x53e]
lea r11, [rdi + 0x508]
jb 0x1801c86b0
jmp 0x1801c8c99
test r13d, r13d
je 0x1801c8c99
lea r9, [rdi + 0x508]
mov r15, 0xfffffffffffffae8
sub r15, rdi
nop
mov rdx, r9
mov r8d, 2
nop dword [rax]
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 0x1801c8910
sub qword [rdi + 0x560], 0xffffffffffffff80
mov r8, r12
mov rdx, r9
mov rcx, rdi
call fcn.1801c8210
lea rcx, [rdi + 0x527]
nop dword [rax]
add byte [rcx], 1
jne 0x1801c8962
dec rcx
lea rax, [rcx + r15]
cmp rax, 0xc
jge 0x1801c8950
mov rax, qword [r14]
lea r8, [rdi + 0x538]
lea rdx, [rdi + 0x518]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r13d
lea r9, [rdi + 0x508]
jb 0x1801c8900
jmp 0x1801c8c99
test dl, dl
je 0x1801c8bf5
test r13d, r13d
je 0x1801c8c99
lea rax, [rdi + 0x50e]
lea r11, [rdi + 0x508]
mov r15, 0xfffffffffffffae8
sub r15, rdi
nop word [rax + rax]
mov r9, rax
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 0x1801c89d0
sub qword [rdi + 0x560], 0xffffffffffffff80
mov r8, r12
mov rdx, r11
mov rcx, rdi
call fcn.1801c8210
lea rcx, [rdi + 0x527]
nop
add byte [rcx], 1
jne 0x1801c8bc2
dec rcx
lea rax, [rcx + r15]
cmp rax, 0xc
jge 0x1801c8bb0
mov rax, qword [r14]
lea r8, [rdi + 0x538]
lea rdx, [rdi + 0x518]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r13d
lea rax, [rdi + 0x50e]
lea r11, [rdi + 0x508]
jb 0x1801c89c0
jmp 0x1801c8c99
test r13d, r13d
je 0x1801c8c99
lea r9, [rdi + 0x508]
mov r15, 0xfffffffffffffae8
sub r15, rdi
nop
mov rdx, r9
mov r8d, 2
nop dword [rax]
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 0x1801c8c20
sub qword [rdi + 0x560], 0xffffffffffffff80
mov r8, r12
mov rdx, r9
mov rcx, rdi
call fcn.1801c8210
lea rcx, [rdi + 0x527]
nop dword [rax]
add byte [rcx], 1
jne 0x1801c8c72
dec rcx
lea rax, [rcx + r15]
cmp rax, 0xc
jge 0x1801c8c60
mov rax, qword [r14]
lea r8, [rdi + 0x538]
lea rdx, [rdi + 0x518]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r13d
lea r9, [rdi + 0x508]
jb 0x1801c8c10
mov edx, dword [rsp + 0xd0]
cmp ebx, edx
jae 0x1801c8d77
mov r15d, ebx
mov ecx, dword [rdi + 0x550]
add r15, rbp
sub rsi, rbp
sub edx, ebx
mov ebx, edx
movzx ebp, byte [rsp + 0x20]
cmp ecx, 0x10
jne 0x1801c8d25
sub qword [rdi + 0x560], 0xffffffffffffff80
mov r8, r12
lea rdx, [rdi + 0x508]
mov rcx, rdi
call fcn.1801c8210
lea rcx, [rdi + 0x527]
mov rdx, 0xfffffffffffffae8
sub rdx, rdi
add byte [rcx], 1
jne 0x1801c8d02
dec rcx
lea rax, [rcx + rdx]
cmp rax, 0xc
jge 0x1801c8cf0
mov rax, qword [r14]
lea r8, [rdi + 0x538]
lea rdx, [rdi + 0x518]
mov rcx, r14
call qword [rax + 0x20]
mov dword [rdi + 0x550], 0
xor ecx, ecx
movsxd rax, ecx
test bpl, bpl
je 0x1801c8d3e
movzx ecx, byte [r15]
xor cl, byte [rax + rdi + 0x538]
mov byte [rsi + r15], cl
jmp 0x1801c8d50
movzx ecx, byte [rsi + r15]
movzx eax, byte [rax + rdi + 0x538]
xor al, cl
mov byte [r15], al
movsxd rax, dword [rdi + 0x550]
xor byte [rax + rdi + 0x508], cl
inc dword [rdi + 0x550]
mov ecx, dword [rdi + 0x550]
inc r15
sub rbx, 1
jne 0x1801c8cc0
mov edx, dword [rsp + 0x24]
mov rcx, qword [rsp + 0x28]
call fcn.1800bf310
mov bl, 1
jmp 0x1801c8548