Function at 0x698e80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x178
movups xmmword [rsp + 0x110], xmm6
movups xmmword [rsp + 0x120], xmm7
movups xmmword [rsp + 0x130], xmm8
movups xmmword [rsp + 0x140], xmm9
movups xmmword [rsp + 0x150], xmm10
movups xmmword [rsp + 0x160], xmm11
mov rsi, qword [rsp + 0x1e0]
mov r15, qword [rsp + 0x1e8]
cmp qword [rsp + 0x1f0], 0
mov qword [rsp + 0x1c8], rdx
sete dl
cmp rsi, 1
mov rbp, r8
setbe al
mov qword [rsp + 0x1c0], rcx
or dl, al
jne 0x699840
test r15, r15
je 0x699840
lea rbx, [rsi - 1]
xor r12d, r12d
test rbx, rsi
jne 0x699843
mov eax, 0x3fffffff
xor edx, edx
div r15
cmp rax, qword [rsp + 0x1f0]
jb 0x699890
mov rax, r15
shl rax, 4
cmp rax, 0x3f
ja 0x698f5a
mov ecx, r15d
mov eax, 1
shl ecx, 4
shl rax, cl
cmp rax, rsi
jbe 0x6998f0
mov rdi, qword [rsp + 0x1f0]
imul rdi, r15
mov rax, rdi
shl rax, 7
mov qword [rsp + 0xa8], rax
cmp rax, 0x7fffffff
ja 0x6998c0
movabs rax, 0x1ffffffffffffff
xor edx, edx
lea rcx, [rsi + 2]
div r15
cmp rcx, rax
ja 0x6999e0
imul rcx, r15
shl rcx, 7
mov rax, rcx
not rax
cmp rax, qword [rsp + 0xa8]
jb 0x699a00
cmp qword [rsp + 0x1f8], 0
mov eax, 0x2000000
cmovne rax, qword [rsp + 0x1f8]
add rcx, qword [rsp + 0xa8]
mov qword [rsp + 0x1f8], rax
mov qword [rsp + 0x108], rcx
cmp rcx, rax
ja 0x699a10
cmp qword [rsp + 0x200], 0
mov qword [rsp + 0x1d8], r9
mov r12d, 1
je 0x699843
mov r8d, 0xf0
lea rdx, str.crypto_evp_pbe_scrypt.c
call sym.CRYPTO_malloc
mov r9, qword [rsp + 0x1d8]
test rax, rax
mov qword [rsp + 0x50], rax
je 0x699a20
mov qword [rsp + 0x1d8], r9
call sym.EVP_sha256
mov rcx, qword [rsp + 0x50]
mov r8, rbp
mov dword [rsp + 0x20], 1
mov qword [rsp + 0x28], rax
mov r9, qword [rsp + 0x1d8]
mov qword [rsp + 0x38], rcx
mov ecx, dword [rsp + 0xa8]
mov edx, dword [rsp + 0x1c8]
mov dword [rsp + 0x30], ecx
mov rcx, qword [rsp + 0x1c0]
call sym.PKCS5_PBKDF2_HMAC
test eax, eax
je 0x699900
mov rdx, qword [rsp + 0x50]
imul rbx, r15
mov rax, r15
mov r10, r15
mov r8, qword [rsp + 0xa8]
shl rax, 7
shl r10, 5
movdqu xmm6, xmmword [0x00917440]
mov r12, rdx
mov rbp, r15
mov qword [rsp + 0x48], rax
add r12, r8
shl rbx, 7
mov qword [rsp + 0xb8], r10
movdqu xmm7, xmm6
lea r9, [r12 + rax]
shr r10, 4
lea rcx, [r12 + rax - 0x40]
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xd0], r9
add r9, rax
add rbx, r9
mov qword [rsp + 0x70], rcx
mov rcx, rax
mov qword [rsp + 0xd8], rbx
lea rbx, [rdi + r15]
mov r15, r12
mov qword [rsp + 0x90], rbx
shl rbx, 7
lea rdi, [rax + rbx + 0x40]
add rcx, rbx
mov qword [rsp + 0x68], r9
add r9, rax
mov qword [rsp + 0xf0], rdi
lea rax, [r8 + 0x10]
mov rdi, rdx
add rdi, rcx
mov qword [rsp + 0xf8], rcx
cmp rbx, rax
lea rcx, [rbx + 0x10]
mov qword [rsp + 0x100], r10
mov r10, rdx
setge dl
cmp rcx, r8
setle al
add r10, rbx
mov qword [rsp + 0x78], rcx
or edx, eax
lea rax, [r8 + 0x40]
mov qword [rsp + 0x98], rbx
mov qword [rsp + 0xe0], r9
mov byte [rsp + 0x87], dl
mov qword [rsp + 0x88], r10
mov qword [rsp + 0xe8], rax
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0x1e0], rsi
nop dword [rax]
mov rbx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0xb8]
add rbx, rsi
mov r13, rbx
test rcx, rcx
je 0x6999f0
lea rax, [rsi + 0x40]
cmp rax, qword [rsp + 0xf8]
setle dl
cmp rsi, qword [rsp + 0xf0]
setge al
or dl, al
je 0x699990
lea rax, [rcx - 1]
cmp rax, 0xe
jbe 0x699990
mov rcx, qword [rsp + 0x100]
xor eax, eax
xor edx, edx
pxor xmm5, xmm5
pxor xmm4, xmm4
nop dword [rax + rax]
movdqu xmm3, xmmword [rbx + rax]
movdqu xmm1, xmmword [rbx + rax + 0x10]
movdqu xmm11, xmm6
movdqu xmm10, xmm6
movdqu xmm0, xmmword [rbx + rax + 0x10]
movdqu xmm9, xmmword [rbx + rax + 0x20]
add rdx, 1
pand xmm1, xmm6
pand xmm3, xmm6
movdqu xmm2, xmmword [rbx + rax + 0x20]
packuswb xmm3, xmm1
movdqu xmm1, xmmword [rbx + rax]
psrlw xmm0, 8
pand xmm9, xmm6
pand xmm11, xmm3
psrlw xmm2, 8
psrlw xmm1, 8
psrlw xmm3, 8
packuswb xmm1, xmm0
movdqu xmm0, xmmword [rbx + rax + 0x30]
pand xmm0, xmm6
packuswb xmm9, xmm0
movdqu xmm0, xmmword [rbx + rax + 0x30]
pand xmm10, xmm9
psrlw xmm9, 8
psrlw xmm0, 8
packuswb xmm11, xmm10
movdqu xmm10, xmm6
packuswb xmm2, xmm0
movdqu xmm0, xmm6
pand xmm10, xmm1
pand xmm0, xmm2
psrlw xmm1, 8
packuswb xmm3, xmm9
packuswb xmm10, xmm0
psrlw xmm2, 8
movdqu xmm0, xmm3
movdqu xmm9, xmm10
packuswb xmm1, xmm2
movdqu xmm2, xmm11
punpcklbw xmm9, xmm5
punpcklbw xmm2, xmm5
movdqu xmm8, xmm10
psllw xmm9, 8
punpckhbw xmm8, xmm5
punpckhbw xmm11, xmm5
por xmm9, xmm2
movdqu xmm2, xmm3
movdqu xmm10, xmm1
punpcklbw xmm2, xmm5
psllw xmm8, 8
punpcklbw xmm10, xmm5
movdqu xmm3, xmm2
por xmm8, xmm11
movdqu xmm11, xmm9
punpcklwd xmm3, xmm4
punpcklwd xmm11, xmm4
punpckhwd xmm2, xmm4
pslld xmm3, 0x10
pslld xmm2, 0x10
punpckhwd xmm9, xmm4
por xmm3, xmm11
movdqu xmm11, xmm10
punpckhwd xmm10, xmm4
punpcklwd xmm11, xmm4
por xmm2, xmm9
punpckhbw xmm0, xmm5
pslld xmm10, 0x18
pslld xmm11, 0x18
punpckhbw xmm1, xmm5
por xmm2, xmm10
por xmm3, xmm11
movups xmmword [rdi + rax + 0x10], xmm2
movdqu xmm2, xmm0
punpckhwd xmm0, xmm4
movups xmmword [rdi + rax], xmm3
punpcklwd xmm2, xmm4
movdqu xmm3, xmm8
punpckhwd xmm8, xmm4
pslld xmm2, 0x10
pslld xmm0, 0x10
punpcklwd xmm3, xmm4
por xmm2, xmm3
movdqu xmm3, xmm1
punpckhwd xmm1, xmm4
punpcklwd xmm3, xmm4
pslld xmm1, 0x18
por xmm0, xmm8
pslld xmm3, 0x18
por xmm0, xmm1
por xmm2, xmm3
movups xmmword [rdi + rax + 0x30], xmm0
movups xmmword [rdi + rax + 0x20], xmm2
add rax, 0x40
cmp rdx, rcx
jne 0x699220
mov rsi, qword [rsp + 0xb8]
mov r14, qword [rsp + 0xe0]
mov r12d, 1
mov qword [rsp + 0x1e8], rbp
mov rbp, rdi
mov rdi, rsi
mov qword [rsp + 0x58], rbx
mov rsi, qword [rsp + 0x1e8]
mov rbx, r12
mov r12, qword [rsp + 0x48]
nop dword [rax]
mov rdx, r14
mov rcx, r14
mov r8, rsi
add rbx, 1
sub rdx, r12
add r14, r12
call sym.scryptBlockMix
cmp qword [rsp + 0x1e0], rbx
ja 0x699428
mov qword [rsp + 0x1e8], rsi
mov rsi, rdi
mov rdi, rbp
mov rcx, r15
mov rbp, qword [rsp + 0x1e8]
mov rbx, qword [rsp + 0x58]
xor r12d, r12d
lea r14, [rsi - 1]
mov rdx, qword [rsp + 0xd8]
mov r8, rbp
call sym.scryptBlockMix
lea rax, [rsi*4]
mov qword [rsp + 0xc0], rbx
mov rbx, r14
mov qword [rsp + 0x58], rax
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0xc8], rdi
mov r14, qword [rsp + 0xd0]
mov rdi, rbp
mov rbp, r12
add rax, 0x10
mov r12, qword [rsp + 0x1e0]
mov qword [rsp + 0x60], rax
nop dword [rax + rax]
mov rax, qword [rsp + 0x70]
xor edx, edx
mov eax, dword [rax]
div r12
imul rdx, rdi
mov r11, rdx
shl r11, 7
add r11, qword [rsp + 0x68]
test rsi, rsi
je 0x699566
mov rax, qword [rsp + 0x48]
add rdx, qword [rsp + 0x90]
shl rdx, 7
lea rcx, [rax + rdx]
add rdx, qword [rsp + 0x60]
cmp rdx, qword [rsp + 0x98]
setle al
cmp qword [rsp + 0x78], rcx
setle dl
or eax, edx
test byte [rsp + 0x87], al
je 0x699930
cmp rbx, 2
jbe 0x699930
add rcx, qword [rsp + 0x50]
xor eax, eax
nop word cs:[rax + rax]
movdqu xmm0, xmmword [r15 + rax]
movdqu xmm5, xmmword [rcx + rax]
mov rdx, qword [rsp + 0x88]
pxor xmm0, xmm5
movups xmmword [rdx + rax], xmm0
add rax, 0x10
cmp rax, qword [rsp + 0x58]
jne 0x699540
mov r8, rdi
mov rdx, r14
mov rcx, r15
add rbp, 1
call sym.scryptBlockMix
cmp r12, rbp
ja 0x6994c8
mov rbp, rdi
mov rbx, qword [rsp + 0xc0]
mov rdi, qword [rsp + 0xc8]
test rsi, rsi
je 0x699790
mov rcx, qword [rsp + 0xb0]
lea rax, [rcx + 0x40]
cmp qword [rsp + 0xa8], rax
setge dl
cmp rcx, qword [rsp + 0xe8]
setge al
or dl, al
je 0x699958
lea rax, [rsi - 1]
cmp rax, 0xe
jbe 0x699958
lea rdx, [r15 + rsi*4]
mov rax, r15
nop dword [rax]
movdqu xmm0, xmmword [rax]
movdqu xmm9, xmmword [rax + 0x10]
add rax, 0x40
add rbx, 0x40
movdqu xmm1, xmmword [rax - 0x20]
movdqu xmm8, xmmword [rax - 0x10]
movdqu xmm2, xmm0
movdqu xmm3, xmm0
movdqu xmm10, xmm9
punpcklwd xmm2, xmm9
punpckhwd xmm3, xmm9
movdqu xmm11, xmm8
psrld xmm10, 0x10
psrld xmm11, 0x10
movdqu xmm4, xmm2
punpckhwd xmm4, xmm3
psrld xmm9, 0x18
punpcklwd xmm2, xmm3
movdqu xmm3, xmm1
punpcklwd xmm2, xmm4
movdqu xmm4, xmm1
punpcklwd xmm3, xmm8
punpckhwd xmm4, xmm8
movdqu xmm5, xmm3
psrld xmm8, 0x18
punpcklwd xmm3, xmm4
punpckhwd xmm5, xmm4
movdqu xmm4, xmm7
punpcklwd xmm3, xmm5
movdqu xmm5, xmm7
pand xmm4, xmm2
pand xmm5, xmm3
psrlw xmm2, 8
packuswb xmm4, xmm5
psrlw xmm3, 8
movdqu xmm5, xmm0
pand xmm3, xmm7
psrld xmm5, 0x10
pand xmm2, xmm7
packuswb xmm2, xmm3
psrld xmm0, 0x18
movdqu xmm3, xmm5
punpcklwd xmm5, xmm10
punpckhwd xmm3, xmm10
movdqu xmm10, xmm5
punpcklwd xmm5, xmm3
punpckhwd xmm10, xmm3
movdqu xmm3, xmm1
psrld xmm3, 0x10
psrld xmm1, 0x18
punpcklwd xmm5, xmm10
movdqu xmm10, xmm3
punpcklwd xmm3, xmm11
pand xmm5, xmm7
punpckhwd xmm10, xmm11
movdqu xmm11, xmm3
punpckhwd xmm11, xmm10
punpcklwd xmm3, xmm10
punpcklwd xmm3, xmm11
pand xmm3, xmm7
packuswb xmm5, xmm3
movdqu xmm3, xmm0
punpcklwd xmm0, xmm9
punpckhwd xmm3, xmm9
movdqu xmm9, xmm0
punpckhwd xmm9, xmm3
punpcklwd xmm0, xmm3
movdqu xmm3, xmm1
punpcklwd xmm1, xmm8
punpckhwd xmm3, xmm8
punpcklwd xmm0, xmm9
movdqu xmm8, xmm1
punpcklwd xmm1, xmm3
pand xmm0, xmm7
punpckhwd xmm8, xmm3
movdqu xmm3, xmm2
punpcklwd xmm1, xmm8
pand xmm1, xmm7
packuswb xmm0, xmm1
movdqu xmm1, xmm4
punpckhbw xmm4, xmm5
punpcklbw xmm1, xmm5
punpcklbw xmm3, xmm0
punpckhbw xmm2, xmm0
movdqu xmm0, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm0, xmm3
movups xmmword [rbx - 0x30], xmm1
movups xmmword [rbx - 0x40], xmm0
movdqu xmm0, xmm4
punpckhbw xmm4, xmm2
punpcklbw xmm0, xmm2
movups xmmword [rbx - 0x10], xmm4
movups xmmword [rbx - 0x20], xmm0
cmp rdx, rax
jne 0x6995e0
add qword [rsp + 0xa0], 1
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0xa0]
add qword [rsp + 0xb0], rcx
cmp qword [rsp + 0x1f0], rax
ja 0x6991b0
call sym.EVP_sha256
mov rdx, qword [rsp + 0x208]
mov rdi, qword [rsp + 0x200]
mov dword [rsp + 0x20], 1
mov qword [rsp + 0x28], rax
mov r9d, dword [rsp + 0xa8]
mov dword [rsp + 0x30], edx
mov r8, qword [rsp + 0x50]
mov qword [rsp + 0x38], rdi
mov edx, dword [rsp + 0x1c8]
mov rcx, qword [rsp + 0x1c0]
call sym.PKCS5_PBKDF2_HMAC
test eax, eax
je 0x699900
mov r12d, 1
mov rdx, qword [rsp + 0x108]
mov rcx, qword [rsp + 0x50]
mov r9d, 0x107
lea r8, str.crypto_evp_pbe_scrypt.c
call sym.CRYPTO_clear_free
jmp 0x699843
xor r12d, r12d
movups xmm6, xmmword [rsp + 0x110]
mov eax, r12d
movups xmm7, xmmword [rsp + 0x120]
movups xmm8, xmmword [rsp + 0x130]
movups xmm9, xmmword [rsp + 0x140]
movups xmm10, xmmword [rsp + 0x150]
movups xmm11, xmmword [rsp + 0x160]
add rsp, 0x178
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0xae
mov r8d, 0xac
mov edx, 0xb5
mov ecx, 6
lea r9, str.crypto_evp_pbe_scrypt.c
call sym.ERR_put_error
jmp 0x699843
mov dword [rsp + 0x20], 0xcb
lea r9, str.crypto_evp_pbe_scrypt.c
mov r8d, 0xac
mov edx, 0xb5
xor r12d, r12d
mov ecx, 6
call sym.ERR_put_error
jmp 0x699843
mov dword [rsp + 0x20], 0xb9
jmp 0x699898
mov dword [rsp + 0x20], 0x105
lea r9, str.crypto_evp_pbe_scrypt.c
mov r8d, 0xb5
xor r12d, r12d
mov edx, 0xb5
mov ecx, 6
call sym.ERR_put_error
jmp 0x699816
xor eax, eax
nop word [rax + rax]
mov edx, dword [r15 + rax*4]
xor edx, dword [r11 + rax*4]
mov dword [r14 + rax*4], edx
add rax, 1
cmp rsi, rax
jne 0x699938
jmp 0x699566
lea r10, [rbx + rsi*4]
mov rdx, r15
nop
mov eax, dword [rdx]
add r13, 4
add rdx, 4
movzx ecx, ah
mov byte [r13 - 4], al
mov byte [r13 - 3], cl
mov ecx, eax
shr eax, 0x18
shr ecx, 0x10
mov byte [r13 - 2], cl
mov byte [r13 - 1], al
cmp r13, r10
jne 0x699960
jmp 0x699790
mov r8, qword [rsp + 0x68]
mov r9, qword [rsp + 0xb8]
xor eax, eax
nop
movzx ecx, byte [rbx + rax*4]
mov dword [r8 + rax*4], ecx
movzx edx, byte [rbx + rax*4 + 1]
shl edx, 8
or ecx, edx
mov dword [r8 + rax*4], ecx
movzx edx, byte [rbx + rax*4 + 2]
shl edx, 0x10
or edx, ecx
mov dword [r8 + rax*4], edx
movzx ecx, byte [rbx + rax*4 + 3]
shl ecx, 0x18
or edx, ecx
mov dword [r8 + rax*4], edx
add rax, 1
cmp r9, rax
jne 0x6999a0
jmp 0x6993ec
mov dword [rsp + 0x20], 0xd5
jmp 0x6998c8
mov r14, qword [rsp + 0x68]
xor esi, esi
jmp 0x6993fc
mov dword [rsp + 0x20], 0xdc
jmp 0x6998c8
mov dword [rsp + 0x20], 0xe8
jmp 0x6998c8
mov dword [rsp + 0x20], 0xf2
lea r9, str.crypto_evp_pbe_scrypt.c
mov r8d, 0x41
xor r12d, r12d
mov edx, 0xb5
mov ecx, 6
call sym.ERR_put_error
jmp 0x699843