Function at 0x14002f260
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xe8
movaps xmmword [rsp + 0xd0], xmm6
mov r15, r8
mov r12, rdx
mov rsi, rcx
mov rbp, qword [rsp + 0x168]
mov r13, qword [rsp + 0x160]
mov r14, qword [rsp + 0x158]
mov rcx, qword [rsp + 0x150]
test r8, r8
je 0x14002f2b4
cmp byte [r12], 0
je 0x14002f444
mov rbx, r15
add rbx, 8
jb 0x14002f794
dec rbx
mov eax, 8
cmp rbx, 8
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x98], r9
jb 0x14002f328
test rbx, rbx
js 0x14002fa93
mov rdi, rbx
and rdi, 0xfffffffffffffff8
je 0x14002f328
mov rcx, qword [0x1401e6138]
test rcx, rcx
jne 0x14002f312
call sub.KERNEL32.dll_GetProcessHeap
test rax, rax
je 0x14002face
mov rcx, rax
mov qword [0x1401e6138], rax
mov edx, 8
mov r8, rdi
call sub.KERNEL32.dll_HeapAlloc
test rax, rax
je 0x14002face
shr rbx, 3
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x68], rbx
lea rcx, [rsp + 0x58]
call fcn.14002aa40
mov rdi, rax
mov rbx, rdx
test r15, r15
je 0x14002f425
xor eax, eax
mov ecx, r15d
and ecx, 7
setne al
mov edx, 8
cmovne rdx, rcx
mov qword [rsp + 0x40], rdx
mov rcx, r15
shr rcx, 3
add rax, rcx
mov qword [rsp + 0xa8], rax
cmp rax, rbx
ja 0x14002f425
test rbx, rbx
je 0x14002f3f0
lea rax, [rbx - 1]
movabs rcx, 0x1fffffffffffffff
and rcx, rax
mov rax, rdi
cmp rcx, 3
jb 0x14002f3db
inc rcx
mov rdx, rcx
and rdx, 0xfffffffffffffffc
lea rax, [rdi + rdx*8]
xor r8d, r8d
pxor xmm0, xmm0
nop dword [rax]
movdqu xmmword [rdi + r8*8], xmm0
movdqu xmmword [rdi + r8*8 + 0x10], xmm0
add r8, 4
cmp rdx, r8
jne 0x14002f3c0
cmp rcx, rdx
je 0x14002f3f0
lea rcx, [rdi + rbx*8]
nop
mov qword [rax], 0
add rax, 8
cmp rax, rcx
jne 0x14002f3e0
lea rax, [rsp + 0xa8]
mov qword [rsp + 0x58], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x70], rbx
lea r8, [rsp + 0x58]
mov rcx, r12
mov rdx, r15
call fcn.14002a230
test al, al
je 0x14002f488
lea r14, [0x140162f70]
test rbx, rbx
je 0x14002f44b
mov rcx, qword [0x1401e6138]
xor edx, edx
mov r8, rdi
call sub.KERNEL32.dll_HeapFree
jmp 0x14002f44b
lea r14, str.InvalidEncoding
mov eax, 0xf
movq xmm6, rax
mov rbx, r14
movq r12, xmm6
mov qword [rsi + 8], rbx
mov qword [rsi + 0x10], r12
mov qword [rsi], 0
movaps xmm6, xmmword [rsp + 0xd0]
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp rbx, 0x80
jbe 0x14002f49f
mov eax, 8
lea r14, [0x140162f22]
jmp 0x14002f4ff
cmp rbx, 4
jae 0x14002f4c0
mov eax, 0xf
movq xmm6, rax
lea r14, [0x140162f70]
test rbx, rbx
mov rbx, r14
jne 0x14002f504
jmp 0x14002f458
mov rcx, rdi
mov rdx, rbx
call fcn.14012c5d0
test rax, rax
je 0x14002f4de
mov eax, 0x10
lea r14, [0x140162eee]
jmp 0x14002f4ff
mov edx, 3
mov rcx, rdi
mov r8, rbx
call fcn.14012c770
test rax, rax
je 0x14002f51a
mov eax, 0xf
lea r14, [0x140162f70]
movq xmm6, rax
mov rcx, qword [0x1401e6138]
xor edx, edx
mov r8, rdi
call sub.KERNEL32.dll_HeapFree
jmp 0x14002f455
mov rcx, qword [rdi]
call fcn.14012ebd0
movq xmm6, rax
mov eax, 1
mov r8, rbx
mov qword [rsp + 0x38], rbp
lea rcx, [r8 - 1]
cmp r8, 2
mov rdx, rcx
cmovb rdx, rax
mov qword [rsp + 0x88], rdx
mov qword [rsp + 0x48], rcx
cmp rcx, rbx
jae 0x14002fa63
mov qword [rsp + 0x90], r8
mov rcx, qword [rdi + r8*8 - 8]
mov qword [rsp + 0x30], rcx
mov r15d, 0x40
xor ebp, ebp
test bpl, 1
jne 0x14002f5a5
mov r12, r15
lea rdx, [r15 - 1]
cmp r15, 2
setb bpl
mov r15, rdx
cmovb r15, rax
mov rcx, qword [rsp + 0x30]
call fcn.14012cba0
test rax, rax
mov eax, 1
je 0x14002f573
jmp 0x14002f5d4
cmp qword [rsp + 0x90], 2
jb 0x14002f9be
mov rcx, qword [rsp + 0x88]
mov r8, rcx
test rcx, rcx
mov rbp, qword [rsp + 0x38]
mov edx, 0
jne 0x14002f534
jmp 0x14002f5eb
mov rdx, qword [rsp + 0x48]
shl rdx, 6
add rdx, r12
mov rbp, qword [rsp + 0x38]
jb 0x14002fa79
test rdi, rdi
je 0x14002f458
cmp r14, 0x3ff
jbe 0x14002faf7
mov eax, edx
shr eax, 2
mov ecx, edx
shr ecx, 1
or ecx, eax
or ecx, edx
and ecx, 1
lea rax, [rdx + rcx*8]
and rax, 0xfffffffffffffff8
mov r12d, 8
cmp rax, r14
jae 0x14002f62d
lea r14, [0x140162f1a]
jmp 0x14002f639
cmp rdx, r13
jbe 0x14002f657
lea r14, [0x140162f22]
test rbx, rbx
je 0x14002f64f
mov rcx, qword [0x1401e6138]
xor edx, edx
mov r8, rdi
call sub.KERNEL32.dll_HeapFree
mov rbx, r14
jmp 0x14002f45d
mov qword [rsp + 0xa8], rdi
mov qword [rsp + 0xb0], rbx
movdqu xmmword [rsp + 0xb8], xmm6
mov qword [rsp + 0xc8], rdx
mov rax, rbx
shr rax, 0x3a
jne 0x14002fa9a
mov qword [rsp + 0x30], rdx
mov eax, 8
test rbx, rbx
je 0x14002f6db
lea r15, [rbx*8]
test r15, r15
je 0x14002f6db
mov rcx, qword [0x1401e6138]
test rcx, rcx
jne 0x14002f6c5
call sub.KERNEL32.dll_GetProcessHeap
test rax, rax
je 0x14002fb4c
mov rcx, rax
mov qword [0x1401e6138], rax
mov edx, 8
mov r8, r15
call sub.KERNEL32.dll_HeapAlloc
test rax, rax
je 0x14002fb4c
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x68], rbx
lea rcx, [rsp + 0x58]
call fcn.14002aa40
mov qword [rsp + 0xa0], rbx
mov qword [rsp + 0x40], rdx
cmp rbx, rdx
jne 0x14002fb11
test rbx, rbx
je 0x14002fb3a
mov r15, rax
xor eax, eax
cmp rbx, 4
jb 0x14002f769
mov rcx, r15
sub rcx, rdi
cmp rcx, 0x20
jb 0x14002f769
mov rax, rbx
and rax, 0xfffffffffffffffc
xor ecx, ecx
pcmpeqd xmm0, xmm0
movdqu xmm1, xmmword [rdi + rcx*8]
movdqu xmm2, xmmword [rdi + rcx*8 + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [r15 + rcx*8], xmm1
movdqu xmmword [r15 + rcx*8 + 0x10], xmm2
add rcx, 4
cmp rax, rcx
jne 0x14002f737
cmp rbx, rax
je 0x14002f7f5
mov rdx, rax
not rdx
add rdx, rbx
mov r8, rbx
and r8, 3
je 0x14002f7ae
lea rcx, [rax + 1]
mov r9, qword [rdi + rax*8]
not r9
mov qword [r15 + rax*8], r9
mov rax, rcx
dec r8
jne 0x14002f77b
jmp 0x14002f7b1
lea rcx, str.attempt_to_add_with_overflow_Users_caojian_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_limb.rs
lea r8, str._Users_caojian_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_arithmetic_bigint_boxed_limbs.rs
mov edx, 0x1c
call fcn.140004ed0
ud2
mov rcx, rax
cmp rdx, 3
jb 0x14002f7f5
mov rax, qword [rdi + rcx*8]
not rax
mov qword [r15 + rcx*8], rax
mov rax, qword [rdi + rcx*8 + 8]
not rax
mov qword [r15 + rcx*8 + 8], rax
mov rax, qword [rdi + rcx*8 + 0x10]
not rax
mov qword [r15 + rcx*8 + 0x10], rax
mov rax, qword [rdi + rcx*8 + 0x18]
not rax
mov qword [r15 + rcx*8 + 0x18], rax
lea rax, [rcx + 4]
mov rcx, rax
cmp rbx, rax
jne 0x14002f7b7
test rbx, rbx
je 0x14002fb3a
mov r12, rbx
shl r12, 6
or byte [r15], 1
sub r12, qword [rsp + 0x30]
jb 0x14002fab4
je 0x14002f851
cmp r12, 0x40
jae 0x14002fadd
mov rax, qword [r15 + rbx*8 - 8]
mov ecx, r12d
shl rax, cl
shr rax, cl
mov qword [r15 + rbx*8 - 8], rax
cmp r12, 1
adc r12, 0
mov rcx, r15
mov rdx, r15
mov r8, rdi
mov r9, rbx
call fcn.14012c960
dec r12
jne 0x14002f83b
lea r14, [rsp + 0xb8]
mov r12, qword [rsp + 0xa8]
mov r13, rbx
mov rcx, r15
mov rdx, r15
mov r8, r12
mov r9, rbx
call fcn.14012c960
dec r13
jne 0x14002f864
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, r12
call fcn.140102440
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, r12
call fcn.140102440
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, r12
call fcn.140102440
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, r12
call fcn.140102440
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, r12
call fcn.140102440
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, r12
call fcn.140102440
movq r12, xmm6
test rdi, rdi
je 0x14002f45d
lea rcx, [0x140162f22]
mov eax, 8
mov rdx, qword [rsp + 0x50]
cmp rdx, 5
ja 0x14002f9df
test rdx, rdx
mov r11, qword [rsp + 0x98]
je 0x14002f958
cmp byte [r11], 0
je 0x14002f9d3
xor r10d, r10d
lea r9, str.InvalidEncoding
xor edx, edx
mov r14, qword [rsp + 0x50]
test r14, r14
je 0x14002f9b4
movzx r8d, byte [r11 + r10]
inc r10
shl rdx, 8
or rdx, r8
cmp r14, r10
jne 0x14002f969
lea r9, [0x140162f1a]
test rdx, rdx
je 0x14002f9b9
cmp rdx, rbp
jb 0x14002f9b9
mov r9, rdx
shr r9, 0x21
jne 0x14002f9df
test r8b, 1
jne 0x14002fa34
lea rcx, [0x140162eee]
mov eax, 0x10
jmp 0x14002f9df
mov eax, 0xf
mov rcx, r9
jmp 0x14002f9df
mov rbp, qword [rsp + 0x38]
xor edx, edx
test rdi, rdi
jne 0x14002f5f4
jmp 0x14002f458
lea rcx, str.InvalidEncoding
mov eax, 0xf
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rax
mov qword [rsi], 0
test rbx, rbx
je 0x14002f46c
mov rcx, qword [0x1401e6138]
xor edx, edx
mov r8, rdi
call sub.KERNEL32.dll_HeapFree
mov rcx, qword [0x1401e6138]
xor edx, edx
mov r8, r15
movaps xmm6, xmmword [rsp + 0xd0]
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp sub.KERNEL32.dll_HeapFree
pshufd xmm0, xmm6, 0xee
movq qword [rsi + 0x18], xmm0
mov rax, qword [rsp + 0x30]
mov qword [rsi + 0x20], rax
mov qword [rsi], rdi
mov qword [rsi + 8], rbx
mov qword [rsi + 0x10], r12
mov qword [rsi + 0x28], r15
mov qword [rsi + 0x30], rbx
mov qword [rsi + 0x38], rdx
jmp 0x14002f46c
lea r8, [0x140160508]
mov rcx, qword [rsp + 0x48]
mov rdx, rbx
call fcn.140004230
ud2
lea rcx, [0x140160570]
lea r8, [0x140160520]
mov edx, 0x1c
call fcn.140004ed0
ud2
call fcn.140002a80
ud2
lea rcx, [0x140160190]
lea r8, [0x140160178]
mov edx, 0x21
call fcn.140004ed0
ud2
lea rcx, [0x140160700]
lea r8, str._Users_caojian_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_arithmetic_bigint_modulus.rs_b
mov edx, 0x21
call fcn.140004ed0
ud2
mov ecx, 8
mov rdx, rdi
call fcn.140002ac0
ud2
lea rcx, [0x140160740]
lea r8, str._Users_caojian_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_arithmetic_bigint_modulus.rs_b
mov edx, 0x24
call fcn.140004ed0
ud2
lea rcx, [0x140162771]
lea r8, [0x140162800]
mov edx, 0x26
call fcn.140004ed0
ud2
mov qword [rsp + 0x58], 0
lea r9, str._Users_caojian_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_arithmetic_bigint_modulus.rs_b
lea rcx, [rsp + 0xa0]
lea rdx, [rsp + 0x40]
lea r8, [rsp + 0x58]
call fcn.140038920
ud2
lea r8, [0x1401605f0]
xor ecx, ecx
xor edx, edx
call fcn.140004230
ud2
mov ecx, 8
mov rdx, r15
call fcn.140002ac0
ud2