Function at 0x10149f50
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xffffffe0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x318
mov eax, dword [0x1070dd84]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x20]
mov edx, dword [ebx + 8]
mov dword [ebp - 0x148], eax
mov eax, 1
shl ax, cl
dec ax
mov dword [ebp - 0x144], edx
cwde
vmovd xmm0, eax
mov eax, dword [ebx + 0x1c]
vpbroadcastw ymm0, xmm0
vmovdqu ymmword [ebp - 0x2e0], ymm0
vbroadcastf128 ymm0, xmmword [eax]
vpshufb ymm1, ymm0, ymmword [0x103e1b40]
mov esi, dword [ebx + 0xc]
lea eax, [ebp - 0x140]
mov edi, dword [ebx + 0x14]
vmovdqu ymmword [ebp - 0x1c0], ymm1
vpshufb ymm1, ymm0, ymmword [0x103e1b60]
vmovdqu ymmword [ebp - 0x280], ymm1
vpshufb ymm1, ymm0, ymmword [0x103e1ba0]
vpshufb ymm0, ymm0, ymmword [0x103e1bc0]
push eax
push esi
vmovdqu ymmword [ebp - 0x2a0], ymm1
vmovdqu ymmword [ebp - 0x1a0], ymm0
push edx
vzeroupper
call fcn.1014abe0
vmovdqu ymm0, ymmword [ebp - 0xa0]
vmovdqu ymm4, ymmword [ebp - 0x80]
vmovdqu ymm5, ymmword [ebp - 0x100]
vmovdqu ymm6, ymmword [ebp - 0x120]
vmovdqu ymm1, ymmword [ebp - 0x40]
lea ecx, [edi + edi]
mov edx, esi
mov dword [ebp - 0x14c], ecx
lea eax, [esi*8]
lea ecx, [esi*4]
sub eax, esi
mov esi, dword [ebp - 0x148]
add eax, eax
vmovdqu ymmword [ebp - 0x180], ymm0
vmovdqu ymm0, ymmword [ebp - 0xc0]
mov dword [ebp - 0x150], ecx
add esp, 0xc
lea ecx, [edi*4]
mov dword [ebp - 0x158], eax
mov edi, dword [ebx + 0x18]
add edx, edx
vmovdqu ymmword [ebp - 0x200], ymm0
vmovdqu ymm0, ymmword [ebp - 0x140]
mov dword [ebp - 0x154], ecx
mov ecx, dword [ebp - 0x144]
vmovdqu ymmword [ebp - 0x260], ymm4
vmovdqu ymmword [ebp - 0x240], ymm5
vmovdqu ymmword [ebp - 0x220], ymm6
vmovdqu ymmword [ebp - 0x1e0], ymm0
nop dword [eax + eax]
vmovdqu xmm0, xmmword [eax + ecx]
vmovdqu xmm2, xmmword [ecx + edx*8]
vinserti128 ymm1, ymm1, xmm0, 1
vinserti128 ymm0, ymm0, xmm2, 1
vpunpcklwd ymm3, ymm1, ymm0
vpunpckhwd ymm7, ymm1, ymm0
vmovdqu ymm0, ymmword [ebp - 0x280]
vpmaddwd ymm1, ymm0, ymmword [ebp - 0x180]
vpmaddwd ymm6, ymm6, ymm0
vpmaddwd ymm0, ymm4, ymmword [ebp - 0x2a0]
vpmaddwd ymm5, ymm5, ymmword [ebp - 0x2a0]
vmovdqu ymmword [ebp - 0x2c0], ymm3
vpmaxsd ymm3, ymm0, ymm1
vmovdqu ymmword [ebp - 0x300], ymm2
vpminsd ymm2, ymm0, ymm1
vmovdqu ymm0, ymmword [ebp - 0x1c0]
vpmaddwd ymm1, ymm0, ymmword [ebp - 0x200]
vpmaddwd ymm0, ymm7, ymmword [ebp - 0x1a0]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x103e1b20]
mov eax, dword [ebp - 0x14c]
vpsrad ymm4, ymm0, 7
vmovdqu ymm0, ymmword [ebp - 0x1c0]
vpmaddwd ymm0, ymm0, ymmword [ebp - 0x1e0]
add ecx, dword [ebp - 0x150]
vpmaxsd ymm3, ymm5, ymm6
vpminsd ymm2, ymm5, ymm6
vmovdqu ymm5, ymmword [ebp - 0x2c0]
vpmaddwd ymm1, ymm5, ymmword [ebp - 0x1a0]
vpaddd ymm0, ymm0, ymm1
vmovdqu ymm6, ymmword [ebp - 0x240]
vpaddd ymm0, ymm0, ymm2
vmovdqu ymm1, ymmword [ebp - 0x300]
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x103e1b20]
vpsrad ymm0, ymm0, 7
vpackusdw ymm0, ymm0, ymm4
vpminsw ymm0, ymm0, ymmword [ebp - 0x2e0]
vmovdqu xmmword [esi], xmm0
vextractf128 xmm0, ymm0, 1
vmovdqu xmmword [eax + esi], xmm0
vmovdqu ymm0, ymmword [ebp - 0x220]
add esi, dword [ebp - 0x154]
mov eax, dword [ebp - 0x158]
vmovdqu ymmword [ebp - 0x1e0], ymm0
vmovdqu ymm0, ymmword [ebp - 0x180]
vmovdqu ymmword [ebp - 0x200], ymm0
vmovdqu ymm0, ymmword [ebp - 0x260]
vmovdqu ymm4, ymm7
vmovdqu ymmword [ebp - 0x220], ymm6
vmovdqu ymmword [ebp - 0x180], ymm0
vmovdqu ymmword [ebp - 0x240], ymm5
vmovdqu ymmword [ebp - 0x260], ymm4
sub edi, 2
jne 0x1014a0c0
vzeroupper
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.10398bef
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret