// File: /workspace/github_c_makefile_star2_O0/deplinenoise[P]vlink/targets.c
// Function: add_vbcc_xtors
static void add_vbcc_xtors(struct GlobalVars *gv,struct list *objlist,
                           const char *cname,const char *dname,
                           const char *csecname,const char *dsecname,
                           const char *clabel,const char *dlabel)
{
  struct ObjectUnit *obj;
  int clen = strlen(cname);
  int dlen = strlen(dname);
  int i;

  for (obj=(struct ObjectUnit *)objlist->first;
       obj->n.next!=NULL; obj=(struct ObjectUnit *)obj->n.next) {
    for (i=0; i<OBJSYMHTABSIZE; i++) {
      struct Symbol *sym = obj->objsyms[i];

      while (sym) {
        if (sym->bind==SYMB_GLOBAL) {
          if (!strncmp(sym->name,cname,clen)) {
            new_priptr(obj,csecname,clabel,vbcc_xtors_pri(sym->name+clen),
                       sym->name,0);
          }
          else if (!strncmp(sym->name,dname,dlen))
            new_priptr(obj,dsecname,dlabel,vbcc_xtors_pri(sym->name+dlen),
                       sym->name,0);
        }
        sym = sym->obj_chain;
      }
    }

    if (objlist == &gv->selobjects)
      add_priptrs(gv,obj);  /* con-/destructors are already known */
  }
}

// Assembly:
subq $0x88, %rsp
movq 0x98(%rsp), %rax
movq 0x90(%rsp), %rax
movq %rdi, 0x80(%rsp)
movq %rsi, 0x78(%rsp)
movq %rdx, 0x70(%rsp)
movq %rcx, 0x68(%rsp)
movq %r8, 0x60(%rsp)
movq %r9, 0x58(%rsp)
movq 0x70(%rsp), %rdi
callq 0x50c0
movl %eax, 0x4c(%rsp)
movq 0x68(%rsp), %rdi
callq 0x50c0
movl %eax, 0x48(%rsp)
movq 0x78(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
cmpq $0x0, (%rax)
je 0x11f32
movl $0x0, 0x44(%rsp)
cmpl $0x20, 0x44(%rsp)
jge 0x11ef3
movq 0x50(%rsp), %rax
movq 0x48(%rax), %rax
movslq 0x44(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x38(%rsp)
je 0x11ee1
movq 0x38(%rsp), %rax
movzbl 0x43(%rax), %eax
cmpl $0x2, %eax
jne 0x11ece
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x70(%rsp), %rsi
movslq 0x4c(%rsp), %rdx
callq 0x5050
cmpl $0x0, %eax
jne 0x11e52
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rdi
movslq 0x4c(%rsp), %rax
addq %rax, %rdi
callq 0x13ba0
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movl %eax, %ecx
movq 0x38(%rsp), %rax
movq 0x20(%rax), %r8
xorl %eax, %eax
movl %eax, %r9d
callq 0x13b10
jmp 0x11ecc
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x68(%rsp), %rsi
movslq 0x48(%rsp), %rdx
callq 0x5050
cmpl $0x0, %eax
jne 0x11eca
movq 0x50(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rdi
movslq 0x48(%rsp), %rax
addq %rax, %rdi
callq 0x13ba0
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movl %eax, %ecx
movq 0x38(%rsp), %rax
movq 0x20(%rax), %r8
xorl %eax, %eax
movl %eax, %r9d
callq 0x13b10
jmp 0x11ecc
jmp 0x11ece
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x38(%rsp)
jmp 0x11dba
jmp 0x11ee3
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x11d98
movq 0x78(%rsp), %rax
movq 0x80(%rsp), %rcx
addq $0x138, %rcx            # imm = 0x138
cmpq %rcx, %rax
jne 0x11f1e
movq 0x80(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x11920
jmp 0x11f20
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x50(%rsp)
jmp 0x11d81
addq $0x88, %rsp
retq
nopw (%rax,%rax)