Function at 0x14012a970
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov edi, edx
mov rsi, rcx
mov ebp, edx
shr ebp, 8
xor eax, eax
nop dword [rax + rax]
test al, al
jne 0x14012a990
mov ebx, edi
shr ebx, 0x10
nop dword [rax]
mov eax, dword [0x140229290]
sub eax, dword [0x140229294]
mov ecx, eax
not ecx
and ecx, 0xdfd73481
mov edx, eax
and edx, 0x2028cb7e
imul edx, ecx
mov ecx, eax
and ecx, 0xdfd73481
or eax, 0xdfd73481
imul eax, ecx
add eax, edx
add eax, 0xe8c3ee68
cmp eax, 0xc51b1705
ja 0x14012a9a0
nop
mov eax, dword [0x14022929c]
mov ecx, eax
xor ecx, ecx
not ecx
and ecx, dword [0x140229298]
xor ecx, eax
imul rax, rcx, 0x496b539
shr rax, 0x3a
imul eax, eax, 0x34c368f7
or eax, 0xcc3dba9c
cmp eax, 0x94651cc9
jb 0x14012a9e0
mov r8, qword [rsi]
mov r14, qword [rsi + 0x10]
cmp r14, r8
jne 0x14012ab35
mov eax, dword [0x1402292a0]
mov ecx, dword [0x1402292a4]
mov edx, eax
and edx, ecx
or eax, ecx
add eax, edx
mov ecx, eax
not ecx
or eax, 0xad006b22
or ecx, 0x52ff94dd
and ecx, eax
not ecx
add ecx, 0x25d1e07f
xor ecx, 0x64adb3f4
cmp ecx, 0x5db8cf76
jb 0x14012aab1
mov eax, dword [0x1402292a8]
mov ecx, dword [0x1402292ac]
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [rax + rdx*2]
mov ecx, eax
and ecx, 0x78861651
add ecx, ecx
sub eax, ecx
add eax, 0xf8861651
mov r15d, eax
xor r15d, 0x2c14e005
xor eax, 0x10421880
or eax, 0xedb4e60f
or r15d, 0x124b19f0
and r15d, eax
mov rcx, rsi
call fcn.1401511c0
cmp r15d, 0x1adabccb
jae 0x14012aac0
mov rcx, rsi
call fcn.1401511c0
jmp 0x14012aa5c
mov eax, dword [0x1402292b0]
or eax, dword [0x1402292b4]
mov ecx, eax
xor ecx, 0xb1db5247
and ecx, eax
add ecx, 0xf53eeb51
mov eax, ecx
not eax
mov edx, ecx
and edx, 0xfe6f6e70
and eax, 0x190918f
imul eax, edx
mov edx, ecx
and edx, 0x190918f
or ecx, 0x190918f
imul ecx, edx
add ecx, eax
cmp ecx, 0x1943ea4f
jb 0x14012aac0
mov r8, qword [rsi]
nop
mov eax, dword [0x1402292b8]
xor edx, edx
div dword [0x1402292bc]
imul rax, rax, 0x553b90d5
shr rax, 0x3e
or eax, 0xd1928dda
cmp eax, 0x7089fd90
jb 0x14012ab10
mov rcx, qword [rsi + 8]
mov byte [rcx + r14], dil
lea rax, [r14 + 1]
mov qword [rsi + 0x10], rax
cmp rax, r8
jne 0x14012abb7
mov rcx, rsi
call fcn.1401511c0
mov eax, dword [0x1402292c0]
xor edx, edx
div dword [0x1402292c4]
mov eax, dword [0x1402292c8]
or eax, dword [0x1402292cc]
or eax, 0xc5c2eb47
add eax, 0x304f6546
cmp eax, 0xfce16053
ja 0x14012ab60
mov rcx, qword [rsi + 8]
nop word cs:[rax + rax]
mov eax, dword [0x1402292d0]
mov edx, dword [0x1402292d4]
mov r8d, eax
and r8d, edx
xor eax, edx
lea eax, [rax + r8*2]
or eax, 0x2c6dac48
cmp eax, 0xdf2a49f5
je 0x14012ab90
mov r8, qword [rsi]
mov byte [rcx + r14 + 1], bpl
lea rax, [r14 + 2]
mov qword [rsi + 0x10], rax
cmp rax, r8
jne 0x14012acb8
mov eax, dword [0x1402292d8]
imul eax, dword [0x1402292dc]
imul eax, eax, 0xb31094f
mov ecx, eax
not ecx
and ecx, 0x82ac31be
mov edx, eax
and edx, 0x7d53ce41
imul edx, ecx
mov ecx, eax
and ecx, 0x82ac31be
or eax, 0x82ac31be
imul eax, ecx
add eax, edx
cmp eax, 0x61c3ea2e
je 0x14012ac81
mov ebp, dword [0x1402292e0]
mov eax, dword [0x1402292e4]
mov ecx, eax
not ecx
mov edx, ebp
and edx, ecx
or ecx, ebp
not ecx
imul ecx, edx
mov edx, ebp
and edx, eax
or ebp, eax
imul ebp, edx
add ebp, ecx
mov eax, ebp
not eax
and eax, 0x5f982e58
and ebp, 0x2067d1a7
sub ebp, eax
mov eax, ebp
or eax, 0x8b432cea
mov ecx, ebp
not ecx
and ecx, 0x49c5214
mov edx, eax
and edx, 0xf862a9a3
imul edx, ecx
and eax, 0x79d565c
or ebp, 0x8fdf7efe
imul ebp, eax
add ebp, edx
mov rcx, rsi
call fcn.14014e7d0
cmp ebp, 0x1561f2de
jne 0x14012ac8b
mov rcx, rsi
call fcn.14014e7d0
jmp 0x14012ac0e
mov rcx, qword [rsi + 8]
nop
mov eax, dword [0x1402292ec]
add eax, dword [0x1402292e8]
and eax, 0xafedb83c
imul rax, rax, 0x207d2fff
shr rax, 0x3c
or eax, 0x2284b7c4
cmp eax, 0x2e5c6aa5
ja 0x14012ac90
mov eax, dword [0x1402292f0]
xor edx, edx
div dword [0x1402292f4]
mov edx, eax
and edx, 0xaec78c94
and eax, 0x2e800094
xor edx, 0x2eb8639f
or edx, eax
add edx, 0xe9778eaa
cmp edx, 0xb62d1fb2
ja 0x14012ad1a
mov eax, dword [str.O__nm_tx_]
xor edx, edx
div dword [0x1402292fc]
add eax, 0xa0ec1ae0
or eax, 0x12521284
add eax, 0x2ecc013e
lea rdx, [r14 + 3]
mov byte [rcx + r14 + 2], bl
mov qword [rsi + 0x10], rdx
cmp eax, 0x8dbde105
jae 0x14012ad29
mov byte [rcx + r14 + 2], bl
lea rax, [r14 + 3]
mov qword [rsi + 0x10], rax
jmp 0x14012ace9
cmp rdx, qword [rsi]
jne 0x14012ad6c
mov eax, dword [0x140229300]
or eax, dword [0x140229304]
imul eax, eax, 0x6c1f6ff3
add eax, 0xe780b51
cmp eax, 0xe55fb2d7
jbe 0x14012ad54
mov rcx, rsi
call fcn.1401511c0
xor ebx, ebx
nop word cs:[rax + rax]
mov rcx, rsi
call fcn.14014e7d0
test bl, bl
jne 0x14012ad60
shr edi, 0x18
mov rax, qword [rsi + 8]
mov byte [rax + r14 + 3], dil
movabs rax, 0xbcfa62c50b381d23
sub r14, rax
add rax, r14
add rax, 4
mov qword [rsi + 0x10], rax
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret