Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tdstNodeInterpret_ *__cdecl fn_p_stComparisonCondition(HIE_tdstSuperObject *superObject, tdstNodeInterpret_ *interpreter, tdstGetSetParam_ *getSetParam)
- {
- int comparisonType; // edi@1
- tdstNodeInterpret_ *interpreterA; // eax@1
- tdstNodeInterpret_ *interpreterB; // edx@1
- double paramA; // st7@3
- double paramB; // st6@3
- int typeMinusFour; // edi@5
- tdstNodeInterpret_ *result; // eax@10
- tdstGetSetParam_ GetSetParam; // [sp+8h] [bp-20h]@1
- comparisonType = interpreter[-1].tableIndex;
- interpreterA = fn_p_stEvalTree(superObject, interpreter, (tdstGetSetParam_ *)((char *)&GetSetParam + 16));
- interpreterB = fn_p_stEvalTree(superObject, interpreterA, &GetSetParam);
- if ( GetSetParam.field8_paramTypes != GetSetParam.field4_DataType )
- {
- if ( GetSetParam.field8_paramTypes == 8 )
- {
- paramA = *(float *)&GetSetParam.field5;
- paramB = (double)GetSetParam.field1;
- }
- else
- {
- paramA = (double)GetSetParam.field5;
- if ( GetSetParam.field4_DataType == 8 )
- {
- paramB = *(float *)&GetSetParam.field1;
- }
- else
- {
- paramB = (double)GetSetParam.field1;
- }
- }
- LABEL_27:
- switch ( comparisonType )
- {
- case 4:
- if ( paramA != paramB )
- {
- goto RETURNFALSE_2;
- }
- getSetParam->field1 = 1;
- return interpreterB;
- case 5:
- if ( paramA == paramB )
- {
- goto RETURNFALSE_2;
- }
- getSetParam->field1 = 1;
- return interpreterB;
- case 6:
- if ( paramA >= paramB )
- {
- goto RETURNFALSE_2;
- }
- getSetParam->field1 = 1;
- return interpreterB;
- case 7:
- if ( paramA <= paramB )
- {
- goto RETURNFALSE_2;
- }
- getSetParam->field1 = 1;
- return interpreterB;
- case 8:
- if ( paramA > paramB )
- {
- goto RETURNFALSE_2;
- }
- getSetParam->field1 = 1;
- return interpreterB;
- case 9:
- if ( paramA >= paramB )
- {
- goto RETURNTRUE;
- }
- goto RETURNFALSE_2;
- default:
- goto RETURNFALSE_1;
- }
- goto RETURNFALSE_1;
- }
- if ( GetSetParam.field8_paramTypes == 8 )
- {
- paramA = *(float *)&GetSetParam.field5;
- paramB = *(float *)&GetSetParam.field1;
- goto LABEL_27;
- }
- if ( GetSetParam.field8_paramTypes == 21 )
- {
- typeMinusFour = comparisonType - 4;
- if ( typeMinusFour )
- {
- if ( typeMinusFour != 1 )
- {
- RETURNFALSE_1:
- getSetParam->field1 = 0;
- return interpreterB;
- }
- if ( *(float *)&GetSetParam.field5 != *(float *)&GetSetParam.field1
- || *(float *)&GetSetParam.field6 != *(float *)&GetSetParam.field2
- || *(float *)&GetSetParam.field7 != *(float *)&GetSetParam.field3 )
- {
- RETURNTRUE:
- getSetParam->field1 = 1;
- result = interpreterB;
- }
- else
- {
- getSetParam->field1 = 0;
- result = interpreterB;
- }
- }
- else if ( *(float *)&GetSetParam.field5 != *(float *)&GetSetParam.field1
- || *(float *)&GetSetParam.field6 != *(float *)&GetSetParam.field2
- || *(float *)&GetSetParam.field7 != *(float *)&GetSetParam.field3 )
- {
- RETURNFALSE_2:
- getSetParam->field1 = 0;
- result = interpreterB;
- }
- else
- {
- getSetParam->field1 = 1;
- result = interpreterB;
- }
- }
- else
- {
- switch ( comparisonType )
- {
- case 4:
- getSetParam->field1 = GetSetParam.field5 == GetSetParam.field1;
- result = interpreterB;
- break;
- case 5:
- getSetParam->field1 = GetSetParam.field5 != GetSetParam.field1;
- result = interpreterB;
- break;
- case 6:
- getSetParam->field1 = GetSetParam.field5 < GetSetParam.field1;
- result = interpreterB;
- break;
- case 7:
- getSetParam->field1 = GetSetParam.field5 > GetSetParam.field1;
- result = interpreterB;
- break;
- case 8:
- getSetParam->field1 = GetSetParam.field5 <= GetSetParam.field1;
- result = interpreterB;
- break;
- case 9:
- getSetParam->field1 = GetSetParam.field5 >= GetSetParam.field1;
- result = interpreterB;
- break;
- default:
- goto RETURNFALSE_1;
- }
- }
- return result;
- }
Add Comment
Please, Sign In to add comment