Function at 0x2023c110
Capabilities:
Encode data using xor

Disassembly:
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x40
mov ebp, dword [rsp + 0x98]
mov rsi, qword [rsp + 0x90]
mov rax, qword [0x205da420]
xor rax, rsp
mov qword [rsp + 0x38], rax
mov eax, ebp
and eax, 0x1f
cmp eax, 0xd
jae 0x2023c19b
cmp eax, 4
ja 0x2023c2c4
cmp eax, 1
ja 0x2023c1fd
test eax, eax
je 0x2023c2a3
movzx eax, byte [0x205ecf60]
lea r9, [0x20599c10]
cmp al, 0xf5
je 0x2023c95a
mov cl, 0x22
nop word cs:[rax + rax]
xor eax, eax
lock cmpxchg byte [0x205ecf60], cl
je 0x2023c602
xor ebx, ebx
cmp al, 0xf5
jne 0x2023c180
jmp 0x2023c95c
cmp eax, 0x14
jae 0x2023c1c0
cmp eax, 0xe
ja 0x2023c494
cmp eax, 0xd
jne 0x2023c23f
test r8d, r8d
jne 0x2023c5f0
jmp 0x2023c255
cmp eax, 0x18
jae 0x2023c22f
cmp eax, 0x14
jne 0x2023c63e
mov r14, r8
xor ebx, ebx
xor eax, eax
sub eax, dword [rcx - 4]
cdqe
lea rdi, [rcx + rax]
add rdi, 0xffffffffffffff78
mov rcx, rdi
mov rsi, r9
call fcn.201162c0
test esi, esi
je 0x2023c526
jmp 0x2023cc28
cmp eax, 2
je 0x2023c345
cmp eax, 4
jne 0x2023c371
mov qword [rsp + 0x20], rdx
mov dword [rsp + 0x28], 0x577cdb2f
mov rcx, r8
mov rdx, rsi
call fcn.2023c110
mov r9d, eax
jmp 0x2023c95a
jne 0x2023c25f
call fcn.2042482c
movzx r9d, al
jmp 0x2023c95a
movzx eax, byte [0x20599b45]
lea rcx, [0x20599b30]
cmp al, 0xb1
jne 0x2023c417
xor ebx, ebx
mov r9, rcx
jmp 0x2023c95c
cmp eax, 0x1a
jb 0x2023c44b
mov r10d, 0x2e651a76
jne 0x2023c2ac
movzx eax, byte [0x20599b59]
lea r9, [0x20599b50]
cmp al, 0xa5
je 0x2023c95a
mov cl, 0x6d
mov al, 0x36
lock cmpxchg byte [0x20599b59], cl
je 0x2023c855
xor ebx, ebx
cmp al, 0xa5
jne 0x2023c288
jmp 0x2023c95c
mov r8d, r9d
mov r10d, 0xf4218f67
mov eax, r10d
and eax, 0x17
mov rcx, r8
cmp eax, 0xd
jae 0x2023c479
mov r8, rdx
mov rsi, r9
cmp eax, 9
jae 0x2023c30b
cmp eax, 6
jbe 0x2023c31f
cmp eax, 8
je 0x2023c404
movzx eax, byte [0x20599b05]
lea r9, [0x20599af0]
cmp al, 0x74
je 0x2023c95a
mov cl, 0x6a
nop
mov al, 0x36
lock cmpxchg byte [0x20599b05], cl
je 0x2023c71a
xor ebx, ebx
cmp al, 0x74
jne 0x2023c2f0
jmp 0x2023c95c
cmp eax, 0xa
jbe 0x2023c32e
cmp eax, 0xc
jne 0x2023c37b
xor ebx, ebx
mov r9, r8
jmp 0x2023c95c
cmp eax, 5
jne 0x2023c396
movzx r9d, byte [rsi + 0x19]
jmp 0x2023c95a
cmp eax, 9
jne 0x2023c3ab
mov rcx, r9
call fcn.20423908
xor ebx, ebx
xor r9d, r9d
jmp 0x2023c95c
mov eax, 0xffffffff
mov rcx, qword [rdx + 0x38]
mov r8, qword [rcx]
test r8, r8
je 0x2023cb5d
mov r10, qword [rdx + 0x50]
cmp dword [r10], 0
jle 0x2023c6d6
movzx eax, byte [r8]
jmp 0x2023cb5d
movzx r9d, byte [r9 + 0x18]
jmp 0x2023c95a
test ecx, ecx
je 0x2023c95a
mov rcx, r9
mov rsi, r9
call fcn.200782c0
mov r9, rsi
jmp 0x2023c95a
mov rax, rcx
mov rcx, rdx
mov rdi, rdx
mov edx, eax
call fcn.20423890
jmp 0x2023c5f8
lea rax, [0x2046e1c8]
mov qword [rdx], rax
mov rsi, qword [rdx + 0x60]
test rsi, rsi
je 0x2023c404
mov rdi, rcx
mov rbx, rdx
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x2023c3f6
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x2023c3f6
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, rsi
call fcn.200782c0
mov rdx, rbx
mov rcx, rdi
test ecx, ecx
je 0x2023cb12
mov rcx, rdx
mov rdi, rdx
jmp 0x2023c5f3
test bpl, 0x20
jne 0x2023c95a
mov dl, 0x46
nop word cs:[rax + rax]
mov al, 0xf8
lock cmpxchg byte [0x20599b45], dl
je 0x2023c7c3
xor ebx, ebx
cmp al, 0xb1
jne 0x2023c430
jmp 0x2023c257
mov rcx, qword [rsi + 8]
movzx eax, byte [0x20599ae2]
cmp al, 0xd6
je 0x2023c94c
mov dl, 0xc5
mov al, 0x49
lock cmpxchg byte [0x20599ae2], dl
je 0x2023c8a7
cmp al, 0xd6
jne 0x2023c460
jmp 0x2023c94c
cmp eax, 0x14
jae 0x2023c62c
mov r8, rdx
mov rsi, r9
mov ebp, r10d
cmp eax, 0xe
jbe 0x2023c1a9
cmp eax, 0x11
jae 0x2023c4e8
xor r9d, r9d
mov ebx, 0
cmp eax, 0xf
jne 0x2023c95c
test rdx, rdx
je 0x2023c95c
cmp rdx, 1
adc rdx, 0
xor eax, eax
nop dword [rax]
movzx r9d, byte [rcx + rax]
movzx r8d, byte [rsi + rax]
cmp r9b, r8b
jne 0x2023c624
inc rax
xor ebx, ebx
mov r9d, 0
cmp rdx, rax
jne 0x2023c4c0
jmp 0x2023c95c
je 0x2023c52e
cmp eax, 0x12
jne 0x2023c57d
movzx eax, byte [0x20599b26]
lea r9, [0x20599b10]
cmp al, 0x4d
je 0x2023c95a
mov cl, 0xbf
mov al, 0x42
lock cmpxchg byte [0x20599b26], cl
je 0x2023c98f
xor ebx, ebx
cmp al, 0x4d
jne 0x2023c50b
jmp 0x2023c95c
mov r8, r14
jmp 0x2023cc07
mov rax, r8
sub rax, rdx
jbe 0x2023c696
test rcx, rcx
je 0x2023cb12
cmp rcx, 1
mov rax, rcx
adc rax, 0
xor r9d, r9d
cmp rcx, 8
jb 0x2023cae9
mov r10, rdx
sub r10, r8
cmp r10, 0x20
jb 0x2023cae9
cmp rcx, 0x20
jae 0x2023ca95
xor r9d, r9d
jmp 0x2023cac9
mov rdi, rcx
lea rax, [0x2046f1b8]
mov qword [r8], rax
mov rcx, r8
mov rbx, r8
call fcn.200a3bf0
mov rcx, rbx
lea rax, [0x2046e1c8]
mov qword [rbx], rax
mov rsi, qword [rbx + 0x60]
test rsi, rsi
je 0x2023c5e8
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x2023c5dd
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x2023c5dd
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, rsi
call fcn.200782c0
mov rcx, rbx
test edi, edi
je 0x2023c255
mov rdi, rcx
call fcn.200782c0
xor ebx, ebx
mov r9, rdi
jmp 0x2023c95c
add byte [0x20599c10], 0x76
add byte [0x20599c11], 0x84
add byte [0x20599c12], 0xc0
mov al, 0xf5
xchg byte [0x205ecf60], al
jmp 0x2023c95a
sub r9d, r8d
jmp 0x2023c95a
mov r8, rdx
mov rsi, r9
mov ebp, r10d
cmp eax, 0x14
je 0x2023c1ce
cmp eax, 0x16
jae 0x2023c66b
test r8d, r8d
je 0x2023c95a
mov rcx, r9
mov rsi, r9
call fcn.200782c0
mov r9, rsi
xor eax, eax
test bpl, 0x40
jne 0x2023c95a
jmp 0x2023cb5d
mov rdx, rsi
cmp eax, 0x17
sete bl
jne 0x2023c68a
mov rax, rsi
sub rax, rcx
mov ebp, 0x2e651a76
mov r8, r9
mov rdx, rcx
mov rcx, rax
mov qword [rsp + 0x30], r8
xor eax, eax
jmp 0x2023cbf9
test rcx, rcx
je 0x2023cb12
cmp rcx, 4
jae 0x2023ca05
lea r9, [rcx - 1]
mov r10, rcx
and r10, 3
je 0x2023ca4c
lea rax, [rcx - 1]
movzx r11d, byte [r8 + rcx - 1]
mov byte [rdx + rcx - 1], r11b
mov rcx, rax
dec r10
jne 0x2023c6ba
jmp 0x2023ca4f
mov r11, qword [rdx + 0x40]
mov rsi, qword [r11]
test rsi, rsi
je 0x2023cb5d
test byte [rdx + 0x70], 4
jne 0x2023c65c
mov r11, qword [rdx + 0x68]
cmp r11, rsi
cmovb r11, rsi
cmp r11, r8
jbe 0x2023cb53
mov qword [rdx + 0x68], r11
sub r11d, dword [rcx]
mov dword [r10], r11d
mov rax, qword [rdx + 0x38]
mov r8, qword [rax]
jmp 0x2023c368
mov eax, 1
mov ecx, 0x39d944b1
mov edx, 0xc626bb60
mov r8d, 0x39d944b2
mov r10d, 0xc626bb5e
lea r9, [0x20599af0]
lea r11, [0x2047b6e0]
nop word cs:[rax + rax]
mov esi, r10d
imul rsi, rsi, 0x38e38e39
shr rsi, 0x22
lea esi, [rsi + rsi*8]
lea esi, [r8 + rsi*2]
movzx ebx, byte [rax + r9 - 1]
xor bl, byte [rsi + r11]
xor bl, 0xc2
mov byte [rax + r9 - 1], bl
cmp rax, 0x15
je 0x2023c7b6
mov esi, edx
imul rsi, rsi, 0x38e38e39
shr rsi, 0x22
lea esi, [rsi + rsi*8]
lea esi, [rcx + rsi*2]
movzx ebx, byte [rax + r9]
mov esi, esi
xor bl, byte [rsi + r11]
xor bl, 0xc2
mov byte [rax + r9], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r10d, 2
jmp 0x2023c750
mov al, 0x74
xchg byte [0x20599b05], al
jmp 0x2023c95a
mov eax, 1
mov ecx, 0x125b1f4b
mov edx, 0xeda4e0c8
mov r8d, 0x125b1f4c
mov r9d, 0xeda4e0c6
mov r10d, 0xcccccccd
lea r11, [0x20599b30]
lea rsi, [0x2047b720]
nop word cs:[rax + rax]
mov edi, r9d
imul rdi, r10
shr rdi, 0x24
lea edi, [rdi + rdi*4]
lea edi, [r8 + rdi*4]
movzx ebx, byte [rdi + rsi]
xor bl, 0x14
add byte [rax + r11 - 1], bl
cmp rax, 0x15
je 0x2023c855
mov edi, edx
imul rdi, r10
shr rdi, 0x24
lea edi, [rdi + rdi*4]
lea edi, [rcx + rdi*4]
mov edi, edi
movzx ebx, byte [rdi + rsi]
xor bl, 0x14
add byte [rax + r11], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r9d, 2
jmp 0x2023c800
test bpl, 0x40
jne 0x2023c97e
add byte [0x20599b50], 0x7e
add byte [0x20599b51], 0x56
lea r9, [0x20599b50]
add byte [0x20599b52], 0xf2
movd xmm0, dword [0x20599b54]
paddb xmm0, xmmword [0x2047b890]
movd dword [0x20599b54], xmm0
add byte [0x20599b58], 0x2b
mov al, 0xa5
xchg byte [0x20599b59], al
jmp 0x2023c95a
mov eax, 0xb2adb11f
mov edx, 0x4d524ef2
mov r8d, 1
mov r9d, 0xb2adb120
mov r10d, 0x4d524ef0
lea r11, [0x20599ad0]
lea rsi, [0x2047b6c0]
nop word cs:[rax + rax]
mov edi, edx
imul rdi, rdi, 0x38e38e39
shr rdi, 0x22
lea edi, [rdi + rdi*8]
lea edi, [rax + rdi*2]
mov ebx, r10d
imul rbx, rbx, 0x38e38e39
shr rbx, 0x22
lea ebx, [rbx + rbx*8]
lea ebx, [r9 + rbx*2]
movzx ebp, byte [r8 + r11 - 1]
movzx r14d, byte [r8 + r11]
xor bpl, byte [rbx + rsi]
xor bpl, 0xf3
mov byte [r8 + r11 - 1], bpl
xor r14b, byte [rdi + rsi]
xor r14b, 0xf3
mov byte [r8 + r11], r14b
add eax, 0xfffffffe
add edx, 2
add r8, 2
add r9d, 0xfffffffe
add r10d, 2
cmp r8, 0x13
jne 0x2023c8e0
mov al, 0xd6
xchg byte [0x20599ae2], al
test rcx, rcx
lea r9, [0x20599ad0]
cmovne r9, rcx
xor ebx, ebx
test bl, 1
cmove rsi, r9
mov rcx, qword [rsp + 0x38]
xor rcx, rsp
call fcn.20421ce0
mov rax, rsi
add rsp, 0x40
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
ret
mov al, 0xb1
xchg byte [0x20599b45], al
lea r9, [0x20599b30]
jmp 0x2023c95a
test bpl, 0x40
jne 0x2023ca40
mov ecx, 0x398cf9e6
xor r8d, r8d
movabs r10, 0x2e8ba2e8ba2e8ba3
lea r11, [0x2047b700]
lea r9, [0x20599b10]
mov rax, rcx
mul r10
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
add rax, r11
movzx edx, byte [r8 + rax + 0x398cf9e6]
movzx eax, byte [r8 + rax + 0x398cf9e7]
xor dl, 0x28
add byte [r8 + r9], dl
xor al, 0x28
add byte [r8 + r9 + 1], al
add r8, 2
add rcx, 2
cmp r8, 0x16
jne 0x2023c9b9
mov al, 0x4d
xchg byte [0x20599b26], al
jmp 0x2023c95a
lea r9, [rdx + rcx]
dec r9
cmp r9, rdx
jb 0x2023c6a9
lea r9, [r8 + rcx]
dec r9
cmp r8, r9
ja 0x2023c6a9
cmp rax, 0x10
jb 0x2023c6a9
cmp rcx, 0x10
jae 0x2023cb67
xor eax, eax
jmp 0x2023cba9
lea r9, [0x20599af0]
jmp 0x2023c95a
mov rax, rcx
cmp r9, 3
jb 0x2023cb12
mov rcx, rax
movzx r9d, byte [r8 + rax - 1]
mov byte [rdx + rax - 1], r9b
movzx r9d, byte [r8 + rax - 2]
mov byte [rdx + rax - 2], r9b
movzx r9d, byte [r8 + rax - 3]
mov byte [rdx + rax - 3], r9b
xor ebx, ebx
movzx r9d, byte [r8 + rax - 4]
mov byte [rdx + rax - 4], r9b
add rcx, 0xfffffffffffffffc
mov rax, rcx
jne 0x2023ca5c
jmp 0x2023cb14
mov r9, rax
and r9, 0xffffffffffffffe0
xor r10d, r10d
movdqu xmm0, xmmword [r8 + r10]
movups xmm1, xmmword [r8 + r10 + 0x10]
movdqu xmmword [rdx + r10], xmm0
movups xmmword [rdx + r10 + 0x10], xmm1
add r10, 0x20
cmp r9, r10
jne 0x2023ca9f
cmp rax, r9
je 0x2023cb12
test al, 0x18
je 0x2023cae9
mov r10, r9
mov r9, rax
and r9, 0xfffffffffffffff8
mov r11, qword [r8 + r10]
mov qword [rdx + r10], r11
add r10, 8
cmp r9, r10
jne 0x2023cad3
cmp rax, r9
je 0x2023cb12
mov r11, rax
mov r10, r9
and r11, 3
je 0x2023cb09
mov r10, r9
movzx ebx, byte [r8 + r10]
mov byte [rdx + r10], bl
inc r10
dec r11
jne 0x2023caf8
sub r9, rax
cmp r9, 0xfffffffffffffffc
jbe 0x2023cb1c
xor ebx, ebx
mov r9, rdx
jmp 0x2023c95c
movzx eax, byte [r8 + r10]
mov byte [rdx + r10], al
movzx eax, byte [r8 + r10 + 1]
mov byte [rdx + r10 + 1], al
movzx eax, byte [r8 + r10 + 2]
mov byte [rdx + r10 + 2], al
movzx eax, byte [r8 + r10 + 3]
mov byte [rdx + r10 + 3], al
add r10, 4
xor ebx, ebx
cmp rcx, r10
jne 0x2023cb1c
jmp 0x2023cb14
test bpl, 0x20
jne 0x2023c383
xor ebx, ebx
mov r9, rax
jmp 0x2023c95c
mov rax, rcx
and rax, 0xfffffffffffffff0
lea r9, [rdx + rcx]
add r9, 0xfffffffffffffff0
lea r10, [r8 + rcx]
add r10, 0xfffffffffffffff0
mov r11, rax
neg r11
xor esi, esi
movdqu xmm0, xmmword [r10 + rsi]
movdqu xmmword [r9 + rsi], xmm0
add rsi, 0xfffffffffffffff0
cmp r11, rsi
jne 0x2023cb86
cmp rax, rcx
je 0x2023cb12
test cl, 0xc
je 0x2023cbf1
mov r9, rcx
and r9, 0xfffffffffffffffc
mov r10d, ecx
and r10d, 3
lea r11, [rdx + rcx]
add r11, 0xfffffffffffffffc
neg rax
lea rsi, [r8 + rcx]
add rsi, 0xfffffffffffffffc
mov rdi, r9
neg rdi
mov ebx, dword [rsi + rax]
mov dword [r11 + rax], ebx
add rax, 0xfffffffffffffffc
cmp rdi, rax
jne 0x2023cbd0
cmp r9, rcx
mov rcx, r10
jne 0x2023c6a9
jmp 0x2023cb12
and ecx, 0xf
jmp 0x2023c6a9
xor edi, edi
mov r9, r8
cmp rax, rcx
jae 0x2023c95c
test bpl, bpl
js 0x2023cc44
movzx r9d, byte [rdx + rax]
mov r10, qword [rsp + 0x30]
mov byte [r10 + rax], r9b
inc rax
test bpl, 0x40
jne 0x2023cbf9
lea rdi, [rsp + 0x30]
mov rcx, rdi
call fcn.200782c0
test bpl, 0x20
lea r9, [0x20599af0]
cmove r9, rdi
jmp 0x2023c95c
mov r9, rdi
jmp 0x2023c95c