// File: ctSkennerton[P]fxtract/util/ssearch_dump.c
// Function: ssearch_dump
void
ssearch_dump(SSEARCH*sse, FILE *fp)
{
    int         i, j, maxsym;
    char        symchar[256];
    if (!sse)
	return;

    fprintf(fp, "sse {nstrs=%d suflen=%d symwid=%d}\n",
	sse->nstrs, sse->suflen, sse->symwid);
#if 0
    for (i = 0; i < sse->nstrs; ++i)
        fprintf(fp, "[%d] %s\n", i+1, sse->strv[i].ptr);
#endif
    for (i = maxsym = 0; i < 256; ++i) {
        if (sse->symv[i] >= 0)
            symchar[sse->symv[i]] = i;
        if (maxsym < sse->symv[i])
            maxsym = sse->symv[i];
    }

#   define FMASK "%02X"
    fputs(" __", fp);
    for (j = 0; j <= maxsym; ++j)
        fprintf(fp, isgraph(symchar[j]) ? " _%c" : " "FMASK, symchar[j]);
    putc('\n', fp);

    if (sse->mapv) {
        for (i = 0; i <= maxsym; ++i) {
            fprintf(fp, isgraph(symchar[i]) ? " %c_" : FMASK":", symchar[i]);
            for (j = 0; j <= maxsym; ++j)
                fprintf(fp, " "FMASK, sse->mapv[(j << sse->symwid) + i]);
            putc('\n', fp);
        }
    }
#if 0
    if (sse->suffixh) {
        char        *cp;
        int         *pos;
        for (map_start(sse->suffixh);
		map_next(sse->suffixh,
			     (void const**)(uintptr_t)&cp,
			     (void**)(uintptr_t)&pos);) {

            fprintf(fp, "%.*s %d:\t", sse->suflen, cp,
					(int)(pos - sse->prefixv));
            for (; *pos != NONSTR; ++pos)
                fprintf(stderr, " [%d]%.*s", *pos,
					(int)sse->strv[*pos].len,
					sse->strv[*pos].ptr);
            putc('\n', stderr);
        }
    }
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x64ff
jmp 0x6715
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x8(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x8(%rbp), %rax
movl 0x28(%rax), %r8d
leaq 0x2c26(%rip), %rsi      # 0x9146
movb $0x0, %al
callq 0x3260
movl $0x0, -0x1c(%rbp)
movl $0x0, -0x14(%rbp)
cmpl $0x100, -0x14(%rbp)     # imm = 0x100
jge 0x659b
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
movswl 0x2c(%rax,%rcx,2), %eax
cmpl $0x0, %eax
jl 0x656a
movl -0x14(%rbp), %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rdx
movswq 0x2c(%rax,%rdx,2), %rax
movb %cl, -0x120(%rbp,%rax)
movl -0x1c(%rbp), %eax
movq -0x8(%rbp), %rcx
movslq -0x14(%rbp), %rdx
movswl 0x2c(%rcx,%rdx,2), %ecx
cmpl %ecx, %eax
jge 0x658e
movq -0x8(%rbp), %rax
movslq -0x14(%rbp), %rcx
movswl 0x2c(%rax,%rcx,2), %eax
movl %eax, -0x1c(%rbp)
jmp 0x6590
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x6535
movq -0x10(%rbp), %rsi
leaq 0x2bc4(%rip), %rdi      # 0x916a
callq 0x31d0
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jg 0x6620
movq -0x10(%rbp), %rax
movq %rax, -0x128(%rbp)
callq 0x31a0
movq -0x128(%rbp), %rdi
movq (%rax), %rax
movslq -0x18(%rbp), %rcx
movsbl -0x120(%rbp,%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %ecx
andl $0x8000, %ecx           # imm = 0x8000
leaq 0x2b7f(%rip), %rsi      # 0x9173
leaq 0x2b73(%rip), %rax      # 0x916e
cmpl $0x0, %ecx
cmovneq %rax, %rsi
movslq -0x18(%rbp), %rax
movsbl -0x120(%rbp,%rax), %edx
movb $0x0, %al
callq 0x3260
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x65b2
movq -0x10(%rbp), %rsi
movl $0xa, %edi
callq 0x3320
movq -0x8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x6715
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jg 0x6713
movq -0x10(%rbp), %rax
movq %rax, -0x130(%rbp)
callq 0x31a0
movq -0x130(%rbp), %rdi
movq (%rax), %rax
movslq -0x14(%rbp), %rcx
movsbl -0x120(%rbp,%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %ecx
andl $0x8000, %ecx           # imm = 0x8000
leaq 0x2af4(%rip), %rsi      # 0x917e
leaq 0x2ae8(%rip), %rax      # 0x9179
cmpl $0x0, %ecx
cmovneq %rax, %rsi
movslq -0x14(%rbp), %rax
movsbl -0x120(%rbp,%rax), %edx
movb $0x0, %al
callq 0x3260
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jg 0x66f7
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x18(%rbp), %edx
movq -0x8(%rbp), %rcx
movl 0x28(%rcx), %ecx
shll %cl, %edx
movl %edx, %ecx
addl -0x14(%rbp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %edx
leaq 0x2a8e(%rip), %rsi      # 0x9173
movb $0x0, %al
callq 0x3260
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x66b2
movq -0x10(%rbp), %rsi
movl $0xa, %edi
callq 0x3320
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x6644
jmp 0x6715
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nop