SymCryptParallelSha256AppendBlocks_ymm

NTSTATUS __stdcall SymCryptParallelSha256AppendBlocks_ymm(INT64 *a1, INT64 *a2, UINT64 a3, INT64 R9){
  UINT64 v51; 
  __int64 v53; 
  __int64 v107; 
  int *v155; 
  __m256i v370; 

  _RBP = (unsigned __int64)&v370 & 0xFFFFFFFFFFFFFFE0ui64;
  _RAX = *a1;
  _XMM0 = 0i64;
  _XMM1 = 0i64;
  *(_OWORD *)(_RBP + 32) = 0i64;
  __asm { vmovdqu ymm8, ymmword ptr [rax] }
  _RAX = a1[1];
  __asm
  {
    vmovups xmmword ptr [rbp+7C0h+var_7A0+10h], xmm0
    vmovups xmmword ptr [rbp+7C0h+var_760], xmm0
    vmovups xmmword ptr [rbp+7C0h+var_760+10h], xmm0
    vmovdqu ymm0, ymmword ptr [rax]
  }
  _RAX = a1[2];
  __asm
  {
    vpunpckldq ymm6, ymm8, ymm0
    vpunpckhdq ymm9, ymm8, ymm0
    vmovups xmmword ptr [rbp+7C0h+var_780], xmm1
    vmovdqu ymm7, ymmword ptr [rax]
  }
  _RAX = a1[3];
  __asm
  {
    vmovups xmmword ptr [rbp+7C0h+var_780+10h], xmm1
    vmovups xmmword ptr [rbp+7C0h+var_7C0], xmm1
    vmovdqu ymm3, ymmword ptr [rax]
  }
  _RAX = a1[4];
  __asm
  {
    vpunpckldq ymm0, ymm7, ymm3
    vpunpckhqdq ymm11, ymm6, ymm0
    vpunpcklqdq ymm13, ymm6, ymm0
    vmovdqu ymm5, ymmword ptr [rax]
  }
  _RAX = a1[5];
  __asm
  {
    vmovups xmmword ptr [rbp+7C0h+var_7C0+10h], xmm1
    vpunpckhdq ymm3, ymm7, ymm3
    vmovups xmmword ptr [rbp+7C0h+var_740], xmm1
    vmovdqu ymm2, ymmword ptr [rax]
  }
  _RAX = a1[6];
  __asm
  {
    vpunpckldq ymm8, ymm5, ymm2
    vpunpckhdq ymm10, ymm5, ymm2
    vmovups xmmword ptr [rbp+7C0h+var_740+10h], xmm1
    vmovdqu ymm4, ymmword ptr [rax]
  }
  _RAX = a1[7];
  __asm
  {
    vpunpcklqdq ymm12, ymm9, ymm3
    vpunpckhqdq ymm9, ymm9, ymm3
    vmovdqu ymm1, ymmword ptr [rax]
    vpunpckldq ymm2, ymm4, ymm1
    vpunpckhdq ymm5, ymm4, ymm1
    vpunpcklqdq ymm7, ymm8, ymm2
    vpunpckhqdq ymm6, ymm8, ymm2
    vperm2i128 ymm0, ymm13, ymm7, 20h ; ' '
    vmovdqu ymmword ptr [r9+160h], ymm0
    vpunpcklqdq ymm4, ymm10, ymm5
    vperm2i128 ymm0, ymm12, ymm4, 20h ; ' '
    vmovdqu ymmword ptr [r9+120h], ymm0
    vperm2i128 ymm1, ymm11, ymm6, 20h ; ' '
    vmovdqu ymmword ptr [r9+140h], ymm1
    vperm2i128 ymm0, ymm13, ymm7, 31h ; '1'
    vmovdqu ymmword ptr [r9+0E0h], ymm0
    vperm2i128 ymm1, ymm11, ymm6, 31h ; '1'
    vmovdqu ymmword ptr [r9+0C0h], ymm1
    vpunpckhqdq ymm3, ymm10, ymm5
    vperm2i128 ymm0, ymm12, ymm4, 31h ; '1'
    vmovdqu ymmword ptr [r9+0A0h], ymm0
    vperm2i128 ymm2, ymm9, ymm3, 20h ; ' '
    vmovdqu ymmword ptr [r9+100h], ymm2
    vperm2i128 ymm1, ymm9, ymm3, 31h ; '1'
    vmovdqu ymmword ptr [r9+80h], ymm1
    vmovdqu ymmword ptr [r9], ymm2
    vmovdqu ymm0, ymmword ptr [r9+120h]
    vmovdqu ymmword ptr [r9+20h], ymm0
    vmovdqu ymm1, ymmword ptr [r9+140h]
    vmovdqu ymmword ptr [r9+40h], ymm1
    vmovdqu ymm0, ymmword ptr [r9+160h]
    vmovdqu ymmword ptr [r9+60h], ymm0
    vzeroupper
  }
  if( a3 < 0x40 )
  {
    __asm
    {
      vmovdqu ymm7, ymmword ptr [r9+0E0h]
      vmovdqu ymm8, ymmword ptr [r9+0C0h]
      vmovdqu ymm9, ymmword ptr [r9+0A0h]
      vmovdqu ymm10, ymmword ptr [r9+80h]
    }
  }
  else
  {
    _R11 = R9 + 224;
    v51 = a3 >> 6;
    do
    {
      _R8 = R9 + 448;
      v53 = 2i64;
      do
      {
        _RAX = *a2;
        __asm
        {
          vmovdqu ymm1, cs:__ymm@0c0d0e0f08090a0b04050607000102030c0d0e0f08090a0b0405060700010203
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm9, ymm0, ymm1
        }
        *a2 += 32i64;
        _RAX = a2[1];
        __asm
        {
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm7, ymm0, ymm1
        }
        a2[1] = _RAX + 32;
        _RAX = a2[2];
        __asm
        {
          vpunpckldq ymm4, ymm9, ymm7
          vpunpckhdq ymm7, ymm9, ymm7
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm6, ymm0, ymm1
        }
        a2[2] = _RAX + 32;
        _RAX = a2[3];
        __asm
        {
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm3, ymm0, ymm1
        }
        a2[3] = _RAX + 32;
        _RAX = a2[4];
        __asm
        {
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm8, ymm0, ymm1
        }
        a2[4] = _RAX + 32;
        _RAX = a2[5];
        __asm
        {
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm2, ymm0, ymm1
        }
        a2[5] = _RAX + 32;
        _RAX = a2[6];
        __asm
        {
          vpunpckhdq ymm9, ymm8, ymm2
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm5, ymm0, ymm1
        }
        a2[6] = _RAX + 32;
        _RAX = a2[7];
        __asm
        {
          vmovdqu ymm0, ymmword ptr [rax]
          vpshufb ymm1, ymm0, ymm1
          vpunpckldq ymm0, ymm6, ymm3
          vpunpckhqdq ymm10, ymm4, ymm0
          vpunpcklqdq ymm11, ymm4, ymm0
          vpunpckhdq ymm3, ymm6, ymm3
          vpunpckldq ymm6, ymm8, ymm2
          vpunpckldq ymm2, ymm5, ymm1
          vpunpckhdq ymm1, ymm5, ymm1
          vpunpcklqdq ymm8, ymm7, ymm3
          vpunpcklqdq ymm5, ymm6, ymm2
          vpunpckhqdq ymm4, ymm6, ymm2
          vpunpckhqdq ymm2, ymm9, ymm1
          vpunpckhqdq ymm7, ymm7, ymm3
          vpunpcklqdq ymm3, ymm9, ymm1
        }
        a2[7] = _RAX + 32;
        __asm
        {
          vperm2i128 ymm0, ymm11, ymm5, 20h ; ' '
          vmovdqu ymmword ptr [r8-40h], ymm0
          vperm2i128 ymm1, ymm10, ymm4, 20h ; ' '
          vmovdqu ymmword ptr [r8-20h], ymm1
          vperm2i128 ymm0, ymm8, ymm3, 20h ; ' '
          vmovdqu ymmword ptr [r8], ymm0
        }
        _R8 += 256i64;
        __asm
        {
          vperm2i128 ymm1, ymm7, ymm2, 20h ; ' '
          vmovdqu ymmword ptr [r8-0E0h], ymm1
          vperm2i128 ymm0, ymm11, ymm5, 31h ; '1'
          vperm2i128 ymm1, ymm10, ymm4, 31h ; '1'
          vmovdqu ymmword ptr [r8-0C0h], ymm0
          vmovdqu ymmword ptr [r8-0A0h], ymm1
          vperm2i128 ymm0, ymm8, ymm3, 31h ; '1'
          vperm2i128 ymm1, ymm7, ymm2, 31h ; '1'
          vmovdqu ymmword ptr [r8-80h], ymm0
          vmovdqu ymmword ptr [r8-60h], ymm1
        }
        --v53;
      }
      while( v53 );
      __asm
      {
        vmovdqu ymm8, ymmword ptr [r9+360h]
        vmovdqu ymm9, ymmword ptr [r9+340h]
        vmovdqu ymm10, ymmword ptr [r9+180h]
      }
      _RAX = R9 + 672;
      v107 = (unsigned int)(unsigned __int8)v53 + 24;
      do
      {
        __asm
        {
          vmovdqu ymm7, ymmword ptr [rax-100h]
          vpsrld  ymm5, ymm9, 0Ah
          vpslld  ymm0, ymm7, 19h
          vpsrld  ymm4, ymm7, 3
          vpsrld  ymm1, ymm7, 7
          vpxor   ymm1, ymm0, ymm1
          vpsrld  ymm0, ymm9, 11h
          vpslld  ymm2, ymm7, 0Eh
          vpxor   ymm2, ymm1, ymm2
          vpslld  ymm1, ymm9, 0Fh
          vpxor   ymm1, ymm0, ymm1
          vpsrld  ymm3, ymm7, 12h
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm6, ymm3, ymm4
          vpsrld  ymm4, ymm9, 13h
          vpslld  ymm2, ymm9, 0Dh
          vpxor   ymm2, ymm1, ymm2
          vpxor   ymm3, ymm2, ymm4
          vpxor   ymm0, ymm3, ymm5
          vpaddd  ymm1, ymm0, ymm10
          vpaddd  ymm2, ymm1, ymmword ptr [rax]
          vmovdqu ymm10, ymmword ptr [rax-0E0h]
        }
        _RAX += 64i64;
        __asm
        {
          vpaddd  ymm9, ymm2, ymm6
          vpslld  ymm0, ymm10, 19h
          vpsrld  ymm4, ymm10, 3
          vpsrld  ymm5, ymm8, 0Ah
          vpsrld  ymm1, ymm10, 7
          vpxor   ymm1, ymm0, ymm1
          vpsrld  ymm0, ymm8, 11h
          vpslld  ymm2, ymm10, 0Eh
          vpxor   ymm2, ymm1, ymm2
          vpslld  ymm1, ymm8, 0Fh
          vpxor   ymm1, ymm0, ymm1
          vpsrld  ymm3, ymm10, 12h
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm6, ymm3, ymm4
          vpslld  ymm2, ymm8, 0Dh
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm4, ymm8, 13h
          vpxor   ymm3, ymm2, ymm4
          vpxor   ymm0, ymm3, ymm5
          vpaddd  ymm1, ymm0, ymm7
          vpaddd  ymm2, ymm1, ymmword ptr [rax-20h]
          vpaddd  ymm8, ymm2, ymm6
          vmovdqu ymmword ptr [rax+0C0h], ymm8
          vmovdqu ymmword ptr [rax+0A0h], ymm9
        }
        --v107;
      }
      while( v107 );
      __asm
      {
        vmovdqu ymm9, ymmword ptr [r11]
        vmovdqu ymm12, ymmword ptr [r9+160h]
        vmovdqu ymm13, ymmword ptr [r9+140h]
        vmovdqu ymm14, ymmword ptr [r9+120h]
        vmovdqu ymm15, ymmword ptr [r9+100h]
        vmovdqu [rbp+7C0h+var_7C0], ymm9
      }
      v155 = (int *)&SymCryptSha256K + 2;
      _R8 = R9 + 224;
      do
      {
        _EAX = *(v155 - 2);
        __asm
        {
          vmovdqu ymm8, ymmword ptr [r8-40h]
          vmovdqu ymm10, ymmword ptr [r8-20h]
          vpslld  ymm4, ymm9, 7
          vpsrld  ymm5, ymm9, 19h
          vmovd   xmm7, eax
          vpshufd xmm7, xmm7, 0
          vinsertf128 ymm7, ymm7, xmm7, 1
          vpxor   ymm0, ymm10, ymm8
          vpand   ymm1, ymm0, ymm9
          vpxor   ymm6, ymm1, ymm8
          vpslld  ymm0, ymm9, 1Ah
          vpsrld  ymm1, ymm9, 6
          vpxor   ymm1, ymm0, ymm1
          vpslld  ymm2, ymm9, 15h
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm3, ymm9, 0Bh
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm0, ymm3, ymm4
          vpxor   ymm1, ymm0, ymm5
          vpaddd  ymm2, ymm1, ymmword ptr [r8+0A0h]
          vpaddd  ymm3, ymm2, ymmword ptr [r8-60h]
          vpaddd  ymm0, ymm3, ymm6
          vpaddd  ymm7, ymm0, ymm7
          vpaddd  ymm11, ymm7, ymm15
          vpor    ymm0, ymm13, ymm12
          vpand   ymm1, ymm0, ymm14
          vpand   ymm2, ymm13, ymm12
          vpor    ymm6, ymm1, ymm2
          vpslld  ymm0, ymm12, 1Eh
          vpslld  ymm4, ymm12, 0Ah
          vpsrld  ymm5, ymm12, 16h
          vpsrld  ymm1, ymm12, 2
          vpxor   ymm1, ymm0, ymm1
          vpslld  ymm2, ymm12, 13h
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm3, ymm12, 0Dh
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm0, ymm3, ymm4
          vpxor   ymm1, ymm0, ymm5
          vpaddd  ymm2, ymm1, ymm7
          vpaddd  ymm15, ymm2, ymm6
          vpxor   ymm0, ymm9, ymm10
          vpand   ymm1, ymm0, ymm11
          vpxor   ymm6, ymm1, ymm10
          vpslld  ymm0, ymm11, 1Ah
          vpslld  ymm4, ymm11, 7
          vpsrld  ymm5, ymm11, 19h
          vpsrld  ymm1, ymm11, 6
          vpxor   ymm1, ymm0, ymm1
          vpslld  ymm2, ymm11, 15h
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm3, ymm11, 0Bh
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm0, ymm3, ymm4
          vpxor   ymm1, ymm0, ymm5
          vpaddd  ymm2, ymm1, ymmword ptr [r8+0C0h]
          vpaddd  ymm3, ymm2, ymm8
          vpaddd  ymm0, ymm3, ymm6
          vpand   ymm2, ymm15, ymm12
          vmovdqu ymmword ptr [r8+20h], ymm11
        }
        _EAX = *(v155 - 1);
        __asm
        {
          vmovd   xmm7, eax
          vpshufd xmm7, xmm7, 0
          vinsertf128 ymm7, ymm7, xmm7, 1
          vpaddd  ymm7, ymm0, ymm7
          vpor    ymm0, ymm15, ymm12
          vpand   ymm1, ymm0, ymm13
          vpor    ymm6, ymm1, ymm2
          vpslld  ymm0, ymm15, 1Eh
          vpsrld  ymm1, ymm15, 2
          vpxor   ymm1, ymm0, ymm1
          vpslld  ymm2, ymm15, 13h
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm3, ymm15, 0Dh
          vpxor   ymm3, ymm2, ymm3
          vpaddd  ymm9, ymm7, ymm14
          vpslld  ymm4, ymm15, 0Ah
          vpxor   ymm0, ymm3, ymm4
          vmovdqu ymmword ptr [r8+40h], ymm9
          vpsrld  ymm5, ymm15, 16h
        }
        _EAX = *v155;
        _R8 += 128i64;
        __asm
        {
          vpxor   ymm1, ymm0, ymm5
          vpxor   ymm0, ymm11, [rbp+7C0h+var_7C0]
          vpaddd  ymm2, ymm1, ymm7
          vpaddd  ymm14, ymm2, ymm6
          vpand   ymm1, ymm0, ymm9
          vpxor   ymm6, ymm1, [rbp+7C0h+var_7C0]
          vpslld  ymm0, ymm9, 1Ah
          vpslld  ymm4, ymm9, 7
          vpsrld  ymm5, ymm9, 19h
          vmovd   xmm7, eax
          vpshufd xmm7, xmm7, 0
          vinsertf128 ymm7, ymm7, xmm7, 1
          vpsrld  ymm1, ymm9, 6
          vpxor   ymm1, ymm0, ymm1
          vpslld  ymm2, ymm9, 15h
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm3, ymm9, 0Bh
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm0, ymm3, ymm4
          vpxor   ymm1, ymm0, ymm5
          vpaddd  ymm2, ymm1, ymmword ptr [r8+60h]
          vpaddd  ymm3, ymm2, ymm10
          vpaddd  ymm0, ymm3, ymm6
          vpaddd  ymm7, ymm0, ymm7
          vpaddd  ymm8, ymm7, ymm13
          vpor    ymm0, ymm15, ymm14
          vpand   ymm1, ymm0, ymm12
          vpand   ymm2, ymm15, ymm14
          vpor    ymm6, ymm1, ymm2
          vpslld  ymm0, ymm14, 1Eh
          vpslld  ymm4, ymm14, 0Ah
          vpsrld  ymm5, ymm14, 16h
          vmovdqu ymmword ptr [r8-20h], ymm8
        }
        _EAX = v155[1];
        __asm
        {
          vpsrld  ymm1, ymm14, 2
          vpxor   ymm1, ymm0, ymm1
          vpslld  ymm2, ymm14, 13h
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm3, ymm14, 0Dh
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm0, ymm3, ymm4
          vpxor   ymm1, ymm0, ymm5
          vpaddd  ymm2, ymm1, ymm7
          vpaddd  ymm13, ymm2, ymm6
          vpxor   ymm0, ymm9, ymm11
          vpand   ymm1, ymm0, ymm8
          vpxor   ymm6, ymm1, ymm11
          vpslld  ymm0, ymm8, 1Ah
          vpslld  ymm4, ymm8, 7
          vpsrld  ymm5, ymm8, 19h
          vmovd   xmm7, eax
          vpshufd xmm7, xmm7, 0
          vpsrld  ymm1, ymm8, 6
          vpxor   ymm1, ymm0, ymm1
          vpslld  ymm2, ymm8, 15h
          vpxor   ymm2, ymm1, ymm2
          vpsrld  ymm3, ymm8, 0Bh
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm0, ymm3, ymm4
          vpxor   ymm1, ymm0, ymm5
          vpaddd  ymm2, ymm1, ymmword ptr [r8+80h]
          vpaddd  ymm3, ymm2, [rbp+7C0h+var_7C0]
          vpaddd  ymm0, ymm3, ymm6
          vpand   ymm2, ymm14, ymm13
          vinsertf128 ymm7, ymm7, xmm7, 1
          vpaddd  ymm7, ymm0, ymm7
          vpor    ymm0, ymm14, ymm13
          vpand   ymm1, ymm0, ymm15
          vpor    ymm6, ymm1, ymm2
          vpaddd  ymm9, ymm7, ymm12
          vpsrld  ymm1, ymm13, 2
          vpslld  ymm0, ymm13, 1Eh
          vpxor   ymm1, ymm0, ymm1
          vmovdqu [rbp+7C0h+var_7C0], ymm9
          vmovdqu ymmword ptr [r8], ymm9
          vpsrld  ymm5, ymm13, 16h
          vpslld  ymm4, ymm13, 0Ah
          vpsrld  ymm3, ymm13, 0Dh
          vpslld  ymm2, ymm13, 13h
          vpxor   ymm2, ymm1, ymm2
          vpxor   ymm3, ymm2, ymm3
          vpxor   ymm0, ymm3, ymm4
          vpxor   ymm1, ymm0, ymm5
        }
        v155 += 4;
        __asm
        {
          vpaddd  ymm2, ymm1, ymm7
          vpaddd  ymm12, ymm2, ymm6
        }
      }
      while( (__int64)v155 < (__int64)&_xmm + 8 );
      __asm
      {
        vpaddd  ymm1, ymm12, ymmword ptr [r9+60h]
        vmovdqu ymmword ptr [r9+160h], ymm1
        vpaddd  ymm0, ymm13, ymmword ptr [r9+40h]
        vmovdqu ymmword ptr [r9+60h], ymm1
        vmovdqu ymmword ptr [r9+140h], ymm0
        vpaddd  ymm1, ymm14, ymmword ptr [r9+20h]
        vmovdqu ymmword ptr [r9+40h], ymm0
        vmovdqu ymmword ptr [r9+120h], ymm1
        vpaddd  ymm0, ymm15, ymmword ptr [r9]
        vmovdqu ymmword ptr [r9+20h], ymm1
        vmovdqu ymmword ptr [r9+100h], ymm0
        vmovdqu ymmword ptr [r9], ymm0
        vmovdqu ymm0, ymmword ptr [r9+8E0h]
        vpaddd  ymm0, ymm0, ymmword ptr [r9+0E0h]
        vmovdqu [rbp+7C0h+var_740], ymm0
        vmovdqu ymmword ptr [r9+0E0h], ymm0
        vmovdqu ymm0, ymmword ptr [r9+0C0h]
        vpaddd  ymm0, ymm0, ymmword ptr [r9+8C0h]
        vmovdqu [rbp+7C0h+var_760], ymm0
        vmovdqu ymmword ptr [r9+0C0h], ymm0
        vmovdqu ymm0, ymmword ptr [r9+8A0h]
        vpaddd  ymm0, ymm0, ymmword ptr [r9+0A0h]
        vmovdqu [rbp+7C0h+var_780], ymm0
        vmovdqu ymmword ptr [r9+0A0h], ymm0
        vmovdqu ymm0, ymmword ptr [r9+80h]
        vpaddd  ymm0, ymm0, ymmword ptr [r9+880h]
        vmovdqu [rbp+7C0h+var_7A0], ymm0
        vmovdqu ymmword ptr [r9+80h], ymm0
      }
      --v51;
      __asm { vzeroupper }
    }
    while( v51 );
    __asm
    {
      vmovdqu ymm7, [rbp+7C0h+var_740]
      vmovdqu ymm8, [rbp+7C0h+var_760]
      vmovdqu ymm9, [rbp+7C0h+var_780]
      vmovdqu ymm10, [rbp+7C0h+var_7A0]
    }
  }
  __asm
  {
    vmovdqu ymm1, ymmword ptr [r9+160h]
    vmovdqu ymm0, ymmword ptr [r9+140h]
  }
  _RAX = *a1;
  __asm
  {
    vpunpckldq ymm5, ymm1, ymm0
    vpunpckhdq ymm6, ymm1, ymm0
    vmovdqu ymm1, ymmword ptr [r9+120h]
    vmovdqu ymm0, ymmword ptr [r9+100h]
    vpunpckldq ymm2, ymm1, ymm0
    vpunpckhdq ymm3, ymm1, ymm0
    vpunpckldq ymm4, ymm7, ymm8
    vpunpckhdq ymm1, ymm9, ymm10
    vpunpckldq ymm0, ymm9, ymm10
    vpunpcklqdq ymm10, ymm5, ymm2
    vpunpckhqdq ymm11, ymm5, ymm2
    vpunpcklqdq ymm2, ymm4, ymm0
    vpunpckhqdq ymm0, ymm4, ymm0
    vpunpcklqdq ymm12, ymm6, ymm3
    vpunpckhqdq ymm13, ymm6, ymm3
    vpunpckhdq ymm7, ymm7, ymm8
    vpunpcklqdq ymm6, ymm7, ymm1
    vpunpckhqdq ymm7, ymm7, ymm1
    vperm2i128 ymm9, ymm10, ymm2, 20h ; ' '
    vmovdqu ymmword ptr [rax], ymm9
  }
  _RAX = a1[1];
  __asm
  {
    vperm2i128 ymm8, ymm11, ymm0, 20h ; ' '
    vperm2i128 ymm3, ymm10, ymm2, 31h ; '1'
    vperm2i128 ymm2, ymm11, ymm0, 31h ; '1'
    vmovdqu ymmword ptr [rax], ymm8
  }
  _RAX = a1[2];
  __asm
  {
    vperm2i128 ymm5, ymm12, ymm6, 20h ; ' '
    vperm2i128 ymm4, ymm13, ymm7, 20h ; ' '
    vperm2i128 ymm1, ymm12, ymm6, 31h ; '1'
    vmovdqu ymmword ptr [rax], ymm5
  }
  _RAX = a1[3];
  __asm
  {
    vperm2i128 ymm0, ymm13, ymm7, 31h ; '1'
    vmovdqu ymmword ptr [rax], ymm4
  }
  _RAX = a1[4];
  __asm { vmovdqu ymmword ptr [rax], ymm3 }
  _RAX = a1[5];
  __asm { vmovdqu ymmword ptr [rax], ymm2 }
  _RAX = a1[6];
  __asm { vmovdqu ymmword ptr [rax], ymm1 }
  _RAX = a1[7];
  __asm
  {
    vmovdqu ymmword ptr [rax], ymm0
    vzeroupper
  }
  return _RAX;
}

Referenced by:

SymCryptParallelSha256Append