Function at 0x180031470
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r13
push r14
sub rsp, 0xd0
mov rax, qword [0x1801772b8]
xor rax, rsp
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0x80], rcx
mov rdi, r9
mov rcx, r9
mov qword [rsp + 0x78], r9
mov rsi, r8
mov qword [rsp + 0x68], r8
mov rbx, rdx
xor r14d, r14d
call sym.version.dll_BN_CTX_start
mov rcx, rdi
call sym.version.dll_BN_CTX_get
mov qword [rsp + 0x60], rax
mov rdi, rax
test rax, rax
je 0x1800319cc
mov qword [rsp + 0xc8], rbp
mov rbp, qword [rsp + 0x78]
mov rcx, rbp
call sym.version.dll_BN_CTX_get
mov qword [rsp + 0x38], rax
test rax, rax
je 0x1800319c4
mov rcx, rbp
mov qword [rsp + 0xc0], r12
call sym.version.dll_BN_CTX_get
mov qword [rsp + 0x70], rax
mov r12, rax
test rax, rax
je 0x1800319bc
mov rcx, rbp
mov qword [rsp + 0xb8], r15
call sym.version.dll_BN_CTX_get
mov qword [rsp + 0x40], rax
mov r15, rax
test rax, rax
je 0x1800319b4
lea r8d, [r14 + 6]
mov rcx, rsi
lea rdx, [rsp + 0x88]
call sym.version.dll_BN_GF2m_poly2arr
test eax, eax
je 0x180031992
cmp eax, 6
jg 0x180031992
lea r8, [rsp + 0x88]
mov rdx, rbx
mov rcx, r12
call sym.version.dll_BN_GF2m_mod_arr
test eax, eax
je 0x1800319b4
cmp dword [r12 + 8], r14d
je 0x1800319b4
mov rdx, rsi
mov rcx, r15
call sym.version.dll_BN_copy
test rax, rax
je 0x1800319b4
mov rcx, r12
call sym.version.dll_BN_num_bits
mov rcx, r15
mov ebp, eax
call sym.version.dll_BN_num_bits
movsxd r13, dword [rsi + 8]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x50], r13d
cmp r13d, dword [r12 + 0xc]
jle 0x1800315ce
mov edx, r13d
mov rcx, r12
call fcn.180033d90
test rax, rax
je 0x1800319b4
movsxd rax, dword [r12 + 8]
mov rbx, qword [r12]
cmp rax, r13
jge 0x1800315f1
mov r8, r13
lea rcx, [rbx + rax*4]
sub r8, rax
xor edx, edx
shl r8, 2
call fcn.1800d7430
mov dword [r12 + 8], r13d
cmp r13d, dword [rdi + 0xc]
jle 0x180031610
mov edx, r13d
mov rcx, rdi
call fcn.180033d90
test rax, rax
je 0x1800319b4
mov r15, qword [rdi]
mov dword [r15], 1
cmp r13d, 1
jle 0x180031636
lea eax, [r13 - 1]
xor edx, edx
movsxd r8, eax
lea rcx, [r15 + 4]
shl r8, 2
call fcn.1800d7430
mov r10, qword [rsp + 0x38]
mov dword [rdi + 8], r13d
cmp r13d, dword [r10 + 0xc]
jle 0x18003165e
mov edx, r13d
mov rcx, r10
call fcn.180033d90
test rax, rax
je 0x1800319b4
mov r10, qword [rsp + 0x38]
mov rdi, qword [r10]
mov qword [rsp + 0x58], rdi
test r13d, r13d
jle 0x180031681
mov r8, r13
xor edx, edx
shl r8, 2
mov rcx, rdi
call fcn.1800d7430
mov r10, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x40]
mov dword [r10 + 8], r13d
mov r11, qword [rdx]
mov qword [rsp + 0x48], r11
test ebp, ebp
je 0x180031772
nop word [rax + rax]
mov r9d, dword [rbx]
test r9b, 1
jne 0x180031759
mov eax, dword [r15]
mov r12, r14
mov rcx, qword [rsi]
mov r11d, eax
and r11d, 1
neg r11d
mov edx, dword [rcx]
lea ecx, [r13 - 1]
and edx, r11d
movsxd rdi, ecx
xor eax, edx
test ecx, ecx
jle 0x180031743
mov r13, qword [rsp + 0x68]
lea r10, [r15 + 4]
mov rsi, rbx
mov r14, 0xfffffffffffffffc
sub rsi, r15
mov r12, rdi
sub r14, r15
nop
mov ecx, dword [rsi + r10]
lea rdx, [r14 + r10]
shl ecx, 0x1f
lea r10, [r10 + 4]
shr r9d, 1
or ecx, r9d
shr eax, 1
mov r9d, dword [rsi + r10 - 4]
mov dword [rsi + r10 - 8], ecx
mov rcx, qword [r13]
mov r8d, dword [rdx + rcx + 4]
and r8d, r11d
xor r8d, dword [r10 - 4]
mov ecx, r8d
shl ecx, 0x1f
or ecx, eax
mov eax, r8d
mov dword [r10 - 8], ecx
sub rdi, 1
jne 0x1800316f0
mov r13d, dword [rsp + 0x50]
xor r14d, r14d
mov rsi, qword [rsp + 0x68]
shr r9d, 1
shr eax, 1
mov dword [rbx + r12*4], r9d
mov dword [r15 + r12*4], eax
sub ebp, 1
jne 0x1800316a0
mov rdi, qword [rsp + 0x58]
mov r11, qword [rsp + 0x48]
mov r12, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x40]
mov r10, qword [rsp + 0x38]
cmp ebp, 0x20
jg 0x18003178a
mov eax, dword [rbx]
test eax, eax
je 0x1800319b4
cmp eax, 1
je 0x180031946
mov ecx, dword [rsp + 0x30]
cmp ebp, ecx
jge 0x1800317cd
mov r9, qword [rsp + 0x60]
mov rax, r12
mov rbx, r11
mov dword [rsp + 0x30], ebp
mov r15, rdi
mov qword [rsp + 0x70], rdx
mov ebp, ecx
mov qword [rsp + 0x40], rax
mov r11, qword [rax]
mov r12, rdx
mov rdi, qword [r9]
mov qword [rsp + 0x48], r11
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x60], r10
mov qword [rsp + 0x38], r9
mov r8, r14
test r13d, r13d
jle 0x18003189a
cmp r13d, 4
jb 0x18003189a
lea eax, [r13 - 1]
movsxd rcx, eax
lea r10, [rdi + rcx*4]
lea rax, [r15 + rcx*4]
cmp r15, r10
ja 0x180031800
cmp rax, rdi
jae 0x18003189a
lea rdx, [rbx + rcx*4]
cmp r15, rdx
ja 0x180031812
cmp rax, rbx
jae 0x18003189a
lea r9, [r11 + rcx*4]
cmp r15, r9
ja 0x180031820
cmp rax, r11
jae 0x18003189a
cmp rbx, r10
ja 0x18003182a
cmp rdx, rdi
jae 0x18003189a
cmp rbx, r9
ja 0x180031834
cmp rdx, r11
jae 0x18003189a
mov ecx, r13d
and ecx, 0x80000003
jge 0x180031846
dec ecx
or ecx, 0xfffffffc
inc ecx
mov eax, r13d
mov rdx, rdi
sub eax, ecx
sub rdx, rbx
mov rcx, r11
movsxd r10, eax
sub rcx, rbx
mov r9, r15
sub r9, rbx
mov rax, rbx
movdqu xmm0, xmmword [rax]
add r8, 4
movdqu xmm1, xmmword [rcx + rax]
lea rax, [rax + 0x10]
pxor xmm1, xmm0
movdqu xmm0, xmmword [r9 + rax - 0x10]
movdqu xmmword [rax - 0x10], xmm1
movdqu xmm1, xmmword [rdx + rax - 0x10]
pxor xmm1, xmm0
movdqu xmmword [r9 + rax - 0x10], xmm1
cmp r8, r10
jl 0x180031863
movsxd rax, r13d
cmp r8, rax
jge 0x1800318dd
mov r9, r11
lea rcx, [rbx + r8*4]
mov r11, r15
mov r10, rdi
sub r11, rbx
sub r9, rbx
sub r10, rbx
mov rdx, rax
sub rdx, r8
nop
mov eax, dword [rcx + r9]
xor dword [rcx], eax
mov eax, dword [rcx + r10]
xor dword [rcx + r11], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x1800318c0
mov r11, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x40]
mov r10, qword [rsp + 0x38]
cmp ebp, dword [rsp + 0x30]
jne 0x180031692
lea eax, [rbp - 1]
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
movsxd rdi, eax
mov rax, rdi
mov ecx, dword [rbx + rdi*4]
test ecx, ecx
jne 0x180031922
nop word [rax + rax]
test rax, rax
je 0x180031922
mov ecx, dword [rbx + rax*4 - 4]
dec rax
dec edi
test ecx, ecx
je 0x180031910
call sym.version.dll_BN_num_bits_word
mov r11, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x40]
mov r10, qword [rsp + 0x38]
shl edi, 5
lea ebp, [rdi + rax]
mov rdi, qword [rsp + 0x58]
jmp 0x180031692
mov r9, qword [rsp + 0x60]
movsxd rdx, dword [r9 + 8]
test edx, edx
jle 0x180031975
mov rax, qword [r9]
sub rax, 4
lea r8, [rax + rdx*4]
nop
mov eax, dword [r8]
lea r8, [r8 - 4]
test eax, eax
jne 0x180031971
dec edx
test edx, edx
jg 0x180031960
mov dword [r9 + 8], edx
mov rcx, qword [rsp + 0x80]
mov rdx, r9
call sym.version.dll_BN_copy
test rax, rax
je 0x1800319b4
mov r14d, 1
jmp 0x1800319b4
mov ecx, 3
mov dword [rsp + 0x20], 0x1d9
lea r9, [0x1801007f0]
mov edx, 0xfff
lea r8d, [rcx + 0x67]
call sym.version.dll_ERR_put_error
mov r15, qword [rsp + 0xb8]
mov r12, qword [rsp + 0xc0]
mov rbp, qword [rsp + 0xc8]
mov rcx, qword [rsp + 0x78]
call sym.version.dll_BN_CTX_end
mov eax, r14d
mov rcx, qword [rsp + 0xa0]
xor rcx, rsp
call fcn.1800d61c0
add rsp, 0xd0
pop r14
pop r13
pop rdi
pop rsi
pop rbx
ret