Function at 0x438f80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
movups xmmword [rsp + 0x30], xmm6
movups xmmword [rsp + 0x40], xmm7
movups xmmword [rsp + 0x50], xmm8
movups xmmword [rsp + 0x60], xmm9
movups xmmword [rsp + 0x70], xmm10
movups xmmword [rsp + 0x80], xmm11
mov r13d, dword [rcx + 8]
mov eax, r8d
mov r14d, r8d
mov rbx, rcx
movsxd rsi, edx
sar eax, 1
mov r12d, r8d
sar r14d, 2
lea r15d, [rax*4]
mov dword [rsp + 0x2c], eax
mov rax, qword [rcx + 0x68]
add r13d, r15d
mov dword [rcx + 8], r13d
test rax, rax
je 0x439400
movsxd rdi, dword [rcx + 0x78]
mov r9d, dword [rbx + 0x7c]
mov rcx, rdi
add rdi, rax
lea edx, [r15 + rcx]
cmp edx, r9d
jg 0x439370
movsxd r8, edx
lea r10, [rbx + rsi*8]
lea ecx, [r15 + rdx]
mov dword [rbx + 0x78], edx
lea rbp, [rax + r8]
mov qword [r10 + 0x570], rdi
cmp r9d, ecx
jl 0x439501
mov dword [rbx + 0x78], ecx
movsxd rdx, ecx
add rax, rdx
lea edx, [r14*4]
mov qword [r10 + 0x580], rbp
lea r10d, [rdx + r15]
add ecx, edx
add r13d, r10d
mov dword [rbx + 8], r13d
cmp ecx, r9d
jg 0x4393e8
mov dword [rbx + 0x78], ecx
test rdi, rdi
lea r13, [rbx + rsi*8]
sete cl
test rbp, rbp
mov qword [r13 + 0x590], rax
sete dl
or cl, dl
jne 0x4393a0
test rax, rax
je 0x4393a0
test r14d, r14d
jle 0x43916d
pxor xmm11, xmm11
lea edx, [r14 - 1]
xor esi, esi
movsd xmm7, qword [0x004b5830]
cvtsi2sd xmm11, r12d
lea r14, [rdx + rdx + 2]
movsd xmm8, qword [0x004b5838]
movss xmm10, dword [0x004b5840]
movss xmm9, dword [0x004b5820]
nop dword [rax + rax]
lea edx, [rsi + rsi]
pxor xmm6, xmm6
mov qword [rsp + 0x20], rax
cvtsi2sd xmm6, edx
mulsd xmm6, xmm7
divsd xmm6, xmm11
movupd xmm0, xmm6
call fcn.004a8dd0
cvtsd2ss xmm0, xmm0
movss dword [rdi + rsi*4], xmm0
movupd xmm0, xmm6
pxor xmm6, xmm6
call fcn.004a9c40
lea edx, [rsi + 1]
cvtsi2sd xmm6, edx
cvtsd2ss xmm0, xmm0
xorps xmm0, xmm9
movss dword [rdi + rsi*4 + 4], xmm0
mulsd xmm6, xmm7
divsd xmm6, xmm11
mulsd xmm6, xmm8
movupd xmm0, xmm6
call fcn.004a8dd0
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm10
movss dword [rbp + rsi*4], xmm0
movupd xmm0, xmm6
call fcn.004a9c40
mov rax, qword [rsp + 0x20]
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm10
movss dword [rbp + rsi*4 + 4], xmm0
add rsi, 2
cmp r14, rsi
jne 0x4390d0
mov esi, r12d
sar esi, 3
test esi, esi
jle 0x4391ed
pxor xmm8, xmm8
mov rbp, rax
movsd xmm7, qword [0x004b5830]
lea r14d, [rsi*4 + 2]
cvtsi2sd xmm8, r12d
mov edi, 2
movss xmm9, dword [0x004b5820]
nop word [rax + rax]
pxor xmm6, xmm6
add rbp, 8
cvtsi2sd xmm6, edi
add edi, 4
mulsd xmm6, xmm7
divsd xmm6, xmm8
movupd xmm0, xmm6
call fcn.004a8dd0
cvtsd2ss xmm0, xmm0
movss dword [rbp - 8], xmm0
movupd xmm0, xmm6
call fcn.004a9c40
cvtsd2ss xmm0, xmm0
xorps xmm0, xmm9
movss dword [rbp - 4], xmm0
cmp edi, r14d
jne 0x4391a8
mov edi, dword [rbx + 8]
mov r9, qword [rbx + 0x68]
add edi, r15d
mov dword [rbx + 8], edi
test r9, r9
je 0x439470
movsxd r14, dword [rbx + 0x78]
add r15d, r14d
cmp r15d, dword [rbx + 0x7c]
jg 0x439390
mov ecx, dword [rsp + 0x2c]
add r14, r9
mov dword [rbx + 0x78], r15d
mov qword [r13 + 0x5a0], r14
test ecx, ecx
jle 0x4394f0
mov eax, dword [rsp + 0x2c]
pxor xmm9, xmm9
xor edi, edi
movsd xmm7, qword [0x004b5830]
movsd xmm8, qword [0x004b5838]
movsd xmm6, qword [0x004b5848]
cvtsi2sd xmm9, eax
lea ebp, [rax - 1]
nop word [rax + rax]
pxor xmm0, xmm0
cvtsi2sd xmm0, edi
addsd xmm0, xmm8
divsd xmm0, xmm9
mulsd xmm0, xmm8
mulsd xmm0, xmm7
call fcn.004a9c40
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm0
cvtss2sd xmm0, xmm0
mulsd xmm0, xmm6
call fcn.004a9c40
mov rax, rdi
cvtsd2ss xmm0, xmm0
movss dword [r14 + rdi*4], xmm0
add rdi, 1
cmp rax, rbp
jne 0x439260
mov r9, qword [rbx + 0x68]
lea ecx, [rsi + rsi + 3]
and ecx, 0xfffffffc
add dword [rbx + 8], ecx
test r9, r9
je 0x4394b0
movsxd rax, dword [rbx + 0x78]
add ecx, eax
cmp ecx, dword [rbx + 0x7c]
jg 0x4394d8
add r9, rax
mov dword [rbx + 0x78], ecx
mov qword [r13 + 0x5b0], r9
mov ecx, r12d
call fcn.00436d80
sub eax, 1
test esi, esi
jle 0x439365
mov ecx, 0x23
xor edx, edx
mov word [r9], dx
sub ecx, eax
cmp esi, 1
je 0x439365
lea r10d, [rsi - 2]
mov r8d, 1
add r10, 2
nop dword [rax]
mov eax, r8d
lea edx, [r8 + r8]
shr eax, 1
and edx, 0xaaaaaaaa
and eax, 0x55555555
or eax, edx
mov edx, eax
shl eax, 2
shr edx, 2
and eax, 0xcccccccc
and edx, 0x33333333
or edx, eax
mov eax, edx
shl edx, 4
shr eax, 4
and edx, 0xf0f0f0f0
and eax, 0xf0f0f0f
or eax, edx
bswap eax
shr eax, cl
shl eax, 2
mov word [r9 + r8*2], ax
add r8, 1
cmp r8, r10
jne 0x439310
mov eax, 1
jmp 0x4393ac
lea r10, [rbx + rsi*8]
mov rax, rdi
xor ebp, ebp
xor edi, edi
mov qword [r10 + 0x570], 0
jmp 0x439037
mov qword [r13 + 0x5a0], 0
nop dword [rax + rax]
mov dword [rbx + 0x84], 3
xor eax, eax
movups xmm6, xmmword [rsp + 0x30]
movups xmm7, xmmword [rsp + 0x40]
movups xmm8, xmmword [rsp + 0x50]
movups xmm9, xmmword [rsp + 0x60]
movups xmm11, xmmword [rsp + 0x80]
movups xmm10, xmmword [rsp + 0x70]
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rbx + rsi*8 + 0x590], 0
jmp 0x4393a0
test r15d, r15d
je 0x439458
movsxd rbp, r15d
mov rcx, rbp
call sub.msvcrt.dll_malloc
mov rcx, rbp
mov qword [rbx + rsi*8 + 0x570], rax
mov rdi, rax
call sub.msvcrt.dll_malloc
mov rbp, rax
lea ecx, [r14*4]
mov qword [rbx + rsi*8 + 0x580], rbp
lea eax, [rcx + r15]
add r13d, eax
mov dword [rbx + 8], r13d
test ecx, ecx
je 0x4393e8
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
jmp 0x43905f
mov qword [rcx + rsi*8 + 0x570], 0
xor edi, edi
xor ebp, ebp
jmp 0x439426
test r15d, r15d
je 0x439390
movsxd rcx, r15d
call sub.msvcrt.dll_malloc
mov qword [r13 + 0x5a0], rax
mov r14, rax
test rax, rax
je 0x4393a0
mov eax, dword [rsp + 0x2c]
test eax, eax
jg 0x43922e
lea ecx, [rsi + rsi + 3]
and ecx, 0xfffffffc
add edi, ecx
mov dword [rbx + 8], edi
nop dword [rax]
test ecx, ecx
je 0x4394d8
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
mov qword [r13 + 0x5b0], rax
mov r9, rax
test rax, rax
jne 0x4392de
jmp 0x4393a0
mov qword [r13 + 0x5b0], 0
jmp 0x4393a0
lea ecx, [rsi + rsi + 3]
and ecx, 0xfffffffc
add edi, ecx
mov dword [rbx + 8], edi
jmp 0x4392c2
mov rax, rbp
mov ecx, edx
xor ebp, ebp
jmp 0x439037