LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_xrl_mem_imm
static int disasm_xrl_mem_imm(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    char mem[16];mem_memonic(aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)], mem);
    sprintf(aBuffer,"XRL   %s, #%02Xh",        
        mem,
        aCPU->mCodeMem[(aPosition + 2)&(aCPU->mCodeMemSize-1)]);
    
    return 3;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x28(%rbp)
movl %esi, -0x2c(%rbp)
movq %rdx, -0x38(%rbp)
movq -0x28(%rbp), %rdx
movq (%rdx), %rax
movl -0x2c(%rbp), %ecx
incl %ecx
movl 0x8(%rdx), %edx
decl %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x40(%rbp)
callq 0x73c0
movq -0x40(%rbp), %rdx
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq (%rsi), %rax
movl -0x2c(%rbp), %ecx
addl $0x2, %ecx
movl 0x8(%rsi), %esi
decl %esi
andl %esi, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
leaq 0x9d35(%rip), %rsi      # 0x13756
xorl %eax, %eax
callq 0x4160
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x9a45
movl $0x3, %eax
addq $0x40, %rsp
popq %rbp
retq
callq 0x4080
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_mov_indir_rx_imm
static int disasm_mov_indir_rx_imm(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    sprintf(aBuffer,"MOV   @R%d, #%02Xh",        
        aCPU->mCodeMem[(aPosition)&(aCPU->mCodeMemSize-1)]&1,
        aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)]);
    return 2;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
andl $0x1, %edx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl -0xc(%rbp), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
leaq 0x9a19(%rip), %rsi      # 0x137d7
movb $0x0, %al
callq 0x4160
movl $0x2, %eax
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_mov_mem_mem
static int disasm_mov_mem_mem(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    char mem1[16];
    char mem2[16];
    mem_memonic(aCPU->mCodeMem[(aPosition + 2)&(aCPU->mCodeMemSize-1)], mem1);
    mem_memonic(aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)], mem2);
    sprintf(aBuffer,"MOV   %s, %s",        
        mem1,
        mem2);
    return 3;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x38(%rbp)
movl %esi, -0x3c(%rbp)
movq %rdx, -0x48(%rbp)
movq -0x38(%rbp), %rdx
movq (%rdx), %rax
movl -0x3c(%rbp), %ecx
addl $0x2, %ecx
movl 0x8(%rdx), %edx
decl %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x58(%rbp)
callq 0x73c0
movq -0x38(%rbp), %rdx
movq (%rdx), %rax
movl -0x3c(%rbp), %ecx
incl %ecx
movl 0x8(%rdx), %edx
decl %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
leaq -0x30(%rbp), %rsi
movq %rsi, -0x50(%rbp)
callq 0x73c0
movq -0x58(%rbp), %rdx
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %rdi
leaq 0x9897(%rip), %rsi      # 0x13819
xorl %eax, %eax
callq 0x4160
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x9fa6
movl $0x3, %eax
addq $0x60, %rsp
popq %rbp
retq
callq 0x4080
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_mov_mem_indir_rx
static int disasm_mov_mem_indir_rx(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    char mem[16];mem_memonic(aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)], mem);
    sprintf(aBuffer,"MOV   %s, @R%d",        
        mem,
        aCPU->mCodeMem[(aPosition)&(aCPU->mCodeMemSize-1)]&1);
    
    return 2;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x28(%rbp)
movl %esi, -0x2c(%rbp)
movq %rdx, -0x38(%rbp)
movq -0x28(%rbp), %rdx
movq (%rdx), %rax
movl -0x2c(%rbp), %ecx
incl %ecx
movl 0x8(%rdx), %edx
decl %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x40(%rbp)
callq 0x73c0
movq -0x40(%rbp), %rdx
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq (%rsi), %rax
movl -0x2c(%rbp), %ecx
movl 0x8(%rsi), %esi
decl %esi
andl %esi, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
andl $0x1, %ecx
leaq 0x9805(%rip), %rsi      # 0x13826
xorl %eax, %eax
callq 0x4160
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0xa045
movl $0x2, %eax
addq $0x40, %rsp
popq %rbp
retq
callq 0x4080
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_mov_dptr_imm
static int disasm_mov_dptr_imm(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    sprintf(aBuffer,"MOV   DPTR, #0%02X%02Xh",        
        aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)],
        aCPU->mCodeMem[(aPosition + 2)&(aCPU->mCodeMemSize-1)]);
    return 3;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl -0xc(%rbp), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl -0xc(%rbp), %ecx
