Function at 0x1012dcde
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [0x101c0814]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x28], eax
xor eax, eax
mov dword [ebp - 0x34], edi
cmp dword [edi + 8], eax
cmovg eax, dword [edi + 8]
mov dword [ebp - 0x30], eax
xor eax, eax
inc eax
xor edx, edx
mov dword [ebp - 0x24], eax
lea eax, [edi + 0xc]
mov edi, eax
movsx eax, word [edi]
mov esi, edx
imul eax, dword [ebp + edx*4 - 0x24]
lea edi, [edi + 4]
movzx ecx, word [edi - 2]
mov dword [ebp + edx*4 - 0x20], eax
xor eax, eax
inc eax
inc edx
cmp cx, ax
jne 0x1012dd15
mov edi, dword [ebp - 0x34]
movsx edx, word [edi + edx*4 + 0xa]
test esi, esi
js 0x1012df33
test esi, esi
je 0x1012dd51
movsx ecx, word [edi + esi*4 + 0xa]
mov dword [ebp - 0x2c], ecx
jmp 0x1012dd56
mov ecx, eax
mov dword [ebp - 0x2c], eax
movsx eax, word [edi + esi*4 + 0xc]
dec eax
sub eax, 1
je 0x1012ddc2
sub eax, 1
je 0x1012ddaa
sub eax, 1
je 0x1012dd92
sub eax, 1
jne 0x1012df24
mov eax, dword [ebp + esi*4 - 0x24]
push ecx
mov ecx, dword [ebp - 0x30]
push eax
push edx
push edi
shl eax, cl
push eax
push dword [ebp - 0x28]
call fcn.1012d935
add esp, 0x18
jmp 0x1012df24
mov eax, dword [ebp + esi*4 - 0x24]
push ecx
mov ecx, dword [ebp - 0x30]
push eax
push edx
push edi
shl eax, cl
push eax
push dword [ebp - 0x28]
call fcn.1012d664
jmp 0x1012dd8a
mov eax, dword [ebp + esi*4 - 0x24]
push ecx
mov ecx, dword [ebp - 0x30]
push eax
push edx
push edi
shl eax, cl
push eax
push dword [ebp - 0x28]
call fcn.1012d4e3
jmp 0x1012dd8a
mov edx, dword [ebp + esi*4 - 0x24]
test edx, edx
jle 0x1012df24
mov ecx, dword [ebp - 0x28]
add ecx, 0x28
mov eax, dword [ecx - 8]
movss xmm0, dword [ecx - 0x28]
mov dword [ebp - 0x38], eax
subss xmm0, dword [ebp - 0x38]
mov eax, dword [ecx - 4]
mov dword [ebp - 0x34], eax
movss xmm1, dword [ebp - 0x34]
movss dword [ecx - 8], xmm0
movss xmm0, dword [ecx - 0x24]
subss xmm0, xmm1
movss dword [ecx - 4], xmm0
addss xmm1, dword [ecx - 0x24]
movss xmm0, dword [ecx - 0x28]
addss xmm0, dword [ebp - 0x38]
movss dword [ecx - 0x24], xmm1
movss dword [ecx - 0x28], xmm0
movss xmm2, dword [ecx + 4]
movss xmm0, dword [ecx - 0x20]
movaps xmm1, xmm2
addss xmm1, dword [ecx]
subss xmm2, dword [ecx]
mulss xmm1, dword [0x1015d8f0]
mulss xmm2, dword [0x1015d8f0]
subss xmm0, xmm1
movss dword [ecx], xmm0
movss xmm0, dword [ecx - 0x1c]
subss xmm0, xmm2
movss dword [ecx + 4], xmm0
movss xmm0, dword [ecx - 0x20]
addss xmm0, xmm1
movss dword [ecx - 0x20], xmm0
movss xmm0, dword [ecx - 0x1c]
addss xmm0, xmm2
movss dword [ecx - 0x1c], xmm0
movss xmm1, dword [ecx + 0xc]
movss xmm0, dword [ecx - 0x18]
movss xmm2, dword [ecx + 8]
subss xmm0, xmm1
xorps xmm2, xmmword [0x1015d900]
movss dword [ecx + 8], xmm0
movss xmm0, dword [ecx - 0x14]
subss xmm0, xmm2
movss dword [ecx + 0xc], xmm0
movss xmm0, dword [ecx - 0x18]
addss xmm2, dword [ecx - 0x14]
addss xmm0, xmm1
movss dword [ecx - 0x14], xmm2
movss dword [ecx - 0x18], xmm0
movss xmm2, dword [ecx + 0x14]
movss xmm0, dword [ecx - 0x10]
movaps xmm1, xmm2
subss xmm1, dword [ecx + 0x10]
xorps xmm2, xmmword [0x1015d900]
subss xmm2, dword [ecx + 0x10]
mulss xmm1, dword [0x1015d8f0]
mulss xmm2, dword [0x1015d8f0]
subss xmm0, xmm1
movss dword [ecx + 0x10], xmm0
movss xmm0, dword [ecx - 0xc]
subss xmm0, xmm2
movss dword [ecx + 0x14], xmm0
movss xmm0, dword [ecx - 0x10]
addss xmm0, xmm1
movss dword [ecx - 0x10], xmm0
movss xmm0, dword [ecx - 0xc]
addss xmm0, xmm2
movss dword [ecx - 0xc], xmm0
add ecx, 0x40
sub edx, 1
jne 0x1012ddd4
sub esi, 1
mov edx, dword [ebp - 0x2c]
push 1
pop eax
jns 0x1012dd43
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.10132731
mov esp, ebp
pop ebp
ret