// File: /workspace/github_c_makefile_star2_O2/Nico01[P]obj2asm/odisasm.c
// Function: disp8
int disp8( byte, text, class )
    uchar   byte;
    char            *text;
    int             class;
{
    int             dcheck;
    char            line[60];
    char            *short_text;
    dword   offset;
    dword   dest;
    PUB_T           *pub_rec;

    if ( over_seg != -1 ) {             /* No segment overide allowed */
        return( 0 );
    }

    dcheck = data_check(1);

    if ( dcheck != NORMAL && dcheck != BAD ) {
        return( 0 );
    }

    if ( check_getc( &offset ) ) {
        return( 0 );
    }

    if ( offset == 0xFFFFFFFFL ) {      /* This would generate a label in  */
        return( 0 );                    /* the middle of the jmp statement */
    }                                   /* thereby preventing it anyway    */

    /*
    ** Special 'SHORT' for small jumps 
    */
    short_text = "";
    if ( compatibility != 2 ) {
        if ( byte == 0xEB || segment_mode == 386 ) {
            short_text = "short ";
        }
    }

    dest = inst_offset + (signed char)offset + 2;

    pub_rec = check_public( 1, segment, dest, 'L' );

    if ( pub_rec ) {
        pub_rec->type = NEAR;
        offset = dest - pub_rec->offset;
        if ( offset > 0 ) {
            sprintf( line, "%s%s + 0%04lXh", 
                                short_text, pub_rec->name, offset );
        } else {
            sprintf( line, "%s%s", short_text, pub_rec->name );
        }
    } else {
        if ( compatibility == 2 ) {
            sprintf( text, " %s.0%04lXh", short_text, offset );
        } else {
            sprintf( text, "%s[%s:0%04lXh]", short_text, cseg_name, offset );
        }
    }

    instr_opcode( text );
    instr_operand( line );

    byte = byte;               /* Prevent unused variable warnings */
    class = class;
    return( 2 );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
xorl %r14d, %r14d
cmpl $-0x1, 0xeaac(%rip)     # 0x18a88
je 0x9ff0
movl %r14d, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rsi, %rbx
movl %edi, %ebp
pushq $0x1
popq %rdi
callq 0xc74e
cmpl $0x3, %eax
je 0xa006
testl %eax, %eax
jne 0x9fde
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x93b4
testl %eax, %eax
setne %al
movq (%r15), %r15
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpq %rcx, %r15
sete %cl
orb %al, %cl
jne 0x9fde
leaq 0x11ec7(%rip), %r13     # 0x1bef8
cmpl $0x2, (%r13)
jne 0xa041
leaq 0x90cd(%rip), %r14      # 0x1310c
jmp 0xa068
leaq 0x12158(%rip), %rax     # 0x1c1a0
cmpl $0x182, (%rax)          # imm = 0x182
leaq 0x8278(%rip), %rax      # 0x122cd
leaq 0x90b0(%rip), %r14      # 0x1310c
cmoveq %rax, %r14
cmpb $-0x15, %bpl
cmoveq %rax, %r14
leaq 0x12129(%rip), %rax     # 0x1c198
movq (%rax), %rax
movsbq %r15b, %rcx
leaq (%rcx,%rax), %r12
addq $0x2, %r12
leaq 0x1210b(%rip), %rax     # 0x1c190
movl (%rax), %esi
pushq $0x1
popq %rdi
pushq $0x4c
popq %rcx
movq %r12, %rdx
callq 0xf360
testq %rax, %rax
je 0xa0c2
movq %rax, %rcx
movl $0x1, 0x38(%rax)
addq $0x10, %rax
subq 0x8(%rcx), %r12
jne 0xa0e2
leaq 0x9396(%rip), %rsi      # 0x1344b
leaq 0x10(%rsp), %rdi
movq %r14, %rdx
movq %rax, %rcx
jmp 0xa0d9
cmpl $0x2, (%r13)
jne 0xa0f9
leaq 0x8213(%rip), %rsi      # 0x122e3
movq %rbx, %rdi
movq %r14, %rdx
movq %r15, %rcx
xorl %eax, %eax
callq 0x91b0
jmp 0xa11a
leaq 0x81eb(%rip), %rsi      # 0x122d4
leaq 0x10(%rsp), %rdi
movq %r14, %rdx
movq %rax, %rcx
movq %r12, %r8
jmp 0xa113
leaq 0x120a8(%rip), %rax     # 0x1c1a8
movq (%rax), %rcx
leaq 0x81e5(%rip), %rsi      # 0x122ef
movq %rbx, %rdi
movq %r14, %rdx
movq %r15, %r8
xorl %eax, %eax
callq 0x91b0
movq %rbx, %rdi
callq 0x9491
leaq 0x10(%rsp), %rdi
callq 0x94b3
pushq $0x2
popq %r14
jmp 0x9fde