addl $0x2, %ecx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
leaq 0x9787(%rip), %rsi      # 0x13835
movb $0x0, %al
callq 0x4160
movl $0x3, %eax
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_mov_indir_rx_mem
static int disasm_mov_indir_rx_mem(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    char mem[16];mem_memonic(aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)], mem);
    sprintf(aBuffer,"MOV   @R%d, %s",        
        aCPU->mCodeMem[(aPosition)&(aCPU->mCodeMemSize-1)]&1,
        mem);
    
    return 2;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x28(%rbp)
movl %esi, -0x2c(%rbp)
movq %rdx, -0x38(%rbp)
movq -0x28(%rbp), %rdx
movq (%rdx), %rax
movl -0x2c(%rbp), %ecx
incl %ecx
movl 0x8(%rdx), %edx
decl %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x40(%rbp)
callq 0x73c0
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq (%rsi), %rax
movl -0x2c(%rbp), %edx
movl 0x8(%rsi), %esi
decl %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %edx
andl $0x1, %edx
leaq 0x9460(%rip), %rsi      # 0x138c1
xorl %eax, %eax
callq 0x4160
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0xa485
movl $0x2, %eax
addq $0x40, %rsp
popq %rbp
retq
callq 0x4080
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_cjne_a_mem_offset
static int disasm_cjne_a_mem_offset(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    char mem[16];mem_memonic(aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)], mem);
    sprintf(aBuffer,"CJNE  A, %s, #%+d",
        mem,
        (signed char)(aCPU->mCodeMem[(aPosition + 2)&(aCPU->mCodeMemSize-1)]));
    
    return 3;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x28(%rbp)
