// File: /workspace/github_c_makefile_star2_O1/mjosaarinen[P]brutus/crypto_aead/minalpherv11/avx2/MinalpherMode.cpp
// Function: minalpher_mode_decryption(unsigned char const*, unsigned char const*, unsigned char const*, unsigned long long, unsigned char*, unsigned long long*)
int minalpher_mode_decryption(
  const unsigned char     *_K,    /* I    Secret key                */
  const unsigned char     *_N,    /* I    Nonce                     */
  const unsigned char     *_C,    /* I    Ciphertext                */
  unsigned long long      _clen,  /* I    Length of Ciphertext      */
  unsigned char           *M_,    /* O    Message                   */
  unsigned long long      *mlen_  /* O    Length of Message         */
  ){
  /*==== Prepare ====*/
  __m256i ymmTagA[4];
  __m256i ymmTagB[4];
  for (int i = 0; i<4; i++){
    ymmTagA[i] = _mm256_setzero_si256();
    ymmTagB[i] = _mm256_setzero_si256();
  }
  __m256i DATA;
  __m256i DATA1, DATA2, DATA3, DATA4;

  /*==== Process Message ====*/
  int mblock = (int)((_clen) / 32);

  /*==== Create L ====*/
  int cnt = 0;
  __m256i ymmL, ymmL_H;
  create_l(ymmL, _K, _N);

  //Main loop
  int p = 0;
  for (p = 0; p < ((long long)(_clen)-128); p += 128)
  {
    //Encryption
    DATA1 = _mm256_load_si256((const __m256i*)(_C + p));
    DATA2 = _mm256_load_si256((const __m256i*)(_C + p + 32));
    DATA3 = _mm256_load_si256((const __m256i*)(_C + p + 64));
    DATA4 = _mm256_load_si256((const __m256i*)(_C + p + 96));

    __m256i tweak1, tweak2, tweak3, tweak4, tweak5, tweak6, tweak7, tweak8;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak1 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak5 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak2 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak6 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak3 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak7 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak4 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak8 = ymmL;

    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);
    DATA3 = _mm256_xor_si256(DATA3, tweak3);
    DATA4 = _mm256_xor_si256(DATA4, tweak4);
    minalpher_core_quadruple_block_inverse(DATA1, DATA2, DATA3, DATA4);
    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);
    DATA3 = _mm256_xor_si256(DATA3, tweak3);
    DATA4 = _mm256_xor_si256(DATA4, tweak4);
    _mm256_store_si256((__m256i *)(M_ + p), DATA1);
    _mm256_store_si256((__m256i *)(M_ + p + 32), DATA2);
    _mm256_store_si256((__m256i *)(M_ + p + 64), DATA3);
    _mm256_store_si256((__m256i *)(M_ + p + 96), DATA4);
  }

  //length update
  *mlen_ = p;

  if ((mblock % 4) == 0){
    //padding
    DATA1 = _mm256_load_si256((const __m256i*)(_C + p));
    DATA2 = _mm256_load_si256((const __m256i*)(_C + p + 32));
    DATA3 = _mm256_load_si256((const __m256i*)(_C + p + 64));
    DATA4 = _mm256_load_si256((const __m256i*)(_C + p + 96));

    //tweak update
    __m256i tweak1, tweak2, tweak3, tweak4, tweak5, tweak6, tweak7, tweak8;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak1 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak5 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak2 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak6 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak3 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak7 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak4 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak8 = ymmL;

    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);
    DATA3 = _mm256_xor_si256(DATA3, tweak3);
    DATA4 = _mm256_xor_si256(DATA4, tweak4);
    minalpher_core_quadruple_block_inverse(DATA1, DATA2, DATA3, DATA4);
    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);
    DATA3 = _mm256_xor_si256(DATA3, tweak3);
    DATA4 = _mm256_xor_si256(DATA4, tweak4);

    _mm256_store_si256((__m256i *)(M_ + p), DATA1);
    _mm256_store_si256((__m256i *)(M_ + p + 32), DATA2);
    _mm256_store_si256((__m256i *)(M_ + p + 64), DATA3);
    _mm256_store_si256((__m256i *)(M_ + p + 96), DATA4);

    //Format Verification
    for (int d = BLOCK_SIZE - 1; d >= 0; d--){
      if ( (M_ + p + 96)[d] == 0x80){
        *mlen_ += 96 + d;
        return 0;
      }
      if ((M_ + p + 96)[d] != 0x00){
        break;
      }
    }
  }
  else if ((mblock % 4) == 3){
    //padding
    DATA1 = _mm256_load_si256((const __m256i*)(_C + p));
    DATA2 = _mm256_load_si256((const __m256i*)(_C + p + 32));
    DATA3 = _mm256_load_si256((const __m256i*)(_C + p + 64));

    //tweak update
    __m256i tweak1, tweak2, tweak3, tweak4, tweak5, tweak6;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak1 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak4 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak2 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak5 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak3 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak6 = ymmL;

    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);
    DATA3 = _mm256_xor_si256(DATA3, tweak3);
    minalpher_core_quadruple_block_inverse(DATA1, DATA2, DATA3);
    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);
    DATA3 = _mm256_xor_si256(DATA3, tweak3);

    _mm256_store_si256((__m256i *)(M_ + p), DATA1);
    _mm256_store_si256((__m256i *)(M_ + p + 32), DATA2);
    _mm256_store_si256((__m256i *)(M_ + p + 64), DATA3);

    //Format Verification
    for (int d = BLOCK_SIZE - 1; d >= 0; d--){
      if ((M_ + p + 64)[d] == 0x80){
        *mlen_ += 64 + d;
        return 0;
      }
      if ((M_ + p + 64)[d] != 0x00){
        break;
      }
    }
  }
  else if ((mblock % 4) == 2){
    //padding
    DATA1 = _mm256_load_si256((const __m256i*)(_C + p));
    DATA2 = _mm256_load_si256((const __m256i*)(_C + p + 32));

    //tweak update
    __m256i tweak1, tweak2, tweak3, tweak4;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak1 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak3 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak2 = ymmL;
    tweak_update(ymmL, ymmL_H, cnt);
    tweak4 = ymmL;

    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);
    minalpher_core_double_block_inverse(DATA1, DATA2);
    DATA1 = _mm256_xor_si256(DATA1, tweak1);
    DATA2 = _mm256_xor_si256(DATA2, tweak2);

    _mm256_store_si256((__m256i *)(M_ + p), DATA1);
    _mm256_store_si256((__m256i *)(M_ + p + 32), DATA2);

    //Format Verification
    for (int d = BLOCK_SIZE - 1; d >= 0; d--){
      if ((M_ + p + 32)[d] == 0x80){
        *mlen_ += 32 + d;
        return 0;
      }
      if ((M_ + p + 32)[d] != 0x00){
        break;
      }
    }
  }
  else{
    //padding
    DATA1 = _mm256_load_si256((const __m256i*)(_C + p));

    //Encryption
    tweak_update(ymmL, ymmL_H, cnt);
    DATA1 = _mm256_xor_si256(DATA1, ymmL);
    minalpher_core_single_block_inverse(DATA1);
    DATA = _mm256_xor_si256(DATA1, ymmL);
    _mm256_store_si256((__m256i *)(M_ + p), DATA);

    //Format Verification
    for (int d = BLOCK_SIZE - 1; d >= 0; d--){
      if ((M_ + p)[d] == 0x80){
        *mlen_ += d;
        return 0;
      }
      if ((M_ + p)[d] != 0x00){
        break;
      }
    }
  }

  return -1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
