// File: /workspace/github_c_makefile_star2_O0/lemire[P]simdprune/./simdprune.h
// Function: thinprune_epi8
static inline __m128i thinprune_epi8( __m128i x, int mask) {
      int mask1 = mask & 0xFF;
      int pop = 8 - __builtin_popcount(mask1);
      int mask2 = mask >> 8;
      __m128i m1 = _mm_loadl_epi64((const __m128i *)(thintable_epi8 + mask1));
      __m128i m2 = _mm_loadl_epi64((const __m128i *)(thintable_epi8 + mask2));
      __m128i m2add = _mm_add_epi8(m2,_mm_set1_epi8(8));
      __m128i m2shifted = left_shift_bytes(m2add,pop);
      __m128i shufmask = _mm_or_si128(m2shifted,m1);
      return _mm_shuffle_epi8(
          x, shufmask);
}

// Assembly:
subq $0x148, %rsp            # imm = 0x148
vmovdqa %xmm0, 0x60(%rsp)
movl %edi, 0x5c(%rsp)
movzbl 0x5c(%rsp), %eax
movl %eax, 0x58(%rsp)
popcntl 0x58(%rsp), %ecx
movl $0x8, %eax
subl %ecx, %eax
movl %eax, 0x54(%rsp)
movl 0x5c(%rsp), %eax
sarl $0x8, %eax
movl %eax, 0x50(%rsp)
movslq 0x58(%rsp), %rcx
leaq 0x102eae(%rip), %rax    # 0x104200
leaq (%rax,%rcx,8), %rcx
movq %rcx, 0xc8(%rsp)
movq 0xc8(%rsp), %rcx
vmovq (%rcx), %xmm0
vmovdqa %xmm0, 0xb0(%rsp)
vmovdqa 0xb0(%rsp), %xmm0
vmovdqa %xmm0, 0x40(%rsp)
movslq 0x50(%rsp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, 0x90(%rsp)
vmovdqa 0x90(%rsp), %xmm0
vmovdqa %xmm0, 0x30(%rsp)
vmovdqa 0x30(%rsp), %xmm1
movb $0x8, 0xff(%rsp)
movb 0xff(%rsp), %al
movb %al, 0x11f(%rsp)
movb %al, 0x11e(%rsp)
movb %al, 0x11d(%rsp)
movb %al, 0x11c(%rsp)
movb %al, 0x11b(%rsp)
movb %al, 0x11a(%rsp)
movb %al, 0x119(%rsp)
movb %al, 0x118(%rsp)
movb %al, 0x117(%rsp)
movb %al, 0x116(%rsp)
movb %al, 0x115(%rsp)
movb %al, 0x114(%rsp)
movb %al, 0x113(%rsp)
movb %al, 0x112(%rsp)
movb %al, 0x111(%rsp)
movb %al, 0x110(%rsp)
movzbl 0x110(%rsp), %eax
vmovd %eax, %xmm0
movzbl 0x111(%rsp), %eax
vpinsrb $0x1, %eax, %xmm0, %xmm0
movzbl 0x112(%rsp), %eax
vpinsrb $0x2, %eax, %xmm0, %xmm0
movzbl 0x113(%rsp), %eax
vpinsrb $0x3, %eax, %xmm0, %xmm0
movzbl 0x114(%rsp), %eax
vpinsrb $0x4, %eax, %xmm0, %xmm0
movzbl 0x115(%rsp), %eax
vpinsrb $0x5, %eax, %xmm0, %xmm0
movzbl 0x116(%rsp), %eax
vpinsrb $0x6, %eax, %xmm0, %xmm0
movzbl 0x117(%rsp), %eax
vpinsrb $0x7, %eax, %xmm0, %xmm0
movzbl 0x118(%rsp), %eax
vpinsrb $0x8, %eax, %xmm0, %xmm0
movzbl 0x119(%rsp), %eax
vpinsrb $0x9, %eax, %xmm0, %xmm0
movzbl 0x11a(%rsp), %eax
vpinsrb $0xa, %eax, %xmm0, %xmm0
movzbl 0x11b(%rsp), %eax
vpinsrb $0xb, %eax, %xmm0, %xmm0
movzbl 0x11c(%rsp), %eax
vpinsrb $0xc, %eax, %xmm0, %xmm0
movzbl 0x11d(%rsp), %eax
vpinsrb $0xd, %eax, %xmm0, %xmm0
movzbl 0x11e(%rsp), %eax
vpinsrb $0xe, %eax, %xmm0, %xmm0
movzbl 0x11f(%rsp), %eax
vpinsrb $0xf, %eax, %xmm0, %xmm0
vmovdqa %xmm0, 0x100(%rsp)
vmovdqa 0x100(%rsp), %xmm0
vmovdqa %xmm1, 0xe0(%rsp)
vmovdqa %xmm0, 0xd0(%rsp)
vmovdqa 0xe0(%rsp), %xmm0
vmovdqa 0xd0(%rsp), %xmm1
vpaddb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, 0x20(%rsp)
vmovdqa 0x20(%rsp), %xmm0
movl 0x54(%rsp), %edi
callq 0x3b30
vmovdqa %xmm0, 0x10(%rsp)
vmovdqa 0x10(%rsp), %xmm1
vmovdqa 0x40(%rsp), %xmm0
vmovdqa %xmm1, 0x130(%rsp)
vmovdqa %xmm0, 0x120(%rsp)
vmovdqa 0x130(%rsp), %xmm0
vpor 0x120(%rsp), %xmm0, %xmm0
vmovdqa %xmm0, (%rsp)
vmovdqa 0x60(%rsp), %xmm1
vmovdqa (%rsp), %xmm0
vmovdqa %xmm1, 0x80(%rsp)
vmovdqa %xmm0, 0x70(%rsp)
vmovdqa 0x80(%rsp), %xmm0
vmovdqa 0x70(%rsp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
addq $0x148, %rsp            # imm = 0x148
retq
nopw (%rax,%rax)