movl %esi, -0x2c(%rbp)
movq %rdx, -0x38(%rbp)
movq -0x28(%rbp), %rdx
movq (%rdx), %rax
movl -0x2c(%rbp), %ecx
incl %ecx
movl 0x8(%rdx), %edx
decl %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edi
leaq -0x20(%rbp), %rsi
movq %rsi, -0x40(%rbp)
callq 0x73c0
movq -0x40(%rbp), %rdx
movq -0x38(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq (%rsi), %rax
movl -0x2c(%rbp), %ecx
addl $0x2, %ecx
movl 0x8(%rsi), %esi
decl %esi
andl %esi, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %ecx
leaq 0x9263(%rip), %rsi      # 0x13904
xorl %eax, %eax
callq 0x4160
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0xa6c5
movl $0x3, %eax
addq $0x40, %rsp
popq %rbp
retq
callq 0x4080
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/disasm.c
// Function: disasm_cjne_indir_rx_imm_offset
static int disasm_cjne_indir_rx_imm_offset(struct em8051 *aCPU, int aPosition, char *aBuffer)
{
    sprintf(aBuffer,"CJNE  @R%d, #%02Xh, #%+d",
        aCPU->mCodeMem[(aPosition)&(aCPU->mCodeMemSize-1)]&1,
        aCPU->mCodeMem[(aPosition + 1)&(aCPU->mCodeMemSize-1)],
        (signed char)(aCPU->mCodeMem[(aPosition + 2)&(aCPU->mCodeMemSize-1)]));
    return 3;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
andl $0x1, %edx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl -0xc(%rbp), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl -0xc(%rbp), %esi
addl $0x2, %esi
movq -0x8(%rbp), %r8
movl 0x8(%r8), %r8d
subl $0x1, %r8d
andl %r8d, %esi
movslq %esi, %rsi
movsbl (%rax,%rsi), %r8d
leaq 0x91c4(%rip), %rsi      # 0x13916
movb $0x0, %al
callq 0x4160
movl $0x3, %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: push_to_stack
void push_to_stack(struct em8051 *aCPU, int aValue)
{
    aCPU->mSFR[REG_SP]++;
    if (aCPU->mSFR[REG_SP] > 0x7f)
    {
        if (aCPU->mUpperData)
        {
            aCPU->mUpperData[aCPU->mSFR[REG_SP] - 0x80] = aValue;
        }
        else
        {
            if (aCPU->except_cb)
                aCPU->except_cb(aCPU, EXCEPTION_STACK);
        }
    }
    else
    {
        aCPU->mLowerData[aCPU->mSFR[REG_SP]] = aValue;
    }
    if (aCPU->mSFR[REG_SP] == 0)
        if (aCPU->except_cb)
            aCPU->except_cb(aCPU, EXCEPTION_STACK);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movb 0x1(%rax), %cl
addb $0x1, %cl
movb %cl, 0x1(%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x1(%rax), %eax
cmpl $0x7f, %eax
jle 0xaf78
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0xaf53
movl -0xc(%rbp), %eax
movb %al, %dl
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x1(%rcx), %ecx
subl $0x80, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
jmp 0xaf76
movq -0x8(%rbp), %rax
cmpq $0x0, 0x1040(%rax)
je 0xaf74
movq -0x8(%rbp), %rax
movq 0x1040(%rax), %rax
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq *%rax
jmp 0xaf76
jmp 0xaf94
movl -0xc(%rbp), %eax
movb %al, %dl
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x1(%rcx), %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x1(%rax), %eax
cmpl $0x0, %eax
jne 0xafc8
movq -0x8(%rbp), %rax
cmpq $0x0, 0x1040(%rax)
je 0xafc6
movq -0x8(%rbp), %rax
movq 0x1040(%rax), %rax
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq *%rax
jmp 0xafc8
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: inc_rx
static int inc_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    aCPU->mLowerData[rx]++;
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %dl
addb $0x1, %dl
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: add_a_rx
static int add_a_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    add_solve_flags(aCPU, aCPU->mLowerData[rx], ACC, 0);
    ACC += aCPU->mLowerData[rx];
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %esi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %edx
xorl %ecx, %ecx
callq 0x11670
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
addl %edx, %ecx
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: addc_a_rx
static int addc_a_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    int carry = CARRY;
    add_solve_flags(aCPU, aCPU->mLowerData[rx], ACC, carry);
    ACC += aCPU->mLowerData[rx] + carry;
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x50(%rax), %eax
andl $0x80, %eax
sarl $0x7, %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %esi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %edx
movl -0x10(%rbp), %ecx
callq 0x11670
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %edx
addl -0x10(%rbp), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
addl %edx, %ecx
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: orl_a_rx
static int orl_a_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    ACC |= aCPU->mLowerData[rx];
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
orl %edx, %ecx
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: mov_rx_imm
static int mov_rx_imm(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    aCPU->mLowerData[rx] = OPERAND1;
    PC += 2;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: mov_mem_rx
static int mov_mem_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    int address = OPERAND1;
    if (address > 0x7f)
    {
        aCPU->mSFR[address - 0x80] = aCPU->mLowerData[rx];
        if (aCPU->sfrwrite)
            aCPU->sfrwrite(aCPU, address);
    }
    else
    {
        aCPU->mLowerData[address] = aCPU->mLowerData[rx];
    }
    PC += 2;
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x10(%rbp)
cmpl $0x7f, -0x10(%rbp)
jle 0xbfc4
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0x10(%rbp), %ecx
subl $0x80, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x1050(%rax)
je 0xbfc2
movq -0x8(%rbp), %rax
movq 0x1050(%rax), %rax
movq -0x8(%rbp), %rdi
movl -0x10(%rbp), %esi
callq *%rax
jmp 0xbfe2
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x10(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movl %ecx, 0x38(%rax)
movl $0x1, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: subb_a_rx
static int subb_a_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    int carry = CARRY;
    sub_solve_flags(aCPU, ACC, aCPU->mLowerData[rx] + carry);
    ACC -= aCPU->mLowerData[rx] + carry;
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x50(%rax), %eax
andl $0x80, %eax
sarl $0x7, %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %esi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %edx
addl -0x10(%rbp), %edx
callq 0x11710
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %edx
addl -0x10(%rbp), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
subl %edx, %ecx
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: mov_rx_mem
static int mov_rx_mem(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    int value = read_mem(aCPU, OPERAND1);
    aCPU->mLowerData[rx] = value;

    PC += 2;
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %esi
callq 0x117b0
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %eax
movb %al, %dl
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movl %ecx, 0x38(%rax)
movl $0x1, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: cjne_rx_imm_offset
static int cjne_rx_imm_offset(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    int value = OPERAND1;
    
    if (aCPU->mLowerData[rx] < value)
    {
        PSW |= PSWMASK_C;
    }
    else
    {
        PSW &= ~PSWMASK_C;
    }

    if (aCPU->mLowerData[rx] != value)
    {
        PC += (signed char)OPERAND2 + 3;
    }
    else
    {
        PC += 3;
    }
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl -0x10(%rbp), %eax
jge 0xc21c
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x50(%rax), %ecx
orl $0x80, %ecx
movb %cl, 0x50(%rax)
jmp 0xc231
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x50(%rax), %ecx
andl $0xffffff7f, %ecx       # imm = 0xFFFFFF7F
movb %cl, 0x50(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl -0x10(%rbp), %eax
je 0xc279
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x2, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %ecx
addl $0x3, %ecx
movq -0x8(%rbp), %rax
addl 0x38(%rax), %ecx
movl %ecx, 0x38(%rax)
jmp 0xc286
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x3, %ecx
movl %ecx, 0x38(%rax)
movl $0x1, %eax
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: xch_a_rx
static int xch_a_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    int a = ACC;
    ACC = aCPU->mLowerData[rx];
    aCPU->mLowerData[rx] = a;
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %cl
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movb %cl, 0x60(%rax)
movl -0x10(%rbp), %eax
movb %al, %dl
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: djnz_rx_offset
static int djnz_rx_offset(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    aCPU->mLowerData[rx]--;
    if (aCPU->mLowerData[rx])
    {
        PC += (signed char)OPERAND1 + 2;
    }
    else
    {
        PC += 2;
    }
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %dl
addb $-0x1, %dl
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0xc3d3
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %ecx
addl $0x2, %ecx
movq -0x8(%rbp), %rax
addl 0x38(%rax), %ecx
movl %ecx, 0x38(%rax)
jmp 0xc3e0
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movl %ecx, 0x38(%rax)
movl $0x1, %eax
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: mov_a_rx
static int mov_a_rx(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    ACC = aCPU->mLowerData[rx];

    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %cl
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: mov_rx_a
static int mov_rx_a(struct em8051 *aCPU)
{
    int rx = RX_ADDRESS;
    aCPU->mLowerData[rx] = ACC;
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x0, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
andl $0x7, %eax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rcx
movzbl 0x50(%rcx), %ecx
andl $0x18, %ecx
sarl $0x3, %ecx
shll $0x3, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movb 0x60(%rax), %dl
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: nop
static int nop(struct em8051 *aCPU)
{
    if (aCPU->mCodeMem[PC & (aCPU->mCodeMemSize - 1)] != 0)
        if (aCPU->except_cb)
            aCPU->except_cb(aCPU, EXCEPTION_ILLEGAL_OPCODE);
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0xc548
movq -0x8(%rbp), %rax
cmpq $0x0, 0x1040(%rax)
je 0xc546
movq -0x8(%rbp), %rax
movq 0x1040(%rax), %rax
movq -0x8(%rbp), %rdi
movl $0x5, %esi
callq *%rax
jmp 0xc548
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: ajmp_offset
static int ajmp_offset(struct em8051 *aCPU)
{
    int address = ((PC + 2) & 0xf800) |
                  OPERAND1 | 
                  ((OPCODE & 0xe0) << 3);

    PC = address;

    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %eax
addl $0x2, %eax
andl $0xf800, %eax           # imm = 0xF800
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movq -0x8(%rbp), %rdx
movl 0x38(%rdx), %edx
addl $0x1, %edx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
orl %ecx, %eax
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movq -0x8(%rbp), %rdx
movl 0x38(%rdx), %edx
addl $0x0, %edx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
andl $0xe0, %ecx
shll $0x3, %ecx
orl %ecx, %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x38(%rax)
movl $0x1, %eax
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: inc_mem
static int inc_mem(struct em8051 *aCPU)
{
    int address = OPERAND1;
    if (address > 0x7f)
    {
        aCPU->mSFR[address - 0x80]++;
        if (aCPU->sfrwrite)
            aCPU->sfrwrite(aCPU, address);
    }
    else
    {
        aCPU->mLowerData[address]++;
    }
    PC += 2;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc(%rbp)
cmpl $0x7f, -0xc(%rbp)
jle 0xc74a
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0xc(%rbp), %ecx
subl $0x80, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
addb $0x1, %dl
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x1050(%rax)
je 0xc748
movq -0x8(%rbp), %rax
movq 0x1050(%rax), %rax
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq *%rax
jmp 0xc75f
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %dl
addb $0x1, %dl
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: inc_indir_rx
static int inc_indir_rx(struct em8051 *aCPU)
{    
    int address = INDIR_RX_ADDRESS;
    if (address > 0x7f)
    {
        if (aCPU->mUpperData)
        {
            aCPU->mUpperData[address - 0x80]++;
        }
    }
    else
    {
        aCPU->mLowerData[address]++;
    }
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movq -0x8(%rbp), %rdx
movl 0x38(%rdx), %edx
addl $0x0, %edx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
andl $0x1, %ecx
movq -0x8(%rbp), %rdx
movq 0x30(%rdx), %rdx
movzbl 0x50(%rdx), %edx
andl $0x18, %edx
sarl $0x3, %edx
shll $0x3, %edx
addl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc(%rbp)
cmpl $0x7f, -0xc(%rbp)
jle 0xc808
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0xc806
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movl -0xc(%rbp), %ecx
subl $0x80, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
addb $0x1, %dl
movb %dl, (%rax,%rcx)
jmp 0xc81d
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %dl
addb $0x1, %dl
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: acall_offset
static int acall_offset(struct em8051 *aCPU)
{
    int address = ((PC + 2) & 0xf800) | OPERAND1 | ((OPCODE & 0xe0) << 3);
    push_to_stack(aCPU, (PC + 2) & 0xff);
    push_to_stack(aCPU, (PC + 2) >> 8);
    PC = address;
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %eax
addl $0x2, %eax
andl $0xf800, %eax           # imm = 0xF800
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movq -0x8(%rbp), %rdx
movl 0x38(%rdx), %edx
addl $0x1, %edx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
orl %ecx, %eax
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movq -0x8(%rbp), %rdx
movl 0x38(%rdx), %edx
addl $0x0, %edx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
andl $0xe0, %ecx
shll $0x3, %ecx
orl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x38(%rax), %esi
addl $0x2, %esi
andl $0xff, %esi
callq 0xaef0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x38(%rax), %esi
addl $0x2, %esi
sarl $0x8, %esi
callq 0xaef0
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x38(%rax)
movl $0x1, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: lcall_address
static int lcall_address(struct em8051 *aCPU)
{
    push_to_stack(aCPU, (PC + 3) & 0xff);
    push_to_stack(aCPU, (PC + 3) >> 8);
    PC = (aCPU->mCodeMem[(PC + 1) & (aCPU->mCodeMemSize-1)] << 8) | 
         (aCPU->mCodeMem[(PC + 2) & (aCPU->mCodeMemSize-1)] << 0);
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x38(%rax), %esi
addl $0x3, %esi
andl $0xff, %esi
callq 0xaef0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x38(%rax), %esi
addl $0x3, %esi
sarl $0x8, %esi
callq 0xaef0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %ecx
shll $0x8, %ecx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rdx
movl 0x38(%rdx), %edx
addl $0x2, %edx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rax,%rdx), %eax
shll $0x0, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x38(%rax)
movl $0x1, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: rrc_a
static int rrc_a(struct em8051 *aCPU)
{
    int c = (PSW & PSWMASK_C) >> PSW_C;
    int newc = ACC & 1;
    ACC = (ACC >> 1) | (c << 7);
    PSW = (PSW & ~PSWMASK_C) | (newc << PSW_C);
    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x50(%rax), %eax
andl $0x80, %eax
sarl $0x7, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %eax
andl $0x1, %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %eax
sarl %eax
movl -0xc(%rbp), %ecx
shll $0x7, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x50(%rax), %eax
andl $0xffffff7f, %eax       # imm = 0xFFFFFF7F
movl -0x10(%rbp), %ecx
shll $0x7, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movb %cl, 0x50(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: jb_bitaddr_offset
static int jb_bitaddr_offset(struct em8051 *aCPU)
{
    int address = OPERAND1;
    if (address > 0x7f)
    {
        int bit = address & 7;
        int bitmask = (1 << bit);
        int value;
        address &= 0xf8;        
        if (aCPU->sfrread)
            value = aCPU->sfrread(aCPU, address);
        else
            value = aCPU->mSFR[address - 0x80];
        
        if (value & bitmask)
        {
            PC += (signed char)OPERAND2 + 3;
        }
        else
        {
            PC += 3;
        }
    }
    else
    {
        int bit = address & 7;
        int bitmask = (1 << bit);
        address >>= 3;
        address += 0x20;
        if (aCPU->mLowerData[address] & bitmask)
        {
            PC += (signed char)OPERAND2 + 3;
        }
        else
        {
            PC += 3;
        }
    }
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc(%rbp)
cmpl $0x7f, -0xc(%rbp)
jle 0xce60
movl -0xc(%rbp), %eax
andl $0x7, %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x14(%rbp)
movl -0xc(%rbp), %eax
andl $0xf8, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x1048(%rax)
je 0xcdf5
movq -0x8(%rbp), %rax
movq 0x1048(%rax), %rax
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq *%rax
movl %eax, -0x18(%rbp)
jmp 0xce10
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0xc(%rbp), %ecx
subl $0x80, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
andl -0x14(%rbp), %eax
cmpl $0x0, %eax
je 0xce4e
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x2, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %ecx
addl $0x3, %ecx
movq -0x8(%rbp), %rax
addl 0x38(%rax), %ecx
movl %ecx, 0x38(%rax)
jmp 0xce5b
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x3, %ecx
movl %ecx, 0x38(%rax)
jmp 0xcee2
movl -0xc(%rbp), %eax
andl $0x7, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x20(%rbp)
movl -0xc(%rbp), %eax
sarl $0x3, %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
addl $0x20, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl -0x20(%rbp), %eax
cmpl $0x0, %eax
je 0xced3
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x2, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %ecx
addl $0x3, %ecx
movq -0x8(%rbp), %rax
addl 0x38(%rax), %ecx
movl %ecx, 0x38(%rax)
jmp 0xcee0
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x3, %ecx
movl %ecx, 0x38(%rax)
jmp 0xcee2
movl $0x1, %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: add_a_imm
static int add_a_imm(struct em8051 *aCPU)
{
    add_solve_flags(aCPU, ACC, OPERAND1, 0);
    ACC += OPERAND1;
    PC += 2;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %esi
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
xorl %ecx, %ecx
callq 0x11670
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
addl %edx, %ecx
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: add_a_mem
static int add_a_mem(struct em8051 *aCPU)
{
    int value = read_mem(aCPU, OPERAND1);
    add_solve_flags(aCPU, ACC, value, 0);
    ACC += value;
	PC += 2;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %esi
callq 0x117b0
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %esi
movl -0xc(%rbp), %edx
xorl %ecx, %ecx
callq 0x11670
movl -0xc(%rbp), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
addl %edx, %ecx
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x2, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: add_a_indir_rx
static int add_a_indir_rx(struct em8051 *aCPU)
{
    int address = INDIR_RX_ADDRESS;
    if (address > 0x7f)
    {
        int value = 0;
        if (aCPU->mUpperData)
        {
            value = aCPU->mUpperData[address - 0x80];
        }

        add_solve_flags(aCPU, ACC, value, 0);
        ACC += value;
    }
    else
    {
        add_solve_flags(aCPU, ACC, aCPU->mLowerData[address], 0);
        ACC += aCPU->mLowerData[address];
    }

    PC++;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movq (%rcx), %rcx
movq -0x8(%rbp), %rdx
movl 0x38(%rdx), %edx
addl $0x0, %edx
movq -0x8(%rbp), %rsi
movl 0x8(%rsi), %esi
subl $0x1, %esi
andl %esi, %edx
movslq %edx, %rdx
movzbl (%rcx,%rdx), %ecx
andl $0x1, %ecx
movq -0x8(%rbp), %rdx
movq 0x30(%rdx), %rdx
movzbl 0x50(%rdx), %edx
andl $0x18, %edx
sarl $0x3, %edx
shll $0x3, %edx
addl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc(%rbp)
cmpl $0x7f, -0xc(%rbp)
jle 0xd16f
movl $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0xd13f
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movl -0xc(%rbp), %ecx
subl $0x80, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %esi
movl -0x10(%rbp), %edx
xorl %ecx, %ecx
callq 0x11670
movl -0x10(%rbp), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
addl %edx, %ecx
movb %cl, 0x60(%rax)
jmp 0xd1b7
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %esi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %ecx, %ecx
callq 0x11670
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %edx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movzbl 0x60(%rax), %ecx
addl %edx, %ecx
movb %cl, 0x60(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x38(%rax)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/juliuswwj[P]emch55x/opcodes.c
// Function: jnb_bitaddr_offset
static int jnb_bitaddr_offset(struct em8051 *aCPU)
{
    int address = OPERAND1;
    if (address > 0x7f)
    {
        int bit = address & 7;
        int bitmask = (1 << bit);
        int value;
        address &= 0xf8;        
        if (aCPU->sfrread)
            value = aCPU->sfrread(aCPU, address);
        else
            value = aCPU->mSFR[address - 0x80];
        
        if (!(value & bitmask))
        {
            PC += (signed char)OPERAND2 + 3;
        }
        else
        {
            PC += 3;
        }
    }
    else
    {
        int bit = address & 7;
        int bitmask = (1 << bit);
        address >>= 3;
        address += 0x20;
        if (!(aCPU->mLowerData[address] & bitmask))
        {
            PC += (signed char)OPERAND2 + 3;
        }
        else
        {
            PC += 3;
        }
    }
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x1, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc(%rbp)
cmpl $0x7f, -0xc(%rbp)
jle 0xd2c0
movl -0xc(%rbp), %eax
andl $0x7, %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x14(%rbp)
movl -0xc(%rbp), %eax
andl $0xf8, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x1048(%rax)
je 0xd255
movq -0x8(%rbp), %rax
movq 0x1048(%rax), %rax
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq *%rax
movl %eax, -0x18(%rbp)
jmp 0xd270
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movl -0xc(%rbp), %ecx
subl $0x80, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
andl -0x14(%rbp), %eax
cmpl $0x0, %eax
jne 0xd2ae
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x2, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %ecx
addl $0x3, %ecx
movq -0x8(%rbp), %rax
addl 0x38(%rax), %ecx
movl %ecx, 0x38(%rax)
jmp 0xd2bb
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x3, %ecx
movl %ecx, 0x38(%rax)
jmp 0xd342
movl -0xc(%rbp), %eax
andl $0x7, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x20(%rbp)
movl -0xc(%rbp), %eax
sarl $0x3, %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
addl $0x20, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0xc(%rbp), %rcx
movzbl (%rax,%rcx), %eax
andl -0x20(%rbp), %eax
cmpl $0x0, %eax
jne 0xd333
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x38(%rcx), %ecx
addl $0x2, %ecx
movq -0x8(%rbp), %rdx
movl 0x8(%rdx), %edx
subl $0x1, %edx
andl %edx, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %ecx
addl $0x3, %ecx
movq -0x8(%rbp), %rax
addl 0x38(%rax), %ecx
movl %ecx, 0x38(%rax)
jmp 0xd340
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
addl $0x3, %ecx
movl %ecx, 0x38(%rax)
jmp 0xd342
movl $0x1, %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)