// File: /workspace/github_c_makefile_star2_O0/heltilda[P]cicada/bytecd.c
// Function: if_eq
void _if_eq()
{
    view firstArgView;
    ccInt firstDataType, secondDataType, intRegisterBackup = 0, rtrn;
    ccFloat doubleRegisterBackup = 0.;
    member fauxMember;
    window fauxStringWindow1, fauxStringWindow2, *windowToDeref = NULL;
    variable fauxStringVariable1, fauxStringVariable2;
    ccBool boolRegisterBackup1, boolRegisterBackup2, firstArgIsScalar, secondArgIsScalar;
    void *toCompare1 = NULL, *toCompare2 = NULL;
    
    
        // get the first argument
    
    copyCompareReadArg(callBytecodeFunction, &firstDataType, &firstArgIsScalar);
    if (errCode != passed)  return;
    
    if (firstArgIsScalar)  {
        firstArgView.multipleIndices = ccFalse;
        if (firstDataType == int_type)  {  intRegisterBackup = intRegister;  toCompare1 = &intRegisterBackup;  }
        else if (firstDataType == char_type)  {  boolRegisterBackup1 = (ccBool) intRegister;  toCompare1 = &boolRegisterBackup1;  }
        else if (firstDataType == double_type)  {  doubleRegisterBackup = doubleRegister;  toCompare1 = &doubleRegisterBackup;  }
        else if (firstDataType == bool_type)  {  boolRegisterBackup1 = boolRegister;  toCompare1 = &boolRegisterBackup1;  }
        else if (firstDataType == string_type)  {
            fauxStringWindow1.variable_ptr = &fauxStringVariable1;
            fauxStringWindow1.offset = 0;
            fauxStringWindow1.width = stringRegister.elementNum;
            
            firstArgView = searchView;
            refWindow(firstArgView.windowPtr);
            windowToDeref = firstArgView.windowPtr;
            
            rtrn = newLinkedList(&(fauxStringVariable1.mem.data), stringRegister.elementNum, 1, 0., ccFalse);
            if (rtrn != passed)  {  setError(rtrn, pcCodePtr-1);  return;  }
            copyElements(&stringRegister, 1, &(fauxStringVariable1.mem.data), 1, stringRegister.elementNum);
            toCompare1 = &fauxStringWindow1;
    }   }
    
    else  {
        firstArgView = searchView;
        if (firstArgView.windowPtr == NULL)  firstDataType = no_type;
        else  {
            refWindow(firstArgView.windowPtr);
            windowToDeref = firstArgView.windowPtr;
    }   }
    
    copyCompareReadArg(callBytecodeFunction, &secondDataType, &secondArgIsScalar);
    if (errCode == passed)  {
        
        if (secondArgIsScalar)  {
            searchView.multipleIndices = ccFalse;
            if (secondDataType == int_type)  toCompare2 = &intRegister;
            else if (secondDataType == char_type)  {  boolRegisterBackup2 = (ccBool) intRegister;  toCompare2 = &boolRegisterBackup2;  }
            else if (secondDataType == double_type)  toCompare2 = &doubleRegister;
            else if (secondDataType == bool_type)  {  boolRegisterBackup2 = boolRegister;  toCompare2 = &boolRegisterBackup2;  }
            else if (secondDataType == string_type)  {
                fauxStringWindow2.variable_ptr = &fauxStringVariable2;
                fauxStringWindow2.offset = 0;
                fauxStringWindow2.width = stringRegister.elementNum;
                fauxStringVariable2.mem.data = stringRegister;
                toCompare2 = &fauxStringWindow2;
        }   }
        
        boolRegister = ccTrue;      // the comparison functions only set falses upon finding a mismatch
        if (firstArgIsScalar)  {
            if ((secondDataType == var_type) || (secondDataType == no_type)) setError(type_mismatch_err, pcCodePtr-1);
            else if (secondArgIsScalar)  {
                if (secondDataType == string_type)  {  fauxMember.memberWindow = &fauxStringWindow2;  toCompare2 = &fauxMember;  }
                compareJumpTable[5*firstDataType + secondDataType](toCompare1, toCompare2);     }
            else if ((firstDataType == string_type) && (secondDataType == char_type))
                copyCompareMultiView(compareWindowData, &searchView, &firstArgView);
            else  copyCompareListToVar(toCompare1, firstDataType, &searchView, compareJumpTable);   }
        else if (firstDataType == no_type)  {
            if (secondDataType == no_type)  boolRegister = ccTrue;
            else  setError(type_mismatch_err, pcCodePtr-1);   }
        else  {
            if ((firstDataType != var_type) && (secondArgIsScalar))  {
                if ((firstDataType == char_type) && (secondDataType == string_type))
                    copyCompareMultiView(compareWindowData, &searchView, &firstArgView);
                else  copyCompareListToVar(toCompare2, secondDataType, &firstArgView, compareJumpTable);  }
            else if ( ((firstDataType == var_type) || (firstArgView.multipleIndices))
                            == ((secondDataType == var_type) || (searchView.multipleIndices)) )
                copyCompareMultiView(compareWindowData, &searchView, &firstArgView);
            else  setError(type_mismatch_err, pcCodePtr-1);
    }   }
    
    if ((firstArgIsScalar) && (firstDataType == string_type))  deleteLinkedList(&(fauxStringVariable1.mem.data));
    derefWindow(&windowToDeref);
    
    GL_Object.type = bool_type;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movl $0x0, -0x24(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movq $0x0, -0xd0(%rbp)
movq $0x0, -0x2d0(%rbp)
movq $0x0, -0x2d8(%rbp)
leaq -0x4632(%rip), %rdi     # 0x146f0
leaq -0x1c(%rbp), %rsi
leaq -0x2c3(%rbp), %rdx
callq 0x16750
cmpl $0x0, 0x13a2f(%rip)     # 0x2c768
je 0x18d40
jmp 0x19276
cmpb $0x0, -0x2c3(%rbp)
je 0x18ec2
movb $0x0, -0x8(%rbp)
cmpl $0x2, -0x1c(%rbp)
jne 0x18d70
movl 0x13a5f(%rip), %eax     # 0x2c7bc
movl %eax, -0x24(%rbp)
leaq -0x24(%rbp), %rax
movq %rax, -0x2d0(%rbp)
jmp 0x18ec0
cmpl $0x1, -0x1c(%rbp)
jne 0x18d95
movl 0x13a40(%rip), %eax     # 0x2c7bc
movb %al, -0x2c1(%rbp)
leaq -0x2c1(%rbp), %rax
movq %rax, -0x2d0(%rbp)
jmp 0x18ebe
cmpl $0x3, -0x1c(%rbp)
jne 0x18db8
movsd 0x13a1d(%rip), %xmm0    # 0x2c7c0
movsd %xmm0, -0x30(%rbp)
leaq -0x30(%rbp), %rax
movq %rax, -0x2d0(%rbp)
jmp 0x18ebc
cmpl $0x0, -0x1c(%rbp)
jne 0x18ddd
movb 0x139f4(%rip), %al      # 0x2c7b8
movb %al, -0x2c1(%rbp)
leaq -0x2c1(%rbp), %rax
movq %rax, -0x2d0(%rbp)
jmp 0x18eba
cmpl $0x4, -0x1c(%rbp)
jne 0x18eb8
leaq -0x1c8(%rbp), %rax
movq %rax, -0x90(%rbp)
movl $0x0, -0x88(%rbp)
movl 0x139c3(%rip), %eax     # 0x2c7c8
movl %eax, -0x84(%rbp)
movq 0x13a96(%rip), %rax     # 0x2c8a8
movq %rax, -0x18(%rbp)
movq 0x13a93(%rip), %rax     # 0x2c8b0
movq %rax, -0x10(%rbp)
movq 0x13a90(%rip), %rax     # 0x2c8b8
movq %rax, -0x8(%rbp)
movq -0x18(%rbp), %rdi
callq 0xf780
movq -0x18(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0x1c8(%rbp), %rdi
addq $0x10, %rdi
movl 0x13977(%rip), %esi     # 0x2c7c8
movl $0x1, %edx
xorps %xmm0, %xmm0
xorl %ecx, %ecx
callq 0x8460
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
je 0x18e81
movl -0x28(%rbp), %edi
movq 0x13995(%rip), %rsi     # 0x2c808
addq $-0x4, %rsi
callq 0xf740
jmp 0x19276
leaq -0x1c8(%rbp), %rdx
addq $0x10, %rdx
movl 0x13935(%rip), %r8d     # 0x2c7c8
leaq 0x138b6(%rip), %rdi     # 0x2c750
addq $0x78, %rdi
movl $0x1, %ecx
movl %ecx, %esi
callq 0x8a90
leaq -0xa0(%rbp), %rax
movq %rax, -0x2d0(%rbp)
jmp 0x18eba
jmp 0x18ebc
jmp 0x18ebe
jmp 0x18ec0
jmp 0x18f09
movq 0x139df(%rip), %rax     # 0x2c8a8
movq %rax, -0x18(%rbp)
movq 0x139dc(%rip), %rax     # 0x2c8b0
movq %rax, -0x10(%rbp)
movq 0x139d9(%rip), %rax     # 0x2c8b8
movq %rax, -0x8(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x18ef3
movl $0x7, -0x1c(%rbp)
jmp 0x18f07
movq -0x18(%rbp), %rdi
callq 0xf780
movq -0x18(%rbp), %rax
movq %rax, -0xd0(%rbp)
jmp 0x18f09
leaq -0x4820(%rip), %rdi     # 0x146f0
leaq -0x20(%rbp), %rsi
leaq -0x2c4(%rbp), %rdx
callq 0x16750
cmpl $0x0, 0x13841(%rip)     # 0x2c768
jne 0x19241
cmpb $0x0, -0x2c4(%rbp)
je 0x1903c
movb $0x0, 0x13977(%rip)     # 0x2c8b8
cmpl $0x2, -0x20(%rbp)
jne 0x18f5e
leaq 0x13802(%rip), %rax     # 0x2c750
addq $0x6c, %rax
movq %rax, -0x2d8(%rbp)
jmp 0x1903a
cmpl $0x1, -0x20(%rbp)
jne 0x18f83
movl 0x13852(%rip), %eax     # 0x2c7bc
movb %al, -0x2c2(%rbp)
leaq -0x2c2(%rbp), %rax
movq %rax, -0x2d8(%rbp)
jmp 0x19038
cmpl $0x3, -0x20(%rbp)
jne 0x18fa0
leaq 0x137c0(%rip), %rax     # 0x2c750
addq $0x70, %rax
movq %rax, -0x2d8(%rbp)
jmp 0x19036
cmpl $0x0, -0x20(%rbp)
jne 0x18fc2
movb 0x1380c(%rip), %al      # 0x2c7b8
movb %al, -0x2c2(%rbp)
leaq -0x2c2(%rbp), %rax
movq %rax, -0x2d8(%rbp)
jmp 0x19034
cmpl $0x4, -0x20(%rbp)
jne 0x19032
leaq -0x2c0(%rbp), %rax
movq %rax, -0xb8(%rbp)
movl $0x0, -0xb0(%rbp)
movl 0x137e2(%rip), %eax     # 0x2c7c8
movl %eax, -0xac(%rbp)
movq 0x137d5(%rip), %rax     # 0x2c7c8
movq %rax, -0x2b0(%rbp)
movq 0x137cf(%rip), %rax     # 0x2c7d0
movq %rax, -0x2a8(%rbp)
movq 0x137c9(%rip), %rax     # 0x2c7d8
movq %rax, -0x2a0(%rbp)
movq 0x137c3(%rip), %rax     # 0x2c7e0
movq %rax, -0x298(%rbp)
leaq -0xc8(%rbp), %rax
movq %rax, -0x2d8(%rbp)
jmp 0x19034
jmp 0x19036
jmp 0x19038
jmp 0x1903a
jmp 0x1903c
movb $0x1, 0x13775(%rip)     # 0x2c7b8
cmpb $0x0, -0x2c3(%rbp)
je 0x1911b
cmpl $-0x1, -0x20(%rbp)
je 0x1905c
cmpl $0x7, -0x20(%rbp)
jne 0x19076
movq 0x137a5(%rip), %rsi     # 0x2c808
addq $-0x4, %rsi
movl $0x11, %edi
callq 0xf740
jmp 0x19116
cmpb $0x0, -0x2c4(%rbp)
je 0x190c2
cmpl $0x4, -0x20(%rbp)
jne 0x1909b
leaq -0xc8(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq -0x78(%rbp), %rax
movq %rax, -0x2d8(%rbp)
imull $0x5, -0x1c(%rbp), %eax
addl -0x20(%rbp), %eax
movslq %eax, %rcx
leaq 0x116a4(%rip), %rax     # 0x2a750
movq (%rax,%rcx,8), %rax
movq -0x2d0(%rbp), %rdi
movq -0x2d8(%rbp), %rsi
callq *%rax
jmp 0x19114
cmpl $0x4, -0x1c(%rbp)
jne 0x190ee
cmpl $0x1, -0x20(%rbp)
jne 0x190ee
leaq -0x95a5(%rip), %rdi     # 0xfb30
leaq 0x13674(%rip), %rsi     # 0x2c750
addq $0x158, %rsi            # imm = 0x158
leaq -0x18(%rbp), %rdx
callq 0x16d10
jmp 0x19112
movq -0x2d0(%rbp), %rdi
movl -0x1c(%rbp), %esi
leaq 0x13651(%rip), %rdx     # 0x2c750
addq $0x158, %rdx            # imm = 0x158
leaq 0x11643(%rip), %rcx     # 0x2a750
callq 0x10040
jmp 0x19114
jmp 0x19116
jmp 0x1923f
cmpl $0x7, -0x1c(%rbp)
jne 0x1914a
cmpl $0x7, -0x20(%rbp)
jne 0x19130
movb $0x1, 0x1368a(%rip)     # 0x2c7b8
jmp 0x19145
movq 0x136d1(%rip), %rsi     # 0x2c808
addq $-0x4, %rsi
movl $0x11, %edi
callq 0xf740
jmp 0x1923d
cmpl $-0x1, -0x1c(%rbp)
je 0x191a4
cmpb $0x0, -0x2c4(%rbp)
je 0x191a4
cmpl $0x1, -0x1c(%rbp)
jne 0x19185
cmpl $0x4, -0x20(%rbp)
jne 0x19185
leaq -0x963c(%rip), %rdi     # 0xfb30
leaq 0x135dd(%rip), %rsi     # 0x2c750
addq $0x158, %rsi            # imm = 0x158
leaq -0x18(%rbp), %rdx
callq 0x16d10
jmp 0x1919f
movq -0x2d8(%rbp), %rdi
movl -0x20(%rbp), %esi
leaq -0x18(%rbp), %rdx
leaq 0x115b6(%rip), %rcx     # 0x2a750
callq 0x10040
jmp 0x1923b
movb $0x1, %al
cmpl $-0x1, -0x1c(%rbp)
movb %al, -0x2d9(%rbp)
je 0x191bf
cmpb $0x0, -0x8(%rbp)
setne %al
movb %al, -0x2d9(%rbp)
movb -0x2d9(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x2e0(%rbp)
movb $0x1, %al
cmpl $-0x1, -0x20(%rbp)
movb %al, -0x2da(%rbp)
je 0x191ee
cmpb $0x0, 0x136d3(%rip)     # 0x2c8b8
setne %al
movb %al, -0x2da(%rbp)
movl -0x2e0(%rbp), %eax
movb -0x2da(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x19224
leaq -0x96db(%rip), %rdi     # 0xfb30
leaq 0x1353e(%rip), %rsi     # 0x2c750
addq $0x158, %rsi            # imm = 0x158
leaq -0x18(%rbp), %rdx
callq 0x16d10
jmp 0x19239
movq 0x135dd(%rip), %rsi     # 0x2c808
addq $-0x4, %rsi
movl $0x11, %edi
callq 0xf740
jmp 0x1923b
jmp 0x1923d
jmp 0x1923f
jmp 0x19241
cmpb $0x0, -0x2c3(%rbp)
je 0x19260
cmpl $0x4, -0x1c(%rbp)
jne 0x19260
leaq -0x1c8(%rbp), %rdi
addq $0x10, %rdi
callq 0x8540
leaq -0xd0(%rbp), %rdi
callq 0xf7d0
movl $0x0, 0x135b2(%rip)     # 0x2c828
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
nop