Function at 0x10149010
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, 0x518
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 - 0x248], eax
mov eax, 1
shl ax, cl
dec ax
mov dword [ebp - 0x244], edx
cwde
vmovd xmm0, eax
mov eax, dword [ebx + 0x1c]
vpbroadcastw ymm0, xmm0
vmovdqu ymmword [ebp - 0x4c0], ymm0
vbroadcastf128 ymm0, xmmword [eax]
vpshufb ymm1, ymm0, ymmword [0x103e1b40]
mov esi, dword [ebx + 0xc]
lea eax, [ebp - 0x240]
mov edi, dword [ebx + 0x14]
vmovdqu ymmword [ebp - 0x3e0], 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 - 0x2c0], ymm0
push edx
vzeroupper
call fcn.1014aa90
vmovdqu ymm1, ymmword [ebp - 0x80]
vmovdqu ymmword [ebp - 0x3a0], ymm1
vmovdqu ymm1, ymmword [ebp - 0xa0]
vmovdqu ymmword [ebp - 0x360], ymm1
vmovdqu ymm1, ymmword [ebp - 0xc0]
vmovdqu ymm6, ymmword [ebp - 0x200]
vmovdqu ymm0, ymmword [ebp - 0x40]
vmovdqu ymmword [ebp - 0x460], ymm1
vmovdqu ymm1, ymmword [ebp - 0x100]
vmovdqu ymmword [ebp - 0x380], ymm1
vmovdqu ymm1, ymmword [ebp - 0x120]
vmovdqu ymmword [ebp - 0x340], ymm1
vmovdqu ymm1, ymmword [ebp - 0x140]
vmovdqu ymmword [ebp - 0x440], ymm1
vmovdqu ymm1, ymmword [ebp - 0x180]
vmovdqu ymmword [ebp - 0x320], ymm1
vmovdqu ymm1, ymmword [ebp - 0x1a0]
lea edx, [edi + edi]
mov ecx, esi
vmovdqu ymmword [ebp - 0x300], ymm1
vmovdqu ymm1, ymmword [ebp - 0x1c0]
mov dword [ebp - 0x24c], edx
lea eax, [esi*8]
lea edx, [esi*4]
sub eax, esi
mov esi, dword [ebp - 0x248]
add eax, eax
vmovdqu ymmword [ebp - 0x420], ymm1
vmovdqu ymm1, ymmword [ebp - 0x220]
mov dword [ebp - 0x250], edx
add esp, 0xc
lea edx, [edi*4]
mov dword [ebp - 0x258], eax
mov edi, dword [ebx + 0x18]
add ecx, ecx
vmovdqu ymmword [ebp - 0x2e0], ymm1
vmovdqu ymm1, ymmword [ebp - 0x240]
mov dword [ebp - 0x254], edx
mov edx, dword [ebp - 0x244]
vmovdqu ymmword [ebp - 0x3c0], ymm6
vmovdqu ymmword [ebp - 0x400], ymm1
nop dword [eax + eax]
vmovdqu ymm1, ymmword [eax + edx]
vperm2i128 ymm2, ymm0, ymm1, 0x20
vperm2i128 ymm3, ymm0, ymm1, 0x31
vmovdqu ymm4, ymmword [edx + ecx*8]
vperm2i128 ymm0, ymm1, ymm4, 0x20
vpunpcklwd ymm5, ymm2, ymm0
vpunpckhwd ymm7, ymm2, ymm0
vperm2i128 ymm1, ymm1, ymm4, 0x31
vpunpcklwd ymm0, ymm3, ymm1
vmovdqu ymmword [ebp - 0x480], ymm0
vpunpckhwd ymm0, ymm3, ymm1
vmovdqu ymmword [ebp - 0x4a0], ymm0
vmovdqu ymm0, ymmword [ebp - 0x2e0]
vpmaddwd ymm1, ymm0, ymmword [ebp - 0x280]
vpmaddwd ymm0, ymm6, ymmword [ebp - 0x2a0]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vpmaddwd ymm1, ymm5, ymmword [ebp - 0x2c0]
vmovdqu ymmword [ebp - 0x500], ymm4
vmovdqu ymm4, ymmword [ebp - 0x3e0]
vpmaddwd ymm0, ymm4, ymmword [ebp - 0x400]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x103e1b20]
vpsrad ymm6, ymm0, 7
vmovdqu ymm0, ymmword [ebp - 0x300]
vpmaddwd ymm1, ymm0, ymmword [ebp - 0x280]
vmovdqu ymm0, ymmword [ebp - 0x320]
vpmaddwd ymm0, ymm0, ymmword [ebp - 0x2a0]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vpmaddwd ymm1, ymm7, ymmword [ebp - 0x2c0]
vpmaddwd ymm0, ymm4, ymmword [ebp - 0x420]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x103e1b20]
vmovdqu ymmword [ebp - 0x4e0], ymm5
vpsrad ymm5, ymm0, 7
vmovdqu ymm0, ymmword [ebp - 0x340]
vpmaddwd ymm1, ymm0, ymmword [ebp - 0x280]
vmovdqu ymm0, ymmword [ebp - 0x380]
vpmaddwd ymm0, ymm0, ymmword [ebp - 0x2a0]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vmovdqu ymm0, ymmword [ebp - 0x480]
vpmaddwd ymm1, ymm0, ymmword [ebp - 0x2c0]
vpmaddwd ymm0, ymm4, ymmword [ebp - 0x440]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x103e1b20]
vpsrad ymm4, ymm0, 7
vmovdqu ymm0, ymmword [ebp - 0x360]
vpmaddwd ymm1, ymm0, ymmword [ebp - 0x280]
vmovdqu ymm0, ymmword [ebp - 0x3a0]
vpmaddwd ymm0, ymm0, ymmword [ebp - 0x2a0]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vmovdqu ymm0, ymmword [ebp - 0x460]
vpmaddwd ymm0, ymm0, ymmword [ebp - 0x3e0]
mov eax, dword [ebp - 0x24c]
vpackusdw ymm5, ymm6, ymm5
vmovdqu ymm6, ymmword [ebp - 0x4a0]
vpmaddwd ymm1, ymm6, ymmword [ebp - 0x2c0]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x103e1b20]
vpsrad ymm0, ymm0, 7
vpackusdw ymm1, ymm4, ymm0
vperm2i128 ymm0, ymm5, ymm1, 0x20
vpminsw ymm0, ymm0, ymmword [ebp - 0x4c0]
vmovdqu ymmword [esi], ymm0
vperm2i128 ymm0, ymm5, ymm1, 0x31
vpminsw ymm0, ymm0, ymmword [ebp - 0x4c0]
vmovdqu ymmword [eax + esi], ymm0
vmovdqu ymm0, ymmword [ebp - 0x2e0]
vmovdqu ymmword [ebp - 0x400], ymm0
vmovdqu ymm0, ymmword [ebp - 0x300]
add edx, dword [ebp - 0x250]
add esi, dword [ebp - 0x254]
mov eax, dword [ebp - 0x258]
vmovdqu ymmword [ebp - 0x420], ymm0
vmovdqu ymm0, ymmword [ebp - 0x3c0]
vmovdqu ymmword [ebp - 0x2e0], ymm0
vmovdqu ymm0, ymmword [ebp - 0x320]
vmovdqu ymmword [ebp - 0x300], ymm0
vmovdqu ymm0, ymmword [ebp - 0x4e0]
vmovdqu ymmword [ebp - 0x3c0], ymm0
vmovdqu ymm0, ymmword [ebp - 0x340]
vmovdqu ymmword [ebp - 0x440], ymm0
vmovdqu ymm0, ymmword [ebp - 0x360]
vmovdqu ymmword [ebp - 0x460], ymm0
vmovdqu ymm0, ymmword [ebp - 0x380]
vmovdqu ymmword [ebp - 0x340], ymm0
vmovdqu ymm0, ymmword [ebp - 0x3a0]
vmovdqu ymmword [ebp - 0x360], ymm0
vmovdqu ymm0, ymmword [ebp - 0x480]
vmovdqu ymmword [ebp - 0x380], ymm0
vmovdqu ymm0, ymmword [ebp - 0x500]
vmovdqu ymmword [ebp - 0x3a0], ymm6
vmovdqu ymm6, ymmword [ebp - 0x3c0]
vmovdqu ymmword [ebp - 0x320], ymm7
sub edi, 2
jne 0x101491e0
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