Function at 0x1000c000
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
push eax
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
shl eax, 3
je 0x1000c5d4
add eax, edi
mov esi, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
cmp eax, 0x11
je 0x1000c108
cmp eax, 0x12
je 0x1000c1b4
cmp eax, 0xffffffff
je 0x1000c296
cmp eax, 0xfffffffe
je 0x1000c3c3
cmp eax, 0xfffffffd
je 0x1000c509
imul ebx, eax, 0xfffffff8
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [edx + 8]
pxor mm4, mm4
jmp 0x1000c080
movq mm3, qword [edi + ebx]
movq mm1, mm3
movq mm0, mm3
paddd mm1, mm1
psrld mm0, 0xf
psrlw mm1, 1
pmaddwd mm0, mm5
pmaddwd mm1, mm5
movq mm2, qword [edi]
pslld mm0, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm0, mm2
paddd mm0, mm1
movq qword [edi], mm0
movq mm0, mm3
pxor mm0, mm2
psrad mm0, 0x1f
add edi, 8
pcmpeqd mm2, mm4
pcmpeqd mm3, mm4
por mm2, mm3
pandn mm2, mm6
pxor mm5, mm0
paddw mm5, mm2
pxor mm5, mm0
cmp edi, esi
jb 0x1000c080
pslld mm5, 0x10
psrad mm5, 0x10
mov eax, dword [ebp + 8]
movq qword [eax + 8], mm5
emms
mov edx, dword [ebp + 8]
mov ecx, dword [edx]
dec ecx
sub edi, 8
mov eax, dword [edi + 4]
mov dword [edx + ecx*4 + 0x30], eax
mov eax, dword [edi]
mov dword [edx + ecx*4 + 0x10], eax
test ecx, ecx
jne 0x1000c0ee
jmp 0x1000c5d4
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [edx + 8]
movq mm4, qword [edi - 8]
jmp 0x1000c140
paddd mm4, mm4
psubd mm4, qword [edi - 0x10]
movq mm3, mm4
movq mm1, mm3
paddd mm1, mm1
psrld mm4, 0xf
psrlw mm1, 1
pmaddwd mm4, mm5
pmaddwd mm1, mm5
movq mm2, qword [edi]
pslld mm4, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm4, mm2
paddd mm4, mm1
movq mm0, mm3
movq qword [edi], mm4
pxor mm0, mm2
psrad mm0, 0x1f
add edi, 8
pxor mm1, mm1
pcmpeqd mm2, mm1
pcmpeqd mm3, mm1
por mm2, mm3
pandn mm2, mm6
pxor mm5, mm0
paddw mm5, mm2
pxor mm5, mm0
cmp edi, esi
jb 0x1000c140
pslld mm5, 0x10
psrad mm5, 0x10
mov eax, dword [ebp + 8]
movq qword [eax + 8], mm5
emms
jmp 0x1000c276
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [edx + 8]
movq mm4, qword [edi - 8]
jmp 0x1000c200
movq mm3, mm4
psubd mm3, qword [edi - 0x10]
psrad mm3, 1
paddd mm3, mm4
movq mm1, mm3
movq mm4, mm3
paddd mm1, mm1
psrld mm4, 0xf
psrlw mm1, 1
pmaddwd mm4, mm5
pmaddwd mm1, mm5
movq mm2, qword [edi]
pslld mm4, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm4, mm2
paddd mm4, mm1
movq mm0, mm3
movq qword [edi], mm4
pxor mm0, mm2
psrad mm0, 0x1f
add edi, 8
pxor mm1, mm1
pcmpeqd mm2, mm1
pcmpeqd mm3, mm1
por mm2, mm3
pandn mm2, mm6
pxor mm5, mm0
paddw mm5, mm2
pxor mm5, mm0
cmp edi, esi
jb 0x1000c200
pslld mm5, 0x10
psrad mm5, 0x10
mov eax, dword [ebp + 8]
movq qword [eax + 8], mm5
emms
mov edx, dword [edi - 4]
mov eax, dword [ebp + 8]
mov dword [eax + 0x30], edx
mov edx, dword [edi - 8]
mov dword [eax + 0x10], edx
mov edx, dword [edi - 0xc]
mov dword [eax + 0x34], edx
mov edx, dword [edi - 0x10]
mov dword [eax + 0x14], edx
jmp 0x1000c5d4
cld
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
mov ebp, dword [eax + 0xc]
mov eax, dword [edi - 4]
jmp 0x1000c2c0
mov ebx, eax
imul eax, ecx
mov edx, dword [edi]
jo 0x1000c329
sar eax, 0xa
adc eax, edx
stosd dword es:[edi], eax
test ebx, ebx
je 0x1000c2f0
test edx, edx
je 0x1000c2f0
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1000c2ee
mov ecx, edx
xor ecx, ebx
mov ebx, eax
imul eax, ebp
mov edx, dword [edi]
jo 0x1000c32d
sar eax, 0xa
adc eax, edx
stosd dword es:[edi], eax
test ebx, ebx
je 0x1000c320
test edx, edx
je 0x1000c320
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1000c31e
mov ebp, edx
xor ebp, ebx
cmp edi, esi
jb 0x1000c2c0
jmp 0x1000c3a8
mov eax, ebx
jmp 0x1000c340
mov eax, ebx
jmp 0x1000c372
mov ebx, eax
imul ecx
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [edi]
add eax, edx
stosd dword es:[edi], eax
test ebx, ebx
je 0x1000c372
test edx, edx
je 0x1000c372
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1000c370
mov ecx, edx
xor ecx, ebx
mov ebx, eax
imul ebp
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [edi]
add eax, edx
stosd dword es:[edi], eax
test ebx, ebx
je 0x1000c3a4
test edx, edx
je 0x1000c3a4
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1000c3a2
mov ebp, edx
xor ebp, ebx
cmp edi, esi
jb 0x1000c340
mov edx, ebp
mov ebp, esp
add ebp, 0x10
mov eax, dword [ebp + 8]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov edx, dword [edi - 4]
mov dword [eax + 0x10], edx
jmp 0x1000c5d4
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
mov ebp, dword [eax + 0xc]
mov eax, dword [edi - 8]
jmp 0x1000c400
mov ebx, eax
imul eax, ebp
mov edx, dword [edi + 4]
jo 0x1000c470
sar eax, 0xa
adc eax, edx
mov dword [edi + 4], eax
test ebx, ebx
je 0x1000c433
test edx, edx
je 0x1000c433
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1000c431
mov ebp, edx
xor ebp, ebx
mov ebx, eax
imul eax, ecx
mov edx, dword [edi]
jo 0x1000c474
sar eax, 0xa
adc eax, edx
mov dword [edi], eax
add edi, 8
test ebx, ebx
je 0x1000c467
test edx, edx
je 0x1000c467
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1000c465
mov ecx, edx
xor ecx, ebx
cmp edi, esi
jb 0x1000c400
jmp 0x1000c4ef
mov eax, ebx
jmp 0x1000c480
mov eax, ebx
jmp 0x1000c4b5
mov ebx, eax
imul ebp
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [edi + 4]
add eax, edx
mov dword [edi + 4], eax
test ebx, ebx
je 0x1000c4b5
test edx, edx
je 0x1000c4b5
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1000c4b3
mov ebp, edx
xor ebp, ebx
mov ebx, eax
imul ecx
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [edi]
add eax, edx
mov dword [edi], eax
add edi, 8
test ebx, ebx
je 0x1000c4eb
test edx, edx
je 0x1000c4eb
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, dword [esp]
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1000c4e9
mov ecx, edx
xor ecx, ebx
cmp edi, esi
jb 0x1000c480
mov edx, ebp
lea ebp, [esp + 0x10]
mov eax, dword [ebp + 8]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov edx, dword [edi - 8]
mov dword [eax + 0x30], edx
jmp 0x1000c5d4
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [edx + 8]
movq mm4, qword [edi - 8]
jmp 0x1000c540
movq mm3, mm4
psrlq mm3, 0x20
punpckldq mm3, mm4
movq mm1, mm3
movq mm4, mm3
pslld mm1, 1
psrld mm4, 0xf
psrlw mm1, 1
pmaddwd mm4, mm5
pmaddwd mm1, mm5
movq mm2, qword [edi]
pslld mm4, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm4, mm2
paddd mm4, mm1
movq qword [edi], mm4
movq mm0, mm3
pxor mm0, mm2
psrad mm0, 0x1f
add edi, 8
pxor mm1, mm1
pcmpeqd mm2, mm1
pcmpeqd mm3, mm1
por mm2, mm3
pandn mm2, mm6
pcmpeqd mm1, mm1
psubd mm1, mm7
psubd mm1, mm7
psubd mm1, mm0
pxor mm5, mm0
paddw mm5, mm1
paddusw mm5, mm2
psubw mm5, mm1
pxor mm5, mm0
cmp edi, esi
jb 0x1000c540
pslld mm5, 0x10
psrad mm5, 0x10
mov eax, dword [ebp + 8]
movq qword [eax + 8], mm5
emms
mov edx, dword [edi - 4]
mov eax, dword [ebp + 8]
mov dword [eax + 0x10], edx
mov edx, dword [edi - 8]
mov dword [eax + 0x30], edx
pop eax
pop edi
pop esi
pop ebx
pop ebp
ret