// File: /workspace/github_c_makefile_star2_O0/thegenemyers[P]DAMASKER/tandem.c
// Function: lex_thread
static void *lex_thread(void *arg)
{ Lex_Arg    *data  = (Lex_Arg *) arg;
  int64      *sptr  = data->sptr;
  int64      *tptr  = data->tptr;
  int         shift = LEX_shift;   //  Must be a multiple of 8 in [0,120]
  int        qshift = (LEX_next - LEX_shift) - NSHIFT;
  int64       zsize = LEX_zsize;
  Double     *src   = LEX_src;
  Double     *trg   = LEX_trg;
  int64       i, n, x;
  uint64      c, b;

  n = data->end;
  if (shift >= 64)
    { shift -= 64;
      if (LEX_last)
        for (i = data->beg; i < n; i++)
          { c = src[i].p2;
            b = (c >> shift);
            x = tptr[b&BMASK]++;
            trg[x] = src[i];
          }
      else
        for (i = data->beg; i < n; i++)
          { c = src[i].p2;
            b = (c >> shift);
            x = tptr[b&BMASK]++;
            trg[x] = src[i];
            sptr[((b >> qshift) & QMASK) + x/zsize] += 1;
          }
    }

  else if ( ! LEX_last && LEX_next >= 64)   //  && LEX_shift < 64

    { qshift = (LEX_next - 64) - NSHIFT;
      if (qshift < 0)
        for (i = data->beg; i < n; i++)
          { c = src[i].p1;
            b = (c >> shift);
            x = tptr[b&BMASK]++;
            trg[x] = src[i];
            sptr[((src[i].p2 << NSHIFT) & QMASK) + x/zsize] += 1;
          }
      else
        for (i = data->beg; i < n; i++)
          { c = src[i].p1;
            b = (c >> shift);
            x = tptr[b&BMASK]++;
            trg[x] = src[i];
            sptr[((src[i].p2 >> qshift) & QMASK) + x/zsize] += 1;
          }
    }

  else // LEX_last || LEX_next < 64
    if (LEX_last)
      if (shift == 0)
        for (i = data->beg; i < n; i++)
          { c = src[i].p1;
            x = tptr[c&BMASK]++;
            trg[x] = src[i];
          }
      else
        for (i = data->beg; i < n; i++)
          { c = src[i].p1;
            b = (c >> shift);
            x = tptr[b&BMASK]++;
            trg[x] = src[i];
          }
    else
      if (shift == 0)
        for (i = data->beg; i < n; i++)
          { c = src[i].p1;
            x = tptr[c&BMASK]++;
            trg[x] = src[i];
            sptr[((c >> qshift) & QMASK) + x/zsize] += 1;
          }
      else
        for (i = data->beg; i < n; i++)
          { c = src[i].p1;
            b = (c >> shift);
            x = tptr[b&BMASK]++;
            trg[x] = src[i];
            sptr[((b >> qshift) & QMASK) + x/zsize] += 1;
          }

  return (NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x810(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x20(%rbp)
movl 0x282df(%rip), %eax     # 0x2e4a4
movl %eax, -0x24(%rbp)
movl 0x282da(%rip), %eax     # 0x2e4a8
subl 0x282d0(%rip), %eax     # 0x2e4a4
subl 0x28272(%rip), %eax     # 0x2e44c
movl %eax, -0x28(%rbp)
movq 0x2829c(%rip), %rax     # 0x2e480
movq %rax, -0x30(%rbp)
movq 0x28299(%rip), %rax     # 0x2e488
movq %rax, -0x38(%rbp)
movq 0x28296(%rip), %rax     # 0x2e490
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
cmpl $0x40, -0x24(%rbp)
jl 0x63ac
movl -0x24(%rbp), %eax
subl $0x40, %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, 0x2827c(%rip)     # 0x2e4a0
je 0x62cc
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x62c7
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl -0x24(%rbp), %ecx
shrq %cl, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rcx
movq -0x68(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x6235
jmp 0x63a7
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x63a5
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl -0x24(%rbp), %ecx
shrq %cl, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rcx
movq -0x68(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rax
movl -0x28(%rbp), %ecx
shrq %cl, %rax
movq %rax, %rcx
andq 0x28124(%rip), %rcx     # 0x2e498
movq -0x58(%rbp), %rax
cqto
idivq -0x30(%rbp)
movq %rax, %rdx
movq -0x70(%rbp), %rax
addq %rdx, %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x62d7
jmp 0x63a7
jmp 0x68ca
cmpl $0x0, 0x280ed(%rip)     # 0x2e4a0
jne 0x65bf
cmpl $0x40, 0x280e8(%rip)    # 0x2e4a8
jl 0x65bf
movl 0x280dc(%rip), %eax     # 0x2e4a8
subl $0x40, %eax
subl 0x28077(%rip), %eax     # 0x2e44c
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
jge 0x64d1
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x64cc
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl -0x24(%rbp), %ecx
shrq %cl, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rcx
movq -0x68(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl 0x27fbe(%rip), %ecx     # 0x2e44c
shlq %cl, %rax
movq %rax, %rcx
andq 0x27ffd(%rip), %rcx     # 0x2e498
movq -0x58(%rbp), %rax
cqto
idivq -0x30(%rbp)
movq %rax, %rdx
movq -0x78(%rbp), %rax
addq %rdx, %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x63ed
jmp 0x65ba
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x65b8
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl -0x24(%rbp), %ecx
shrq %cl, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rcx
movq -0x68(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl -0x28(%rbp), %ecx
shrq %cl, %rax
movq %rax, %rcx
andq 0x27f11(%rip), %rcx     # 0x2e498
movq -0x58(%rbp), %rax
cqto
idivq -0x30(%rbp)
movq %rax, %rdx
movq -0x80(%rbp), %rax
addq %rdx, %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x64dc
jmp 0x65ba
jmp 0x68c8
cmpl $0x0, 0x27eda(%rip)     # 0x2e4a0
je 0x6705
cmpl $0x0, -0x24(%rbp)
jne 0x6662
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x665d
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rcx
movq -0x60(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x65e1
jmp 0x6700
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x66fe
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl -0x24(%rbp), %ecx
shrq %cl, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rcx
movq -0x68(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x666d
jmp 0x6700
jmp 0x68c6
cmpl $0x0, -0x24(%rbp)
jne 0x67e4
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x67df
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rcx
movq -0x60(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x60(%rbp), %rax
movl -0x28(%rbp), %ecx
shrq %cl, %rax
movq %rax, %rcx
andq 0x27ced(%rip), %rcx     # 0x2e498
movq -0x58(%rbp), %rax
cqto
idivq -0x30(%rbp)
movq %rax, %rdx
movq -0x88(%rbp), %rax
addq %rdx, %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x671a
jmp 0x68c4
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x68c2
movq -0x38(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl -0x24(%rbp), %ecx
shrq %cl, %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rcx
movq -0x68(%rbp), %rdx
andq $0xff, %rdx
movq (%rcx,%rdx,8), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, (%rcx,%rdx,8)
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x68(%rbp), %rax
movl -0x28(%rbp), %ecx
shrq %cl, %rax
movq %rax, %rcx
andq 0x27c0a(%rip), %rcx     # 0x2e498
movq -0x58(%rbp), %rax
cqto
idivq -0x30(%rbp)
movq %rax, %rdx
movq -0x90(%rbp), %rax
addq %rdx, %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x67ef
jmp 0x68c4
jmp 0x68c6
jmp 0x68c8
jmp 0x68ca
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)