// File: /workspace/github_c_makefile_star2_O0/gplessis[P]dotdeb-redis/deps/lua/src/lparser.c
// Function: assignment
static void assignment (LexState *ls, struct LHS_assign *lh, int nvars) {
  expdesc e;
  check_condition(ls, VLOCAL <= lh->v.k && lh->v.k <= VINDEXED,
                      "syntax error");
  if (testnext(ls, ',')) {  /* assignment -> `,' primaryexp assignment */
    struct LHS_assign nv;
    nv.prev = lh;
    primaryexp(ls, &nv.v);
    if (nv.v.k == VLOCAL)
      check_conflict(ls, lh, &nv.v);
    luaY_checklimit(ls->fs, nvars, LUAI_MAXCCALLS - ls->L->nCcalls,
                    "variables in assignment");
    assignment(ls, &nv, nvars+1);
  }
  else {  /* assignment -> `=' explist1 */
    int nexps;
    checknext(ls, '=');
    nexps = explist1(ls, &e);
    if (nexps != nvars) {
      adjust_assign(ls, nvars, nexps, &e);
      if (nexps > nvars)
        ls->fs->freereg -= nexps - nvars;  /* remove extra values */
    }
    else {
      luaK_setoneret(ls->fs, &e);  /* close last expression */
      luaK_storevar(ls->fs, &lh->v, &e);
      return;  /* avoid default */
    }
  }
  init_exp(&e, VNONRELOC, ls->fs->freereg-1);  /* default assignment */
  luaK_storevar(ls->fs, &lh->v, &e);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rcx
movl $0x6, %eax
cmpl 0x8(%rcx), %eax
ja 0x1345b
movq -0x10(%rbp), %rax
cmpl $0x9, 0x8(%rax)
jbe 0x1346b
movq -0x8(%rbp), %rdi
leaq 0x18780(%rip), %rsi     # 0x2bbe6
callq 0x1e620
movq -0x8(%rbp), %rdi
movl $0x2c, %esi
callq 0x109a0
cmpl $0x0, %eax
je 0x1350f
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
addq $0x8, %rsi
callq 0x11c30
cmpl $0x6, -0x48(%rbp)
jne 0x134b6
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq -0x50(%rbp), %rdx
addq $0x8, %rdx
callq 0x135e0
movl -0x14(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x38(%rcx), %rcx
movzwl 0x60(%rcx), %edx
movl $0xc8, %ecx
subl %edx, %ecx
cmpl %ecx, %eax
jle 0x134f7
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movzwl 0x60(%rax), %eax
movl $0xc8, %esi
subl %eax, %esi
leaq 0x18701(%rip), %rdx     # 0x2bbf3
callq 0x11fe0
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %edx
addl $0x1, %edx
leaq -0x50(%rbp), %rsi
callq 0x13430
jmp 0x13596
movq -0x8(%rbp), %rdi
movl $0x3d, %esi
callq 0x11350
movq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x12d10
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x13568
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x54(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0x132f0
movl -0x54(%rbp), %eax
cmpl -0x14(%rbp), %eax
jle 0x13566
movl -0x54(%rbp), %edx
subl -0x14(%rbp), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl 0x3c(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x3c(%rax)
jmp 0x13594
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c950
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
leaq -0x30(%rbp), %rdx
callq 0x1cff0
jmp 0x135cb
jmp 0x13596
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl 0x3c(%rax), %edx
subl $0x1, %edx
leaq -0x30(%rbp), %rdi
movl $0xc, %esi
callq 0x11890
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
leaq -0x30(%rbp), %rdx
callq 0x1cff0
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)