Function at 0x101cdbd0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffe0
sub esp, 0x4f8
mov eax, dword [0x10a78b80]
xor eax, esp
mov dword [esp + 0x4f4], eax
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, 1
shl ax, cl
dec ax
mov dword [esp], edx
cwde
vmovd xmm0, eax
mov eax, dword [ebp + 0x1c]
vpbroadcastw ymm0, xmm0
vmovdqu ymmword [esp + 0x258], ymm0
push esi
vbroadcastf128 ymm0, xmmword [eax]
vpshufb ymm1, ymm0, ymmword [0x1085b620]
mov esi, dword [ebp + 0xc]
lea eax, [esp + 0x2bc]
push edi
mov edi, dword [ebp + 0x14]
vmovdqu ymmword [esp + 0x180], ymm1
vpshufb ymm1, ymm0, ymmword [0x1085b640]
vmovdqu ymmword [esp + 0x20], ymm1
vpshufb ymm1, ymm0, ymmword [0x1085b680]
vpshufb ymm0, ymm0, ymmword [0x1085b6a0]
push eax
push esi
vmovdqu ymmword [esp + 0x48], ymm1
vmovdqu ymmword [esp + 0x68], ymm0
push edx
vzeroupper
call fcn.101cf6c0
vmovdqu ymm1, ymmword [esp + 0x48c]
vmovdqu ymmword [esp + 0x14c], ymm1
vmovdqu ymm1, ymmword [esp + 0x46c]
vmovdqu ymmword [esp + 0x10c], ymm1
vmovdqu ymm1, ymmword [esp + 0x44c]
vmovdqu ymm6, ymmword [esp + 0x30c]
vmovdqu ymm0, ymmword [esp + 0x4cc]
vmovdqu ymmword [esp + 0x20c], ymm1
vmovdqu ymm1, ymmword [esp + 0x40c]
vmovdqu ymmword [esp + 0x12c], ymm1
vmovdqu ymm1, ymmword [esp + 0x3ec]
vmovdqu ymmword [esp + 0xec], ymm1
vmovdqu ymm1, ymmword [esp + 0x3cc]
vmovdqu ymmword [esp + 0x1ec], ymm1
vmovdqu ymm1, ymmword [esp + 0x38c]
vmovdqu ymmword [esp + 0xcc], ymm1
vmovdqu ymm1, ymmword [esp + 0x36c]
lea edx, [edi + edi]
mov ecx, esi
vmovdqu ymmword [esp + 0xac], ymm1
vmovdqu ymm1, ymmword [esp + 0x34c]
mov dword [esp + 0x1c], edx
lea eax, [esi*8]
lea edx, [esi*4]
sub eax, esi
mov esi, dword [esp + 0x18]
add eax, eax
vmovdqu ymmword [esp + 0x1cc], ymm1
vmovdqu ymm1, ymmword [esp + 0x2ec]
mov dword [esp + 0x20], edx
add esp, 0xc
lea edx, [edi*4]
mov dword [esp + 0x1c], eax
mov edi, dword [ebp + 0x18]
add ecx, ecx
vmovdqu ymmword [esp + 0x80], ymm1
vmovdqu ymm1, ymmword [esp + 0x2c0]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 8]
vmovdqu ymmword [esp + 0x160], ymm6
vmovdqu ymmword [esp + 0x1a0], ymm1
nop word [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 [esp + 0x220], ymm0
vpunpckhwd ymm0, ymm3, ymm1
vmovdqu ymmword [esp + 0x240], ymm0
vmovdqu ymm0, ymmword [esp + 0x80]
vpmaddwd ymm1, ymm0, ymmword [esp + 0x20]
vpmaddwd ymm0, ymm6, ymmword [esp + 0x40]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vpmaddwd ymm1, ymm5, ymmword [esp + 0x60]
vmovdqu ymmword [esp + 0x2a0], ymm4
vmovdqu ymm4, ymmword [esp + 0x180]
vpmaddwd ymm0, ymm4, ymmword [esp + 0x1a0]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x10859be0]
vpsrad ymm6, ymm0, 7
vmovdqu ymm0, ymmword [esp + 0xa0]
vpmaddwd ymm1, ymm0, ymmword [esp + 0x20]
vmovdqu ymm0, ymmword [esp + 0xc0]
vpmaddwd ymm0, ymm0, ymmword [esp + 0x40]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vpmaddwd ymm1, ymm7, ymmword [esp + 0x60]
vpmaddwd ymm0, ymm4, ymmword [esp + 0x1c0]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x10859be0]
vmovdqu ymmword [esp + 0x280], ymm5
vpsrad ymm5, ymm0, 7
vmovdqu ymm0, ymmword [esp + 0xe0]
vpmaddwd ymm1, ymm0, ymmword [esp + 0x20]
vmovdqu ymm0, ymmword [esp + 0x120]
vpmaddwd ymm0, ymm0, ymmword [esp + 0x40]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vmovdqu ymm0, ymmword [esp + 0x220]
vpmaddwd ymm1, ymm0, ymmword [esp + 0x60]
vpmaddwd ymm0, ymm4, ymmword [esp + 0x1e0]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x10859be0]
vpsrad ymm4, ymm0, 7
vmovdqu ymm0, ymmword [esp + 0x100]
vpmaddwd ymm1, ymm0, ymmword [esp + 0x20]
vmovdqu ymm0, ymmword [esp + 0x140]
vpmaddwd ymm0, ymm0, ymmword [esp + 0x40]
vpmaxsd ymm3, ymm0, ymm1
vpminsd ymm2, ymm0, ymm1
vmovdqu ymm0, ymmword [esp + 0x200]
vpmaddwd ymm0, ymm0, ymmword [esp + 0x180]
mov eax, dword [esp + 0x10]
vpackusdw ymm5, ymm6, ymm5
vmovdqu ymm6, ymmword [esp + 0x240]
vpmaddwd ymm1, ymm6, ymmword [esp + 0x60]
vpaddd ymm0, ymm0, ymm1
vpaddd ymm0, ymm0, ymm2
vpaddd ymm0, ymm0, ymm3
vpaddd ymm0, ymm0, ymmword [0x10859be0]
vpsrad ymm0, ymm0, 7
vpackusdw ymm1, ymm4, ymm0
vperm2i128 ymm0, ymm5, ymm1, 0x20
vpminsw ymm0, ymm0, ymmword [esp + 0x260]
vmovdqu ymmword [esi], ymm0
vperm2i128 ymm0, ymm5, ymm1, 0x31
vpminsw ymm0, ymm0, ymmword [esp + 0x260]
vmovdqu ymmword [eax + esi], ymm0
vmovdqu ymm0, ymmword [esp + 0x80]
vmovdqu ymmword [esp + 0x1a0], ymm0
vmovdqu ymm0, ymmword [esp + 0xa0]
add edx, dword [esp + 0x14]
add esi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
vmovdqu ymmword [esp + 0x1c0], ymm0
vmovdqu ymm0, ymmword [esp + 0x160]
vmovdqu ymmword [esp + 0x80], ymm0
vmovdqu ymm0, ymmword [esp + 0xc0]
vmovdqu ymmword [esp + 0xa0], ymm0
vmovdqu ymm0, ymmword [esp + 0x280]
vmovdqu ymmword [esp + 0x160], ymm0
vmovdqu ymm0, ymmword [esp + 0xe0]
vmovdqu ymmword [esp + 0x1e0], ymm0
vmovdqu ymm0, ymmword [esp + 0x100]
vmovdqu ymmword [esp + 0x200], ymm0
vmovdqu ymm0, ymmword [esp + 0x120]
vmovdqu ymmword [esp + 0xe0], ymm0
vmovdqu ymm0, ymmword [esp + 0x140]
vmovdqu ymmword [esp + 0x100], ymm0
vmovdqu ymm0, ymmword [esp + 0x220]
vmovdqu ymmword [esp + 0x120], ymm0
vmovdqu ymm0, ymmword [esp + 0x2a0]
vmovdqu ymmword [esp + 0x140], ymm6
vmovdqu ymm6, ymmword [esp + 0x160]
vmovdqu ymmword [esp + 0xc0], ymm7
sub edi, 2
jne 0x101cdda0
vzeroupper
mov ecx, dword [esp + 0x4fc]
pop edi
pop esi
xor ecx, esp
call fcn.105116c0
mov esp, ebp
pop ebp
ret