Function at 0x83514843
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, 0x30
mov eax, dword [ebx + 8]
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0xc]
push esi
mov esi, dword [ebx + 0x18]
push edi
mov edi, dword [ebx + 0x14]
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], ecx
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x30], 1
test esi, esi
jne 0x8351488a
and dword [ebp - 0x30], esi
jmp 0x83514a48
mov dword [ebp - 0xc], edi
sub dword [ebp - 0xc], edx
cmp dword [0x879d3f84], 0
je 0x83514974
mov edi, dword [ebp - 0x14]
xor eax, eax
inc eax
movd mm0, eax
movq mm6, mm0
or eax, 0xffffffff
sub edi, edx
movd mm0, eax
mov dword [ebp - 0x24], edi
movq qword [ebp - 8], mm0
movq mm5, mm6
mov edi, ecx
movq mm4, mm6
movq mm3, mm6
mov eax, edx
sub edi, edx
mov dword [ebp - 0x10], esi
mov edx, dword [ebp - 0xc]
mov edx, dword [edx + eax]
movq mm1, qword [ebp - 8]
movd mm0, edx
mov edx, dword [eax]
pxor mm0, mm1
movd mm1, edx
mov edx, dword [ebp - 0x24]
mov edx, dword [edx + eax]
movq mm2, mm0
paddq mm1, mm2
movd mm2, edx
movq mm7, mm2
paddq mm3, mm7
movq mm7, mm1
paddq mm3, mm7
movq mm7, mm3
paddq mm4, mm1
movq mm1, mm4
psrlq mm1, 0x20
movd edx, mm7
movq mm4, mm1
paddq mm5, mm2
mov dword [edi + eax], edx
paddq mm5, mm0
add eax, 4
dec dword [ebp - 0x10]
psrlq mm5, 0x20
psrlq mm3, 0x20
jne 0x835148ca
movq mm0, mm4
movd eax, mm0
movd edx, mm5
or eax, edx
jne 0x8351496d
mov eax, dword [ebp - 0x1c]
movq mm0, mm6
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 0x83514944
emms
jmp 0x83514a48
and dword [ebp - 0x10], 0
and dword [ebp - 0x20], 0
and dword [ebp - 0x28], 0
sub eax, edx
mov dword [ebp - 0x14], ecx
sub dword [ebp - 0x14], edx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], esi
jmp 0x83514993
mov eax, dword [ebp - 0x24]
mov eax, dword [edx + eax]
mov ecx, dword [ebp - 0xc]
mov esi, dword [edx + ecx]
mov ecx, eax
sub ecx, esi
sub ecx, dword [ebp - 0x10]
mov dword [ebp - 0x18], esi
xor esi, eax
mov edi, ecx
xor edi, eax
or edi, esi
mov esi, dword [edx]
xor edi, eax
mov eax, dword [ebp - 0x18]
shr edi, 0x1f
mov dword [ebp - 0x10], edi
mov edi, esi
sub edi, eax
sub edi, dword [ebp - 0x20]
xor eax, esi
xor edi, esi
or edi, eax
xor edi, esi
shr edi, 0x1f
mov dword [ebp - 0x20], edi
lea eax, [ecx + esi]
add eax, dword [ebp - 0x28]
mov edi, ecx
xor edi, esi
or ecx, esi
mov esi, dword [ebp - 0x14]
and edi, eax
xor edi, ecx
shr edi, 0x1f
mov dword [edx + esi], eax
mov ecx, edi
add edx, 4
dec dword [ebp - 0x2c]
mov dword [ebp - 0x28], ecx
jne 0x83514990
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x10]
xor eax, 1
xor edx, 1
or eax, edx
jne 0x83514a48
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebx + 0x18]
dec ecx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 4]
xor esi, esi
sub eax, ecx
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], edx
jmp 0x83514a22
mov eax, dword [ebp - 4]
mov eax, dword [ecx + eax]
mov edx, dword [ecx]
and eax, dword [ebp - 0x18]
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 - 0x1c]
mov esi, edi
jne 0x83514a1f
mov eax, dword [ebp - 0x30]
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x18