andq $-0x20, %rsp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %r9, 0x38(%rsp)
movq %r8, %r14
movq %rcx, %r12
movq %rdx, %r15
movq %rcx, %rax
shrq $0x5, %rax
movq %rax, 0xf8(%rsp)
vmovdqu (%rdi), %xmm0
vpblendd $0xf0, 0x2067(%rip), %ymm0, %ymm2 # ymm2 = ymm0[0,1,2,3],mem[4,5,6,7]
movq (%rsi), %rax
vmovq %rax, %xmm0
vpinsrd $0x2, 0x8(%rsi), %xmm0, %xmm0
vpxor %xmm1, %xmm1, %xmm1
vpinsrb $0x3, %eax, %xmm1, %xmm1
movl %eax, %ecx
shrl $0x8, %ecx
vpinsrb $0x4, %ecx, %xmm1, %xmm1
movl %eax, %ecx
shrl $0x10, %ecx
vpinsrb $0x5, %ecx, %xmm1, %xmm1
movl %eax, %ecx
shrl $0x18, %ecx
vpinsrb $0x6, %ecx, %xmm1, %xmm1
movq %rax, %rcx
shrq $0x20, %rcx
vpinsrb $0x7, %ecx, %xmm1, %xmm1
movq %rax, %rcx
shrq $0x28, %rcx
vpinsrb $0x8, %ecx, %xmm1, %xmm1
movq %rax, %rcx
shrq $0x30, %rcx
vpinsrb $0x9, %ecx, %xmm1, %xmm1
shrq $0x38, %rax
vpinsrb $0xa, %eax, %xmm1, %xmm1
vpextrb $0x8, %xmm0, %eax
vpinsrb $0xb, %eax, %xmm1, %xmm1
vpextrb $0x9, %xmm0, %eax
vpinsrb $0xc, %eax, %xmm1, %xmm1
vpextrb $0xa, %xmm0, %eax
vpinsrb $0xd, %eax, %xmm1, %xmm1
vpextrb $0xb, %xmm0, %eax
vpinsrb $0xe, %eax, %xmm1, %xmm0
vpinsrb $0xf, 0xc(%rsi), %xmm0, %xmm0
vinserti128 $0x1, %xmm0, %ymm0, %ymm0
movl $0xfff80000, %eax       # imm = 0xFFF80000
kmovd %eax, %k1
vmovdqu8 %ymm0, %ymm2 {%k1}
vmovdqa %ymm2, 0x80(%rsp)
movq %rsp, %rbx
vmovdqa %ymm2, (%rbx)
movq %rbx, %rdi
vzeroupper
callq 0x2030
vmovaps 0x80(%rsp), %ymm0
vxorps (%rbx), %ymm0, %ymm0
vmovaps %ymm0, (%rbx)
cmpq $0x81, %r12
jl 0xa8ec
addq $-0x80, %r12
xorl %r13d, %r13d
xorl %ebx, %ebx
vmovdqa (%r15,%r13), %ymm0
vmovdqa %ymm0, 0x60(%rsp)
vmovdqa 0x20(%r15,%r13), %ymm1
vmovdqa %ymm1, 0x40(%rsp)
vmovdqa 0x40(%r15,%r13), %ymm2
vmovdqa %ymm2, 0xa0(%rsp)
vmovdqa 0x60(%r15,%r13), %ymm3
vmovdqa %ymm3, 0x100(%rsp)
testb $0x8, %bl
jne 0xa6ac
vmovdqa (%rsp), %ymm4
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm4, %ymm5, %ymm5
vpaddb %ymm4, %ymm4, %ymm6
vpternlogq $0x78, 0x1ee4(%rip){1to4}, %ymm5, %ymm6 # 0xc590
vmovdqa (%rsp), %ymm4
vperm2i128 $0x21, %ymm6, %ymm4, %ymm5 # ymm5 = ymm4[2,3],ymm6[0,1]
vpalignr $0x1, %ymm6, %ymm4, %ymm4 # ymm4 = ymm6[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],ymm6[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpalignr $0x1, (%rsp), %ymm5, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vmovdqa 0x1ed4(%rip), %xmm7     # 0xc5a0
vpshufb %xmm7, %xmm4, %xmm6
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm6
vperm2i128 $0x21, %ymm4, %ymm6, %ymm5 # ymm5 = ymm6[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm6, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpalignr $0x1, %ymm6, %ymm5, %ymm5 # ymm5 = ymm6[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm6[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vmovdqa %ymm6, %ymm8
vmovdqa %ymm6, 0xc0(%rsp)
vpshufb %xmm7, %xmm4, %xmm6
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm5
vperm2i128 $0x21, %ymm4, %ymm5, %ymm6 # ymm6 = ymm5[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm5, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, %ymm5, %ymm6, %ymm5 # ymm5 = ymm5[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm5[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpshufb %xmm7, %xmm4, %xmm6
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm6
vperm2i128 $0x21, %ymm4, %ymm6, %ymm5 # ymm5 = ymm6[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm6, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpalignr $0x1, %ymm6, %ymm5, %ymm5 # ymm5 = ymm6[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm6[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vmovdqa %ymm6, %ymm9
vmovdqa %ymm6, 0x120(%rsp)
vpshufb %xmm7, %xmm4, %xmm6
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm5
vperm2i128 $0x21, %ymm4, %ymm5, %ymm6 # ymm6 = ymm5[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm5, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, %ymm5, %ymm6, %ymm5 # ymm5 = ymm5[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm5[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpshufb %xmm7, %xmm4, %xmm6
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm6
vperm2i128 $0x21, %ymm4, %ymm6, %ymm5 # ymm5 = ymm6[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm6, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpalignr $0x1, %ymm6, %ymm5, %ymm5 # ymm5 = ymm6[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm6[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vmovdqa %ymm6, %ymm10
vmovdqa %ymm6, 0x140(%rsp)
vpshufb %xmm7, %xmm4, %xmm6
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm5
vperm2i128 $0x21, %ymm4, %ymm5, %ymm6 # ymm6 = ymm5[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm5, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, %ymm5, %ymm6, %ymm5 # ymm5 = ymm5[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm5[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpshufb %xmm7, %xmm4, %xmm6
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm6
vmovdqa %ymm6, (%rsp)
addl $0x8, %ebx
vperm2i128 $0x21, %ymm4, %ymm6, %ymm5 # ymm5 = ymm6[2,3],ymm4[0,1]
vpalignr $0x1, (%rsp), %ymm5, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, %ymm4, %ymm6, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vmovdqa %ymm4, 0x80(%rsp)
vmovdqa %ymm6, 0x160(%rsp)
vpshufb %xmm7, %xmm4, %xmm4
vperm2i128 $0x28, %ymm4, %ymm4, %ymm4 # ymm4 = zero,zero,ymm4[0,1]
vpxor %ymm5, %ymm4, %ymm4
vmovdqa %ymm4, (%rsp)
vpxor %ymm0, %ymm8, %ymm0
vmovdqa %ymm0, 0x60(%rsp)
vpxor %ymm1, %ymm9, %ymm0
vmovdqa %ymm0, 0x40(%rsp)
vpxor %ymm2, %ymm10, %ymm0
vmovdqa %ymm0, 0xa0(%rsp)
vpxor %ymm3, %ymm6, %ymm0
vmovdqa %ymm0, 0x100(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
leaq 0x100(%rsp), %rcx
vzeroupper
callq 0x2080
vmovdqa 0x80(%rsp), %ymm6
vmovaps 0xc0(%rsp), %ymm0
vxorps 0x60(%rsp), %ymm0, %ymm0
vmovaps %ymm0, 0x60(%rsp)
vmovdqa 0x120(%rsp), %ymm1
vpxor 0x40(%rsp), %ymm1, %ymm1
vmovdqa %ymm1, 0x40(%rsp)
vmovdqa 0x140(%rsp), %ymm2
vpxor 0xa0(%rsp), %ymm2, %ymm2
vmovdqa %ymm2, 0xa0(%rsp)
vmovdqa 0x160(%rsp), %ymm3
vpxor 0x100(%rsp), %ymm3, %ymm3
vmovdqa %ymm3, 0x100(%rsp)
vmovaps %ymm0, (%r14,%r13)
vmovdqa %ymm1, 0x20(%r14,%r13)
vmovdqa %ymm2, 0x40(%r14,%r13)
vmovdqa %ymm3, 0x60(%r14,%r13)
subq $-0x80, %r13
cmpq %r13, %r12
jg 0xa652
jmp 0xa8f1
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0x38(%rsp), %rax
movq %r13, (%rax)
movq 0xf8(%rsp), %rcx
leal 0x3(%rcx), %eax
testl %ecx, %ecx
cmovnsl %ecx, %eax
andl $-0x4, %eax
subl %eax, %ecx
vmovdqa (%r15,%r13), %ymm0
vmovdqa %ymm0, 0x60(%rsp)
cmpl $0x3, %ecx
je 0xaead
cmpl $0x2, %ecx
je 0xacd6
testl %ecx, %ecx
jne 0xb16a
vmovdqa 0x20(%r15,%r13), %ymm3
vmovdqa %ymm3, 0x40(%rsp)
vmovdqa 0x40(%r15,%r13), %ymm2
vmovdqa %ymm2, 0xa0(%rsp)
vmovdqa 0x60(%r15,%r13), %ymm1
vmovdqa %ymm1, 0x100(%rsp)
testb $0xf, %bl
jne 0xa982
vmovdqa (%rsp), %ymm4
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm4, %ymm5, %ymm5
vpaddb %ymm4, %ymm4, %ymm6
vpternlogq $0x78, 0x1c0e(%rip){1to4}, %ymm5, %ymm6 # 0xc590
vmovdqa (%rsp), %ymm4
vperm2i128 $0x21, %ymm6, %ymm4, %ymm5 # ymm5 = ymm4[2,3],ymm6[0,1]
vpalignr $0x1, %ymm6, %ymm4, %ymm4 # ymm4 = ymm6[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],ymm6[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpalignr $0x1, (%rsp), %ymm5, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpshufb 0x1bfd(%rip), %xmm4, %xmm6 # 0xc5a0
leal 0x1(%rbx), %eax
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm7
vmovdqa %ymm7, (%rsp)
testb $0xf, %al
jne 0xa9d5
vmovdqa (%rsp), %ymm4
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm4, %ymm5, %ymm5
vpaddb %ymm4, %ymm4, %ymm4
vpternlogq $0x78, 0x1bbb(%rip){1to4}, %ymm5, %ymm4 # 0xc590
vperm2i128 $0x21, %ymm4, %ymm7, %ymm5 # ymm5 = ymm7[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm7, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm7[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm7[16]
vpalignr $0x1, (%rsp), %ymm5, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpshufb 0x1baf(%rip), %xmm4, %xmm6 # 0xc5a0
leal 0x2(%rbx), %eax
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm5
vmovdqa %ymm5, (%rsp)
testb $0xf, %al
jne 0xaa23
vmovdqa (%rsp), %ymm4
vpxor %xmm6, %xmm6, %xmm6
vpcmpgtb %ymm4, %ymm6, %ymm6
vpaddb %ymm4, %ymm4, %ymm4
vpternlogq $0x78, 0x1b6d(%rip){1to4}, %ymm6, %ymm4 # 0xc590
vperm2i128 $0x21, %ymm4, %ymm5, %ymm6 # ymm6 = ymm5[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm5, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, (%rsp), %ymm6, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpshufb 0x1b61(%rip), %xmm4, %xmm6 # 0xc5a0
leal 0x3(%rbx), %eax
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm8
vmovdqa %ymm8, (%rsp)
testb $0xf, %al
jne 0xaa71
vmovdqa (%rsp), %ymm4
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm4, %ymm5, %ymm5
vpaddb %ymm4, %ymm4, %ymm4
vpternlogq $0x78, 0x1b1f(%rip){1to4}, %ymm5, %ymm4 # 0xc590
vperm2i128 $0x21, %ymm4, %ymm8, %ymm5 # ymm5 = ymm8[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm8, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm8[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm8[16]
vpalignr $0x1, (%rsp), %ymm5, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpshufb 0x1b13(%rip), %xmm4, %xmm6 # 0xc5a0
leal 0x4(%rbx), %eax
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm5
vmovdqa %ymm5, (%rsp)
testb $0xf, %al
jne 0xaabf
vmovdqa (%rsp), %ymm4
vpxor %xmm6, %xmm6, %xmm6
vpcmpgtb %ymm4, %ymm6, %ymm6
vpaddb %ymm4, %ymm4, %ymm4
vpternlogq $0x78, 0x1ad1(%rip){1to4}, %ymm6, %ymm4 # 0xc590
vperm2i128 $0x21, %ymm4, %ymm5, %ymm6 # ymm6 = ymm5[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm5, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, (%rsp), %ymm6, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpshufb 0x1ac5(%rip), %xmm4, %xmm6 # 0xc5a0
leal 0x5(%rbx), %eax
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm9
vmovdqa %ymm9, (%rsp)
testb $0xf, %al
jne 0xab0d
vmovdqa (%rsp), %ymm4
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm4, %ymm5, %ymm5
vpaddb %ymm4, %ymm4, %ymm4
vpternlogq $0x78, 0x1a83(%rip){1to4}, %ymm5, %ymm4 # 0xc590
vperm2i128 $0x21, %ymm4, %ymm9, %ymm5 # ymm5 = ymm9[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm9, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm9[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm9[16]
vpalignr $0x1, (%rsp), %ymm5, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpshufb 0x1a77(%rip), %xmm4, %xmm6 # 0xc5a0
leal 0x6(%rbx), %eax
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm5
vmovdqa %ymm5, (%rsp)
testb $0xf, %al
jne 0xab5b
vmovdqa (%rsp), %ymm4
vpxor %xmm6, %xmm6, %xmm6
vpcmpgtb %ymm4, %ymm6, %ymm6
vpaddb %ymm4, %ymm4, %ymm4
vpternlogq $0x78, 0x1a35(%rip){1to4}, %ymm6, %ymm4 # 0xc590
vperm2i128 $0x21, %ymm4, %ymm5, %ymm6 # ymm6 = ymm5[2,3],ymm4[0,1]
vpalignr $0x1, %ymm4, %ymm5, %ymm4 # ymm4 = ymm4[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm4[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, (%rsp), %ymm6, %ymm5 # ymm5 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpshufb 0x1a29(%rip), %xmm4, %xmm6 # 0xc5a0
addl $0x7, %ebx
vperm2i128 $0x28, %ymm6, %ymm6, %ymm6 # ymm6 = zero,zero,ymm6[0,1]
vpxor %ymm5, %ymm6, %ymm6
vmovdqa %ymm6, (%rsp)
testb $0xf, %bl
jne 0xabaa
vmovdqa (%rsp), %ymm4
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm4, %ymm5, %ymm5
vpaddb %ymm4, %ymm4, %ymm4
vpternlogq $0x78, 0x19e6(%rip){1to4}, %ymm5, %ymm4 # 0xc590
vperm2i128 $0x21, %ymm4, %ymm6, %ymm4 # ymm4 = ymm6[2,3],ymm4[0,1]
vpalignr $0x1, (%rsp), %ymm4, %ymm4 # ymm4 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpshufb 0x19f0(%rip), %xmm6, %xmm5 # 0xc5b0
vperm2i128 $0x28, %ymm5, %ymm5, %ymm5 # ymm5 = zero,zero,ymm5[0,1]
vpxor %ymm4, %ymm5, %ymm4
vmovdqa %ymm4, (%rsp)
vpxor %ymm0, %ymm7, %ymm0
leaq 0x60(%rsp), %rax
vmovdqa %ymm0, (%rax)
movq %rax, %rdi
vpxor %ymm3, %ymm8, %ymm0
leaq 0x40(%rsp), %r15
vmovdqa %ymm0, (%r15)
vpxor %ymm2, %ymm9, %ymm0
leaq 0xa0(%rsp), %r12
vmovdqa %ymm0, (%r12)
vpxor %ymm1, %ymm6, %ymm0
leaq 0x100(%rsp), %rbx
vmovdqa %ymm0, (%rbx)
movq %r15, %rsi
movq %r12, %rdx
movq %rbx, %rcx
vmovdqa %ymm7, 0x140(%rsp)
vmovdqa %ymm8, 0x120(%rsp)
vmovdqa %ymm9, 0xc0(%rsp)
vmovdqa %ymm6, 0x80(%rsp)
vzeroupper
callq 0x2080
leaq 0x60(%rsp), %rax
vmovaps 0x140(%rsp), %ymm0
vxorps (%rax), %ymm0, %ymm0
vmovaps %ymm0, (%rax)
vmovdqa 0x120(%rsp), %ymm1
vpxor (%r15), %ymm1, %ymm1
vmovdqa %ymm1, (%r15)
vmovdqa 0xc0(%rsp), %ymm2
vpxor (%r12), %ymm2, %ymm2
vmovdqa %ymm2, (%r12)
vmovdqa 0x80(%rsp), %ymm3
vpxor (%rbx), %ymm3, %ymm3
vmovdqa %ymm3, (%rbx)
vmovaps %ymm0, (%r14,%r13)
vmovdqa %ymm1, 0x20(%r14,%r13)
leaq (%r14,%r13), %rdx
vmovdqa %ymm2, 0x40(%r14,%r13)
vmovdqa %ymm3, 0x60(%r14,%r13)
movl $0x7f, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movzbl (%rdx,%rcx), %esi
testl %esi, %esi
jne 0xb1fe
decq %rcx
cmpq $0x5f, %rcx
jne 0xacbc
jmp 0xb210
vmovdqa 0x20(%r15,%r13), %ymm1
vmovdqa %ymm1, 0x40(%rsp)
testb $0xf, %bl
jne 0xad04
vmovdqa (%rsp), %ymm2
vpxor %xmm3, %xmm3, %xmm3
vpcmpgtb %ymm2, %ymm3, %ymm3
vpaddb %ymm2, %ymm2, %ymm6
vpternlogq $0x78, 0x188c(%rip){1to4}, %ymm3, %ymm6 # 0xc590
vmovdqa (%rsp), %ymm2
vperm2i128 $0x21, %ymm6, %ymm2, %ymm3 # ymm3 = ymm2[2,3],ymm6[0,1]
vpalignr $0x1, %ymm6, %ymm2, %ymm2 # ymm2 = ymm6[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm2[0],ymm6[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm2[16]
vpalignr $0x1, (%rsp), %ymm3, %ymm3 # ymm3 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm3[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm3[16]
vpshufb 0x187b(%rip), %xmm2, %xmm4 # 0xc5a0
leal 0x1(%rbx), %eax
vperm2i128 $0x28, %ymm4, %ymm4, %ymm4 # ymm4 = zero,zero,ymm4[0,1]
vpxor %ymm3, %ymm4, %ymm5
vmovdqa %ymm5, (%rsp)
testb $0xf, %al
jne 0xad57
vmovdqa (%rsp), %ymm2
vpxor %xmm3, %xmm3, %xmm3
vpcmpgtb %ymm2, %ymm3, %ymm3
vpaddb %ymm2, %ymm2, %ymm2
vpternlogq $0x78, 0x1839(%rip){1to4}, %ymm3, %ymm2 # 0xc590
vperm2i128 $0x21, %ymm2, %ymm5, %ymm3 # ymm3 = ymm5[2,3],ymm2[0,1]
vpalignr $0x1, %ymm2, %ymm5, %ymm2 # ymm2 = ymm2[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],ymm2[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpalignr $0x1, (%rsp), %ymm3, %ymm3 # ymm3 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm3[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm3[16]
vpshufb 0x182d(%rip), %xmm2, %xmm4 # 0xc5a0
leal 0x2(%rbx), %eax
vperm2i128 $0x28, %ymm4, %ymm4, %ymm4 # ymm4 = zero,zero,ymm4[0,1]
vpxor %ymm3, %ymm4, %ymm3
vmovdqa %ymm3, (%rsp)
testb $0xf, %al
jne 0xada5
vmovdqa (%rsp), %ymm2
vpxor %xmm4, %xmm4, %xmm4
vpcmpgtb %ymm2, %ymm4, %ymm4
vpaddb %ymm2, %ymm2, %ymm2
vpternlogq $0x78, 0x17eb(%rip){1to4}, %ymm4, %ymm2 # 0xc590
vperm2i128 $0x21, %ymm2, %ymm3, %ymm4 # ymm4 = ymm3[2,3],ymm2[0,1]
vpalignr $0x1, %ymm2, %ymm3, %ymm2 # ymm2 = ymm2[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm3[0],ymm2[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm3[16]
vpalignr $0x1, (%rsp), %ymm4, %ymm3 # ymm3 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpshufb 0x17df(%rip), %xmm2, %xmm4 # 0xc5a0
addl $0x3, %ebx
vperm2i128 $0x28, %ymm4, %ymm4, %ymm4 # ymm4 = zero,zero,ymm4[0,1]
vpxor %ymm3, %ymm4, %ymm4
vmovdqa %ymm4, (%rsp)
testb $0xf, %bl
jne 0xadf4
vmovdqa (%rsp), %ymm2
vpxor %xmm3, %xmm3, %xmm3
vpcmpgtb %ymm2, %ymm3, %ymm3
vpaddb %ymm2, %ymm2, %ymm2
vpternlogq $0x78, 0x179c(%rip){1to4}, %ymm3, %ymm2 # 0xc590
vperm2i128 $0x21, %ymm2, %ymm4, %ymm2 # ymm2 = ymm4[2,3],ymm2[0,1]
vpalignr $0x1, (%rsp), %ymm2, %ymm2 # ymm2 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm2[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm2[16]
vpshufb 0x17a6(%rip), %xmm4, %xmm3 # 0xc5b0
vperm2i128 $0x28, %ymm3, %ymm3, %ymm3 # ymm3 = zero,zero,ymm3[0,1]
vpxor %ymm2, %ymm3, %ymm2
vmovdqa %ymm2, (%rsp)
vpxor %ymm0, %ymm5, %ymm0
leaq 0x60(%rsp), %rbx
vmovdqa %ymm0, (%rbx)
vpxor %ymm1, %ymm4, %ymm0
leaq 0x40(%rsp), %r15
vmovdqa %ymm0, (%r15)
movq %rbx, %rdi
movq %r15, %rsi
vmovdqa %ymm5, 0xc0(%rsp)
vmovdqa %ymm4, 0x80(%rsp)
vzeroupper
callq 0x2140
vmovaps 0xc0(%rsp), %ymm0
vxorps (%rbx), %ymm0, %ymm0
vmovaps %ymm0, (%rbx)
vmovdqa 0x80(%rsp), %ymm1
vpxor (%r15), %ymm1, %ymm1
vmovdqa %ymm1, (%r15)
leaq (%r14,%r13), %rdx
vmovaps %ymm0, (%r14,%r13)
vmovdqa %ymm1, 0x20(%r14,%r13)
movl $0x3f, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movzbl (%rdx,%rcx), %esi
testl %esi, %esi
jne 0xb1fe
decq %rcx
cmpq $0x1f, %rcx
jne 0xae93
jmp 0xb210
vmovdqa 0x20(%r15,%r13), %ymm2
vmovdqa %ymm2, 0x40(%rsp)
vmovdqa 0x40(%r15,%r13), %ymm1
vmovdqa %ymm1, 0xa0(%rsp)
testb $0xf, %bl
jne 0xaeeb
vmovdqa (%rsp), %ymm3
vpxor %xmm4, %xmm4, %xmm4
vpcmpgtb %ymm3, %ymm4, %ymm4
vpaddb %ymm3, %ymm3, %ymm6
vpternlogq $0x78, 0x16a5(%rip){1to4}, %ymm4, %ymm6 # 0xc590
vmovdqa (%rsp), %ymm3
vperm2i128 $0x21, %ymm6, %ymm3, %ymm4 # ymm4 = ymm3[2,3],ymm6[0,1]
vpalignr $0x1, %ymm6, %ymm3, %ymm3 # ymm3 = ymm6[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm3[0],ymm6[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm3[16]
vpalignr $0x1, (%rsp), %ymm4, %ymm4 # ymm4 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpshufb 0x1694(%rip), %xmm3, %xmm5 # 0xc5a0
leal 0x1(%rbx), %eax
vperm2i128 $0x28, %ymm5, %ymm5, %ymm5 # ymm5 = zero,zero,ymm5[0,1]
vpxor %ymm4, %ymm5, %ymm6
vmovdqa %ymm6, (%rsp)
testb $0xf, %al
jne 0xaf3e
vmovdqa (%rsp), %ymm3
vpxor %xmm4, %xmm4, %xmm4
vpcmpgtb %ymm3, %ymm4, %ymm4
vpaddb %ymm3, %ymm3, %ymm3
vpternlogq $0x78, 0x1652(%rip){1to4}, %ymm4, %ymm3 # 0xc590
vperm2i128 $0x21, %ymm3, %ymm6, %ymm4 # ymm4 = ymm6[2,3],ymm3[0,1]
vpalignr $0x1, %ymm3, %ymm6, %ymm3 # ymm3 = ymm3[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm6[0],ymm3[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm6[16]
vpalignr $0x1, (%rsp), %ymm4, %ymm4 # ymm4 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpshufb 0x1646(%rip), %xmm3, %xmm5 # 0xc5a0
leal 0x2(%rbx), %eax
vperm2i128 $0x28, %ymm5, %ymm5, %ymm5 # ymm5 = zero,zero,ymm5[0,1]
vpxor %ymm4, %ymm5, %ymm4
vmovdqa %ymm4, (%rsp)
testb $0xf, %al
jne 0xaf8c
vmovdqa (%rsp), %ymm3
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm3, %ymm5, %ymm5
vpaddb %ymm3, %ymm3, %ymm3
vpternlogq $0x78, 0x1604(%rip){1to4}, %ymm5, %ymm3 # 0xc590
vperm2i128 $0x21, %ymm3, %ymm4, %ymm5 # ymm5 = ymm4[2,3],ymm3[0,1]
vpalignr $0x1, %ymm3, %ymm4, %ymm3 # ymm3 = ymm3[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],ymm3[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpalignr $0x1, (%rsp), %ymm5, %ymm4 # ymm4 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpshufb 0x15f8(%rip), %xmm3, %xmm5 # 0xc5a0
leal 0x3(%rbx), %eax
vperm2i128 $0x28, %ymm5, %ymm5, %ymm5 # ymm5 = zero,zero,ymm5[0,1]
vpxor %ymm4, %ymm5, %ymm7
vmovdqa %ymm7, (%rsp)
testb $0xf, %al
jne 0xafda
vmovdqa (%rsp), %ymm3
vpxor %xmm4, %xmm4, %xmm4
vpcmpgtb %ymm3, %ymm4, %ymm4
vpaddb %ymm3, %ymm3, %ymm3
vpternlogq $0x78, 0x15b6(%rip){1to4}, %ymm4, %ymm3 # 0xc590
vperm2i128 $0x21, %ymm3, %ymm7, %ymm4 # ymm4 = ymm7[2,3],ymm3[0,1]
vpalignr $0x1, %ymm3, %ymm7, %ymm3 # ymm3 = ymm3[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm7[0],ymm3[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm7[16]
vpalignr $0x1, (%rsp), %ymm4, %ymm4 # ymm4 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpshufb 0x15aa(%rip), %xmm3, %xmm5 # 0xc5a0
leal 0x4(%rbx), %eax
vperm2i128 $0x28, %ymm5, %ymm5, %ymm5 # ymm5 = zero,zero,ymm5[0,1]
vpxor %ymm4, %ymm5, %ymm4
vmovdqa %ymm4, (%rsp)
testb $0xf, %al
jne 0xb028
vmovdqa (%rsp), %ymm3
vpxor %xmm5, %xmm5, %xmm5
vpcmpgtb %ymm3, %ymm5, %ymm5
vpaddb %ymm3, %ymm3, %ymm3
vpternlogq $0x78, 0x1568(%rip){1to4}, %ymm5, %ymm3 # 0xc590
vperm2i128 $0x21, %ymm3, %ymm4, %ymm5 # ymm5 = ymm4[2,3],ymm3[0,1]
vpalignr $0x1, %ymm3, %ymm4, %ymm3 # ymm3 = ymm3[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm4[0],ymm3[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm4[16]
vpalignr $0x1, (%rsp), %ymm5, %ymm4 # ymm4 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm5[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm5[16]
vpshufb 0x155c(%rip), %xmm3, %xmm5 # 0xc5a0
addl $0x5, %ebx
vperm2i128 $0x28, %ymm5, %ymm5, %ymm5 # ymm5 = zero,zero,ymm5[0,1]
vpxor %ymm4, %ymm5, %ymm5
vmovdqa %ymm5, (%rsp)
testb $0xf, %bl
jne 0xb077
vmovdqa (%rsp), %ymm3
vpxor %xmm4, %xmm4, %xmm4
vpcmpgtb %ymm3, %ymm4, %ymm4
vpaddb %ymm3, %ymm3, %ymm3
vpternlogq $0x78, 0x1519(%rip){1to4}, %ymm4, %ymm3 # 0xc590
vperm2i128 $0x21, %ymm3, %ymm5, %ymm3 # ymm3 = ymm5[2,3],ymm3[0,1]
vpalignr $0x1, (%rsp), %ymm3, %ymm3 # ymm3 = mem[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm3[0],mem[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm3[16]
vpshufb 0x1523(%rip), %xmm5, %xmm4 # 0xc5b0
vperm2i128 $0x28, %ymm4, %ymm4, %ymm4 # ymm4 = zero,zero,ymm4[0,1]
vpxor %ymm3, %ymm4, %ymm3
vmovdqa %ymm3, (%rsp)
vpxor %ymm0, %ymm6, %ymm0
leaq 0x60(%rsp), %rbx
vmovdqa %ymm0, (%rbx)
vpxor %ymm2, %ymm7, %ymm0
leaq 0x40(%rsp), %r15
vmovdqa %ymm0, (%r15)
vpxor %ymm1, %ymm5, %ymm0
leaq 0xa0(%rsp), %r12
vmovdqa %ymm0, (%r12)
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
vmovdqa %ymm6, 0x120(%rsp)
vmovdqa %ymm7, 0xc0(%rsp)
vmovdqa %ymm5, 0x80(%rsp)
vzeroupper
callq 0x2190
vmovaps 0x120(%rsp), %ymm0
vxorps (%rbx), %ymm0, %ymm0
vmovaps %ymm0, (%rbx)
vmovdqa 0xc0(%rsp), %ymm1
vpxor (%r15), %ymm1, %ymm1
vmovdqa %ymm1, (%r15)
vmovdqa 0x80(%rsp), %ymm2
vpxor (%r12), %ymm2, %ymm2
vmovdqa %ymm2, (%r12)
vmovaps %ymm0, (%r14,%r13)
leaq (%r14,%r13), %rdx
vmovdqa %ymm1, 0x20(%r14,%r13)
vmovdqa %ymm2, 0x40(%r14,%r13)
movl $0x5f, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movzbl (%rdx,%rcx), %esi
testl %esi, %esi
jne 0xb1fe
decq %rcx
cmpq $0x3f, %rcx
jne 0xb150
jmp 0xb210
testb $0xf, %bl
jne 0xb18b
vmovdqa (%rsp), %ymm1
vpxor %xmm2, %xmm2, %xmm2
vpcmpgtb %ymm1, %ymm2, %ymm2
vpaddb %ymm1, %ymm1, %ymm6
vpternlogq $0x78, 0x1405(%rip){1to4}, %ymm2, %ymm6 # 0xc590
vmovdqa (%rsp), %ymm1
vperm2i128 $0x21, %ymm6, %ymm1, %ymm2 # ymm2 = ymm1[2,3],ymm6[0,1]
vpalignr $0x1, %ymm1, %ymm2, %ymm1 # ymm1 = ymm1[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],ymm2[0],ymm1[17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],ymm2[16]
vmovdqa (%rsp), %xmm2
vpshufb 0x1406(%rip), %xmm2, %xmm2 # 0xc5b0
vperm2i128 $0x28, %ymm2, %ymm2, %ymm2 # ymm2 = zero,zero,ymm2[0,1]
vpxor %ymm1, %ymm2, %ymm1
vmovdqa %ymm1, (%rsp)
vpxor %ymm0, %ymm1, %ymm0
leaq 0x60(%rsp), %rbx
vmovdqa %ymm0, (%rbx)
movq %rbx, %rdi
vzeroupper
callq 0x21a0
vmovaps (%rsp), %ymm0
vxorps (%rbx), %ymm0, %ymm0
leaq (%r14,%r13), %rdx
vmovaps %ymm0, (%r14,%r13)
movl $0x1f, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movzbl (%rdx,%rcx), %esi
testl %esi, %esi
jne 0xb1fe
addq $-0x1, %rcx
jb 0xb1ee
jmp 0xb210
cmpl $0x80, %esi
jne 0xb210
movq 0x38(%rsp), %rax
addq %rcx, (%rax)
xorl %eax, %eax
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
vzeroupper
retq
nop