Function at 0x1003ce70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100dd339
mov eax, dword fs:[0]
push eax
sub esp, 0x54
push esi
push edi
mov eax, dword [0x10108c80]
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 0x1003cec6
movss xmm0, dword [esi + 4]
comiss xmm0, dword [esi + 0x10]
ja 0x1003cec6
movss xmm0, dword [esi + 8]
comiss xmm0, dword [esi + 0x14]
jbe 0x1003ced1
call fcn.1003c9a0
mov esi, eax
movss xmm1, dword [esi]
comiss xmm1, dword [esi + 0xc]
ja 0x1003d0cb
movss xmm0, dword [esi + 4]
comiss xmm0, dword [esi + 0x10]
ja 0x1003d0cb
movss xmm0, dword [esi + 8]
comiss xmm0, dword [esi + 0x14]
ja 0x1003d0cb
mov eax, dword fs:[0x2c]
mov ecx, dword [0x101113a4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1010f41c]
cmp eax, dword [ecx + 4]
jg 0x1003d65c
mov ecx, edi
call fcn.10033e20
mov ecx, eax
call fcn.10018b90
push eax
mov eax, dword [ebp + 8]
mov ecx, 0x1010f350
add eax, 0x30
push eax
call fcn.10034060
push esi
mov ecx, 0x1010f350
call fcn.10034d90
test al, al
je 0x1003d0cb
mov esi, dword [edi + 0x27c]
mov eax, dword [edi + 0x280]
cmp eax, dword [esi]
je 0x1003d026
mov ecx, dword [edi + 0x28c]
lea esi, [edi + 0x288]
mov eax, dword [esi]
mov dword [ebp - 0x18], ecx
cmp eax, ecx
je 0x1003cf8e
mov edi, eax
mov ecx, edi
call fcn.1002dae0
add edi, 4
cmp edi, dword [ebp - 0x18]
jne 0x1003cf77
mov eax, dword [esi]
mov edi, dword [ebp - 0x10]
mov dword [esi + 4], eax
mov esi, dword [edi + 0x27c]
xor ecx, ecx
mov dword [ebp + 8], ecx
mov eax, dword [esi + 0x50]
sub eax, dword [esi + 0x4c]
sar eax, 2
test eax, eax
je 0x1003d01e
lea edx, [edi + 0x284]
nop dword [eax]
mov eax, dword [esi + 0x4c]
push edx
push dword [eax + ecx*4]
lea ecx, [ebp - 0x18]
call fcn.1002d7c0
mov ecx, dword [edi + 0x28c]
mov dword [ebp - 4], 1
push eax
cmp ecx, dword [edi + 0x290]
je 0x1003cfe3
call fcn.1002d910
add dword [edi + 0x28c], 4
jmp 0x1003cfef
push ecx
lea ecx, [edi + 0x288]
call fcn.10024b90
lea ecx, [ebp - 0x18]
mov dword [ebp - 4], 0xffffffff
call fcn.1002dae0
mov esi, dword [edi + 0x27c]
lea edx, [edi + 0x284]
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp + 8], ecx
mov eax, dword [esi + 0x50]
sub eax, dword [esi + 0x4c]
sar eax, 2
cmp ecx, eax
jb 0x1003cfb0
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 - 0x20], eax
mov eax, 0x30c30c31
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x1003d0e0
mov eax, dword [esi + 0x50]
xor ecx, ecx
sub eax, dword [esi + 0x4c]
sar eax, 2
mov dword [ebp + 8], ecx
test eax, eax
je 0x1003d0cb
mov eax, dword [esi + 0x4c]
shl ecx, 2
mov dword [ebp - 0x18], ecx
mov esi, dword [ecx + eax]
mov ecx, esi
call fcn.1003ae50
mov dword [ebp - 0x14], eax
test eax, eax
je 0x1003d0b1
mov ecx, dword [edi + 0x288]
mov eax, 0x2aaaaaab
add ecx, dword [ebp - 0x18]
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.100442f0
mov esi, dword [edi + 0x27c]
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp + 8], ecx
mov eax, dword [esi + 0x50]
sub eax, dword [esi + 0x4c]
sar eax, 2
cmp ecx, eax
jb 0x1003d060
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]
xor edx, edx
add eax, 0x18
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x24], eax
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ecx
sar eax, 2
test eax, eax
je 0x1003d57a
mov dword [ebp - 0x18], edx
mov dword [ebp + 8], edx
nop dword [eax]
mov eax, dword [edi + 0x27c]
mov ecx, dword [ecx + edx*4]
mov esi, dword [eax + 0x58]
add esi, dword [ebp + 8]
call fcn.10033e20
mov edx, dword [0x1010ad50]
mov edi, eax
mov ecx, edx
inc edx
mov dword [0x1010ad50], edx
and ecx, 0x3f
lea eax, [ecx + ecx*2]
mov ecx, dword [0x1010ad4c]
shl eax, 4
add eax, 0x1010ade0
mov dword [ebp - 0x1c], eax
mov eax, ecx
and eax, 0x3f
inc ecx
mov dword [0x1010ad4c], 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 + 0x1010b9e0], 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 + 0x1010b9e4], 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 + 0x1010b9e8], xmm1
movss xmm1, dword [edi]
mulss xmm1, dword [esi + 0xc]
movss xmm0, dword [edi + 0xc]
mulss xmm0, dword [esi + 0x10]
addss xmm1, xmm0
movss xmm0, dword [edi + 0x18]
mulss xmm0, dword [esi + 0x14]
addss xmm1, xmm0
movss dword [eax*4 + 0x1010b9ec], xmm1
movss xmm1, dword [esi + 0x10]
mulss xmm1, dword [edi + 0x10]
movss xmm0, dword [esi + 0xc]
mulss xmm0, dword [edi + 4]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x14]
mulss xmm0, dword [edi + 0x1c]
addss xmm1, xmm0
movss dword [eax*4 + 0x1010b9f0], xmm1
movss xmm1, dword [esi + 0xc]
mulss xmm1, dword [edi + 8]
movss xmm0, dword [esi + 0x10]
mulss xmm0, dword [edi + 0x14]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x14]
mulss xmm0, dword [edi + 0x20]
addss xmm1, xmm0
movss dword [eax*4 + 0x1010b9f4], xmm1
movss xmm0, dword [edi + 0xc]
movss xmm1, dword [edi]
mulss xmm0, dword [esi + 0x1c]
mulss xmm1, dword [esi + 0x18]
addss xmm1, xmm0
movss xmm0, dword [edi + 0x18]
mulss xmm0, dword [esi + 0x20]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
addss xmm1, xmm0
movss dword [eax*4 + 0x1010b9f8], 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 [edi + 0x1c]
mulss xmm0, dword [esi + 0x20]
addss xmm1, xmm0
movss dword [eax*4 + 0x1010b9fc], xmm1
movss xmm1, dword [esi + 0x1c]
mulss xmm1, dword [edi + 0x14]
movss xmm0, dword [esi + 0x18]
mulss xmm0, dword [edi + 8]
addss xmm1, xmm0
movss xmm0, dword [esi + 0x20]
mulss xmm0, dword [edi + 0x20]
addss xmm1, xmm0
movss dword [eax*4 + 0x1010ba00], xmm1
movups xmm0, xmmword [eax*4 + 0x1010b9e0]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [eax*4 + 0x1010b9f0]
mov eax, dword [eax*4 + 0x1010ba00]
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 - 0x18]
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 - 0x28], xmm4
mov eax, dword [ebp - 0x28]
mov dword [ecx + 0x2c], eax
movups xmm4, xmmword [ecx + 0x10]
mov eax, dword [edx]
movups xmm3, xmmword [ecx]
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 [0x1010ad4c]
mov eax, ecx
and eax, 0x3f
movaps xmm1, xmm4
inc ecx
mulss xmm1, xmm2
mov dword [0x1010ad4c], ecx
movups xmmword [ebp - 0x40], xmm3
lea eax, [eax + eax*8]
movups xmmword [ebp - 0x60], xmm4
movups xmmword [ebp - 0x50], xmm2
movaps xmm7, xmm4
shufps xmm7, xmm4, 0x55
movaps xmm5, xmm4
shufps xmm5, xmm4, 0xff
movaps xmm0, xmm7
mulss xmm0, xmm5
movaps xmm6, xmm3
add dword [ebp + 8], 0x30
shufps xmm6, xmm3, 0xff
movaps xmm3, xmm4
shufps xmm3, xmm4, 0xaa
subss xmm1, xmm0
movaps xmm0, xmm7
mulss xmm0, xmm3
movss dword [eax*4 + 0x1010b9e0], xmm1
movaps xmm1, xmm6
mulss xmm1, xmm2
subss xmm1, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm3
xorps xmm1, xmmword [0x100e2960]
movss dword [eax*4 + 0x1010b9e4], xmm1
movaps xmm1, xmm6
mulss xmm1, xmm5
subss xmm1, xmm0
movups xmm0, xmmword [ebp - 0x40]
movaps xmm4, xmm0
movss dword [eax*4 + 0x1010b9e8], 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 [0x100e2960]
movss dword [eax*4 + 0x1010b9ec], xmm1
movss xmm1, dword [ebp - 0x40]
mulss xmm1, dword [ebp - 0x50]
subss xmm1, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm3
movups xmm3, xmmword [ebp - 0x60]
movss dword [eax*4 + 0x1010b9f0], xmm1
movss xmm1, dword [ebp - 0x40]
mulss xmm1, xmm5
movss xmm5, dword [0x100e2960]
subss xmm1, xmm0
movaps xmm0, xmm2
mulss xmm0, xmm3
mulss xmm2, xmm6
xorps xmm1, xmm5
movss dword [eax*4 + 0x1010b9f4], xmm1
movaps xmm1, xmm4
mulss xmm1, xmm7
mulss xmm4, xmm6
subss xmm1, xmm0
movss dword [eax*4 + 0x1010b9f8], xmm1
movups xmm1, xmmword [ebp - 0x40]
movaps xmm0, xmm1
mulss xmm1, xmm3
mulss xmm0, xmm7
subss xmm1, xmm4
subss xmm0, xmm2
movss dword [eax*4 + 0x1010ba00], xmm1
xorps xmm0, xmm5
movss dword [eax*4 + 0x1010b9fc], xmm0
mov ecx, dword [edx]
movups xmm0, xmmword [eax*4 + 0x1010b9e0]
mov edx, dword [ebp - 0x14]
inc edx
movups xmmword [ecx + esi + 0x30], xmm0
mov dword [ebp - 0x14], edx
movups xmm0, xmmword [eax*4 + 0x1010b9f0]
movups xmmword [ecx + esi + 0x40], xmm0
mov eax, dword [eax*4 + 0x1010ba00]
mov dword [ecx + esi + 0x50], eax
add esi, 0x54
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 0x24]
mov edi, dword [ebp - 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ecx
sar eax, 2
cmp edx, eax
jb 0x1003d110
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 0x1003d647
xor eax, eax
nop word [eax + eax]
lea ecx, [eax*4]
mov eax, dword [edx + 0x4c]
mov dword [ebp - 0x18], ecx
mov eax, dword [ecx + eax]
mov ecx, dword [esi]
add ecx, dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
call fcn.1002ddb0
test eax, eax
jne 0x1003d622
mov ecx, dword [ebp - 0x10]
lea eax, [edi + 0x294]
push eax
call fcn.1003a790
mov dword [ebp - 0x24], eax
test eax, eax
je 0x1003d626
mov eax, dword [ebp - 0x10]
mov ecx, dword [esi]
add ecx, dword [ebp - 0x18]
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 - 0x24]
call fcn.100442f0
jmp 0x1003d626
mov byte [ebp + 0xb], 1
mov edx, dword [edi + 0x27c]
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
mov ecx, dword [edx + 0x50]
sub ecx, dword [edx + 0x4c]
sar ecx, 2
cmp eax, ecx
jb 0x1003d5b0
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 0x1010f41c
call fcn.100ad79f
add esp, 4
cmp dword [0x1010f41c], 0xffffffff
jne 0x1003cf19
mov ecx, 0x1010f350
mov dword [ebp - 4], 0
call fcn.10034a90
push 0x1010f41c
mov dword [ebp - 4], 0xffffffff
call fcn.100ad74e
add esp, 4
jmp 0x1003cf19