Function at 0x14013e4a0
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 [0x14026be10]
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 + 0xaa]
lea r8, str.gcm_process
mov rdx, r12
lea rcx, [r11 - 0x58]
call fcn.1400712c0
nop
mov r13d, dword [rsp + 0xd0]
test r13d, r13d
je 0x14013e544
test rbp, rbp
jne 0x14013e544
mov rax, qword [r12]
lea rdx, str.NULL_input.
jmp 0x14013ed32
mov rcx, r14
call fcn.1400372d0
mov edi, eax
add eax, r13d
mov dword [rsp + 0x28], eax
lea edx, [rax + 0x20]
mov rcx, r14
call fcn.140036af0
test al, al
jne 0x14013e574
mov rax, qword [r12]
lea rdx, str.Unable_to_allocate_GCM_output_buffer.
jmp 0x14013ed32
mov edx, edi
mov rcx, r14
test sil, sil
je 0x14013e58b
mov rsi, rbp
call fcn.140036f30
mov rbp, rax
jmp 0x14013e593
call fcn.140036f30
mov rsi, rax
movzx r14d, byte [0x1402703f0]
movsxd rax, dword [rbx + 0x548]
cmp eax, 0x10
ja 0x14013ed38
cmp dword [rbx + 0x544], 1
jne 0x14013e61a
test eax, eax
je 0x14013e5d5
shl rax, 3
add qword [rbx + 0x550], rax
lea rdx, [rbx + 0x500]
mov r8, r12
mov rcx, rbx
call fcn.14013e210
lea rcx, [rbx + 0x51f]
mov rdx, 0xfffffffffffffaf0
sub rdx, rbx
add byte [rcx], 1
jne 0x14013e5f8
dec rcx
lea rax, [rdx + rcx]
cmp rax, 0xc
jge 0x14013e5e6
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 0x14013ed38
xor edi, edi
cmp dword [rbx + 0x548], edi
jne 0x14013ec4a
cmp byte [rsp + 0x20], dil
je 0x14013e944
test r14b, r14b
je 0x14013e8a5
and r13d, 0xfffffff0
jbe 0x14013ec42
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 0x14013e680
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
mov rdx, r11
mov rcx, rbx
call fcn.14013e210
lea rcx, [rbx + 0x51f]
nop
add byte [rcx], 1
jne 0x14013e872
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x14013e860
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 0x14013e670
jmp 0x14013ec42
mov eax, r13d
and eax, 0xfffffff0
mov dword [rsp + 0x24], eax
jbe 0x14013ec4a
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 0x14013e8d0
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
lea rdx, [rbx + 0x500]
mov rcx, rbx
call fcn.14013e210
lea rcx, [rbx + 0x51f]
nop dword [rax]
add byte [rcx], 1
jne 0x14013e922
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x14013e910
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 0x14013e8c0
jmp 0x14013ec4a
test r14b, r14b
je 0x14013eba5
and r13d, 0xfffffff0
jbe 0x14013ec42
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 0x14013e980
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
mov rdx, r11
mov rcx, rbx
call fcn.14013e210
lea rcx, [rbx + 0x51f]
nop dword [rax]
add byte [rcx], 1
jne 0x14013eb72
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x14013eb60
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 0x14013e970
jmp 0x14013ec42
mov eax, r13d
and eax, 0xfffffff0
mov dword [rsp + 0x24], eax
jbe 0x14013ec4a
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 0x14013ebd0
sub qword [rbx + 0x558], 0xffffffffffffff80
mov r8, r12
lea rdx, [rbx + 0x500]
mov rcx, rbx
call fcn.14013e210
lea rcx, [rbx + 0x51f]
add byte [rcx], 1
jne 0x14013ec23
dec rcx
lea rax, [rcx + r14]
cmp rax, 0xc
jge 0x14013ec11
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 0x14013ebc0
jmp 0x14013ec4a
mov r13d, dword [rsp + 0xd0]
cmp edi, r13d
jae 0x14013ed20
mov r14d, edi
add r14, rbp
sub rsi, rbp
sub r13d, edi
mov edi, r13d
cmp dword [rbx + 0x548], 0x10
jne 0x14013ecc9
sub qword [rbx + 0x558], 0xffffffffffffff80
lea rdx, [rbx + 0x500]
mov r8, r12
mov rcx, rbx
call fcn.14013e210
lea rcx, [rbx + 0x51f]
mov rdx, 0xfffffffffffffaf0
sub rdx, rbx
add byte [rcx], 1
jne 0x14013eca8
dec rcx
lea rax, [rcx + rdx]
cmp rax, 0xc
jge 0x14013ec96
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 0x14013eceb
movzx edx, byte [rax + rbx + 0x530]
movzx eax, byte [rsi + r14]
xor edx, eax
mov byte [r14], dl
jmp 0x14013ecff
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 0x14013ec62
mov edx, dword [rsp + 0x28]
mov rcx, qword [rsp + 0x30]
call fcn.140038990
mov bl, 1
jmp 0x14013ed3a
mov rcx, r12
call qword [rax + 0x28]
xor bl, bl
lea rcx, [rsp + 0x40]
call fcn.140071380
movzx eax, bl
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.140168e10
mov rbx, qword [rsp + 0xa8]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret