Function at 0x140049860
Capabilities:
Encode data using xor

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x40
mov rdi, rdx
mov rdx, qword [r8 + 0x10]
mov rbx, rcx
mov r12, r8
mov rax, qword [rdi + 0x10]
cmp rdx, rax
jb 0x140049980
lea rsi, [rsp + 0x20]
shl rdx, 6
mov rcx, rsi
call method.CryptoPP::PolynomialMod2.PolynomialMod2_unsigned_long_long__unsigned_long_long___clone_.constprop.0_
mov r9, qword [rdi + 0x10]
mov rdx, qword [r12 + 0x18]
mov r8, qword [rdi + 0x18]
mov rbp, qword [rsp + 0x38]
test r9, r9
je 0x14004991b
lea rax, [r9 - 1]
cmp rax, 1
jbe 0x140049ab0
lea rax, [r8 + 8]
cmp rbp, rax
je 0x140049ab0
lea rax, [rdx + 8]
cmp rbp, rax
je 0x140049ab0
mov rcx, r9
xor eax, eax
shr rcx, 1
shl rcx, 4
movdqu xmm0, xmmword [r8 + rax]
movdqu xmm1, xmmword [rdx + rax]
pxor xmm0, xmm1
movups xmmword [rbp + rax], xmm0
add rax, 0x10
cmp rax, rcx
jne 0x1400498e0
mov rcx, r9
and rcx, 0xfffffffffffffffe
and r9d, 1
je 0x140049917
mov rax, qword [rdx + rcx*8]
xor rax, qword [r8 + rcx*8]
mov qword [rbp + rcx*8], rax
mov r9, qword [rdi + 0x10]
lea rcx, [r9*8]
add rdx, rcx
add rcx, rbp
cmp rdx, rcx
je 0x14004993f
mov r8, qword [r12 + 0x10]
sub r8, r9
shl r8, 3
call sym.memcpy
mov rdx, rsi
mov rcx, rbx
call method.CryptoPP::PolynomialMod2.PolynomialMod2_CryptoPP::PolynomialMod2_const_
test rbp, rbp
je 0x140049970
mov rax, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x28]
mov rdi, rbp
cmp rcx, rax
cmova rcx, rax
xor eax, eax
rep stosq qword [rdi], rax
mov rcx, rbp
call method.CryptoPP.UnalignedDeallocate_void_
mov rax, rbx
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
shl rax, 6
lea rsi, [rsp + 0x20]
mov rdx, rax
mov rcx, rsi
call method.CryptoPP::PolynomialMod2.PolynomialMod2_unsigned_long_long__unsigned_long_long___clone_.constprop.0_
mov r9, qword [r12 + 0x10]
mov r8, qword [r12 + 0x18]
mov rdx, qword [rdi + 0x18]
mov rbp, qword [rsp + 0x38]
test r9, r9
je 0x140049a1c
lea rax, [r9 - 1]
cmp rax, 1
jbe 0x140049a88
lea rax, [rdx + 8]
cmp rbp, rax
je 0x140049a88
lea rax, [r8 + 8]
cmp rbp, rax
je 0x140049a88
mov rcx, r9
xor eax, eax
shr rcx, 1
shl rcx, 4
movdqu xmm0, xmmword [rdx + rax]
movdqu xmm2, xmmword [r8 + rax]
pxor xmm0, xmm2
movups xmmword [rbp + rax], xmm0
add rax, 0x10
cmp rax, rcx
jne 0x1400499e0
mov rcx, r9
and rcx, 0xfffffffffffffffe
and r9d, 1
je 0x140049a17
mov rax, qword [rdx + rcx*8]
xor rax, qword [r8 + rcx*8]
mov qword [rbp + rcx*8], rax
mov r9, qword [r12 + 0x10]
lea rcx, [r9*8]
add rdx, rcx
add rcx, rbp
cmp rdx, rcx
je 0x140049a3f
mov r8, qword [rdi + 0x10]
sub r8, r9
shl r8, 3
call sym.memcpy
mov rdx, rsi
mov rcx, rbx
call method.CryptoPP::PolynomialMod2.PolynomialMod2_CryptoPP::PolynomialMod2_const_
test rbp, rbp
je 0x140049970
mov rax, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x28]
mov rdi, rbp
cmp rcx, rax
cmova rcx, rax
xor eax, eax
rep stosq qword [rdi], rax
mov rcx, rbp
call method.CryptoPP.UnalignedDeallocate_void_
mov rax, rbx
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
xor eax, eax
nop word [rax + rax]
mov rcx, qword [rdx + rax*8]
xor rcx, qword [r8 + rax*8]
mov qword [rbp + rax*8], rcx
add rax, 1
cmp r9, rax
jne 0x140049a90
mov r9, qword [r12 + 0x10]
jmp 0x140049a1c
xor eax, eax
nop word [rax + rax]
mov rcx, qword [rdx + rax*8]
xor rcx, qword [r8 + rax*8]
mov qword [rbp + rax*8], rcx
add rax, 1
cmp r9, rax
jne 0x140049ab8
mov r9, qword [rdi + 0x10]
jmp 0x14004991b