// File: /workspace/github_c_makefile_star2_O0/bhk[P]tooltree/lua/../opensource/lua-5.2.3/src/lgc.c
// Function: reallymarkobject
static void reallymarkobject (global_State *g, GCObject *o) {
  lu_mem size;
  white2gray(o);
  switch (gch(o)->tt) {
    case LUA_TSHRSTR:
    case LUA_TLNGSTR: {
      size = sizestring(gco2ts(o));
      break;  /* nothing else to mark; make it black */
    }
    case LUA_TUSERDATA: {
      Table *mt = gco2u(o)->metatable;
      markobject(g, mt);
      markobject(g, gco2u(o)->env);
      size = sizeudata(gco2u(o));
      break;
    }
    case LUA_TUPVAL: {
      UpVal *uv = gco2uv(o);
      markvalue(g, uv->v);
      if (uv->v != &uv->u.value)  /* open? */
        return;  /* open upvalues remain gray */
      size = sizeof(UpVal);
      break;
    }
    case LUA_TLCL: {
      gco2lcl(o)->gclist = g->gray;
      g->gray = o;
      return;
    }
    case LUA_TCCL: {
      gco2ccl(o)->gclist = g->gray;
      g->gray = o;
      return;
    }
    case LUA_TTABLE: {
      linktable(gco2t(o), &g->gray);
      return;
    }
    case LUA_TTHREAD: {
      gco2th(o)->gclist = g->gray;
      g->gray = o;
      return;
    }
    case LUA_TPROTO: {
      gco2p(o)->gclist = g->gray;
      g->gray = o;
      return;
    }
    default: lua_assert(0); return;
  }
  gray2black(o);
  g->GCmemtrav += size;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq 0x28(%rsp), %rax
movb 0x9(%rax), %cl
andb $-0x4, %cl
movb %cl, 0x9(%rax)
movq 0x28(%rsp), %rax
movzbl 0x8(%rax), %eax
addl $-0x4, %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x22, %eax
ja 0x12d41
movq 0x8(%rsp), %rax
leaq 0x22f64(%rip), %rcx     # 0x35ab8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
addq $0x1, %rax
shlq $0x0, %rax
addq $0x18, %rax
movq %rax, 0x20(%rsp)
jmp 0x12d43
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x12bb2
movq 0x18(%rsp), %rax
movzbl 0x9(%rax), %eax
andl $0x3, %eax
cmpl $0x0, %eax
je 0x12bb2
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x12b10
movq 0x28(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x12be6
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rax
movzbl 0x9(%rax), %eax
andl $0x3, %eax
cmpl $0x0, %eax
je 0x12be6
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rsi
callq 0x12b10
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rax
addq $0x28, %rax
movq %rax, 0x20(%rsp)
jmp 0x12d43
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x12c49
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movzbl 0x9(%rax), %eax
andl $0x3, %eax
cmpl $0x0, %eax
je 0x12c49
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rsi
callq 0x12b10
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rsp), %rcx
addq $0x18, %rcx
cmpq %rcx, %rax
je 0x12c65
jmp 0x12d64
movq $0x28, 0x20(%rsp)
jmp 0x12d43
movq 0x30(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x80(%rax)
jmp 0x12d64
movq 0x30(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x80(%rax)
jmp 0x12d64
movq 0x30(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x80(%rax)
jmp 0x12d64
movq 0x30(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x68(%rax)
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x80(%rax)
jmp 0x12d64
movq 0x30(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x70(%rax)
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x80(%rax)
jmp 0x12d64
jmp 0x12d64
movq 0x28(%rsp), %rax
movzbl 0x9(%rax), %ecx
orl $0x4, %ecx
movb %cl, 0x9(%rax)
movq 0x20(%rsp), %rcx
movq 0x30(%rsp), %rax
addq 0x20(%rax), %rcx
movq %rcx, 0x20(%rax)
addq $0x38, %rsp
retq
nopl (%rax)