Function at 0x10367110
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x30]
push esi
push edi
vmovdqu ymm4, ymmword [eax]
mov eax, dword [ebp + 0xc]
lea esi, [ecx + 4]
vmovdqu ymm5, ymmword [eax]
mov eax, dword [ebp + 0x28]
add esi, eax
lea edi, [eax + 5]
mov eax, dword [ebp + 0x24]
add edi, ecx
cmp dword [eax + 0x18], 0
je 0x103672f2
mov edx, dword [eax + 4]
mov ecx, dword [eax + 8]
mov eax, esi
imul eax, ecx
vmovd xmm0, dword [ebp + 0x34]
add eax, dword [ebp + 0x2c]
lea eax, [edx + eax*2]
mov dword [ebp + 8], eax
mov eax, edi
imul eax, ecx
add eax, dword [ebp + 0x2c]
lea edx, [edx + eax*2]
mov eax, dword [ebp + 0x10]
mov dword [ebp + 0xc], edx
vpaddd ymm1, ymm4, ymmword [eax]
mov eax, dword [ebp + 0x24]
vpsrad ymm0, ymm1, xmm0
vpackusdw ymm2, ymm0, ymm0
cmp dword [eax], 0
je 0x10367206
mov eax, dword [ebp + 0xc]
mov ecx, esi
imul ecx, dword [ebp + 0x38]
mov edx, edi
imul edx, dword [ebp + 0x38]
vmovq xmm1, qword [eax]
mov eax, dword [ebp + 8]
add ecx, dword [ebp + 0x20]
add edx, dword [ebp + 0x20]
add ecx, dword [ebp + 0x2c]
vmovq xmm0, qword [eax]
mov eax, dword [ebp + 0x24]
add edx, dword [ebp + 0x2c]
vinserti128 ymm0, ymm0, xmm1, 1
cmp dword [eax + 0x1c], 0
je 0x103671cf
mov eax, dword [ebp + 0x14]
vpunpcklwd ymm0, ymm0, ymm2
vpmaddwd ymm0, ymm0, ymmword [eax]
vpsrad ymm0, ymm0, 4
vpackusdw ymm1, ymm0, ymm0
jmp 0x103671d8
vpaddw ymm0, ymm0, ymm2
vpsraw ymm1, ymm0, 1
mov eax, dword [ebp + 0x18]
vpaddw ymm0, ymm1, ymmword [eax]
mov eax, dword [ebp + 0x1c]
vpaddw ymm1, ymm0, ymmword [eax]
vmovd xmm0, dword [ebp + 0x40]
mov eax, dword [ebp + 0x24]
vpsraw ymm0, ymm1, xmm0
vpackuswb ymm0, ymm0, ymm0
vmovd dword [ecx], xmm0
vextracti128 xmm0, ymm0, 1
vmovd dword [edx], xmm0
jmp 0x10367217
mov ecx, dword [ebp + 8]
vextracti128 xmm0, ymm2, 1
vmovq qword [ecx], xmm2
vmovq qword [edx], xmm0
cmp dword [ebp + 0x3c], 4
jle 0x10367354
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov eax, edx
vmovd xmm0, dword [ebp + 0x34]
imul eax, esi
imul edx, edi
add eax, 4
add eax, dword [ebp + 0x2c]
add edx, dword [ebp + 0x2c]
lea eax, [ecx + eax*2]
mov dword [ebp + 8], eax
lea edx, [ecx + edx*2]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
vpaddd ymm1, ymm5, ymmword [eax]
mov eax, dword [ebp + 0x24]
vpsrad ymm0, ymm1, xmm0
vpackusdw ymm2, ymm0, ymm0
cmp dword [eax], 0
je 0x103672dc
imul esi, dword [ebp + 0x38]
imul edi, dword [ebp + 0x38]
vmovq xmm1, qword [edx + 8]
vmovq xmm0, qword [ecx]
vinserti128 ymm0, ymm0, xmm1, 1
add esi, dword [ebp + 0x20]
add edi, dword [ebp + 0x20]
add esi, dword [ebp + 0x2c]
add edi, dword [ebp + 0x2c]
cmp dword [eax + 0x1c], 0
je 0x103672a1
mov eax, dword [ebp + 0x14]
vpunpcklwd ymm0, ymm0, ymm2
vpmaddwd ymm0, ymm0, ymmword [eax]
vpsrad ymm0, ymm0, 4
vpackusdw ymm1, ymm0, ymm0
jmp 0x103672aa
vpaddw ymm0, ymm0, ymm2
vpsraw ymm1, ymm0, 1
mov eax, dword [ebp + 0x18]
vpaddw ymm0, ymm1, ymmword [eax]
mov eax, dword [ebp + 0x1c]
vpaddw ymm1, ymm0, ymmword [eax]
vmovd xmm0, dword [ebp + 0x40]
vpsraw ymm0, ymm1, xmm0
vpackuswb ymm0, ymm0, ymm0
vmovd dword [esi + 4], xmm0
vextracti128 xmm0, ymm0, 1
vmovd dword [edi + 4], xmm0
pop edi
pop esi
vzeroupper
pop ebp
ret
vextracti128 xmm0, ymm2, 1
pop edi
vmovq qword [ecx], xmm2
vmovq qword [edx + 8], xmm0
pop esi
vzeroupper
pop ebp
ret
mov eax, dword [ebp + 0x10]
imul esi, dword [ebp + 0x38]
imul edi, dword [ebp + 0x38]
vmovdqu ymm3, ymmword [eax]
mov eax, dword [ebp + 0x34]
add esi, dword [ebp + 0x20]
add edi, dword [ebp + 0x20]
cmp dword [ebp + 0x3c], 4
vmovd xmm0, eax
vpaddd ymm1, ymm5, ymm3
vpsrad ymm2, ymm1, xmm0
vpaddd ymm1, ymm4, ymm3
vmovd xmm0, eax
mov eax, dword [ebp + 0x2c]
vpsrad ymm0, ymm1, xmm0
vpackssdw ymm0, ymm0, ymm2
vpackuswb ymm0, ymm0, ymm0
vextracti128 xmm1, ymm0, 1
jne 0x1036734a
vmovd dword [esi + eax], xmm0
vmovd dword [edi + eax], xmm1
pop edi
pop esi
vzeroupper
pop ebp
ret
vmovq qword [esi + eax], xmm0
vmovq qword [edi + eax], xmm1
pop edi
pop esi
vzeroupper
pop ebp
ret