Function at 0x1004ef60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x1014a524]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
xorps xmm3, xmm3
push edi
mov dword [ebp - 0x20], 0
movsd xmm1, qword [esi + 0x10]
movsd xmm0, qword [esi + 0x18]
movsd xmm2, qword [esi + 0x20]
mov edi, dword [esi + 8]
ucomisd xmm1, xmm3
movsd qword [ebp - 0x1c], xmm1
movsd qword [ebp - 0x14], xmm0
lahf
movsd qword [ebp - 0xc], xmm2
test ah, 0x44
jp 0x1004efe4
ucomisd xmm0, xmm3
lahf
test ah, 0x44
jp 0x1004efe4
ucomisd xmm2, xmm3
lahf
test ah, 0x44
jp 0x1004efe4
lea eax, [ebp - 0x1c]
push eax
push esi
call fcn.1004eca0
movsd xmm2, qword [ebp - 0xc]
add esp, 8
movsd xmm0, qword [ebp - 0x14]
xorps xmm3, xmm3
movsd xmm1, qword [ebp - 0x1c]
mov dword [ebp - 0x20], 1
movaps xmm5, xmmword [0x1011e990]
xor ecx, ecx
comisd xmm3, xmm0
jbe 0x1004eff6
xorps xmm0, xmm5
comisd xmm3, xmm1
jbe 0x1004efff
xorps xmm1, xmm5
comisd xmm0, xmm1
mov eax, 1
cmova ecx, eax
comisd xmm3, xmm2
jbe 0x1004f014
xorps xmm2, xmm5
movsd xmm0, qword [ebp + ecx*8 - 0x1c]
comisd xmm3, xmm0
jbe 0x1004f023
xorps xmm0, xmm5
comisd xmm2, xmm0
mov eax, 2
mov dword [ebp - 0x24], 3
movsd xmm1, qword [0x1011e6d8]
cmova ecx, eax
xor edx, edx
lea eax, [ecx + 1]
movsd qword [esi + ecx*8 + 0x28], xmm3
div dword [ebp - 0x24]
movsd xmm2, qword [ebp + ecx*8 - 0x1c]
mov eax, edx
xor edx, edx
shl eax, 3
mov dword [ebp - 0x28], eax
movsd qword [eax + esi + 0x28], xmm1
lea eax, [ecx + 2]
div dword [ebp - 0x24]
comisd xmm2, xmm3
movsd qword [esi + edx*8 + 0x28], xmm3
movsd qword [esi + ecx*8 + 0x40], xmm3
jbe 0x1004f084
movsd xmm0, qword [0x1011fe40]
jmp 0x1004f087
xorps xmm0, xmm0
mov eax, dword [ebp - 0x28]
movsd qword [eax + esi + 0x40], xmm0
ja 0x1004f09a
movsd xmm1, qword [0x1011fd98]
mov eax, dword [edi]
movsd qword [esi + edx*8 + 0x40], xmm1
cmp eax, edi
je 0x1004f109
nop word [eax + eax]
movsd xmm3, qword [eax + 0x18]
movsd xmm4, qword [eax + 0x10]
movaps xmm0, xmm3
mulsd xmm0, qword [esi + 0x30]
movaps xmm1, xmm4
mulsd xmm1, qword [esi + 0x28]
movsd xmm2, qword [eax + 0x20]
addsd xmm1, xmm0
movaps xmm0, xmm2
mulsd xmm0, qword [esi + 0x38]
addsd xmm1, xmm0
movsd qword [eax + 0x28], xmm1
mulsd xmm4, qword [esi + 0x40]
mulsd xmm3, qword [esi + 0x48]
mulsd xmm2, qword [esi + 0x50]
addsd xmm4, xmm3
addsd xmm4, xmm2
movsd qword [eax + 0x30], xmm4
mov eax, dword [eax]
cmp eax, edi
jne 0x1004f0b0
xorps xmm3, xmm3
cmp dword [ebp - 0x20], 0
je 0x1004f1bb
mov eax, dword [esi + 8]
xorps xmm2, xmm2
mov dword [ebp - 0x24], eax
lea ecx, [eax + 0x40]
mov eax, dword [ecx]
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x20], eax
cmp eax, ecx
je 0x1004f1bb
nop
mov edi, dword [eax + 8]
mov edx, edi
cmp dword [edx + 0x1c], 0
jle 0x1004f172
nop dword [eax + eax]
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0x10]
mov edx, dword [edx + 0xc]
mov eax, dword [eax + 0x10]
movsd xmm1, qword [ecx + 0x28]
movsd xmm0, qword [eax + 0x30]
subsd xmm1, qword [eax + 0x28]
addsd xmm0, qword [ecx + 0x30]
mulsd xmm1, xmm0
addsd xmm2, xmm1
cmp edx, edi
jne 0x1004f140
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
mov eax, dword [eax]
mov dword [ebp - 0x20], eax
cmp eax, ecx
jne 0x1004f130
comisd xmm3, xmm2
jbe 0x1004f1bb
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx]
cmp eax, ecx
je 0x1004f1a3
nop word [eax + eax]
movsd xmm0, qword [eax + 0x30]
xorps xmm0, xmm5
movsd qword [eax + 0x30], xmm0
mov eax, dword [eax]
cmp eax, ecx
jne 0x1004f190
movups xmm0, xmmword [esi + 0x40]
xorps xmm0, xmm5
movups xmmword [esi + 0x40], xmm0
movsd xmm0, qword [esi + 0x50]
xorps xmm0, xmm5
movsd qword [esi + 0x50], xmm0
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.100e14ac
mov esp, ebp
pop ebp
ret