Function at 0x180141250
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, 0x360
mov rax, qword [0x1802cd010]
xor rax, rsp
mov qword [rsp + 0x350], rax
mov rdi, r9
movzx ebp, dl
mov byte [rsp + 0x20], dl
mov r14, rcx
mov rsi, qword [rsp + 0x3c8]
mov r13, qword [rsp + 0x3d8]
mov qword [rsp + 0x28], r13
mov rbx, qword [rsp + 0x3e0]
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rsp + 0x30], xmm0
mov qword [rsp + 0x40], rax
movzx r9d, byte [rbx + 0x16a]
lea r8, str.gcm_process
mov rdx, rbx
lea rcx, [rsp + 0x30]
call fcn.180029f80
nop
mov r12d, dword [rsp + 0x3d0]
test r12d, r12d
je 0x18014132b
test rsi, rsi
jne 0x18014132b
mov rax, qword [rbx]
lea rdx, str.NULL_input.
mov rcx, rbx
call qword [rax + 0x28]
xor bl, bl
lea rcx, [rsp + 0x30]
call fcn.18002a0e0
movzx eax, bl
mov rcx, qword [rsp + 0x350]
xor rcx, rsp
call fcn.180009610
mov rbx, qword [rsp + 0x3a8]
add rsp, 0x360
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rcx, r13
call fcn.18001fd80
mov r15d, eax
add eax, r12d
mov dword [rsp + 0x24], eax
lea edx, [rax + 0x20]
mov rcx, r13
call fcn.18001f440
test al, al
jne 0x180141358
mov rax, qword [rbx]
lea rdx, str.Unable_to_allocate_GCM_output_buffer.
jmp 0x1801412eb
mov edx, r15d
mov rcx, r13
test bpl, bpl
je 0x180141370
mov rbp, rsi
call fcn.18001f8f0
mov rsi, rax
jmp 0x180141378
call fcn.18001f8f0
mov rbp, rax
movzx r15d, byte [0x1802e1921]
movsxd rax, dword [rdi + 0x558]
cmp eax, 0x10
ja 0x1801412f1
mov ecx, dword [rdi + 0x554]
cmp ecx, 1
jne 0x180141440
test eax, eax
je 0x1801413f6
shl rax, 3
add qword [rdi + 0x560], rax
xor edx, edx
mov r8d, 0x178
lea rcx, [rsp + 0x1d0]
call sub.VCRUNTIME140.dll_memset
lea rcx, [rsp + 0x1d0]
call fcn.18002a040
nop
lea rdx, [rdi + 0x510]
lea r8, [rsp + 0x1d0]
mov rcx, rdi
call fcn.180140ee0
nop
lea rcx, [rsp + 0x1d0]
call fcn.18002a130
lea rcx, [rdi + 0x52f]
mov rdx, 0xfffffffffffffae0
sub rdx, rdi
add byte [rcx], 1
jne 0x180141419
dec rcx
lea rax, [rdx + rcx]
cmp rax, 0xc
jge 0x180141407
lea r13, [rdi + 0x540]
mov rax, qword [r14]
lea rdx, [rdi + 0x520]
mov r8, r13
mov rcx, r14
call qword [rax + 0x20]
mov qword [rdi + 0x554], 2
jmp 0x180141450
cmp ecx, 2
jne 0x1801412f1
lea r13, [rdi + 0x540]
xor edx, edx
mov r8d, 0x178
lea rcx, [rsp + 0x50]
call sub.VCRUNTIME140.dll_memset
lea rcx, [rsp + 0x50]
call fcn.18002a040
nop
xor ebx, ebx
cmp dword [rdi + 0x558], ebx
jne 0x180141a95
and r12d, 0xfffffff0
cmp byte [rsp + 0x20], bl
je 0x180141793
test r15b, r15b
je 0x1801416f2
test r12d, r12d
je 0x180141a95
lea rax, [rdi + 0x546]
lea r11, [rdi + 0x510]
mov r15, 0xfffffffffffffae0
sub r15, rdi
nop dword [rax]
nop word [rax + rax]
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 [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 0x1801414d0
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
mov rdx, r11
mov rcx, rdi
call fcn.180140ee0
lea rcx, [rdi + 0x52f]
add byte [rcx], 1
jne 0x1801416c3
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x1801416b1
mov rax, qword [r14]
mov r8, r13
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
lea rax, [rdi + 0x546]
lea r11, [rdi + 0x510]
jb 0x1801414c0
jmp 0x180141a95
test r12d, r12d
je 0x180141a95
mov r15, 0xfffffffffffffae0
sub r15, rdi
nop word [rax + rax]
lea rdx, [rdi + 0x510]
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 0x180141720
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
lea rdx, [rdi + 0x510]
mov rcx, rdi
call fcn.180140ee0
lea rcx, [rdi + 0x52f]
nop
add byte [rcx], 1
jne 0x180141772
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x180141760
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
jb 0x180141710
jmp 0x180141a95
test r15b, r15b
je 0x1801419f2
test r12d, r12d
je 0x180141a95
lea rax, [rdi + 0x516]
lea r11, [rdi + 0x510]
mov r15, 0xfffffffffffffae0
sub r15, rdi
nop dword [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 0x1801417d0
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
mov rdx, r11
mov rcx, rdi
call fcn.180140ee0
lea rcx, [rdi + 0x52f]
add byte [rcx], 1
jne 0x1801419c3
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x1801419b1
mov rax, qword [r14]
mov r8, r13
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
lea rax, [rdi + 0x516]
lea r11, [rdi + 0x510]
jb 0x1801417c0
jmp 0x180141a95
test r12d, r12d
je 0x180141a95
mov r15, 0xfffffffffffffae0
sub r15, rdi
nop word [rax + rax]
lea rdx, [rdi + 0x510]
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 0x180141a20
sub qword [rdi + 0x568], 0xffffffffffffff80
lea r8, [rsp + 0x50]
lea rdx, [rdi + 0x510]
mov rcx, rdi
call fcn.180140ee0
lea rcx, [rdi + 0x52f]
add byte [rcx], 1
jne 0x180141a75
dec rcx
lea rax, [r15 + rcx]
cmp rax, 0xc
jge 0x180141a63
mov rax, qword [r14]
lea r8, [rdi + 0x540]
lea rdx, [rdi + 0x520]
mov rcx, r14
call qword [rax + 0x20]
cmp ebx, r12d
jb 0x180141a10
mov r13d, dword [rsp + 0x3d0]
cmp ebx, r13d
jae 0x180141b7b
mov r15d, ebx
mov ecx, dword [rdi + 0x558]
add r15, rbp
sub rsi, rbp
sub r13d, ebx
mov ebx, r13d
nop dword [rax + rax]
cmp ecx, 0x10
jne 0x180141b27
sub qword [rdi + 0x568], 0xffffffffffffff80
lea rdx, [rdi + 0x510]
lea r8, [rsp + 0x50]
mov rcx, rdi
call fcn.180140ee0
lea rcx, [rdi + 0x52f]
mov rdx, 0xfffffffffffffae0
sub rdx, rdi
add byte [rcx], 1
jne 0x180141b04
dec rcx
lea rax, [rdx + rcx]
cmp rax, 0xc
jge 0x180141af2
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 ecx, ecx
movsxd rdx, ecx
cmp byte [rsp + 0x20], 0
je 0x180141b42
movzx ecx, byte [r15]
xor cl, byte [rdx + rdi + 0x540]
mov byte [rsi + r15], cl
jmp 0x180141b54
movzx ecx, byte [rsi + r15]
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]
mov ecx, dword [rdi + 0x558]
inc r15
sub rbx, 1
jne 0x180141ac0
mov edx, dword [rsp + 0x24]
mov rcx, qword [rsp + 0x28]
call fcn.180021cb0
mov bl, 1
lea rcx, [rsp + 0x50]
call fcn.18002a130
jmp 0x1801412f3