Function at 0x83514c19
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebx
mov ebx, esp
push ecx
push ecx
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x38
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x14]
mov edx, dword [ebx + 0xc]
push esi
mov esi, dword [ebx + 0x18]
push edi
mov edi, dword [ebx + 8]
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x34], 1
test esi, esi
jne 0x83514c5d
and dword [ebp - 0x34], esi
jmp 0x83514e26
mov dword [ebp - 0x14], edi
sub dword [ebp - 0x14], edx
cmp dword [0x879d3f84], 0
je 0x83514d4d
mov edi, dword [ebp - 0x20]
xor eax, eax
inc eax
movd mm3, eax
or eax, 0xffffffff
sub edi, edx
movd mm0, eax
mov dword [ebp - 0x2c], edi
movq qword [ebp - 0x10], mm0
mov edi, ecx
movq mm5, mm3
movq qword [ebp - 8], mm3
movq mm4, mm3
mov eax, edx
sub edi, edx
mov dword [ebp - 0x1c], esi
mov edx, dword [ebp - 0x14]
mov edx, dword [edx + eax]
movq mm6, qword [ebp - 0x10]
movd mm0, edx
mov edx, dword [eax]
movd mm1, edx
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + eax]
movd mm2, edx
pxor mm2, mm6
movq mm6, mm0
paddq mm3, mm6
movq mm6, mm1
movq mm7, qword [ebp - 0x10]
pxor mm6, mm7
paddq mm3, mm6
movq mm6, mm3
paddq mm4, mm1
movq mm1, mm4
movq mm4, mm2
paddq mm1, mm4
psrlq mm1, 0x20
movd edx, mm6
movq mm4, mm1
paddq mm5, mm0
mov dword [edi + eax], edx
paddq mm5, mm2
add eax, 4
dec dword [ebp - 0x1c]
psrlq mm5, 0x20
psrlq mm3, 0x20
jne 0x83514c9b
movq mm0, mm4
movd eax, mm0
movd edx, mm5
or eax, edx
jne 0x83514d46
movq mm0, qword [ebp - 8]
mov eax, dword [ebp - 0x20]
psubq mm3, mm0
movq mm1, mm3
pxor mm0, mm0
sub eax, ecx
mov edx, dword [ecx]
movd mm2, edx
mov edx, dword [eax + ecx]
paddq mm0, mm2
movd mm3, edx
movq mm2, mm1
pand mm2, mm3
paddq mm0, mm2
movq mm2, mm0
movd edx, mm2
mov dword [ecx], edx
add ecx, 4
dec esi
psrlq mm0, 0x20
jne 0x83514d1d
emms
jmp 0x83514e26
and dword [ebp - 0x1c], 0
and dword [ebp - 0x28], 0
and dword [ebp - 4], 0
mov edi, eax
sub edi, edx
mov dword [ebp - 0x30], ecx
sub dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x18], esi
jmp 0x83514d6e
mov edi, dword [ebp - 0x2c]
mov esi, dword [edx + edi]
mov eax, dword [ebp - 0x14]
mov eax, dword [edx + eax]
mov ecx, dword [edx]
mov dword [ebp - 0x24], eax
sub eax, esi
sub eax, dword [ebp - 0x1c]
mov edi, esi
xor eax, dword [ebp - 0x24]
xor edi, dword [ebp - 0x24]
or eax, edi
xor eax, dword [ebp - 0x24]
shr eax, 0x1f
mov dword [ebp - 0x1c], eax
mov eax, ecx
sub eax, esi
sub eax, dword [ebp - 0x28]
xor esi, ecx
xor eax, ecx
or eax, esi
mov esi, dword [ebp - 0x24]
xor eax, ecx
shr eax, 0x1f
mov dword [ebp - 0x28], eax
mov eax, esi
sub eax, ecx
sub eax, dword [ebp - 4]
xor ecx, esi
mov edi, eax
xor edi, esi
or edi, ecx
xor edi, esi
mov esi, dword [ebp - 0x30]
shr edi, 0x1f
mov dword [edx + esi], eax
mov ecx, edi
add edx, 4
dec dword [ebp - 0x18]
mov dword [ebp - 4], ecx
jne 0x83514d6b
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
xor eax, 1
xor edx, 1
or eax, edx
jne 0x83514e26
mov eax, dword [ebp - 0x20]
mov edx, dword [ebx + 0x18]
neg ecx
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 0xc]
xor esi, esi
sub eax, ecx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x18], edx
jmp 0x83514e00
mov eax, dword [ebp - 0xc]
mov eax, dword [ecx + eax]
mov edx, dword [ecx]
and eax, dword [ebp - 4]
lea edi, [eax + edx]
add esi, edi
mov edi, eax
xor edi, edx
and edi, esi
or eax, edx
xor edi, eax
mov dword [ecx], esi
shr edi, 0x1f
add ecx, 4
dec dword [ebp - 0x18]
mov esi, edi
jne 0x83514dfd
mov eax, dword [ebp - 0x34]
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x18