Function at 0x22dbb1210
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
movaps xmmword [rsp + 0x40], xmm6
movaps xmmword [rsp + 0x50], xmm7
movaps xmmword [rsp + 0x60], xmm8
movaps xmmword [rsp + 0x70], xmm9
mov esi, dword [rcx + 8]
mov eax, r8d
movsxd rdi, edx
mov rdx, qword [rcx + 0x68]
mov r13d, r8d
sar eax, 1
mov dword [rsp + 0xe0], r8d
mov rbx, rcx
sar r13d, 2
lea r14d, [rax*4]
mov dword [rsp + 0x30], eax
add esi, r14d
mov dword [rcx + 8], esi
test rdx, rdx
je 0x22dbb1678
movsxd rbp, dword [rcx + 0x78]
mov ecx, dword [rcx + 0x7c]
mov rax, rbp
add rbp, rdx
lea r8d, [r14 + rax]
cmp r8d, ecx
jg 0x22dbb1610
movsxd r12, r8d
lea eax, [r14 + r8]
mov dword [rbx + 0x78], r8d
add r12, rdx
mov qword [rbx + rdi*8 + 0x570], rbp
cmp ecx, eax
jl 0x22dbb1798
movsxd r8, eax
mov dword [rbx + 0x78], eax
add rdx, r8
mov qword [rsp + 0x28], rdx
lea edx, [r13*4]
mov qword [rbx + rdi*8 + 0x580], r12
lea r8d, [rdx + r14]
add edx, eax
add r8d, esi
mov dword [rbx + 8], r8d
cmp edx, ecx
jg 0x22dbb1630
mov dword [rbx + 0x78], edx
test rbp, rbp
mov rcx, qword [rsp + 0x28]
sete al
test r12, r12
sete dl
mov qword [rbx + rdi*8 + 0x590], rcx
or al, dl
jne 0x22dbb163c
test rcx, rcx
je 0x22dbb163c
test r13d, r13d
jle 0x22dbb1401
pxor xmm1, xmm1
movsxd r13, r13d
movss xmm0, dword [0x22dd85af0]
movss xmm7, dword [0x22dd85b30]
cvtsi2ss xmm1, dword [rsp + 0xe0]
lea rax, [r13 + r13]
mov qword [rsp + 0xd0], rbx
movq xmm9, qword [0x22dd85b38]
movaps xmm8, xmm0
lea r15, [rsp + 0x38]
xor r13d, r13d
mov rbx, r15
movss xmm6, dword [0x22dd85b00]
lea rsi, [rsp + 0x3c]
mov r15, rax
divss xmm8, xmm1
pxor xmm1, xmm1
mulss xmm7, xmm8
mulss xmm8, dword [0x22dd85b40]
jmp 0x22dbb13b1
lea eax, [r13 + r13]
pxor xmm0, xmm0
mov r8, rbx
mov rdx, rsi
cvtsi2ss xmm0, eax
mulss xmm0, xmm8
call fcn.22dcfb4cb
movss xmm0, dword [rsp + 0x38]
movss xmm1, dword [rsp + 0x3c]
xorps xmm1, xmm6
lea eax, [r13 + 1]
mov r8, rbx
mov rdx, rsi
unpcklps xmm0, xmm1
movlps qword [rbp + r13*4], xmm0
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
mulss xmm0, xmm7
call fcn.22dcfb4cb
movss xmm1, dword [rsp + 0x3c]
movss xmm0, dword [rsp + 0x38]
unpcklps xmm0, xmm1
mulps xmm0, xmm9
movlps qword [r12 + r13*4], xmm0
add r13, 2
cmp r15, r13
jne 0x22dbb1388
mov rbx, qword [rsp + 0xd0]
mov eax, dword [rsp + 0xe0]
sar eax, 3
mov dword [rsp + 0x34], eax
test eax, eax
jle 0x22dbb1493
pxor xmm0, xmm0
movss xmm7, dword [0x22dd85b40]
mov rbp, qword [rsp + 0x28]
lea r12d, [rax*4 + 2]
mov r13d, 2
lea rsi, [rsp + 0x3c]
lea r15, [rsp + 0x38]
cvtsi2ss xmm0, dword [rsp + 0xe0]
movss xmm6, dword [0x22dd85b00]
divss xmm7, xmm0
nop dword [rax]
pxor xmm0, xmm0
mov r8, r15
mov rdx, rsi
add rbp, 8
cvtsi2ss xmm0, r13d
add r13d, 4
mulss xmm0, xmm7
call fcn.22dcfb4cb
movss xmm0, dword [rsp + 0x3c]
movss xmm1, dword [rsp + 0x38]
xorps xmm0, xmm6
unpcklps xmm1, xmm0
movlps qword [rbp - 8], xmm1
cmp r13d, r12d
jne 0x22dbb1458
mov r12d, dword [rbx + 8]
mov r8, qword [rbx + 0x68]
add r12d, r14d
mov dword [rbx + 8], r12d
test r8, r8
je 0x22dbb16f0
movsxd rsi, dword [rbx + 0x78]
add r14d, esi
cmp r14d, dword [rbx + 0x7c]
jg 0x22dbb1770
mov ecx, dword [rsp + 0x30]
add rsi, r8
mov dword [rbx + 0x78], r14d
mov qword [rbx + rdi*8 + 0x5a0], rsi
test ecx, ecx
jle 0x22dbb1781
mov eax, dword [rsp + 0x30]
pxor xmm0, xmm0
xor r13d, r13d
movss xmm7, dword [0x22dd85b30]
movss xmm8, dword [0x22dd85b38]
cvtsi2ss xmm0, eax
movaps xmm6, xmm7
lea r12d, [rax - 1]
divss xmm6, xmm0
nop word [rax + rax]
pxor xmm0, xmm0
cvtsi2ss xmm0, r13d
addss xmm0, xmm8
mulss xmm0, xmm6
call fcn.22dcf10b0
mulss xmm0, xmm0
mulss xmm0, xmm7
call fcn.22dcf10b0
mov rax, r13
movss dword [rsi + r13*4], xmm0
add r13, 1
cmp r12, rax
jne 0x22dbb1508
mov eax, dword [rsp + 0x34]
mov r8, qword [rbx + 0x68]
lea eax, [rax + rax + 3]
and eax, 0xfffffffc
add dword [rbx + 8], eax
test r8, r8
je 0x22dbb1730
movsxd rdx, dword [rbx + 0x78]
add eax, edx
cmp eax, dword [rbx + 0x7c]
jg 0x22dbb1758
add r8, rdx
mov dword [rbx + 0x78], eax
mov qword [rbx + rdi*8 + 0x5b0], r8
mov ecx, dword [rsp + 0xe0]
call fcn.22dbb10f0
mov edi, dword [rsp + 0x34]
sub eax, 1
test edi, edi
jle 0x22dbb1607
mov ecx, 0x23
xor edx, edx
mov word [r8], dx
sub ecx, eax
cmp edi, 1
je 0x22dbb1607
lea r10d, [rdi - 2]
mov r9d, 1
add r10, 2
nop dword [rax]
mov edx, r9d
lea eax, [r9 + r9]
shr edx, 1
and eax, 0xaaaaaaaa
and edx, 0x55555555
or eax, edx
lea edx, [rax*4]
shr eax, 2
and eax, 0x33333333
and edx, 0xcccccccc
or edx, eax
mov eax, edx
shr edx, 4
shl eax, 4
and edx, 0xf0f0f0f
and eax, 0xf0f0f0f0
or eax, edx
bswap eax
shr eax, cl
shl eax, 2
mov word [r8 + r9*2], ax
add r9, 1
cmp r9, r10
jne 0x22dbb15b0
mov eax, 1
jmp 0x22dbb1648
mov qword [rsp + 0x28], rbp
xor r12d, r12d
xor ebp, ebp
mov qword [rbx + rdi*8 + 0x570], 0
jmp 0x22dbb12bb
mov qword [rbx + rdi*8 + 0x590], 0
mov dword [rbx + 0x84], 3
xor eax, eax
movaps xmm6, xmmword [rsp + 0x40]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm9, xmmword [rsp + 0x70]
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test r14d, r14d
je 0x22dbb16d8
movsxd r12, r14d
mov rcx, r12
call sub.msvcrt.dll_malloc
mov rcx, r12
mov qword [rbx + rdi*8 + 0x570], rax
mov rbp, rax
call sub.msvcrt.dll_malloc
mov r12, rax
lea ecx, [r13*4]
mov qword [rbx + rdi*8 + 0x580], r12
lea eax, [rcx + r14]
add eax, esi
mov dword [rbx + 8], eax
test ecx, ecx
je 0x22dbb1630
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
mov qword [rsp + 0x28], rax
jmp 0x22dbb12e3
mov qword [rcx + rdi*8 + 0x570], 0
xor ebp, ebp
xor r12d, r12d
jmp 0x22dbb169e
test r14d, r14d
je 0x22dbb1770
movsxd rcx, r14d
call sub.msvcrt.dll_malloc
mov qword [rbx + rdi*8 + 0x5a0], rax
mov rsi, rax
test rax, rax
je 0x22dbb163c
mov eax, dword [rsp + 0x30]
test eax, eax
jg 0x22dbb14d7
mov eax, dword [rsp + 0x34]
lea eax, [rax + rax + 3]
and eax, 0xfffffffc
add r12d, eax
mov dword [rbx + 8], r12d
nop
test eax, eax
je 0x22dbb1758
movsxd rcx, eax
call sub.msvcrt.dll_malloc
mov qword [rbx + rdi*8 + 0x5b0], rax
mov r8, rax
test rax, rax
jne 0x22dbb1576
jmp 0x22dbb163c
mov qword [rbx + rdi*8 + 0x5b0], 0
jmp 0x22dbb163c
mov qword [rbx + rdi*8 + 0x5a0], 0
jmp 0x22dbb163c
mov eax, dword [rsp + 0x34]
lea eax, [rax + rax + 3]
and eax, 0xfffffffc
add r12d, eax
mov dword [rbx + 8], r12d
jmp 0x22dbb1559
mov qword [rsp + 0x28], r12
mov eax, r8d
xor r12d, r12d
jmp 0x22dbb12bb