Function at 0x100228b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x38
mov ebx, ecx
call fcn.1002e8e0
test al, al
je 0x10022c1e
mov dword [esp + 4], 0x43f00000
mov dword [esp], 0
call fcn.1006ad3a
movsd xmm0, qword [0x10080630]
fstp qword [esp + 0x28]
divsd xmm0, qword [esp + 0x28]
movsd qword [esp], xmm0
call fcn.10069160
fstp qword [esp + 0x20]
mov ecx, 1
cvttsd2si eax, qword [esp + 0x20]
test eax, eax
cmovg ecx, eax
test ecx, ecx
mov dword [esp + 0x18], ecx
jle 0x10022c22
lea eax, [ebx + 0x70]
movsd xmm1, qword [0x10080628]
movdqa xmm2, xmmword [0x10080640]
movapd xmm3, xmmword [0x10080650]
movsd xmm4, qword [0x10080660]
xorpd xmm0, xmm0
xor ecx, ecx
mov dword [esp + 8], ebx
mov dword [esp + 0x14], eax
lea eax, [ebx + 0xa30]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x68]
nop dword [eax]
cmp eax, 0x138
mov dword [esp + 0x1c], ecx
jne 0x10022a10
mov eax, dword [esp + 0x14]
mov ebx, dword [eax]
mov edi, dword [eax + 4]
mov eax, 0xfffffec8
nop dword [eax]
mov ecx, dword [esp + 8]
and ebx, 0x80000000
mov edx, dword [ecx + eax*8 + 0xa38]
mov ecx, edx
mov dword [esp + 0xc], edx
and ecx, 0x7ffffffe
or ecx, ebx
mov ebx, edx
mov edx, 0xb5026f5a
and ebx, 1
shrd ecx, edi, 1
shr edi, 1
neg ebx
mov esi, ebx
and ebx, edx
mov edx, dword [esp + 8]
xor ebx, dword [edx + eax*8 + 0xf14]
mov edx, 0xa96619e9
and esi, edx
mov edx, dword [esp + 8]
xor ebx, edi
xor esi, dword [edx + eax*8 + 0xf10]
mov edi, dword [edx + eax*8 + 0xa3c]
mov dword [edx + eax*8 + 0x13f4], ebx
mov ebx, dword [esp + 0xc]
xor esi, ecx
mov dword [edx + eax*8 + 0x13f0], esi
inc eax
jne 0x10022980
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 8]
mov eax, 0x138
jmp 0x10022b94
cmp eax, 0x26f
jbe 0x10022b90
mov eax, dword [esp + 0x10]
mov ebx, dword [eax]
mov edi, dword [eax + 4]
mov eax, 0xffffff64
nop dword [eax]
mov ecx, dword [esp + 8]
and ebx, 0x80000000
mov esi, dword [ecx + eax*8 + 0xf18]
mov ecx, 0xb5026f5a
mov edx, esi
mov dword [esp + 0xc], esi
and esi, 1
and edx, 0x7ffffffe
neg esi
or edx, ebx
mov ebx, esi
and esi, ecx
mov ecx, dword [esp + 8]
shrd edx, edi, 1
shr edi, 1
xor esi, dword [ecx + eax*8 + 0x13f4]
xor esi, edi
mov edi, 0xa96619e9
and ebx, edi
mov edi, dword [ecx + eax*8 + 0xf1c]
xor ebx, dword [ecx + eax*8 + 0x13f0]
mov dword [ecx + eax*8 + 0x554], esi
xor ebx, edx
mov dword [ecx + eax*8 + 0x550], ebx
mov ebx, dword [esp + 0xc]
inc eax
jne 0x10022a30
mov eax, dword [esp + 8]
mov ebx, dword [eax + 0xf10]
mov edi, dword [eax + 0xf14]
mov eax, 0x80000000
and ebx, eax
mov eax, 0xffffff65
nop dword [eax + eax]
mov ecx, dword [esp + 8]
mov esi, dword [ecx + eax*8 + 0x13f0]
mov ecx, 0xb5026f5a
mov edx, esi
mov dword [esp + 0xc], esi
and esi, 1
and edx, 0x7ffffffe
neg esi
or edx, ebx
mov ebx, esi
and esi, ecx
mov ecx, dword [esp + 8]
shrd edx, edi, 1
shr edi, 1
xor esi, dword [ecx + eax*8 + 0x54c]
xor esi, edi
mov edi, 0xa96619e9
and ebx, edi
mov edi, dword [ecx + eax*8 + 0x13f4]
xor ebx, dword [ecx + eax*8 + 0x548]
mov dword [ecx + eax*8 + 0xa2c], esi
xor ebx, edx
mov dword [ecx + eax*8 + 0xa28], ebx
mov ebx, dword [esp + 0xc]
and ebx, 0x80000000
inc eax
jne 0x10022ac0
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x70]
mov esi, eax
and eax, 1
and esi, 0x7ffffffe
neg eax
or esi, ebx
mov ebx, 0xb5026f5a
mov edx, eax
and eax, ebx
shrd esi, edi, 1
shr edi, 1
mov ebx, ecx
xor eax, dword [ecx + 0x54c]
xor eax, edi
mov edi, 0xa96619e9
and edx, edi
mov edi, dword [esp + 0x14]
xor edx, dword [ecx + 0x548]
mov dword [ecx + 0xa2c], eax
xor eax, eax
xor edx, esi
mov dword [ecx + 0xa28], edx
mov dword [ecx + 0x68], 0
jmp 0x10022b94
lea edi, [ebx + eax*8 + 0x70]
inc eax
mov dword [ebx + 0x68], eax
mov edx, dword [edi + 4]
mov ecx, dword [edi]
mov esi, edx
shr esi, 0x1d
and esi, dword [ebx + 0x13f4]
xor esi, edx
shld edx, ecx, 3
and edx, dword [ebx + 0x13f0]
xor edx, ecx
mov ecx, edx
shl ecx, 0x11
and ecx, 0xeda60000
xor ecx, edx
mov edi, ecx
shl edi, 5
and edi, 0xfff7eee0
xor edi, esi
shld esi, edx, 0x11
and esi, 0x71d67fff
xor edi, esi
movd xmm5, edi
shr edi, 0xb
xor edi, ecx
mov ecx, dword [esp + 0x1c]
movd xmm6, edi
punpckldq xmm6, xmm5
punpckldq xmm6, xmm2
subpd xmm6, xmm3
inc ecx
movapd xmm5, xmm6
cmp ecx, dword [esp + 0x18]
unpckhpd xmm5, xmm6
addpd xmm5, xmm6
mulsd xmm5, xmm1
mulsd xmm1, xmm4
addsd xmm0, xmm5
jb 0x10022960
jmp 0x10022c2e
xor eax, eax
jmp 0x10022c5a
movsd xmm1, qword [0x10080628]
xorpd xmm0, xmm0
divsd xmm0, xmm1
movsd xmm1, qword [ebx + 0x1400]
movsd xmm2, qword [ebx + 0x13f8]
subsd xmm1, xmm2
mulsd xmm1, xmm0
addsd xmm1, xmm2
movsd xmm2, qword [ebx + 0x38]
ucomisd xmm2, xmm1
seta al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret