// File: /workspace/github_c_makefile_star2_O0/mikebdp2[P]AtomDis/main.c
// Function: do_tableinfo
int do_tableinfo (uint8_t *data, int off, int type, int nr)
{
    int size, frev, crev;
    const char *ind;

    if (! data)
	return 0;

    size = * (uint16_t *) (data+off);
    frev = *              (data+off+2);
    crev = *              (data+off+3);
    ind  = get_index (type, nr);

    fprintf (stdout, "%s  %08x", index_tables[type].name, off);
    if (nr >= 0)
	fprintf (stdout, "  #%02x  (%s)", nr, ind ? ind:"<unknown>");
    fputs (":\n\n", stdout);

    if (off)
	fprintf (stdout, "  Size         %04x\n", size);
    
    if (off && size)
	fprintf (stdout,
		 "  Format Rev.  %02x\n"
		 "  Param Rev.   %02x\n"
		 "  Content Rev. %02x\n",
		 frev & 0x0f, frev >> 4, crev);

    if (type == INDEX_COMMAND_TABLE && size) {
	int attr = * (uint16_t *) (data+off+4);
	fprintf (stdout,
		 "  Attributes:  Work space size        %02x longs\n"
		 "               Parameter space size   %02x longs\n"
		 "               Table update indicator %x\n",
		 (attr & 0xff) >> 2, (attr & 0x7f00) >> (8+2), attr >> 15);
    }
    putc ('\n', stdout);
    
    return size;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x5a78
movl $0x0, -0x4(%rbp)
jmp 0x5c10
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movzwl (%rax,%rcx), %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movzbl 0x2(%rax,%rcx), %eax
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movzbl 0x3(%rax,%rcx), %eax
movl %eax, -0x28(%rbp)
movl -0x18(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x4b6b0
movq %rax, -0x30(%rbp)
movq 0x5e503(%rip), %rax     # 0x63fc0
movq (%rax), %rdi
movslq -0x18(%rbp), %rcx
leaq 0x5f505(%rip), %rax     # 0x64fd0
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rdx
movl -0x14(%rbp), %ecx
leaq 0x46afa(%rip), %rsi     # 0x4c5d9
movb $0x0, %al
callq 0x4130
cmpl $0x0, -0x1c(%rbp)
jl 0x5b37
movq 0x5e4cd(%rip), %rax     # 0x63fc0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x38(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x5b11
movq -0x30(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x5b1e
leaq 0x46ad8(%rip), %rax     # 0x4c5f0
movq %rax, -0x48(%rbp)
jmp 0x5b1e
movl -0x38(%rbp), %edx
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rcx
leaq 0x46ab2(%rip), %rsi     # 0x4c5e2
movb $0x0, %al
callq 0x4130
movq 0x5e482(%rip), %rax     # 0x63fc0
movq (%rax), %rsi
leaq 0x47032(%rip), %rdi     # 0x4cb7a
callq 0x40a0
cmpl $0x0, -0x14(%rbp)
je 0x5b6e
movq 0x5e466(%rip), %rax     # 0x63fc0
movq (%rax), %rdi
movl -0x20(%rbp), %edx
leaq 0x46a93(%rip), %rsi     # 0x4c5fa
movb $0x0, %al
callq 0x4130
cmpl $0x0, -0x14(%rbp)
je 0x5ba2
cmpl $0x0, -0x20(%rbp)
je 0x5ba2
movq 0x5e43f(%rip), %rax     # 0x63fc0
movq (%rax), %rdi
movl -0x24(%rbp), %edx
andl $0xf, %edx
movl -0x24(%rbp), %ecx
sarl $0x4, %ecx
movl -0x28(%rbp), %r8d
leaq 0x46a74(%rip), %rsi     # 0x4c60f
movb $0x0, %al
callq 0x4130
cmpl $0x1, -0x18(%rbp)
jne 0x5bf6
cmpl $0x0, -0x20(%rbp)
je 0x5bf6
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movzwl 0x4(%rax,%rcx), %eax
movl %eax, -0x34(%rbp)
movq 0x5e3fb(%rip), %rax     # 0x63fc0
movq (%rax), %rdi
movl -0x34(%rbp), %edx
andl $0xff, %edx
sarl $0x2, %edx
movl -0x34(%rbp), %ecx
andl $0x7f00, %ecx           # imm = 0x7F00
sarl $0xa, %ecx
movl -0x34(%rbp), %r8d
sarl $0xf, %r8d
leaq 0x46a5d(%rip), %rsi     # 0x4c64c
movb $0x0, %al
callq 0x4130
movq 0x5e3c3(%rip), %rax     # 0x63fc0
movq (%rax), %rsi
movl $0xa, %edi
callq 0x4120
movl -0x20(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)