// File: /workspace/github_cpp_makefile_star2_O1/gpertea[P]gclib/./GHash.hh
// Function: old::GHash<int>::Remove(char const*)
OBJ* GHash<OBJ>::Remove(const char* ky){
	int p,x,h,n;
	if(!ky){ GError("GHash::remove: NULL key argument.\n"); }
	OBJ* removed=NULL;
	if(0<fCount){
		h=GSTR_HASH(ky);
		GASSERT(0<=h);
		p=HASH1(h,fCapacity);
		GASSERT(0<=p && p<fCapacity);
		x=HASH2(h,fCapacity);
		GASSERT(1<=x && x<fCapacity);
		GASSERT(fCount<fCapacity);
		n=fCapacity;
		while(n && hash[p].hash!=-1){
			if(hash[p].hash==h && strcmp(hash[p].key,ky)==0){
				GTRACE(("GHash::remove: %08x removing: \"%s\"\n",this,ky));
				hash[p].hash=-2;
				if (hash[p].keyalloc) GFREE((hash[p].key));
				if (FREEDATA) (*fFreeProc)(hash[p].data);
				else removed=(OBJ*)hash[p].data;
				hash[p].key=NULL;
				hash[p].data=NULL;
				fCount--;
				if((100*fCount)<=(MIN_LOAD*fCapacity)) Resize(fCount);
				GASSERT(fCount<fCapacity);
				return removed;
			}
			p=(p+x)%fCapacity;
			n--;
		}
	}
	return removed;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movq %rsi, 0x18(%rsp)
testq %rsi, %rsi
jne 0xb3cf
leaq 0x33cd(%rip), %rdi      # 0xe795
xorl %eax, %eax
callq 0x289c
cmpl $0x0, 0x14(%rbx)
jle 0xb504
movq 0x18(%rsp), %rdi
callq 0x3e1e
movl %eax, %edi
testl %eax, %eax
movq %rdi, 0x8(%rsp)
jns 0xb40b
leaq 0x3310(%rip), %rdi      # 0xe705
leaq 0x32fe(%rip), %rsi      # 0xe6fa
movl $0x18c, %edx            # imm = 0x18C
callq 0x285c
movq 0x8(%rsp), %rdi
leal (%rdi,%rdi,2), %eax
leal (%rdi,%rax,4), %eax
movl 0x10(%rbx), %ecx
xorl %edx, %edx
divl %ecx
movl %edx, %ebp
testl %edx, %edx
setns %al
cmpl %ecx, %edx
setl %cl
testb %cl, %al
jne 0xb445
leaq 0x32db(%rip), %rdi      # 0xe70a
leaq 0x32c4(%rip), %rsi      # 0xe6fa
movl $0x18e, %edx            # imm = 0x18E
callq 0x285c
movq 0x8(%rsp), %rdi
movl %edi, %eax
shll $0x4, %eax
addl %edi, %eax
movl 0x10(%rbx), %ecx
leal -0x1(%rcx), %esi
xorl %edx, %edx
divl %esi
movl %edx, %esi
orl $0x1, %esi
testl %edx, %edx
setns %al
movl %esi, 0x14(%rsp)
cmpl %ecx, %esi
setl %cl
testb %cl, %al
jne 0xb48a
leaq 0x32aa(%rip), %rdi      # 0xe71e
leaq 0x327f(%rip), %rsi      # 0xe6fa
movl $0x190, %edx            # imm = 0x190
callq 0x285c
movq 0x8(%rsp), %rdi
movl 0x14(%rbx), %eax
cmpl 0x10(%rbx), %eax
jl 0xb4af
leaq 0x3250(%rip), %rdi      # 0xe6e9
leaq 0x325a(%rip), %rsi      # 0xe6fa
movl $0x191, %edx            # imm = 0x191
callq 0x285c
movq 0x8(%rsp), %rdi
movl 0x10(%rbx), %r15d
testl %r15d, %r15d
je 0xb504
movq %rbx, 0x20(%rsp)
movq 0x8(%rbx), %r14
movl %r15d, %ebx
movslq %ebp, %rax
leaq (%rax,%rax,2), %r12
movl 0xc(%r14,%r12,8), %eax
cmpl $-0x1, %eax
je 0xb504
cmpl %edi, %eax
jne 0xb4f4
leaq (%r14,%r12,8), %r13
movq (%r13), %rdi
movq 0x18(%rsp), %rsi
callq 0x2350
movq 0x8(%rsp), %rdi
testl %eax, %eax
je 0xb519
addl 0x14(%rsp), %ebp
movl %ebp, %eax
cltd
idivl %r15d
movl %edx, %ebp
decl %ebx
jne 0xb4c4
xorl %r14d, %r14d
movq %r14, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0xfffffffe, 0xc(%r13)  # imm = 0xFFFFFFFE
cmpb $0x1, 0x8(%r13)
movq 0x20(%rsp), %rbx
jne 0xb543
movq (%r13), %rdi
testq %rdi, %rdi
je 0xb53b
callq 0x22e0
movq $0x0, (%r13)
movq 0x8(%rbx), %rcx
movq 0x28(%rbx), %rax
movq 0x10(%rcx,%r12,8), %r14
testq %rax, %rax
je 0xb55d
movq %r14, %rdi
callq *%rax
xorl %r14d, %r14d
movq 0x8(%rbx), %rax
xorl %ecx, %ecx
movq %rcx, (%rax,%r12,8)
movq %rcx, 0x10(%rax,%r12,8)
movl 0x10(%rbx), %eax
movl 0x14(%rbx), %esi
decl %esi
movl %esi, 0x14(%rbx)
imull $0x64, %esi, %ecx
addl %eax, %eax
leal (%rax,%rax,4), %eax
cmpl %eax, %ecx
jg 0xb58b
movq %rbx, %rdi
callq 0xbba6
movl 0x14(%rbx), %eax
cmpl 0x10(%rbx), %eax
jl 0xb507
leaq 0x314b(%rip), %rdi      # 0xe6e9
leaq 0x3155(%rip), %rsi      # 0xe6fa
movl $0x19e, %edx            # imm = 0x19E
callq 0x285c
jmp 0xb507