Function at 0x20254ac0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x60
mov esi, edx
mov rax, qword [0x205da420]
xor rax, rsp
mov qword [rsp + 0x58], rax
mov eax, edx
and eax, 0x1f
cmp eax, 0xa
jbe 0x20254b08
cmp eax, 0x11
jbe 0x20254b64
cmp eax, 0x16
jae 0x20254bd3
cmp eax, 0x12
jne 0x20254cfc
call fcn.20421e38
jmp 0x20254b78
cmp eax, 3
jb 0x20254b7f
cmp eax, 7
jae 0x20254c19
cmp eax, 4
ja 0x20254d1b
cmp eax, 3
jne 0x20254d99
mov rbx, r9
xor eax, eax
sub eax, dword [r8 - 4]
cdqe
lea rdi, [r8 + rax]
add rdi, 0xffffffffffffff78
mov r14, rcx
mov rcx, rdi
call fcn.201162c0
test r14d, r14d
je case.0x20254be6.3
test sil, 0x20
mov r9, rbx
je 0x20254d33
jmp 0x20255373
cmp eax, 0xb
jne 0x20254c43
mov rcx, r8
mov rdx, r9
call fcn.20422320
xor edi, edi
jmp case.0x20254be6.3
cmp eax, 2
je 0x20254cc9
test eax, eax
jne 0x20254cd3
movzx eax, byte [0x2059dd46]
lea rdi, [0x2059dd30]
cmp al, 0x8d
je case.0x20254be6.3
mov ebx, r9d
mov cl, 0x24
nop dword [rax + rax]
mov al, 0xfc
lock cmpxchg byte [0x2059dd46], cl
je 0x20254edc
cmp al, 0x8d
jne 0x20254bb0
test sil, 0x40
je 0x20255133
jmp case.0x20254be6.3
xor edi, edi
add eax, 0xffffffea
lea rdx, [0x2047c78c]
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
test ecx, ecx
je 0x20255168
test sil, 0x20
jne 0x2025510d
mov rbx, r9
mov rcx, r9
call fcn.200782c0
test esi, 0x100
jne 0x202551e0
mov rdi, rbx
jmp case.0x20254be6.3
cmp eax, 8
ja 0x20254d6c
cmp eax, 7
jne 0x20254db1
mov rax, r8
mov ebx, ecx
mov esi, 0xd4c49fc4
mov r8, r9
mov r9, rcx
mov rcx, rax
jmp 0x20254d9c
cmp eax, 0xd
jbe 0x20254d89
cmp eax, 0xe
jne 0x20254dd8
mov r15, r8
mov r14, r9
lea rax, [0x2046f1b8]
mov qword [rcx], rax
mov rdi, rcx
call fcn.200a3bf0
lea rax, [0x2046e1c8]
mov qword [rdi], rax
mov rbx, qword [rdi + 0x60]
test rbx, rbx
je 0x202550fe
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x20254cb6
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x20254cb6
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, rbx
call fcn.200782c0
mov r9, r14
mov rcx, rdi
jmp 0x2025510d
mov edi, 0xffffffff
jmp case.0x20254be6.3
mov rdi, qword [r9 + 8]
test rdi, rdi
sete r10b
movzx eax, byte [0x2059dce2]
cmp al, 0xa7
jne 0x20254e99
test sil, 0x20
jne 0x202550ef
jmp 0x202552ed
cmp eax, 0x13
jbe 0x20254dee
cmp eax, 0x15
jne 0x20254f95
test ecx, ecx
jne 0x20254f77
jmp 0x20255380
cmp eax, 6
jne 0x20254e3c
movzx eax, byte [0x2059de23]
cmp al, 0x8c
je 0x2025515c
mov cl, 0x7e
nop word cs:[rax + rax]
mov al, 0xc7
lock cmpxchg byte [0x2059de23], cl
je 0x20255133
cmp al, 0x8c
jne 0x20254d40
test esi, 0x200
je 0x2025515c
lea rdi, [0x2059dd30]
jmp case.0x20254be6.3
cmp eax, 0xa
je 0x20254b78
movzx eax, byte [0x2059dd79]
cmp al, 0x2a
je 0x2025527d
jmp 0x20255261
jne 0x20254e53
movzx edi, byte [r8 + 0x19]
jmp case.0x20254be6.3
mov ebx, r9d
mov qword [rsp + 0x28], r8
cmp r8, r9
jae 0x202552d9
xor eax, eax
jmp 0x202552a3
movzx eax, byte [0x2059dd25]
cmp al, 0xe7
jne 0x20254fd7
mov al, 0xe7
test sil, 0x40
jne 0x2025526f
lea rdi, [0x2059dd10]
jmp case.0x20254be6.3
cmp eax, 0xf
ja 0x20254ff9
call fcn.2042482c
movzx edi, al
jmp case.0x20254be6.3
lea rax, [0x2046e1c8]
mov qword [r8], rax
mov rdi, qword [r8 + 0x60]
test rdi, rdi
je 0x20255127
mov r14, r8
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x202551a7
mov rbx, r9
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x202551db
mov rdx, rax
mov r9, rbx
mov r8, r14
jmp 0x2025533b
mov qword [rsp + 0x50], r9
mov dword [rsp + 0x20], 0
xor eax, eax
mov ebx, r9d
jmp 0x202552f2
movzx edi, byte [rcx + 0x18]
jmp case.0x20254be6.3
mov qword [rsp + 0x38], r8
mov qword [rsp + 0x30], 0
jmp 0x20255549
xor eax, eax
test r8d, r8d
je 0x20255231
test sil, sil
jns 0x2025523e
jmp 0x20254f85
test r8d, r8d
je 0x20254f77
lea rdi, [rsp + 0x28]
xor r10d, r10d
test sil, 0x40
jne 0x20254ec9
mov cl, 0xe
nop word cs:[rax + rax]
mov al, 0x63
lock cmpxchg byte [0x2059dce2], cl
je 0x20255044
cmp al, 0xa7
jne 0x20254eb0
jmp 0x202550ef
mov rcx, r9
mov rdi, r9
call fcn.200782c0
mov r9, rdi
jmp 0x20255148
lea r11, [0x2047c6f0]
mov r14d, 0x8f469d87
add r14, r11
mov ecx, 0xffffffff
add rcx, 0xffffffff8f469d87
xor edi, edi
movabs r15, 0x2e8ba2e8ba2e8ba3
lea r10, [0x2059dd30]
mov r12d, 0x8f469d86
xor r13d, r13d
nop word cs:[rax + rax]
mov rax, rcx
mul r15
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
lea rdx, [r11 + r13]
add rdx, rax
movzx edx, byte [r12 + rdx]
xor dl, 0xf5
add byte [r13 + r10], dl
test sil, sil
js case.0x20254be6.3
movzx eax, byte [r14 + rax]
xor al, 0xf5
add byte [r13 + r10 + 1], al
cmp r13, 0x14
je 0x202551af
add r13, 2
add r14, 2
add rcx, 2
test sil, sil
jns 0x20254f20
jmp case.0x20254be6.3
test sil, 0x20
jne 0x20254f85
mov rdi, r9
jmp case.0x20254be6.3
mov rcx, r9
mov rdi, r9
call fcn.200782c0
jmp case.0x20254be6.3
mov rax, qword [r8]
mov rax, qword [rax + 0x18]
lea rdx, [rsp + 0x40]
mov rsi, rcx
mov rcx, r8
mov r8d, r9d
call qword [case.0x200c66ec.0]
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsi + 8]
mov rax, qword [rax + 8]
cmp rax, qword [rcx + 8]
sete al
mov ecx, dword [rsp + 0x40]
cmp ecx, dword [rsi]
sete cl
and cl, al
movzx edi, cl
jmp case.0x20254be6.3
mov dl, 0xcc
lea rdi, [0x2059dd10]
mov al, 0xe6
lock cmpxchg byte [0x2059dd25], dl
je 0x20255565
cmp al, 0xe7
jne 0x20254fe0
jmp case.0x20254be6.3
cmp eax, 0x11
jne 0x2025517a
mov rdi, qword [r9 + 0x38]
mov rax, qword [rdi]
test rax, rax
je 0x20255247
mov rdx, qword [r9 + 0x50]
cmp dword [rdx], 0
jg 0x20254e7a
test esi, 0x400
jne 0x20254b78
mov rcx, qword [r9 + 0x40]
mov rcx, qword [rcx]
test rcx, rcx
je 0x20255259
lea r10, [r9 + 0x38]
jmp 0x202551fa
mov ecx, 0xffffffff
lea r8, [rcx - 0x509e8b89]
lea r9, [0x2047c690]
mov r11d, 0xaf617477
add r11, r9
add rcx, 0xffffffffaf617478
xor esi, esi
movabs rbx, 0x8618618618618619
lea r14, [0x2059dcd0]
mov r15d, 0xaf617476
mov rax, rcx
mul rbx
mov r12, rcx
sub r12, rdx
shr r12, 1
add r12, rdx
mov rax, r8
mul rbx
mov rax, r8
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, r9
add rax, rsi
movzx eax, byte [r15 + rax]
xor al, 0xf
add byte [rsi + r14], al
shr r12, 4
imul rax, r12, 0xffffffffffffffeb
movzx eax, byte [r11 + rax]
xor al, 0xf
add byte [rsi + r14 + 1], al
add rsi, 2
add r11, 2
add rcx, 2
add r8, 2
cmp rsi, 0x12
jne 0x20255080
mov al, 0xa7
xchg byte [0x2059dce2], al
test r10b, 1
je case.0x20254be6.3
jmp 0x202552c5
mov rcx, rdi
test sil, 0x40
mov r9, r14
mov r8, r15
je 0x20255189
test r9d, r9d
je 0x2025511f
mov rdi, rcx
call fcn.200782c0
jmp case.0x20254be6.3
mov rdi, rcx
jmp case.0x20254be6.3
test esi, 0x400
jne 0x202551cb
xor byte [0x2059de20], 0x4b
xor byte [0x2059de21], 0x17
xor byte [0x2059de22], 0x86
mov rdi, r9
test sil, sil
js case.0x20254be6.3
mov al, 0x8c
xchg byte [0x2059de23], al
lea rdi, [0x2059de20]
jmp case.0x20254be6.3
mov rdi, r9
test sil, 0x40
jne case.0x20254be6.3
jmp 0x20255549
movzx eax, byte [0x2059dd65]
cmp al, 0x41
je 0x20255297
mov cl, 0x29
lea rdi, [0x2059dd50]
mov al, 0xa1
lock cmpxchg byte [0x2059dd65], cl
je 0x202551d3
cmp al, 0x41
jne 0x20255192
jmp case.0x20254be6.3
mov ebx, r9d
jmp 0x2025535a
test esi, 0x100
jne 0x202552be
mov al, 0x8d
xchg byte [0x2059dd46], al
mov rdi, r10
jmp case.0x20254be6.3
mov rdi, r8
jmp 0x20255368
mov rdi, r8
jmp 0x2025536d
jmp 0x2025535a
lea rdi, [rsp + 0x30]
lea rax, [rsp + 0x38]
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x50]
mov r10, rdi
mov r9, rbx
mov r8d, 0xffffffff
test byte [r9 + 0x70], 4
jne 0x202552d1
mov r11, qword [r9 + 0x68]
cmp r11, rcx
cmovb r11, rcx
xor ecx, ecx
cmp r11, rax
jbe 0x202554e2
mov qword [r9 + 0x68], r11
sub r11d, dword [rdi]
mov dword [rdx], r11d
mov rax, qword [r10]
mov rax, qword [rax]
mov rdi, r9
test sil, 0x20
jne case.0x20254be6.3
movzx r8d, byte [rax]
jmp 0x202552d1
mov r8d, 0xffffffff
test sil, 0x40
je case.0x20254be6.3
jmp 0x202552d1
mov r8d, 0xffffffff
jmp 0x202552d1
mov cl, 0x7c
mov al, 0x74
lock cmpxchg byte [0x2059dd79], cl
je 0x20255289
cmp al, 0x2a
je 0x2025527d
test sil, sil
js 0x20255261
jmp 0x20255565
lea rdi, [0x2059dd70]
jmp case.0x20254be6.3
xor ecx, ecx
test esi, 0x100
je 0x202554ee
lea rdi, [0x2059dd50]
jmp case.0x20254be6.3
cmp rax, rcx
jae 0x202552d1
test esi, 0x200
je 0x202552c3
movzx edx, byte [r9 + rax]
mov r10, qword [rsp + 0x28]
mov byte [r10 + rax], dl
inc rax
jmp 0x202552a3
jmp 0x20255305
lea rdi, [0x2059dcd0]
jmp case.0x20254be6.3
mov rdi, r8
jmp case.0x20254be6.3
test rcx, rcx
je 0x202552d1
movzx eax, byte [r9 + rcx - 1]
mov rdx, qword [rsp + 0x28]
mov byte [rdx + rcx - 1], al
dec rcx
jmp 0x202552d9
mov edx, dword [rsp + 0x20]
mov r10, rax
shl r10, 0x20
or r10, rdx
cmp r10, rcx
jae 0x20255380
mov rdx, qword [rsp + 0x50]
mov r10d, dword [rsp + 0x20]
shl rax, 0x20
or r10, rax
movzx edx, byte [rdx + r10]
mov byte [r8 + r10], dl
mov edx, dword [rsp + 0x20]
add rax, rdx
inc rax
mov dword [rsp + 0x20], eax
shr rax, 0x20
lea rdi, [rsp + 0x50]
lea rdx, [rsp + 0x30]
test esi, 0x100
jne 0x202552f2
mov r14, r8
mov rax, qword [rdx]
mov rax, qword [rax]
mov rcx, rdx
mov edx, 1
call qword [case.0x200c66ec.0]
mov rcx, rdi
call fcn.200782c0
mov rdi, r14
mov r9d, ebx
test r9d, r9d
je 0x2025538f
test sil, 0x20
jne 0x2025539d
mov rcx, rdi
call fcn.200782c0
jmp case.0x20254be6.3
test sil, sil
cmovs r8, r9
mov rdi, r8
jmp case.0x20254be6.3
test sil, sil
js 0x202552c5
jmp case.0x20254be6.3
mov eax, 1
mov ecx, 0x9b709630
mov edx, 0x648f69e2
mov r8d, 0x9b709631
mov r9d, 0x648f69e1
mov r10d, 0xaf286bcb
lea rdi, [0x2059dd50]
lea r11, [0x2047c710]
nop dword [rax]
mov esi, r9d
imul rsi, r10
shr rsi, 0x20
mov ebx, r9d
sub ebx, esi
shr ebx, 1
add ebx, esi
shr ebx, 4
lea esi, [rbx + rbx*8]
lea esi, [rbx + rsi*2]
add esi, r8d
movzx ebx, byte [rsi + r11]
xor bl, 0x19
add byte [rax + rdi - 1], bl
cmp rax, 0x15
je 0x20255440
mov esi, edx
imul rsi, r10
shr rsi, 0x20
mov ebx, edx
sub ebx, esi
shr ebx, 1
add ebx, esi
shr ebx, 4
lea esi, [rbx + rbx*8]
lea esi, [rbx + rsi*2]
add esi, ecx
mov esi, esi
movzx ebx, byte [rsi + r11]
xor bl, 0x19
add byte [rax + rdi], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r9d, 2
jmp 0x202553d0
mov al, 0x41
xchg byte [0x2059dd65], al
jmp case.0x20254be6.3
mov eax, 1
mov ecx, 0xebcba19b
mov edx, 0x14345e7c
mov r8d, 0xebcba19c
mov r9d, 0x14345e7a
mov r10d, 0xaaaaaaab
lea rdi, [0x2059dd10]
lea r11, [0x2047c6d0]
nop dword [rax]
mov esi, r9d
imul rsi, r10
shr rsi, 0x24
lea esi, [rsi + rsi*2]
lea esi, [r8 + rsi*8]
movzx ebx, byte [rsi + r11]
xor bl, 0x8d
add byte [rax + rdi - 1], bl
cmp rax, 0x15
je 0x202554d5
mov esi, edx
imul rsi, r10
shr rsi, 0x24
lea esi, [rsi + rsi*2]
lea esi, [rcx + rsi*8]
mov esi, esi
movzx ebx, byte [rsi + r11]
xor bl, 0x8d
add byte [rax + rdi], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r9d, 2
jmp 0x20255480
mov al, 0xe7
xchg byte [0x2059dd25], al
jmp case.0x20254be6.3
test esi, 0x200
je 0x202552d1
lea eax, [rcx - 0x7f73fbe9]
imul rdx, rax, 0x24924925
shr rdx, 0x20
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea edx, [rax*8]
sub eax, edx
add eax, ecx
add eax, 0x808c0417
movsxd rcx, ecx
lea rdi, [0x2059dd70]
lea rdx, [0x2047c730]
sub rdx, rax
movzx eax, byte [rdx + 6]
xor al, 0xd
add byte [rcx + rdi], al
inc ecx
xor r8d, r8d
cmp ecx, 9
jl 0x202554e2
mov al, 0x2a
xchg byte [0x2059dd79], al
jmp case.0x20254be6.3
mov rax, qword [rsp + 0x30]
cmp rax, r9
jae 0x20254b78
movzx edi, byte [rcx + rax]
movzx eax, byte [r8 + rax]
cmp dil, al
jne 0x20255576
test sil, 0x20
jne 0x2025544d
inc qword [rsp + 0x30]
jmp 0x20255549
sub edi, eax
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.20421ce0
mov rax, rdi
add rsp, 0x60
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret