// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/expat-2.0.1/lib/xmlparse.c
// Function: lookup
static NAMED *
lookup(HASH_TABLE *table, KEY name, size_t createSize)
{
  size_t i;
  if (table->size == 0) {
    size_t tsize;
    if (!createSize)
      return NULL;
    table->power = INIT_POWER;
    /* table->size is a power of 2 */
    table->size = (size_t)1 << INIT_POWER;
    tsize = table->size * sizeof(NAMED *);
    table->v = (NAMED **)table->mem->malloc_fcn(tsize);
    if (!table->v) {
      table->size = 0;
      return NULL;
    }
    memset(table->v, 0, tsize);
    i = hash(name) & ((unsigned long)table->size - 1);
  }
  else {
    unsigned long h = hash(name);
    unsigned long mask = (unsigned long)table->size - 1;
    unsigned char step = 0;
    i = h & mask;
    while (table->v[i]) {
      if (keyeq(name, table->v[i]->name))
        return table->v[i];
      if (!step)
        step = PROBE_STEP(h, mask, table->power);
      i < step ? (i += table->size - step) : (i -= step);
    }
    if (!createSize)
      return NULL;

    /* check for overflow (table is half full) */
    if (table->used >> (table->power - 1)) {
      unsigned char newPower = table->power + 1;
      size_t newSize = (size_t)1 << newPower;
      unsigned long newMask = (unsigned long)newSize - 1;
      size_t tsize = newSize * sizeof(NAMED *);
      NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize);
      if (!newV)
        return NULL;
      memset(newV, 0, tsize);
      for (i = 0; i < table->size; i++)
        if (table->v[i]) {
          unsigned long newHash = hash(table->v[i]->name);
          size_t j = newHash & newMask;
          step = 0;
          while (newV[j]) {
            if (!step)
              step = PROBE_STEP(newHash, newMask, newPower);
            j < step ? (j += newSize - step) : (j -= step);
          }
          newV[j] = table->v[i];
        }
      table->mem->free_fcn(table->v);
      table->v = newV;
      table->power = newPower;
      table->size = newSize;
      i = h & newMask;
      step = 0;
      while (table->v[i]) {
        if (!step)
          step = PROBE_STEP(h, newMask, newPower);
        i < step ? (i += newSize - step) : (i -= step);
      }
    }
  }
  table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize);
  if (!table->v[i])
    return NULL;
  memset(table->v[i], 0, createSize);
  table->v[i]->name = name;
  (table->used)++;
  return table->v[i];
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x68(%rsp)
movq %rsi, 0x60(%rsp)
movq %rdx, 0x58(%rsp)
movq 0x68(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x37aebd
cmpq $0x0, 0x58(%rsp)
jne 0x37ae19
movq $0x0, 0x70(%rsp)
jmp 0x37b329
movq 0x68(%rsp), %rax
movb $0x6, 0x8(%rax)
movq 0x68(%rsp), %rax
movq $0x40, 0x10(%rax)
movq 0x68(%rsp), %rax
movq 0x10(%rax), %rax
shlq $0x3, %rax
movq %rax, 0x48(%rsp)
movq 0x68(%rsp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rax
movq 0x48(%rsp), %rdi
callq *%rax
movq %rax, %rcx
movq 0x68(%rsp), %rax
movq %rcx, (%rax)
movq 0x68(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x37ae85
movq 0x68(%rsp), %rax
movq $0x0, 0x10(%rax)
movq $0x0, 0x70(%rsp)
jmp 0x37b329
movq 0x68(%rsp), %rax
movq (%rax), %rdi
movq 0x48(%rsp), %rdx
xorl %esi, %esi
callq 0x19360
movq 0x60(%rsp), %rdi
callq 0x380d60
movq 0x68(%rsp), %rcx
movq 0x10(%rcx), %rcx
subq $0x1, %rcx
andq %rcx, %rax
movq %rax, 0x50(%rsp)
jmp 0x37b286
movq 0x60(%rsp), %rdi
callq 0x380d60
movq %rax, 0x40(%rsp)
movq 0x68(%rsp), %rax
movq 0x10(%rax), %rax
subq $0x1, %rax
movq %rax, 0x38(%rsp)
movb $0x0, 0x37(%rsp)
movq 0x40(%rsp), %rax
andq 0x38(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x37afc9
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rsi
callq 0x380db0
cmpb $0x0, %al
je 0x37af47
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x70(%rsp)
jmp 0x37b329
cmpb $0x0, 0x37(%rsp)
jne 0x37af84
movq 0x40(%rsp), %rax
movq 0x38(%rsp), %rcx
xorq $-0x1, %rcx
andq %rcx, %rax
movq 0x68(%rsp), %rcx
movzbl 0x8(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
shrq %cl, %rax
movq 0x38(%rsp), %rcx
shrq $0x2, %rcx
andq %rcx, %rax
orq $0x1, %rax
movb %al, 0x37(%rsp)
movq 0x50(%rsp), %rax
movzbl 0x37(%rsp), %ecx
cmpq %rcx, %rax
jae 0x37afb0
movq 0x68(%rsp), %rax
movq 0x10(%rax), %rax
movzbl 0x37(%rsp), %ecx
subq %rcx, %rax
addq 0x50(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x37afc4
movzbl 0x37(%rsp), %eax
movl %eax, %ecx
movq 0x50(%rsp), %rax
subq %rcx, %rax
movq %rax, 0x50(%rsp)
jmp 0x37aef2
cmpq $0x0, 0x58(%rsp)
jne 0x37afdf
movq $0x0, 0x70(%rsp)
jmp 0x37b329
movq 0x68(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x68(%rsp), %rcx
movzbl 0x8(%rcx), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
shrq %cl, %rax
cmpq $0x0, %rax
je 0x37b284
movq 0x68(%rsp), %rax
movzbl 0x8(%rax), %eax
addl $0x1, %eax
movb %al, 0x36(%rsp)
movzbl 0x36(%rsp), %eax
movl %eax, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rax
shlq $0x3, %rax
movq %rax, 0x18(%rsp)
movq 0x68(%rsp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdi
callq *%rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x37b073
movq $0x0, 0x70(%rsp)
jmp 0x37b329
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rdx
xorl %esi, %esi
callq 0x19360
movq $0x0, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq 0x68(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x37b1a2
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x37b18d
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rdi
callq 0x380d60
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
andq 0x20(%rsp), %rax
movq %rax, (%rsp)
movb $0x0, 0x37(%rsp)
movq 0x10(%rsp), %rax
movq (%rsp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x37b16f
cmpb $0x0, 0x37(%rsp)
jne 0x37b133
movq 0x8(%rsp), %rax
movq 0x20(%rsp), %rcx
xorq $-0x1, %rcx
andq %rcx, %rax
movzbl 0x36(%rsp), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
shrq %cl, %rax
movq 0x20(%rsp), %rcx
shrq $0x2, %rcx
andq %rcx, %rax
orq $0x1, %rax
movb %al, 0x37(%rsp)
movq (%rsp), %rax
movzbl 0x37(%rsp), %ecx
cmpq %rcx, %rax
jae 0x37b158
movq 0x28(%rsp), %rax
movzbl 0x37(%rsp), %ecx
subq %rcx, %rax
addq (%rsp), %rax
movq %rax, (%rsp)
jmp 0x37b16a
movzbl 0x37(%rsp), %eax
movl %eax, %ecx
movq (%rsp), %rax
subq %rcx, %rax
movq %rax, (%rsp)
jmp 0x37b0ea
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x10(%rsp), %rax
movq (%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x37b18f
movq 0x50(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x50(%rsp)
jmp 0x37b08d
movq 0x68(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x10(%rax), %rax
movq 0x68(%rsp), %rcx
movq (%rcx), %rdi
callq *%rax
movq 0x10(%rsp), %rcx
movq 0x68(%rsp), %rax
movq %rcx, (%rax)
movb 0x36(%rsp), %cl
movq 0x68(%rsp), %rax
movb %cl, 0x8(%rax)
movq 0x28(%rsp), %rcx
movq 0x68(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x40(%rsp), %rax
andq 0x20(%rsp), %rax
movq %rax, 0x50(%rsp)
movb $0x0, 0x37(%rsp)
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x37b282
cmpb $0x0, 0x37(%rsp)
jne 0x37b241
movq 0x40(%rsp), %rax
movq 0x20(%rsp), %rcx
xorq $-0x1, %rcx
andq %rcx, %rax
movzbl 0x36(%rsp), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
shrq %cl, %rax
movq 0x20(%rsp), %rcx
shrq $0x2, %rcx
andq %rcx, %rax
orq $0x1, %rax
movb %al, 0x37(%rsp)
movq 0x50(%rsp), %rax
movzbl 0x37(%rsp), %ecx
cmpq %rcx, %rax
jae 0x37b269
movq 0x28(%rsp), %rax
movzbl 0x37(%rsp), %ecx
subq %rcx, %rax
addq 0x50(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x37b27d
movzbl 0x37(%rsp), %eax
movl %eax, %ecx
movq 0x50(%rsp), %rax
subq %rcx, %rax
movq %rax, 0x50(%rsp)
jmp 0x37b1f4
jmp 0x37b284
jmp 0x37b286
movq 0x68(%rsp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rdi
callq *%rax
movq %rax, %rdx
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x37b2cc
movq $0x0, 0x70(%rsp)
jmp 0x37b329
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x58(%rsp), %rdx
xorl %esi, %esi
callq 0x19360
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rdx
movq (%rax,%rdx,8), %rax
movq %rcx, (%rax)
movq 0x68(%rsp), %rax
movq 0x18(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x18(%rax)
movq 0x68(%rsp), %rax
movq (%rax), %rax
movq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)