Function at 0x425ca0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x30
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], ecx
mov dword [edx], ecx
mov dword [edx + 4], 1
push esi
push edi
mov edi, dword [ebx + 8]
cmp ecx, 2
jle 0x425fa5
movsd xmm0, qword [0x45dce8]
mov esi, ecx
shr esi, 1
mov dword [ebp - 0x14], esi
call fcn.0044c580
movaps xmm1, xmm0
movd xmm0, esi
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
mulsd xmm0, xmm1
movsd qword [ebp - 0x20], xmm1
call fcn.0044c870
movsd xmm2, qword [0x45dcd0]
movaps xmm1, xmm0
movsd xmm0, qword [0x45dce8]
movsd qword [ebp - 0x28], xmm1
movsd qword [edi], xmm0
movsd qword [edi + 8], xmm1
cmp esi, 4
jne 0x425d70
movsd xmm0, qword [ebp - 0x20]
addsd xmm0, xmm0
movsd qword [ebp - 0x20], xmm0
call fcn.0044c870
movsd qword [edi + 0x10], xmm0
movsd xmm0, qword [ebp - 0x20]
call fcn.0044dda0
movsd xmm2, qword [0x45dcd0]
xor ecx, ecx
movsd xmm1, qword [ebp - 0x28]
movsd qword [edi + 0x18], xmm0
movsd xmm0, qword [0x45dce8]
jmp 0x425ef0
jbe 0x425ede
mov edx, dword [ebp - 4]
mov ecx, 2
mov eax, dword [ebp - 0xc]
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0x10
cmp eax, 0x20
jle 0x425de2
lea edi, [ecx + ecx]
mov dword [ebp - 0xc], eax
cmp ecx, edi
jge 0x425dd2
lea eax, [edi + ecx]
lea edx, [edx + eax*4]
mov eax, dword [ebp - 4]
lea esi, [eax + ecx*8]
nop word [eax + eax]
mov eax, dword [eax + ecx*4]
lea esi, [esi + 4]
shl eax, 2
lea edx, [edx + 4]
mov dword [esi - 4], eax
inc ecx
lea eax, [eax + edi*8]
mov dword [edx - 4], eax
mov eax, dword [ebp - 4]
cmp ecx, edi
jl 0x425db0
mov edx, eax
mov eax, dword [ebp - 0xc]
shr eax, 2
mov ecx, edi
cmp eax, 0x20
ja 0x425d94
mov edi, dword [ebx + 8]
mov esi, dword [ebp - 0x14]
movsd xmm0, qword [ebp - 0x20]
addsd xmm0, xmm0
call fcn.0044c870
movsd xmm1, qword [0x45dcd0]
divsd xmm1, xmm0
movsd xmm0, qword [ebp - 0x20]
mulsd xmm0, qword [0x45dd10]
movsd qword [edi + 0x10], xmm1
call fcn.0044c870
movsd xmm1, qword [0x45dcd0]
lea eax, [edi + 0x30]
divsd xmm1, xmm0
mov ecx, 4
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], ecx
movsd qword [edi + 0x18], xmm1
mov edi, eax
movsd xmm1, qword [ebp - 0x20]
movaps xmm0, xmm1
mulsd xmm0, qword [0x45dd00]
movsd qword [ebp - 0x30], xmm0
nop dword [eax]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
movsd qword [ebp - 0x10], xmm0
mulsd xmm0, xmm1
movsd qword [ebp - 8], xmm0
call fcn.0044c870
movsd qword [edi - 0x10], xmm0
movsd xmm0, qword [ebp - 8]
call fcn.0044dda0
movsd qword [edi - 8], xmm0
movsd xmm0, qword [ebp - 0x10]
mulsd xmm0, qword [ebp - 0x30]
movsd qword [ebp - 0x10], xmm0
call fcn.0044c870
movsd qword [edi], xmm0
movsd xmm0, qword [ebp - 0x10]
call fcn.0044dda0
mov ecx, dword [ebp - 0x14]
lea edi, [edi + 0x20]
xorps xmm0, xmmword [0x45de20]
add ecx, 4
movsd xmm1, qword [ebp - 0x20]
movsd qword [edi - 0x18], xmm0
mov dword [ebp - 0x14], ecx
cmp ecx, esi
jl 0x425e50
movsd xmm2, qword [0x45dcd0]
xor ecx, ecx
movsd xmm0, qword [0x45dce8]
movsd xmm1, qword [ebp - 0x28]
mov edi, dword [ebx + 8]
jmp 0x425ef0
xor ecx, ecx
cmp esi, 2
jbe 0x425fa5
nop dword [eax]
lea edx, [ecx + esi]
sar esi, 1
mov dword [ebp - 0x14], esi
movsd qword [edi + edx*8], xmm0
movsd qword [edi + edx*8 + 8], xmm1
cmp esi, 4
jne 0x425f23
movups xmm0, xmmword [edi + ecx*8 + 0x20]
mov ecx, edx
movsd xmm1, qword [ebp - 0x28]
movups xmmword [edi + edx*8 + 0x10], xmm0
movsd xmm0, qword [0x45dce8]
jmp 0x425ef0
jle 0x425f9a
movaps xmm0, xmm2
movsd xmm1, qword [edi + ecx*8 + 0x30]
divsd xmm0, qword [edi + ecx*8 + 0x20]
add ecx, 0xa
lea eax, [edx + 6]
add esi, 0xfffffffb
lea eax, [edi + eax*8]
shr esi, 2
inc esi
lea ecx, [edi + ecx*8]
movsd qword [edi + edx*8 + 0x10], xmm0
movaps xmm0, xmm2
divsd xmm0, xmm1
movsd qword [edi + edx*8 + 0x18], xmm0
nop word [eax + eax]
lea eax, [eax + 0x20]
lea ecx, [ecx + 0x40]
movups xmm0, xmmword [ecx - 0x50]
movups xmm2, xmmword [ecx - 0x40]
movups xmmword [eax - 0x30], xmm0
movups xmmword [eax - 0x20], xmm2
sub esi, 1
jne 0x425f60
movsd xmm2, qword [0x45dcd0]
mov ecx, edx
movsd xmm0, qword [0x45dce8]
movsd xmm1, qword [ebp - 0x28]
mov esi, dword [ebp - 0x14]
jmp 0x425ef0
mov ecx, edx
cmp esi, 2
jg 0x425ef0
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret