Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tdstNodeInterpret_ *__cdecl fn_p_stComparisonCondition_MOD(SuperObject *superObject, tdstNodeInterpret_ *interpreter, tdstGetSetParam_ *getSetParam) {
- /*tdstNodeInterpret_* returnVal = fn_p_stComparisonCondition(superObject, interpreter, getSetParam);
- return returnVal;*/
- 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 = (float)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