Function at 0x1003ca90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100af449
mov eax, dword fs:[0]
push eax
sub esp, 0x58
push esi
push edi
mov eax, dword [0x100d8180]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x10], edi
mov ecx, dword [edi + 0x27c]
movss xmm1, dword [ecx + 0x24]
lea esi, [ecx + 0x24]
comiss xmm1, dword [esi + 0xc]
ja 0x1003cae6
movss xmm0, dword [esi + 4]
comiss xmm0, dword [esi + 0x10]
ja 0x1003cae6
movss xmm0, dword [esi + 8]
comiss xmm0, dword [esi + 0x14]
jbe 0x1003caf1
call fcn.1003c5a0
mov esi, eax
movss xmm1, dword [esi]
comiss xmm1, dword [esi + 0xc]
ja 0x1003cd12
movss xmm0, dword [esi + 4]
comiss xmm0, dword [esi + 0x10]
ja 0x1003cd12
movss xmm0, dword [esi + 8]
comiss xmm0, dword [esi + 0x14]
ja 0x1003cd12
mov eax, dword fs:[0x2c]
mov ecx, dword [0x100e034c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100de7bc]
cmp eax, dword [ecx + 4]
jg 0x1003d2b0
mov ecx, edi
call fcn.100339e0
mov ecx, eax
call fcn.10018720
push eax
mov eax, dword [ebp + 8]
mov ecx, 0x100de6f0
add eax, 0x30
push eax
call fcn.10033c10
push esi
mov ecx, 0x100de6f0
call fcn.10034940
test al, al
je 0x1003cd12
mov esi, dword [edi + 0x27c]
mov eax, dword [edi + 0x280]
cmp eax, dword [esi]
je 0x1003cc56
mov ecx, dword [edi + 0x28c]
lea esi, [edi + 0x288]
mov eax, dword [esi]
mov dword [ebp - 0x1c], ecx
cmp eax, ecx
je 0x1003cbae
mov edi, eax
mov ecx, edi
call fcn.1002d660
add edi, 4
cmp edi, dword [ebp - 0x1c]
jne 0x1003cb97
mov eax, dword [esi]
mov edi, dword [ebp - 0x10]
mov dword [esi + 4], eax
mov esi, dword [edi + 0x27c]
mov dword [ebp + 8], 0
mov eax, dword [esi + 0x50]
sub eax, dword [esi + 0x4c]
sar eax, 2
test eax, eax
je 0x1003cc4e
xor ecx, ecx
lea edx, [edi + 0x284]
mov dword [ebp - 0x1c], ecx
mov eax, dword [esi + 0x4c]
push edx
push dword [ecx + eax]
lea ecx, [ebp - 0x18]
call fcn.1002d340
mov ecx, dword [edi + 0x28c]
mov dword [ebp - 4], 1
push eax
cmp ecx, dword [edi + 0x290]
je 0x1003cc0a
call fcn.1002d490
add dword [edi + 0x28c], 4
jmp 0x1003cc16
push ecx
lea ecx, [edi + 0x288]
call fcn.10024700
lea ecx, [ebp - 0x18]
mov dword [ebp - 4], 0xffffffff
call fcn.1002d660
mov esi, dword [edi + 0x27c]
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x1c]
inc edx
add ecx, 4
mov dword [ebp + 8], edx
mov eax, dword [esi + 0x50]
sub eax, dword [esi + 0x4c]
sar eax, 2
cmp edx, eax
mov dword [ebp - 0x1c], ecx
lea edx, [edi + 0x284]
jb 0x1003cbd7
mov eax, dword [esi]
mov dword [edi + 0x280], eax
mov ecx, dword [edi + 0x298]
lea eax, [edi + 0x294]
sub ecx, dword [eax]
mov dword [ebp - 0x24], eax
mov eax, 0x30c30c31
imul ecx
mov dword [ebp - 0x1c], 0
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x1003cd27
mov eax, dword [esi + 0x50]
sub eax, dword [esi + 0x4c]
sar eax, 2
test eax, eax
je 0x1003cd12
xor ecx, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp + 8], ecx
nop
mov eax, dword [esi + 0x4c]
mov esi, dword [ecx + eax]
mov ecx, esi
call fcn.1003aa00
mov dword [ebp - 0x14], eax
test eax, eax
je 0x1003cceb
mov ecx, dword [edi + 0x288]
mov eax, 0x2aaaaaab
add ecx, dword [ebp + 8]
push ecx
mov ecx, dword [esi + 0x30]
sub ecx, dword [esi + 0x2c]
imul ecx
mov ecx, edi
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
mov eax, dword [esi + 0x24]
sub eax, dword [esi + 0x20]
push 0
sar eax, 6
push eax
push 0
push dword [ebp - 0x14]
call fcn.10043f80
mov esi, dword [edi + 0x27c]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
inc edx
add dword [ebp + 8], 4
add ecx, 4
mov eax, dword [esi + 0x50]
sub eax, dword [esi + 0x4c]
sar eax, 2
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x18], ecx
cmp edx, eax
jb 0x1003cca0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
mov eax, dword [edi + 0x23c]
add eax, 0x18
mov dword [ebp - 0x28], eax
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ecx
sar eax, 2
test eax, eax
je 0x1003d1c9
xor edx, edx
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x18], edx
mov dword [ebp + 8], edx
mov eax, dword [edi + 0x27c]
mov esi, dword [eax + 0x58]
mov eax, dword [ebp + 8]
add esi, edx
mov ecx, dword [eax + ecx]
call fcn.100339e0
mov edx, dword [0x100da0ec]
mov edi, eax
mov ecx, edx
inc edx
mov dword [0x100da0ec], edx
and ecx, 0x3f
lea eax, [ecx + ecx*2]
mov ecx, dword [0x100da0e8]
shl eax, 4
add eax, 0x100da180
mov dword [ebp - 0x20], eax
mov eax, ecx
and eax, 0x3f
inc ecx
mov dword [0x100da0e8], ecx
movss xmm1, dword [edi]
mulss xmm1, dword [esi]
lea eax, [eax + eax*8]
movss xmm0, dword [esi + 4]
mulss xmm0, dword [edi + 0xc]
addss xmm1, xmm0
movss xmm0, dword [edi + 0x18]
mulss xmm0, dword [esi + 8]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad80], xmm1
movss xmm1, dword [edi + 0x10]
mulss xmm1, dword [esi + 4]
movss xmm0, dword [edi + 4]
mulss xmm0, dword [esi]
addss xmm1, xmm0
movss xmm0, dword [edi + 0x1c]
mulss xmm0, dword [esi + 8]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad84], xmm1
movss xmm1, dword [esi + 4]
mulss xmm1, dword [edi + 0x14]
movss xmm0, dword [edi + 8]
mulss xmm0, dword [esi]
addss xmm1, xmm0
movss xmm0, dword [esi + 8]
mulss xmm0, dword [edi + 0x20]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad88], xmm1
movss xmm1, dword [edi]
mulss xmm1, dword [esi + 0xc]
movss xmm0, dword [esi + 0x10]
mulss xmm0, dword [edi + 0xc]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x14]
mulss xmm0, dword [edi + 0x18]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad8c], xmm1
movss xmm1, dword [esi + 0xc]
mulss xmm1, dword [edi + 4]
movss xmm0, dword [esi + 0x10]
mulss xmm0, dword [edi + 0x10]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x14]
mulss xmm0, dword [edi + 0x1c]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad90], xmm1
movss xmm1, dword [esi + 0x10]
mulss xmm1, dword [edi + 0x14]
movss xmm0, dword [esi + 0xc]
mulss xmm0, dword [edi + 8]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x14]
mulss xmm0, dword [edi + 0x20]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad94], xmm1
movss xmm1, dword [edi]
movss xmm0, dword [esi + 0x1c]
mulss xmm1, dword [esi + 0x18]
mulss xmm0, dword [edi + 0xc]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x20]
mulss xmm0, dword [edi + 0x18]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad98], xmm1
movss xmm1, dword [esi + 0x1c]
mulss xmm1, dword [edi + 0x10]
movss xmm0, dword [esi + 0x18]
mulss xmm0, dword [edi + 4]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x20]
mulss xmm0, dword [edi + 0x1c]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dad9c], xmm1
movss xmm1, dword [esi + 0x1c]
mulss xmm1, dword [edi + 0x14]
movss xmm0, dword [edi + 8]
mulss xmm0, dword [esi + 0x18]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x20]
mulss xmm0, dword [edi + 0x20]
addss xmm1, xmm0
movss dword [eax*4 + 0x100dada0], xmm1
movups xmm0, xmmword [eax*4 + 0x100dad80]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [eax*4 + 0x100dad90]
mov eax, dword [eax*4 + 0x100dada0]
movups xmmword [ecx + 0x10], xmm0
mov dword [ecx + 0x20], eax
movss xmm3, dword [esi + 0x28]
movss xmm4, dword [esi + 0x24]
movaps xmm5, xmm3
mulss xmm5, dword [edi + 0xc]
movaps xmm0, xmm4
mulss xmm0, dword [edi]
movaps xmm1, xmm4
movss xmm2, dword [esi + 0x2c]
mulss xmm1, dword [edi + 4]
mov esi, dword [ebp - 0x14]
mulss xmm4, dword [edi + 8]
addss xmm5, xmm0
movaps xmm0, xmm2
mulss xmm0, dword [edi + 0x18]
addss xmm5, xmm0
movaps xmm0, xmm3
mulss xmm0, dword [edi + 0x10]
mulss xmm3, dword [edi + 0x14]
addss xmm5, dword [edi + 0x24]
addss xmm1, xmm0
movaps xmm0, xmm2
mulss xmm0, dword [edi + 0x1c]
addss xmm4, xmm3
mulss xmm2, dword [edi + 0x20]
addss xmm1, xmm0
addss xmm4, xmm2
addss xmm1, dword [edi + 0x28]
addss xmm4, dword [edi + 0x2c]
unpcklps xmm5, xmm1
movq qword [ecx + 0x24], xmm5
movss dword [ebp - 0x2c], xmm4
mov eax, dword [ebp - 0x2c]
mov dword [ecx + 0x2c], eax
movups xmm3, xmmword [ecx]
mov eax, dword [edx]
movups xmm4, xmmword [ecx + 0x10]
movups xmm2, xmmword [ecx + 0x20]
movups xmmword [eax + esi], xmm3
movups xmmword [eax + esi + 0x10], xmm4
movups xmmword [eax + esi + 0x20], xmm2
mov ecx, dword [0x100da0e8]
mov eax, ecx
and eax, 0x3f
movaps xmm1, xmm4
inc ecx
mulss xmm1, xmm2
mov dword [0x100da0e8], ecx
movups xmmword [ebp - 0x44], xmm3
lea eax, [eax + eax*8]
movups xmmword [ebp - 0x64], xmm4
movups xmmword [ebp - 0x54], xmm2
movaps xmm7, xmm4
mov edi, dword [ebp - 0x1c]
shufps xmm7, xmm4, 0x55
movaps xmm5, xmm4
shufps xmm5, xmm4, 0xff
movaps xmm0, xmm7
mulss xmm0, xmm5
movaps xmm6, xmm3
inc edi
shufps xmm6, xmm3, 0xff
movaps xmm3, xmm4
shufps xmm3, xmm4, 0xaa
subss xmm1, xmm0
mov dword [ebp - 0x1c], edi
movaps xmm0, xmm7
mulss xmm0, xmm3
movss dword [eax*4 + 0x100dad80], xmm1
movaps xmm1, xmm6
mulss xmm1, xmm2
subss xmm1, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm3
xorps xmm1, xmmword [0x100b49e0]
movss dword [eax*4 + 0x100dad84], xmm1
movaps xmm1, xmm6
mulss xmm1, xmm5
subss xmm1, xmm0
movups xmm0, xmmword [ebp - 0x44]
movaps xmm4, xmm0
movss dword [eax*4 + 0x100dad88], xmm1
shufps xmm4, xmm0, 0x55
movaps xmm1, xmm4
mulss xmm1, xmm2
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xaa
movaps xmm0, xmm2
mulss xmm0, xmm5
subss xmm1, xmm0
movaps xmm0, xmm2
mulss xmm0, xmm3
xorps xmm1, xmmword [0x100b49e0]
movss dword [eax*4 + 0x100dad8c], xmm1
movss xmm1, dword [ebp - 0x44]
mulss xmm1, dword [ebp - 0x54]
subss xmm1, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm3
movups xmm3, xmmword [ebp - 0x64]
movss dword [eax*4 + 0x100dad90], xmm1
movss xmm1, dword [ebp - 0x44]
mulss xmm1, xmm5
movss xmm5, dword [0x100b49e0]
subss xmm1, xmm0
movaps xmm0, xmm2
mulss xmm0, xmm3
mulss xmm2, xmm6
xorps xmm1, xmm5
movss dword [eax*4 + 0x100dad94], xmm1
movaps xmm1, xmm4
mulss xmm1, xmm7
mulss xmm4, xmm6
subss xmm1, xmm0
movss dword [eax*4 + 0x100dad98], xmm1
movups xmm1, xmmword [ebp - 0x44]
movaps xmm0, xmm1
mulss xmm1, xmm3
mulss xmm0, xmm7
subss xmm1, xmm4
subss xmm0, xmm2
movss dword [eax*4 + 0x100dada0], xmm1
xorps xmm0, xmm5
movss dword [eax*4 + 0x100dad9c], xmm0
mov ecx, dword [edx]
movups xmm0, xmmword [eax*4 + 0x100dad80]
mov edx, dword [ebp - 0x18]
add edx, 0x30
movups xmmword [esi + ecx + 0x30], xmm0
movups xmm0, xmmword [eax*4 + 0x100dad90]
movups xmmword [esi + ecx + 0x40], xmm0
mov eax, dword [eax*4 + 0x100dada0]
mov dword [esi + ecx + 0x50], eax
mov eax, dword [ebp - 0x28]
add esi, 0x54
add dword [ebp + 8], 4
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], esi
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ecx
sar eax, 2
cmp edi, eax
mov edi, dword [ebp - 0x10]
jb 0x1003cd54
mov edx, dword [edi + 0x27c]
lea esi, [edi + 0x288]
xor cl, cl
mov dword [ebp - 0x14], 0
mov byte [ebp + 0xb], cl
mov eax, dword [edx + 0x50]
sub eax, dword [edx + 0x4c]
sar eax, 2
test eax, eax
je 0x1003d29b
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], ecx
nop word [eax + eax]
mov eax, dword [edx + 0x4c]
mov eax, dword [ecx + eax]
mov ecx, dword [esi]
add ecx, dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
call fcn.1002d930
test eax, eax
jne 0x1003d26b
mov ecx, dword [ebp - 0x10]
lea eax, [edi + 0x294]
push eax
call fcn.1003a340
mov dword [ebp - 0x28], eax
test eax, eax
je 0x1003d26f
mov ecx, dword [esi]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
lea ecx, [ecx + edx*4]
push ecx
mov ecx, dword [eax + 0x30]
sub ecx, dword [eax + 0x2c]
mov eax, 0x2aaaaaab
imul ecx
mov ecx, dword [ebp - 0x10]
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
mov eax, dword [ecx + 0x24]
sub eax, dword [ecx + 0x20]
mov ecx, edi
push 0
sar eax, 6
push eax
push 0
push dword [ebp - 0x28]
call fcn.10043f80
jmp 0x1003d26f
mov byte [ebp + 0xb], 1
mov edx, dword [edi + 0x27c]
mov eax, dword [ebp - 0x14]
add dword [ebp - 0x1c], 4
inc eax
add dword [ebp - 0x18], 4
mov ecx, dword [edx + 0x50]
sub ecx, dword [edx + 0x4c]
sar ecx, 2
cmp eax, ecx
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x1c]
jb 0x1003d200
mov cl, byte [ebp + 0xb]
mov al, cl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
push 0x100de7bc
call fcn.1007fcaf
add esp, 4
cmp dword [0x100de7bc], 0xffffffff
jne 0x1003cb39
mov ecx, 0x100de6f0
mov dword [ebp - 4], 0
call fcn.10034640
push 0x100de7bc
mov dword [ebp - 4], 0xffffffff
call fcn.1007fc5e
add esp, 4
jmp 0x1003cb39