Function at 0x20256220
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
movzx esi, cx
mov eax, ecx
shr eax, 0x10
cmp r8, 1
jne 0x2025626c
movzx ecx, byte [rdx]
lea edx, [rsi + rcx]
cmp edx, 0xfff1
lea ecx, [rsi + rcx - 0xfff1]
cmovb ecx, edx
add eax, ecx
mov edx, eax
shl edx, 0x10
cmp eax, 0xfff1
lea eax, [rdx + 0xf0000]
cmovb eax, edx
or eax, ecx
jmp 0x2025676e
test rdx, rdx
je 0x202562ba
cmp r8, 0x10
jae 0x202562c4
test r8, r8
je 0x20256741
mov rcx, r8
and rcx, 3
je 0x202566e9
xor r9d, r9d
movzx r10d, byte [rdx + r9]
add esi, r10d
add eax, esi
inc r9
cmp rcx, r9
jne 0x20256290
add rdx, r9
mov rcx, r8
sub rcx, r9
cmp r8, 4
jae 0x202566f2
jmp 0x20256741
mov eax, 1
jmp 0x2025676e
cmp r8, 0x15b0
jb 0x20256580
mov r9d, 0x80078071
nop word [rax + rax]
add r8, 0xffffffffffffea50
xor r11d, r11d
nop word [rax + rax]
movzx ecx, byte [rdx + r11]
add ecx, dword [0x204a2140]
add ecx, esi
add eax, ecx
movzx r10d, byte [rdx + r11 + 1]
add r10d, ecx
add eax, r10d
movzx ecx, byte [rdx + r11 + 2]
add ecx, r10d
add eax, ecx
movzx r10d, byte [rdx + r11 + 3]
add r10d, ecx
add eax, r10d
movzx ecx, byte [rdx + r11 + 4]
add ecx, r10d
add eax, ecx
movzx esi, byte [rdx + r11 + 5]
add esi, ecx
mov rdi, qword [0x20476038]
movsxd rcx, dword [rdi]
mov r10d, dword [0x20389644]
add eax, esi
movzx ebx, byte [rdx + r11 + 6]
add ebx, esi
add eax, ebx
movzx esi, byte [rdx + r11 + 7]
add esi, ebx
add eax, esi
movzx ebx, byte [rdx + r11 + 8]
add ebx, esi
add eax, ebx
movzx esi, byte [rdx + r11 + 9]
add esi, ebx
add eax, esi
movzx ebx, byte [rdx + r11 + 0xa]
mov r14d, esi
xor r14d, ebx
and esi, ebx
lea esi, [r14 + rsi*2]
add eax, esi
movzx ebx, byte [rdx + r11 + 0xb]
add ebx, esi
mov esi, eax
xor esi, ebx
and eax, ebx
lea eax, [rsi + rax*2]
movzx esi, byte [rdx + r11 + 0xc]
add esi, ebx
add eax, esi
movzx ebx, byte [rdx + r11 + 0xd]
add ebx, esi
add eax, ebx
movzx ebp, byte [rdx + r11 + 0xe]
add ebp, ebx
add eax, ebp
movzx esi, byte [rdx + r11 + 0xf]
add esi, ebp
add eax, esi
add r11, 0x10
cmp r11d, 0x15b0
jne 0x202562f0
add rdx, 0x15b0
mov r11d, esi
imul r11, r9
shr r11, 0x2f
imul r11d, r11d, 0xfff1
sub esi, r11d
mov r11d, eax
imul r11, r9
shr r11, 0x2f
imul r11d, r11d, 0xfff1
sub eax, r11d
cmp r8, 0x15af
ja 0x202562e0
add rcx, rdi
mov edi, dword [0x20476030]
lea r9d, [rdi + 1]
mov dword [0x20476030], r9d
mov ebx, edi
not ebx
xor r11d, r11d
xor edi, r9d
not r9d
and r9d, ebx
mov bl, 1
nop word cs:[rax + rax]
test r11b, r11b
jne 0x2025644a
test r11b, r11b
je 0x20256450
test bl, bl
je 0x20256440
jmp 0x20256445
or edi, r9d
xor r9d, r9d
xor edi, 0xffffffff
jne 0x20256487
test r10d, r10d
jle 0x20256487
xor r11d, r11d
xor ebx, ebx
xor r9d, r9d
nop dword [rax + rax]
test r11b, r11b
jne 0x20256470
movsxd rbx, ebx
lea r14, [rcx + rbx]
xor r9d, dword [r14]
add ebx, 4
cmp ebx, r10d
jl 0x20256470
test r8, r8
je 0x202566df
mov ecx, dword [0x20389640]
xor ebx, ebx
mov ebp, ecx
sub ebp, r9d
sub r9d, ecx
mov r14d, r9d
sub r14d, ecx
mov r15b, 1
nop dword [rax]
test bl, bl
jne 0x202564ce
cmp edi, 1
mov ecx, 0
sbb ecx, ecx
and ecx, ebp
add dword [0x204a2140], ecx
test bl, bl
je 0x20256576
mov r10d, r14d
mov ecx, r9d
shl r10d, cl
sub r10d, r9d
mov r11d, r10d
mov ecx, r10d
shl r11d, cl
shl r11d, cl
sub r11d, r10d
imul r11d, r10d
shl r11d, cl
shl r11d, cl
shl r11d, cl
mov ecx, r11d
sub ecx, r10d
imul ecx, r10d
and ecx, r11d
mov r10d, dword [0x204a2140]
sub r10d, ecx
imul r10d, ecx
sub ecx, r10d
mov r12d, ecx
sub r12d, r10d
mov r10d, r12d
shl r10d, cl
mov r11d, r12d
mov ecx, r10d
shl r11d, cl
sub r12d, r11d
imul r12d, r11d
mov r13d, r11d
sub r13d, r12d
mov r10d, r13d
mov ecx, r11d
shl r10d, cl
sub r13d, r10d
imul r13d, r10d
mov r11d, r13d
mov ecx, r10d
shl r11d, cl
mov r10d, r13d
mov ecx, r11d
shl r10d, cl
mov ecx, r10d
shl r13d, cl
add r13d, r10d
mov dword [0x204a2140], r13d
test r15b, r15b
je 0x202564b0
jmp 0x202564b4
cmp r8, 0xf
jbe 0x2025663d
add r8, 0xfffffffffffffff0
movzx ecx, byte [rdx]
add ecx, esi
add eax, ecx
movzx r9d, byte [rdx + 1]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 2]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 3]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 4]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 5]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 6]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 7]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 8]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 9]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 0xa]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 0xb]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 0xc]
add ecx, r9d
add eax, ecx
movzx r9d, byte [rdx + 0xd]
add r9d, ecx
add eax, r9d
movzx ecx, byte [rdx + 0xe]
add ecx, r9d
add eax, ecx
movzx esi, byte [rdx + 0xf]
add esi, ecx
mov ecx, eax
xor ecx, esi
and eax, esi
lea eax, [rcx + rax*2]
add rdx, 0x10
cmp r8, 0xf
ja 0x20256580
test r8, r8
je 0x202566b6
mov r9, r8
not r9
lea rcx, [r9 + r8*2]
mov r10, r8
xor r10, 3
and r9, 0xfffffffffffffffc
or r9, r10
xor r9, 0xffffffffffffffff
je 0x20256678
xor r10d, r10d
nop
movzx r11d, byte [rdx + r10]
add esi, r11d
add eax, esi
inc r10
cmp r9, r10
jne 0x20256660
add rdx, r10
sub r8, r10
cmp rcx, 3
jb 0x202566b6
xor ecx, ecx
movzx r9d, byte [rdx + rcx]
add r9d, esi
add eax, r9d
movzx r10d, byte [rdx + rcx + 1]
add r10d, r9d
add eax, r10d
movzx r9d, byte [rdx + rcx + 2]
add r9d, r10d
add eax, r9d
movzx esi, byte [rdx + rcx + 3]
add esi, r9d
add eax, esi
add rcx, 4
cmp r8, rcx
jne 0x20256680
mov ecx, esi
mov edx, 0x80078071
imul rcx, rdx
shr rcx, 0x2f
imul ecx, ecx, 0xfff1
sub esi, ecx
mov ecx, eax
imul rcx, rdx
shr rcx, 0x2f
imul ecx, ecx, 0xfff1
sub eax, ecx
shl eax, 0x10
or eax, esi
jmp 0x2025676e
mov rcx, r8
cmp r8, 4
jb 0x20256741
xor r8d, r8d
nop word cs:[rax + rax]
movzx r9d, byte [rdx + r8]
add r9d, esi
add eax, r9d
movzx r10d, byte [rdx + r8 + 1]
add r10d, r9d
add eax, r10d
movzx r9d, byte [rdx + r8 + 2]
add r9d, r10d
add eax, r9d
movzx esi, byte [rdx + r8 + 3]
add esi, r9d
mov r9d, esi
xor r9d, eax
and eax, esi
lea eax, [r9 + rax*2]
add r8, 4
cmp rcx, r8
jne 0x20256700
lea ecx, [rsi - 0xfff1]
cmp esi, 0xfff1
cmovb ecx, esi
mov edx, eax
mov r8d, 0x80078071
imul r8, rdx
shr r8, 0x2f
imul edx, r8d, 0xfff1
sub eax, edx
shl eax, 0x10
or eax, ecx
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret