Function at 0x59f280
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
movups xmmword [rsp + 0x30], xmm6
movups xmmword [rsp + 0x40], xmm7
mov esi, dword [r8 + 0x28]
mov qword [rsp + 0xa0], rcx
mov rdi, rdx
mov rbx, r8
test esi, esi
jne 0x59f2e0
mov dword [rcx + 8], 0
mov eax, 1
movups xmm6, xmmword [rsp + 0x30]
movups xmm7, xmmword [rsp + 0x40]
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r12d, [rsi + rsi]
mov rcx, rdi
mov edx, r12d
call sym.bn_wexpand
test rax, rax
je 0x59f570
mov eax, dword [rbx + 0x30]
mov r14, qword [rbx + 0x20]
xor dword [rdi + 0x10], eax
mov r15, qword [rdi]
mov r8d, dword [rdi + 8]
test r12d, r12d
jle 0x59f400
lea eax, [r12 - 1]
cmp eax, 2
jbe 0x59f60f
mov edx, r12d
movd xmm3, r8d
pxor xmm4, xmm4
mov rax, r15
shr edx, 2
movdqu xmm2, xmmword [0x00931180]
pshufd xmm6, xmm3, 0
movdqu xmm5, xmmword [0x00931190]
shl rdx, 5
pxor xmm3, xmm3
add rdx, r15
nop word [rax + rax]
movdqu xmm0, xmm2
movdqu xmm7, xmm3
paddd xmm2, xmm5
add rax, 0x20
psubd xmm0, xmm6
psrld xmm0, 0x1f
movdqu xmm1, xmm0
punpckldq xmm0, xmm4
punpckhdq xmm1, xmm4
psubq xmm7, xmm1
movdqu xmm1, xmm7
movdqu xmm7, xmmword [rax - 0x10]
pand xmm1, xmm7
movdqu xmm7, xmm3
psubq xmm7, xmm0
movups xmmword [rax - 0x10], xmm1
movdqu xmm0, xmm7
movdqu xmm7, xmmword [rax - 0x20]
pand xmm0, xmm7
movups xmmword [rax - 0x20], xmm0
cmp rax, rdx
jne 0x59f358
mov eax, r12d
and eax, 0xfffffffc
test r12b, 3
je 0x59f400
mov edx, eax
movsxd r9, eax
add eax, 1
sub edx, r8d
shr edx, 0x1f
neg rdx
and qword [r15 + r9*8], rdx
cmp r12d, eax
jle 0x59f400
mov edx, eax
movsxd r9, eax
add eax, 1
sub edx, r8d
shr edx, 0x1f
neg rdx
and qword [r15 + r9*8], rdx
cmp r12d, eax
jle 0x59f400
movsxd rdx, eax
sub eax, r8d
shr eax, 0x1f
neg rax
and qword [r15 + rdx*8], rax
mov dword [rdi + 8], r12d
mov r12, qword [rbx + 0x50]
test esi, esi
jle 0x59f5c0
lea eax, [rsi - 1]
movsxd r10, esi
xor ebx, ebx
mov dword [rsp + 0x2c], eax
lea r13, [r10*8]
lea rbp, [r15 + rax*8 + 8]
mov qword [rsp + 0x20], rax
nop
mov r9, qword [r15]
mov r8d, esi
mov rdx, r14
mov rcx, r15
imul r9, r12
call sym.bn_mul_add_words
mov r8, qword [r15 + r13]
xor edx, edx
add rax, rbx
add rax, r8
cmp r8, rax
mov qword [r15 + r13], rax
setne dl
or rbx, rdx
xor edx, edx
cmp r8, rax
setae dl
add r15, 8
and rbx, rdx
cmp r15, rbp
jne 0x59f430
mov rcx, qword [rsp + 0xa0]
mov edx, esi
call sym.bn_wexpand
test rax, rax
je 0x59f570
mov rax, qword [rsp + 0xa0]
mov r12, qword [rdi]
mov r9d, esi
mov r8, r14
mov rcx, qword [rsp + 0xa0]
mov dword [rax + 8], esi
mov eax, dword [rdi + 0x10]
lea rdi, [r12 + r13]
mov rbp, qword [rcx]
mov rdx, rdi
mov dword [rcx + 0x10], eax
mov rcx, rbp
call sym.bn_sub_words
mov rcx, rbx
sub rcx, rax
lea rax, [r12 + r13 + 0x10]
cmp rbp, rax
lea rax, [rbp + 0x10]
setae dl
cmp rdi, rax
setae al
or dl, al
je 0x59f580
cmp dword [rsp + 0x2c], 1
jbe 0x59f580
mov edx, esi
movq xmm2, rcx
pxor xmm1, xmm1
xor eax, eax
shr edx, 1
punpcklqdq xmm2, xmm2
shl rdx, 4
nop dword [rax + rax]
movdqu xmm5, xmmword [rbp + rax]
movdqu xmm0, xmmword [rdi + rax]
pxor xmm0, xmm5
pand xmm0, xmm2
pxor xmm0, xmm5
movups xmmword [rbp + rax], xmm0
movups xmmword [rdi + rax], xmm1
add rax, 0x10
cmp rax, rdx
jne 0x59f508
mov eax, esi
and eax, 0xfffffffe
and esi, 1
je 0x59f55e
shl rax, 3
add rdi, rax
add rax, rbp
mov rdx, qword [rax]
mov rbx, qword [rdi]
xor rbx, rdx
and rbx, rcx
xor rbx, rdx
mov qword [rax], rbx
mov qword [rdi], 0
mov eax, 1
jmp 0x59f2bc
xor eax, eax
jmp 0x59f2bc
xor eax, eax
nop word [rax + rax]
mov r8, qword [rbp + rax*8]
mov rdx, qword [rdi + rax*8]
xor rdx, r8
and rdx, rcx
xor rdx, r8
mov qword [rbp + rax*8], rdx
mov rdx, rax
mov qword [rdi + rax*8], 0
add rax, 1
cmp rdx, qword [rsp + 0x20]
jne 0x59f588
jmp 0x59f55e
mov rcx, qword [rsp + 0xa0]
mov edx, esi
call sym.bn_wexpand
test rax, rax
je 0x59f570
mov rax, qword [rsp + 0xa0]
movsxd rdx, esi
mov r9d, esi
mov r8, r14
mov rcx, qword [rsp + 0xa0]
mov dword [rax + 8], esi
mov eax, dword [rdi + 0x10]
mov dword [rcx + 0x10], eax
mov rax, qword [rdi]
mov rcx, qword [rcx]
lea rdx, [rax + rdx*8]
call sym.bn_sub_words
mov eax, 1
jmp 0x59f2bc
mov eax, r8d
neg eax
shr eax, 0x1f
neg rax
and qword [r15], rax
mov eax, 1
jmp 0x59f3d6