Function at 0x1800ba860
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 - 0x60], 0xfffffffffffffffe
mov qword [r11 + 0x10], rbx
mov rax, qword [0x18017a408]
xor rax, rsp
mov qword [rsp + 0x58], rax
mov rbx, r9
movzx esi, dl
mov byte [rsp + 0x20], dl
mov r15, rcx
mov rbp, qword [rsp + 0xc8]
mov r14, qword [rsp + 0xd8]
mov qword [rsp + 0x30], r14
mov r12, qword [rsp + 0xe0]
xor eax, eax
mov qword [r11 - 0x58], rax
mov qword [r11 - 0x50], rax
mov qword [r11 - 0x48], rax
movzx r9d, byte [r12 + 0xd2]
lea r8, str.gcm_process
mov rdx, r12
lea rcx, [r11 - 0x58]
call fcn.1800391d0
nop
mov r13d, dword [rsp + 0xd0]
test r13d, r13d
je 0x1800ba904
test rbp, rbp
jne 0x1800ba904
mov rax, qword [r12]
lea rdx, str.NULL_input.
jmp 0x1800bb0f2
mov rcx, r14
call fcn.180015e00
mov edi, eax
add eax, r13d
mov dword [rsp + 0x28], eax
lea edx, [rax + 0x20]
mov rcx, r14
call fcn.1800157f0
test al, al
jne 0x1800ba934
mov rax, qword [r12]
lea rdx, str.Unable_to_allocate_GCM_output_buffer.
jmp 0x1800bb0f2
mov edx, edi
mov rcx, r14
test sil, sil
je 0x1800ba94b
mov rsi, rbp
call fcn.180015b00
mov rbp, rax
jmp 0x1800ba953
call fcn.180015b00
mov rsi, rax
movzx r14d, byte [0x18017fda8]
movsxd rax, dword [rbx + 0x548]
cmp eax, 0x10
ja 0x1800bb0f8
cmp dword [rbx + 0x544], 1
jne 0x1800ba9da
test eax, eax
je 0x1800ba995
shl rax, 3
add qword [rbx + 0x550], rax
lea rdx, [rbx + 0x500]
mov r8, r12
mov rcx, rbx
call fcn.1800ba5d0
lea rcx, [rbx + 0x51f]
mov rdx, 0xfffffffffffffaf0
sub rdx, rbx
add byte [rcx], 1
jne 0x1800ba9b8
dec rcx
lea rax, [rdx + rcx]
cmp rax, 0xc
jge 0x1800ba9a6
mov rax, qword [r15]
lea r8, [rbx + 0x530]
lea rdx, [rbx + 0x510]
mov rcx, r15
call qword [rax + 0x20]
mov qword [rbx + 0x544], 2
cmp dword [rbx + 0x544], 2
jne 0x1800bb0f8
xor edi, edi
cmp dword [rbx + 0x548], edi
jne 0x1800bb00a
cmp byte [rsp + 0x20], dil
je 0x1800bad04
test r14b, r14b
je 0x1800bac65
and r13d, 0xfffffff0
jbe 0x1800bb002
lea rax, [rbx + 0x536]
lea r11, [rbx + 0x500]
mov r14, 0xfffffffffffffaf0
sub r14, rbx
nop dword [rax + rax]
mov r9, rax
mov r10d, 2
nop dword [rax]
movzx ecx, byte [rdi + rsi + 7]
shl rcx, 8
movzx eax, byte [rdi + rsi + 6]
or rcx, rax
shl rcx, 8
movzx eax, byte [rsi + rdi + 5]
or rcx, rax
shl rcx, 8
movzx eax, byte [rsi + rdi + 4]
or rcx, rax
shl rcx, 8
movzx eax, byte [rsi + rdi + 3]
or rcx, rax
shl rcx, 8
movzx eax, byte [rsi + rdi + 2]
or rcx, rax
shl rcx, 8
movzx eax, byte [rdi + rsi + 1]
or rcx, rax
shl rcx, 8
movzx eax, byte [rdi + rsi]
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 [rdi + rbp + 7], al
mov rax, r8
shr rax, 0x30
mov byte [rdi + rbp + 6], al
mov rax, r8
shr rax, 0x28
mov byte [rdi + rbp + 5], al
mov rax, r8
shr rax, 0x20
mov byte [rdi + rbp + 4], al
mov rax, r8
shr rax, 0x18
mov byte [rdi + rbp + 3], al
mov rax, r8
shr rax, 0x10
mov byte [rdi + rbp + 2], al
mov rax, r8
shr rax, 8
mov byte [rdi + rbp + 1], al
mov byte [rdi + rbp], 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 edi, 8
lea r9, [r9 + 8]
sub r10, 1
jne 0x1800baa40
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
mov rdx, r11
mov rcx, rbx
call fcn.1800ba5d0
lea rcx, [rbx + 0x51f]
nop
add byte [rcx], 1
jne 0x1800bac32
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x1800bac20
mov rax, qword [r15]
lea r8, [rbx + 0x530]
lea rdx, [rbx + 0x510]
mov rcx, r15
call qword [rax + 0x20]
cmp edi, r13d
lea rax, [rbx + 0x536]
lea r11, [rbx + 0x500]
jb 0x1800baa30
jmp 0x1800bb002
mov eax, r13d
and eax, 0xfffffff0
mov dword [rsp + 0x24], eax
jbe 0x1800bb00a
mov r14, 0xfffffffffffffaf0
sub r14, rbx
nop
lea rdx, [rbx + 0x500]
mov r8d, 2
nop dword [rax]
mov rax, qword [rdi + rsi]
xor rax, qword [rdx + 0x30]
mov qword [rdi + rbp], rax
xor qword [rdx], rax
add edi, 8
lea rdx, [rdx + 8]
sub r8, 1
jne 0x1800bac90
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
lea rdx, [rbx + 0x500]
mov rcx, rbx
call fcn.1800ba5d0
lea rcx, [rbx + 0x51f]
nop dword [rax]
add byte [rcx], 1
jne 0x1800bace2
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x1800bacd0
mov rax, qword [r15]
lea r8, [rbx + 0x530]
lea rdx, [rbx + 0x510]
mov rcx, r15
call qword [rax + 0x20]
cmp edi, dword [rsp + 0x24]
jb 0x1800bac80
jmp 0x1800bb00a
test r14b, r14b
je 0x1800baf65
and r13d, 0xfffffff0
jbe 0x1800bb002
lea rax, [rbx + 0x506]
lea r11, [rbx + 0x500]
mov r14, 0xfffffffffffffaf0
sub r14, rbx
nop
mov r9, rax
mov r10d, 2
nop dword [rax]
movzx edx, byte [rdi + rbp + 7]
shl rdx, 8
movzx eax, byte [rdi + rbp + 6]
or rdx, rax
shl rdx, 8
movzx eax, byte [rdi + rbp + 5]
or rdx, rax
shl rdx, 8
movzx eax, byte [rdi + rbp + 4]
or rdx, rax
shl rdx, 8
movzx eax, byte [rdi + rbp + 3]
or rdx, rax
shl rdx, 8
movzx eax, byte [rdi + rbp + 2]
or rdx, rax
shl rdx, 8
movzx eax, byte [rdi + rbp + 1]
or rdx, rax
shl rdx, 8
movzx eax, byte [rdi + rbp]
or rdx, 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, rdx
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 rdx, rcx
mov rax, rdx
shr rax, 0x38
mov byte [rdi + rsi + 7], al
mov rax, rdx
shr rax, 0x30
mov byte [rdi + rsi + 6], al
mov rax, rdx
shr rax, 0x28
mov byte [rsi + rdi + 5], al
mov rax, rdx
shr rax, 0x20
mov byte [rsi + rdi + 4], al
mov rax, rdx
shr rax, 0x18
mov byte [rsi + rdi + 3], al
mov rax, rdx
shr rax, 0x10
mov byte [rsi + rdi + 2], al
mov rax, rdx
shr rax, 8
mov byte [rdi + rsi + 1], al
mov byte [rdi + rsi], dl
add edi, 8
lea r9, [r9 + 8]
sub r10, 1
jne 0x1800bad40
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
mov rdx, r11
mov rcx, rbx
call fcn.1800ba5d0
lea rcx, [rbx + 0x51f]
nop dword [rax]
add byte [rcx], 1
jne 0x1800baf32
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x1800baf20
mov rax, qword [r15]
lea r8, [rbx + 0x530]
lea rdx, [rbx + 0x510]
mov rcx, r15
call qword [rax + 0x20]
cmp edi, r13d
lea rax, [rbx + 0x506]
lea r11, [rbx + 0x500]
jb 0x1800bad30
jmp 0x1800bb002
mov eax, r13d
and eax, 0xfffffff0
mov dword [rsp + 0x24], eax
jbe 0x1800bb00a
mov r14, 0xfffffffffffffaf0
sub r14, rbx
nop
lea rdx, [rbx + 0x500]
mov r8d, 2
nop dword [rax]
mov rax, qword [rdi + rbp]
xor qword [rdx], rax
mov rax, qword [rdx + 0x30]
xor rax, qword [rdi + rbp]
mov qword [rdi + rsi], rax
add edi, 8
lea rdx, [rdx + 8]
sub r8, 1
jne 0x1800baf90
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
lea rdx, [rbx + 0x500]
mov rcx, rbx
call fcn.1800ba5d0
lea rcx, [rbx + 0x51f]
add byte [rcx], 1
jne 0x1800bafe3
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x1800bafd1
mov rax, qword [r15]
lea r8, [rbx + 0x530]
lea rdx, [rbx + 0x510]
mov rcx, r15
call qword [rax + 0x20]
cmp edi, dword [rsp + 0x24]
jb 0x1800baf80
jmp 0x1800bb00a
mov r13d, dword [rsp + 0xd0]
cmp edi, r13d
jae 0x1800bb0e0
mov r14d, edi
add r14, rbp
sub rsi, rbp
sub r13d, edi
mov edi, r13d
cmp dword [rbx + 0x548], 0x10
jne 0x1800bb089
sub qword [rbx + 0x558], 0xffffffffffffff80
lea rdx, [rbx + 0x500]
mov r8, r12
mov rcx, rbx
call fcn.1800ba5d0
lea rcx, [rbx + 0x51f]
mov rdx, 0xfffffffffffffaf0
sub rdx, rbx
add byte [rcx], 1
jne 0x1800bb068
dec rcx
lea rax, [rcx + rdx]
cmp rax, 0xc
jge 0x1800bb056
mov rax, qword [r15]
lea r8, [rbx + 0x530]
lea rdx, [rbx + 0x510]
mov rcx, r15
call qword [rax + 0x20]
mov dword [rbx + 0x548], 0
movsxd rax, dword [rbx + 0x548]
cmp byte [rsp + 0x20], 0
je 0x1800bb0ab
movzx edx, byte [rax + rbx + 0x530]
movzx eax, byte [rsi + r14]
xor edx, eax
mov byte [r14], dl
jmp 0x1800bb0bf
movzx edx, byte [r14]
movzx r8d, byte [rax + rbx + 0x530]
xor r8b, dl
mov byte [rsi + r14], r8b
movsxd rax, dword [rbx + 0x548]
xor byte [rax + rbx + 0x500], dl
inc dword [rbx + 0x548]
inc r14
sub rdi, 1
jne 0x1800bb022
mov edx, dword [rsp + 0x28]
mov rcx, qword [rsp + 0x30]
call fcn.180016ad0
mov bl, 1
jmp 0x1800bb0fa
mov rcx, r12
call qword [rax + 0x28]
xor bl, bl
lea rcx, [rsp + 0x40]
call fcn.1800392a0
movzx eax, bl
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.1800c9b90
mov rbx, qword [rsp + 0xa8]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret