Function at 0x140025820
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xb8
movdqa xmmword [rsp + 0xa0], xmm6
mov r15, r8
mov r12, rdx
mov rsi, rcx
test r8, r8
je 0x140025900
cmp byte [r12], 0
je 0x14002591f
mov rbp, r9
mov r14, qword [rsp + 0x138]
mov r13, qword [rsp + 0x130]
mov rax, qword [rsp + 0x128]
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0x68], rax
lea rdi, [r15 + 7]
mov ebx, 8
cmp rdi, 8
jb 0x1400258bb
test rdi, rdi
js 0x140025e5b
mov rdx, rdi
and rdx, 0xfffffffffffffff8
mov ecx, 8
call fcn.140080d30
mov rbx, rax
test rax, rax
je 0x140025e5b
mov qword [rsp + 0x70], r13
mov r13, rdi
shr r13, 3
mov rcx, r12
mov rdx, r15
mov r8, rbx
mov r9, r13
call fcn.1400296e0
test al, al
je 0x140025960
lea r13, str.UnexpectedErrorInconsistentComponents0Q
cmp rdi, 8
jb 0x140025926
mov rcx, qword [0x14024a138]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapFree
jmp 0x140025926
mov r8d, 8
mov rcx, r12
mov rdx, r15
xor r9d, r9d
call fcn.1400296e0
lea r13, str.UnexpectedErrorInconsistentComponents0Q
test al, al
jmp 0x140025926
lea r13, [0x1401c89d0]
mov eax, 0xf
movq xmm6, rax
movq r15, xmm6
mov qword [rsi + 8], r13
mov qword [rsi + 0x10], r15
mov qword [rsi], 0
movaps xmm6, xmmword [rsp + 0xa0]
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp rdi, 0x407
jbe 0x140025977
mov eax, 8
lea r13, [0x1401c89ef]
jmp 0x1400259d5
cmp rdi, 0x20
jae 0x140025996
mov eax, 0xf
movq xmm6, rax
lea r13, str.UnexpectedErrorInconsistentComponents0Q
cmp rdi, 8
jb 0x140025930
jmp 0x1400259d9
mov rcx, rbx
mov rdx, r13
call fcn.140193030
test rax, rax
je 0x1400259b4
mov eax, 0x10
lea r13, [0x1401c89df]
jmp 0x1400259d5
mov edx, 3
mov rcx, rbx
mov r8, r13
call fcn.1401931d0
test rax, rax
je 0x1400259ef
mov eax, 0xf
lea r13, str.UnexpectedErrorInconsistentComponents0Q
movd xmm6, eax
mov rcx, qword [0x14024a138]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapFree
jmp 0x140025930
mov rcx, qword [rbx]
call fcn.140195630
mov r15, rax
mov ecx, 1
xor eax, eax
mov qword [rsp + 0x38], rax
mov rax, r13
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x48], r14
lea r8, [rax - 1]
cmp rax, 2
mov rdx, r8
cmovb rdx, rcx
mov qword [rsp + 0x58], rdx
mov qword [rsp + 0x50], r8
cmp r8, r13
jae 0x140025e5b
mov qword [rsp + 0x60], rax
mov r12, qword [rbx + rax*8 - 8]
mov edi, 0x40
xor r14d, r14d
nop word [rax + rax]
test r14b, 1
jne 0x140025a80
mov rbp, rdi
lea rdx, [rdi - 1]
cmp rdi, 2
setb r14b
mov rdi, rdx
cmovb rdi, rcx
mov rcx, r12
call fcn.140193600
mov ecx, 1
test rax, rax
je 0x140025a50
jmp 0x140025aa9
cmp qword [rsp + 0x60], 2
mov rdx, qword [rsp + 0x40]
jb 0x140025e49
mov r8, qword [rsp + 0x58]
mov rax, r8
test r8, r8
mov rbp, qword [rsp + 0x30]
jne 0x140025a13
jmp 0x140025ac4
mov rax, qword [rsp + 0x50]
shl rax, 6
add rbp, rax
mov qword [rsp + 0x38], rbp
mov rbp, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x40]
cmp rdx, 0x3ff
jbe 0x140025e5b
mov r14, qword [rsp + 0x38]
mov eax, r14d
shr eax, 2
mov ecx, r14d
shr ecx, 1
or ecx, eax
or ecx, r14d
and ecx, 1
lea rax, [r14 + rcx*8]
and rax, 0xfffffffffffffff8
cmp rax, rdx
jae 0x140025aff
lea r13, str.TooSmallInvalidEncodingInvalidComponentTooLargeSHA1SHA256SHA384SHA512SHA512_256
jmp 0x140025b0d
cmp r14, qword [rsp + 0x70]
jbe 0x140025b29
lea r13, [0x1401c89ef]
mov rcx, qword [0x14024a138]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapFree
mov r15d, 8
jmp 0x140025935
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x80], r13
mov qword [rsp + 0x88], r15
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x98], r14
test r13, r13
je 0x140025e5b
mov rax, r13
shr rax, 0x3c
jne 0x140025e5b
lea rdx, [r13*8]
mov ecx, 8
call fcn.140080d30
test rax, rax
je 0x140025e5b
mov r12, rax
xor eax, eax
cmp r13, 4
jb 0x140025bd5
mov rcx, r12
sub rcx, rbx
cmp rcx, 0x20
jb 0x140025bd5
mov rax, r13
and rax, 0xfffffffffffffffc
xor ecx, ecx
pcmpeqd xmm0, xmm0
movdqu xmm1, xmmword [rbx + rcx*8]
movdqu xmm2, xmmword [rbx + rcx*8 + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [r12 + rcx*8], xmm1
movdqu xmmword [r12 + rcx*8 + 0x10], xmm2
add rcx, 4
cmp rax, rcx
jne 0x140025ba7
cmp r13, rax
je 0x140025c47
mov rdx, rax
not rdx
add rdx, r13
mov r8, r13
and r8, 3
je 0x140025c00
lea rcx, [rax + 1]
mov r9, qword [rbx + rax*8]
not r9
mov qword [r12 + rax*8], r9
mov rax, rcx
dec r8
jne 0x140025be7
jmp 0x140025c03
mov rcx, rax
cmp rdx, 3
jb 0x140025c47
mov rax, qword [rbx + rcx*8]
not rax
mov qword [r12 + rcx*8], rax
mov rax, qword [rbx + rcx*8 + 8]
not rax
mov qword [r12 + rcx*8 + 8], rax
mov rax, qword [rbx + rcx*8 + 0x10]
not rax
mov qword [r12 + rcx*8 + 0x10], rax
mov rax, qword [rbx + rcx*8 + 0x18]
not rax
mov qword [r12 + rcx*8 + 0x18], rax
lea rax, [rcx + 4]
mov rcx, rax
cmp r13, rax
jne 0x140025c09
test r13, r13
je 0x140025e5b
mov rdi, r13
shl rdi, 6
or byte [r12], 1
sub rdi, r14
je 0x140025c91
mov rax, qword [r12 + r13*8 - 8]
mov ecx, edi
shl rax, cl
shr rax, cl
mov qword [r12 + r13*8 - 8], rax
cmp rdi, 1
adc rdi, 0
mov rcx, r12
mov rdx, r12
mov r8, rbx
mov r9, r13
call fcn.1401933c0
dec rdi
jne 0x140025c7b
lea rdi, [rsp + 0x88]
lea r14, [r13 - 1]
mov rcx, r12
mov rdx, r12
mov r8, rbx
mov r9, r13
call fcn.1401933c0
sub r14, 1
jae 0x140025c9d
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rdi
mov rcx, r12
mov rdx, r12
mov r8, r12
mov r9, rbx
call fcn.1400e48c0
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rdi
mov rcx, r12
mov rdx, r12
mov r8, r12
mov r9, rbx
call fcn.1400e48c0
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rdi
mov rcx, r12
mov rdx, r12
mov r8, r12
mov r9, rbx
call fcn.1400e48c0
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rdi
mov rcx, r12
mov rdx, r12
mov r8, r12
mov r9, rbx
call fcn.1400e48c0
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rdi
mov rcx, r12
mov rdx, r12
mov r8, r12
mov r9, rbx
call fcn.1400e48c0
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rdi
mov rcx, r12
mov rdx, r12
mov r8, r12
mov r9, rbx
call fcn.1400e48c0
test rbx, rbx
je 0x140025935
lea rcx, [0x1401c89ef]
mov eax, 8
mov rdi, qword [rsp + 0x68]
cmp rdi, 5
ja 0x140025df4
test rdi, rdi
je 0x140025d81
cmp byte [rbp], 0
je 0x140025de8
xor r10d, r10d
lea r9, [0x1401c89d0]
xor edx, edx
mov r11, qword [rsp + 0x48]
test rdi, rdi
je 0x140025dde
movzx r8d, byte [rbp + r10]
inc r10
shl rdx, 8
or rdx, r8
cmp rdi, r10
jne 0x140025d92
lea r9, str.TooSmallInvalidEncodingInvalidComponentTooLargeSHA1SHA256SHA384SHA512SHA512_256
test rdx, rdx
je 0x140025de3
cmp rdx, r11
jb 0x140025de3
mov r9, rdx
shr r9, 0x21
jne 0x140025df4
test r8b, 1
jne 0x140025e5d
lea rcx, [0x1401c89df]
mov eax, 0x10
jmp 0x140025df4
mov eax, 0xf
mov rcx, r9
jmp 0x140025df4
lea rcx, [0x1401c89d0]
mov eax, 0xf
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rax
mov qword [rsi], 0
mov rcx, qword [0x14024a138]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapFree
test r13, r13
je 0x140025944
mov rcx, qword [0x14024a138]
xor edx, edx
mov r8, r12
movaps xmm6, xmmword [rsp + 0xa0]
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp sub.KERNEL32.dll_HeapFree
mov rbp, qword [rsp + 0x30]
cmp rdx, 0x3ff
ja 0x140025ad1
ud2
mov qword [rsi + 0x18], 0
mov rax, qword [rsp + 0x38]
mov qword [rsi + 0x20], rax
mov qword [rsi], rbx
mov qword [rsi + 8], r13
mov qword [rsi + 0x10], r15
mov qword [rsi + 0x28], r12
mov qword [rsi + 0x30], r13
mov qword [rsi + 0x38], rdx
jmp 0x140025944