
WhereLoop ** __regparm3 whereLoopFindLesser(WhereLoop **ppPrev,WhereLoop *pTemplate)

{
  short sVar1;
  short sVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  WhereLoop *pWVar7;
  uint uVar8;
  uint uVar9;
  WhereLoop **local_20;
  
  pWVar7 = *ppPrev;
  local_20 = ppPrev;
  if (pWVar7 != (WhereLoop *)0x0) {
    sVar2._0_1_ = pTemplate->iTab;
    sVar2._1_1_ = pTemplate->iSortIdx;
    do {
      sVar1._0_1_ = pWVar7->iTab;
      sVar1._1_1_ = pWVar7->iSortIdx;
      if (sVar1 == sVar2) {
        uVar3 = (uint)pWVar7->prereq;
        uVar4 = (uint)pTemplate->prereq;
        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);
        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);
        uVar8 = uVar3 & uVar4;
        uVar9 = uVar5 & uVar6;
        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||
           ((pTemplate->wsFlags & 0x201) != 0x201)) {
          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))
          goto LAB_0003a228;
          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;
          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;
LAB_0003a2fe:
          if (pTemplate->nOut <= pWVar7->nOut) {
            return local_20;
          }
        }
        else {
          if (uVar9 == uVar6 && uVar8 == uVar4) {
            return local_20;
          }
          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&
             (pWVar7->rRun <= pTemplate->rRun)) {
LAB_0003a2c4:
            if (pWVar7->nOut <= pTemplate->nOut) {
              return (WhereLoop **)0x0;
            }
LAB_0003a228:
            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))
            goto LAB_0003a2fe;
          }
        }
      }
LAB_0003a23a:
      local_20 = &pWVar7->pNextLoop;
      pWVar7 = pWVar7->pNextLoop;
    } while (pWVar7 != (WhereLoop *)0x0);
  }
  return local_20;
}



uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint uVar6;
  uint uVar7;
  uint *local_20;
  
  puVar5 = (uint *)*param_1;
  local_20 = param_1;
  if (puVar5 != (uint *)0x0) {
    do {
      if ((short)puVar5[4] == (short)param_2[4]) {
        uVar1 = *puVar5;
        uVar2 = *param_2;
        uVar3 = puVar5[1];
        uVar4 = param_2[1];
        uVar6 = uVar1 & uVar2;
        uVar7 = uVar3 & uVar4;
        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)
            ) || ((param_2[9] & 0x201) != 0x201)) {
          if ((uVar3 != uVar7 || uVar1 != uVar6) ||
             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;
          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;
          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;
LAB_0003a2fe:
          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {
            return local_20;
          }
        }
        else {
          if (uVar7 == uVar4 && uVar6 == uVar2) {
            return local_20;
          }
          if (((uVar3 == uVar7 && uVar1 == uVar6) &&
              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&
             ((short)puVar5[5] <= (short)param_2[5])) {
LAB_0003a2c4:
            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {
              return (uint *)0x0;
            }
LAB_0003a228:
            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))
            goto LAB_0003a2fe;
          }
        }
      }
LAB_0003a23a:
      local_20 = puVar5 + 0xd;
      puVar5 = (uint *)puVar5[0xd];
    } while (puVar5 != (uint *)0x0);
  }
  return local_20;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EBP,dword ptr [EAX]
TEST EBP,EBP
JZ 0x0003a36c
MOVZX EBX,word ptr [EDX + 0x10]
MOV EDI,EDX
MOV dword ptr [ESP + 0xc],EAX
MOV word ptr [ESP + 0x12],BX
JMP 0x0003a24c
MOV EAX,dword ptr [ESP + 0x4]
XOR EDX,dword ptr [ESP + 0x8]
XOR EAX,EBX
OR EDX,EAX
JZ 0x0003a2f0
LEA EAX,[EBP + 0x34]
MOV EBP,dword ptr [EBP + 0x34]
MOV dword ptr [ESP + 0xc],EAX
TEST EBP,EBP
JZ 0x0003a2da
MOVZX EAX,word ptr [ESP + 0x12]
CMP word ptr [EBP + 0x10],AX
JNZ 0x0003a23a
MOV ECX,dword ptr [EBP]
MOV EBX,dword ptr [EDI]
MOV EAX,dword ptr [EBP + 0x4]
MOV EDX,dword ptr [EDI + 0x4]
MOV ESI,ECX
AND ESI,EBX
MOV dword ptr [ESP + 0x14],EAX
MOV dword ptr [ESP + 0x4],ESI
MOV ESI,EAX
AND ESI,EDX
MOV dword ptr [ESP + 0x8],ESI
TEST byte ptr [EBP + 0x25],0x40
JZ 0x0003a298
CMP word ptr [EDI + 0x2a],0x0
JNZ 0x0003a298
MOV ESI,dword ptr [EDI + 0x24]
AND ESI,0x201
CMP ESI,0x201
JZ 0x0003a310
LEA ESI,[ESI]
XOR ECX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0x14]
XOR EAX,dword ptr [ESP + 0x8]
OR EAX,ECX
JNZ 0x0003a228
MOVZX EAX,word ptr [EDI + 0x12]
CMP word ptr [EBP + 0x12],AX
JG 0x0003a228
MOVZX EAX,word ptr [EDI + 0x14]
CMP word ptr [EBP + 0x14],AX
JG 0x0003a358
MOVZX EAX,word ptr [EDI + 0x16]
CMP word ptr [EBP + 0x16],AX
JG 0x0003a228
MOV dword ptr [ESP + 0xc],0x0
MOV EAX,dword ptr [ESP + 0xc]
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOVZX EAX,word ptr [EDI + 0x14]
CMP word ptr [EBP + 0x14],AX
JL 0x0003a23a
MOVZX EAX,word ptr [EDI + 0x16]
CMP word ptr [EBP + 0x16],AX
JL 0x0003a23a
JMP 0x0003a2da
MOV ESI,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0x8]
XOR ESI,EBX
XOR EAX,EDX
OR EAX,ESI
JZ 0x0003a2da
XOR ECX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0x14]
XOR EAX,dword ptr [ESP + 0x8]
OR EAX,ECX
JNZ 0x0003a23a
MOVZX EAX,word ptr [EDI + 0x12]
CMP word ptr [EBP + 0x12],AX
JG 0x0003a23a
MOVZX EAX,word ptr [EDI + 0x14]
CMP word ptr [EBP + 0x14],AX
JG 0x0003a23a
JMP 0x0003a2c4
MOV EAX,dword ptr [ESP + 0x4]
XOR EDX,dword ptr [ESP + 0x8]
XOR EAX,EBX
OR EDX,EAX
JNZ 0x0003a23a
JMP 0x0003a2fe
MOV dword ptr [ESP + 0xc],EAX
JMP 0x0003a2da
(translation_unit "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint *local_20;\n  \n  puVar5 = (uint *)*param_1;\n  local_20 = param_1;\n  if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }\n  return local_20;\n}\n\n" (ERROR "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)" (binary_expression "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_0003a200(uint *param_1,uint *param_2)" identifier (argument_list "(uint *param_1,uint *param_2)" ( (binary_expression "uint *param_1" identifier * identifier) , (binary_expression "uint *param_2" identifier * identifier) ))))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint *local_20;\n  \n  puVar5 = (uint *)*param_1;\n  local_20 = param_1;\n  if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }\n  return local_20;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "puVar5 = (uint *)*param_1;" (assignment_expression "puVar5 = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" identifier = identifier) ;) (if_statement "if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }" if (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }" { (do_statement "do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    }" { (if_statement "if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" if (parenthesized_expression "((short)puVar5[4] == (short)param_2[4])" ( (binary_expression "(short)puVar5[4] == (short)param_2[4]" (cast_expression "(short)puVar5[4]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[4]" identifier [ number_literal ])) == (cast_expression "(short)param_2[4]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[4]" identifier [ number_literal ]))) )) (compound_statement "{\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" { (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar3 = puVar5[1];" (assignment_expression "uVar3 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = uVar1 & uVar2;" (assignment_expression "uVar6 = uVar1 & uVar2" identifier = (binary_expression "uVar1 & uVar2" identifier & identifier)) ;) (expression_statement "uVar7 = uVar3 & uVar4;" (assignment_expression "uVar7 = uVar3 & uVar4" identifier = (binary_expression "uVar3 & uVar4" identifier & identifier)) ;) (if_statement "if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" if (parenthesized_expression "((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201))" ( (binary_expression "(((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)" (parenthesized_expression "(((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            )" ( (binary_expression "((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)" (parenthesized_expression "((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0)" ( (binary_expression "(*(byte *)((int)puVar5 + 0x25) & 0x40) == 0" (parenthesized_expression "(*(byte *)((int)puVar5 + 0x25) & 0x40)" ( (binary_expression "*(byte *)((int)puVar5 + 0x25) & 0x40" (pointer_expression "*(byte *)((int)puVar5 + 0x25)" * (cast_expression "(byte *)((int)puVar5 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x25)" ( (binary_expression "(int)puVar5 + 0x25" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(short *)((int)param_2 + 0x2a) != 0)" ( (binary_expression "*(short *)((int)param_2 + 0x2a) != 0" (pointer_expression "*(short *)((int)param_2 + 0x2a)" * (cast_expression "(short *)((int)param_2 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x2a)" ( (binary_expression "(int)param_2 + 0x2a" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "((param_2[9] & 0x201) != 0x201)" ( (binary_expression "(param_2[9] & 0x201) != 0x201" (parenthesized_expression "(param_2[9] & 0x201)" ( (binary_expression "param_2[9] & 0x201" (subscript_expression "param_2[9]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }" { (if_statement "if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;" if (parenthesized_expression "((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12)))" ( (binary_expression "(uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))" (parenthesized_expression "(uVar3 != uVar7 || uVar1 != uVar6)" ( (binary_expression "uVar3 != uVar7 || uVar1 != uVar6" (binary_expression "uVar3 != uVar7" identifier != identifier) || (binary_expression "uVar1 != uVar6" identifier != identifier)) )) || (parenthesized_expression "(*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))" ( (binary_expression "*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12)" (pointer_expression "*(short *)((int)param_2 + 0x12)" * (cast_expression "(short *)((int)param_2 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x12)" ( (binary_expression "(int)param_2 + 0x12" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (pointer_expression "*(short *)((int)puVar5 + 0x12)" * (cast_expression "(short *)((int)puVar5 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x12)" ( (binary_expression "(int)puVar5 + 0x12" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) (goto_statement "goto LAB_0003a228;" goto statement_identifier ;)) (if_statement "if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;" if (parenthesized_expression "((short)puVar5[5] <= (short)param_2[5])" ( (binary_expression "(short)puVar5[5] <= (short)param_2[5]" (cast_expression "(short)puVar5[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[5]" identifier [ number_literal ])) <= (cast_expression "(short)param_2[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[5]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0003a2c4;" goto statement_identifier ;)) (if_statement "if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;" if (parenthesized_expression "(uVar4 != uVar7 || uVar6 != uVar2)" ( (binary_expression "uVar4 != uVar7 || uVar6 != uVar2" (binary_expression "uVar4 != uVar7" identifier != identifier) || (binary_expression "uVar6 != uVar2" identifier != identifier)) )) (goto_statement "goto LAB_0003a23a;" goto statement_identifier ;)) (labeled_statement "LAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }" statement_identifier : (if_statement "if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }" if (parenthesized_expression "(*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16))" ( (binary_expression "*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)" (pointer_expression "*(short *)((int)param_2 + 0x16)" * (cast_expression "(short *)((int)param_2 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x16)" ( (binary_expression "(int)param_2 + 0x16" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (pointer_expression "*(short *)((int)puVar5 + 0x16)" * (cast_expression "(short *)((int)puVar5 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x16)" ( (binary_expression "(int)puVar5 + 0x16" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n            return local_20;\n          }" { (return_statement "return local_20;" return identifier ;) }))) }) (else_clause "else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" else (compound_statement "{\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" { (if_statement "if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }" if (parenthesized_expression "(uVar7 == uVar4 && uVar6 == uVar2)" ( (binary_expression "uVar7 == uVar4 && uVar6 == uVar2" (binary_expression "uVar7 == uVar4" identifier == identifier) && (binary_expression "uVar6 == uVar2" identifier == identifier)) )) (compound_statement "{\n            return local_20;\n          }" { (return_statement "return local_20;" return identifier ;) })) (if_statement "if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }" if (parenthesized_expression "(((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5]))" ( (binary_expression "((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])" (parenthesized_expression "((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12)))" ( (binary_expression "(uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))" (parenthesized_expression "(uVar3 == uVar7 && uVar1 == uVar6)" ( (binary_expression "uVar3 == uVar7 && uVar1 == uVar6" (binary_expression "uVar3 == uVar7" identifier == identifier) && (binary_expression "uVar1 == uVar6" identifier == identifier)) )) && (parenthesized_expression "(*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))" ( (binary_expression "*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12)" (pointer_expression "*(short *)((int)puVar5 + 0x12)" * (cast_expression "(short *)((int)puVar5 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x12)" ( (binary_expression "(int)puVar5 + 0x12" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (pointer_expression "*(short *)((int)param_2 + 0x12)" * (cast_expression "(short *)((int)param_2 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x12)" ( (binary_expression "(int)param_2 + 0x12" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) && (parenthesized_expression "((short)puVar5[5] <= (short)param_2[5])" ( (binary_expression "(short)puVar5[5] <= (short)param_2[5]" (cast_expression "(short)puVar5[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[5]" identifier [ number_literal ])) <= (cast_expression "(short)param_2[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[5]" identifier [ number_literal ]))) ))) )) (compound_statement "{\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }" { (labeled_statement "LAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }" statement_identifier : (if_statement "if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }" if (parenthesized_expression "(*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16))" ( (binary_expression "*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)" (pointer_expression "*(short *)((int)puVar5 + 0x16)" * (cast_expression "(short *)((int)puVar5 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x16)" ( (binary_expression "(int)puVar5 + 0x16" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (pointer_expression "*(short *)((int)param_2 + 0x16)" * (cast_expression "(short *)((int)param_2 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x16)" ( (binary_expression "(int)param_2 + 0x16" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n              return (uint *)0x0;\n            }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (labeled_statement "LAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;" statement_identifier : (if_statement "if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;" if (parenthesized_expression "((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))" ( (binary_expression "(uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5])" (parenthesized_expression "(uVar4 == uVar7 && uVar6 == uVar2)" ( (binary_expression "uVar4 == uVar7 && uVar6 == uVar2" (binary_expression "uVar4 == uVar7" identifier == identifier) && (binary_expression "uVar6 == uVar2" identifier == identifier)) )) && (parenthesized_expression "((short)param_2[5] <= (short)puVar5[5])" ( (binary_expression "(short)param_2[5] <= (short)puVar5[5]" (cast_expression "(short)param_2[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) <= (cast_expression "(short)puVar5[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[5]" identifier [ number_literal ]))) ))) )) (goto_statement "goto LAB_0003a2fe;" goto statement_identifier ;))) })) }))) })) (labeled_statement "LAB_0003a23a:\n      local_20 = puVar5 + 0xd;" statement_identifier : (expression_statement "local_20 = puVar5 + 0xd;" (assignment_expression "local_20 = puVar5 + 0xd" identifier = (binary_expression "puVar5 + 0xd" identifier + number_literal)) ;)) (expression_statement "puVar5 = (uint *)puVar5[0xd];" (assignment_expression "puVar5 = (uint *)puVar5[0xd]" identifier = (cast_expression "(uint *)puVar5[0xd]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[0xd]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (return_statement "return local_20;" return identifier ;) }))
(translation_unit "WhereLoop ** __regparm3 whereLoopFindLesser(WhereLoop **ppPrev,WhereLoop *pTemplate)\n\n{\n  short sVar1;\n  short sVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  WhereLoop *pWVar7;\n  uint uVar8;\n  uint uVar9;\n  WhereLoop **local_20;\n  \n  pWVar7 = *ppPrev;\n  local_20 = ppPrev;\n  if (pWVar7 != (WhereLoop *)0x0) {\n    sVar2._0_1_ = pTemplate->iTab;\n    sVar2._1_1_ = pTemplate->iSortIdx;\n    do {\n      sVar1._0_1_ = pWVar7->iTab;\n      sVar1._1_1_ = pWVar7->iSortIdx;\n      if (sVar1 == sVar2) {\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = &pWVar7->pNextLoop;\n      pWVar7 = pWVar7->pNextLoop;\n    } while (pWVar7 != (WhereLoop *)0x0);\n  }\n  return local_20;\n}\n\n" (ERROR "WhereLoop ** __regparm3 whereLoopFindLesser(WhereLoop **ppPrev,WhereLoop *pTemplate)" (binary_expression "WhereLoop ** __regparm3 whereLoopFindLesser(WhereLoop **ppPrev,WhereLoop *pTemplate)" identifier * (ERROR "* __regparm3" (pointer_expression "* __regparm3" * identifier)) (call_expression "whereLoopFindLesser(WhereLoop **ppPrev,WhereLoop *pTemplate)" identifier (argument_list "(WhereLoop **ppPrev,WhereLoop *pTemplate)" ( (binary_expression "WhereLoop **ppPrev" identifier * (pointer_expression "*ppPrev" * identifier)) , (binary_expression "WhereLoop *pTemplate" identifier * identifier) ))))) (compound_statement "{\n  short sVar1;\n  short sVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  WhereLoop *pWVar7;\n  uint uVar8;\n  uint uVar9;\n  WhereLoop **local_20;\n  \n  pWVar7 = *ppPrev;\n  local_20 = ppPrev;\n  if (pWVar7 != (WhereLoop *)0x0) {\n    sVar2._0_1_ = pTemplate->iTab;\n    sVar2._1_1_ = pTemplate->iSortIdx;\n    do {\n      sVar1._0_1_ = pWVar7->iTab;\n      sVar1._1_1_ = pWVar7->iSortIdx;\n      if (sVar1 == sVar2) {\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = &pWVar7->pNextLoop;\n      pWVar7 = pWVar7->pNextLoop;\n    } while (pWVar7 != (WhereLoop *)0x0);\n  }\n  return local_20;\n}" { (declaration "short sVar1;" (sized_type_specifier "short" short) identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "WhereLoop *pWVar7;" type_identifier (pointer_declarator "*pWVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "WhereLoop **local_20;" type_identifier (pointer_declarator "**local_20" * (pointer_declarator "*local_20" * identifier)) ;) (expression_statement "pWVar7 = *ppPrev;" (assignment_expression "pWVar7 = *ppPrev" identifier = (pointer_expression "*ppPrev" * identifier)) ;) (expression_statement "local_20 = ppPrev;" (assignment_expression "local_20 = ppPrev" identifier = identifier) ;) (if_statement "if (pWVar7 != (WhereLoop *)0x0) {\n    sVar2._0_1_ = pTemplate->iTab;\n    sVar2._1_1_ = pTemplate->iSortIdx;\n    do {\n      sVar1._0_1_ = pWVar7->iTab;\n      sVar1._1_1_ = pWVar7->iSortIdx;\n      if (sVar1 == sVar2) {\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = &pWVar7->pNextLoop;\n      pWVar7 = pWVar7->pNextLoop;\n    } while (pWVar7 != (WhereLoop *)0x0);\n  }" if (parenthesized_expression "(pWVar7 != (WhereLoop *)0x0)" ( (binary_expression "pWVar7 != (WhereLoop *)0x0" identifier != (cast_expression "(WhereLoop *)0x0" ( (type_descriptor "WhereLoop *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2._0_1_ = pTemplate->iTab;\n    sVar2._1_1_ = pTemplate->iSortIdx;\n    do {\n      sVar1._0_1_ = pWVar7->iTab;\n      sVar1._1_1_ = pWVar7->iSortIdx;\n      if (sVar1 == sVar2) {\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = &pWVar7->pNextLoop;\n      pWVar7 = pWVar7->pNextLoop;\n    } while (pWVar7 != (WhereLoop *)0x0);\n  }" { (expression_statement "sVar2._0_1_ = pTemplate->iTab;" (assignment_expression "sVar2._0_1_ = pTemplate->iTab" (field_expression "sVar2._0_1_" identifier . field_identifier) = (field_expression "pTemplate->iTab" identifier -> field_identifier)) ;) (expression_statement "sVar2._1_1_ = pTemplate->iSortIdx;" (assignment_expression "sVar2._1_1_ = pTemplate->iSortIdx" (field_expression "sVar2._1_1_" identifier . field_identifier) = (field_expression "pTemplate->iSortIdx" identifier -> field_identifier)) ;) (do_statement "do {\n      sVar1._0_1_ = pWVar7->iTab;\n      sVar1._1_1_ = pWVar7->iSortIdx;\n      if (sVar1 == sVar2) {\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = &pWVar7->pNextLoop;\n      pWVar7 = pWVar7->pNextLoop;\n    } while (pWVar7 != (WhereLoop *)0x0);" do (compound_statement "{\n      sVar1._0_1_ = pWVar7->iTab;\n      sVar1._1_1_ = pWVar7->iSortIdx;\n      if (sVar1 == sVar2) {\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = &pWVar7->pNextLoop;\n      pWVar7 = pWVar7->pNextLoop;\n    }" { (expression_statement "sVar1._0_1_ = pWVar7->iTab;" (assignment_expression "sVar1._0_1_ = pWVar7->iTab" (field_expression "sVar1._0_1_" identifier . field_identifier) = (field_expression "pWVar7->iTab" identifier -> field_identifier)) ;) (expression_statement "sVar1._1_1_ = pWVar7->iSortIdx;" (assignment_expression "sVar1._1_1_ = pWVar7->iSortIdx" (field_expression "sVar1._1_1_" identifier . field_identifier) = (field_expression "pWVar7->iSortIdx" identifier -> field_identifier)) ;) (if_statement "if (sVar1 == sVar2) {\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" if (parenthesized_expression "(sVar1 == sVar2)" ( (binary_expression "sVar1 == sVar2" identifier == identifier) )) (compound_statement "{\n        uVar3 = (uint)pWVar7->prereq;\n        uVar4 = (uint)pTemplate->prereq;\n        uVar5 = *(uint *)((int)&pWVar7->prereq + 4);\n        uVar6 = *(uint *)((int)&pTemplate->prereq + 4);\n        uVar8 = uVar3 & uVar4;\n        uVar9 = uVar5 & uVar6;\n        if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" { (expression_statement "uVar3 = (uint)pWVar7->prereq;" (assignment_expression "uVar3 = (uint)pWVar7->prereq" identifier = (cast_expression "(uint)pWVar7->prereq" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar7->prereq" identifier -> field_identifier))) ;) (expression_statement "uVar4 = (uint)pTemplate->prereq;" (assignment_expression "uVar4 = (uint)pTemplate->prereq" identifier = (cast_expression "(uint)pTemplate->prereq" ( (type_descriptor "uint" type_identifier) ) (field_expression "pTemplate->prereq" identifier -> field_identifier))) ;) (expression_statement "uVar5 = *(uint *)((int)&pWVar7->prereq + 4);" (assignment_expression "uVar5 = *(uint *)((int)&pWVar7->prereq + 4)" identifier = (pointer_expression "*(uint *)((int)&pWVar7->prereq + 4)" * (cast_expression "(uint *)((int)&pWVar7->prereq + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar7->prereq + 4)" ( (binary_expression "(int)&pWVar7->prereq + 4" (cast_expression "(int)&pWVar7->prereq" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar7->prereq" & (field_expression "pWVar7->prereq" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)((int)&pTemplate->prereq + 4);" (assignment_expression "uVar6 = *(uint *)((int)&pTemplate->prereq + 4)" identifier = (pointer_expression "*(uint *)((int)&pTemplate->prereq + 4)" * (cast_expression "(uint *)((int)&pTemplate->prereq + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pTemplate->prereq + 4)" ( (binary_expression "(int)&pTemplate->prereq + 4" (cast_expression "(int)&pTemplate->prereq" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pTemplate->prereq" & (field_expression "pTemplate->prereq" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar3 & uVar4;" (assignment_expression "uVar8 = uVar3 & uVar4" identifier = (binary_expression "uVar3 & uVar4" identifier & identifier)) ;) (expression_statement "uVar9 = uVar5 & uVar6;" (assignment_expression "uVar9 = uVar5 & uVar6" identifier = (binary_expression "uVar5 & uVar6" identifier & identifier)) ;) (if_statement "if ((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)) {\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }" if (parenthesized_expression "((((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201))" ( (binary_expression "(((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||\n           ((pTemplate->wsFlags & 0x201) != 0x201)" (parenthesized_expression "(((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0))" ( (binary_expression "((pWVar7->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)" (parenthesized_expression "((pWVar7->wsFlags & 0x4000) == 0)" ( (binary_expression "(pWVar7->wsFlags & 0x4000) == 0" (parenthesized_expression "(pWVar7->wsFlags & 0x4000)" ( (binary_expression "pWVar7->wsFlags & 0x4000" (field_expression "pWVar7->wsFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "(pTemplate->nSkip != 0)" ( (binary_expression "pTemplate->nSkip != 0" (field_expression "pTemplate->nSkip" identifier -> field_identifier) != number_literal) ))) )) || (parenthesized_expression "((pTemplate->wsFlags & 0x201) != 0x201)" ( (binary_expression "(pTemplate->wsFlags & 0x201) != 0x201" (parenthesized_expression "(pTemplate->wsFlags & 0x201)" ( (binary_expression "pTemplate->wsFlags & 0x201" (field_expression "pTemplate->wsFlags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;\n          if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;\n          if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }\n        }" { (if_statement "if ((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))\n          goto LAB_0003a228;" if (parenthesized_expression "((uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup))" ( (binary_expression "(uVar5 != uVar9 || uVar3 != uVar8) || (pTemplate->rSetup < pWVar7->rSetup)" (parenthesized_expression "(uVar5 != uVar9 || uVar3 != uVar8)" ( (binary_expression "uVar5 != uVar9 || uVar3 != uVar8" (binary_expression "uVar5 != uVar9" identifier != identifier) || (binary_expression "uVar3 != uVar8" identifier != identifier)) )) || (parenthesized_expression "(pTemplate->rSetup < pWVar7->rSetup)" ( (binary_expression "pTemplate->rSetup < pWVar7->rSetup" (field_expression "pTemplate->rSetup" identifier -> field_identifier) < (field_expression "pWVar7->rSetup" identifier -> field_identifier)) ))) )) (goto_statement "goto LAB_0003a228;" goto statement_identifier ;)) (if_statement "if (pWVar7->rRun <= pTemplate->rRun) goto LAB_0003a2c4;" if (parenthesized_expression "(pWVar7->rRun <= pTemplate->rRun)" ( (binary_expression "pWVar7->rRun <= pTemplate->rRun" (field_expression "pWVar7->rRun" identifier -> field_identifier) <= (field_expression "pTemplate->rRun" identifier -> field_identifier)) )) (goto_statement "goto LAB_0003a2c4;" goto statement_identifier ;)) (if_statement "if (uVar6 != uVar9 || uVar8 != uVar4) goto LAB_0003a23a;" if (parenthesized_expression "(uVar6 != uVar9 || uVar8 != uVar4)" ( (binary_expression "uVar6 != uVar9 || uVar8 != uVar4" (binary_expression "uVar6 != uVar9" identifier != identifier) || (binary_expression "uVar8 != uVar4" identifier != identifier)) )) (goto_statement "goto LAB_0003a23a;" goto statement_identifier ;)) (labeled_statement "LAB_0003a2fe:\n          if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }" statement_identifier : (if_statement "if (pTemplate->nOut <= pWVar7->nOut) {\n            return local_20;\n          }" if (parenthesized_expression "(pTemplate->nOut <= pWVar7->nOut)" ( (binary_expression "pTemplate->nOut <= pWVar7->nOut" (field_expression "pTemplate->nOut" identifier -> field_identifier) <= (field_expression "pWVar7->nOut" identifier -> field_identifier)) )) (compound_statement "{\n            return local_20;\n          }" { (return_statement "return local_20;" return identifier ;) }))) }) (else_clause "else {\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }" else (compound_statement "{\n          if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }\n          if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }\n        }" { (if_statement "if (uVar9 == uVar6 && uVar8 == uVar4) {\n            return local_20;\n          }" if (parenthesized_expression "(uVar9 == uVar6 && uVar8 == uVar4)" ( (binary_expression "uVar9 == uVar6 && uVar8 == uVar4" (binary_expression "uVar9 == uVar6" identifier == identifier) && (binary_expression "uVar8 == uVar4" identifier == identifier)) )) (compound_statement "{\n            return local_20;\n          }" { (return_statement "return local_20;" return identifier ;) })) (if_statement "if (((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)) {\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }" if (parenthesized_expression "(((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun))" ( (binary_expression "((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)) &&\n             (pWVar7->rRun <= pTemplate->rRun)" (parenthesized_expression "((uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup))" ( (binary_expression "(uVar5 == uVar9 && uVar3 == uVar8) && (pWVar7->rSetup <= pTemplate->rSetup)" (parenthesized_expression "(uVar5 == uVar9 && uVar3 == uVar8)" ( (binary_expression "uVar5 == uVar9 && uVar3 == uVar8" (binary_expression "uVar5 == uVar9" identifier == identifier) && (binary_expression "uVar3 == uVar8" identifier == identifier)) )) && (parenthesized_expression "(pWVar7->rSetup <= pTemplate->rSetup)" ( (binary_expression "pWVar7->rSetup <= pTemplate->rSetup" (field_expression "pWVar7->rSetup" identifier -> field_identifier) <= (field_expression "pTemplate->rSetup" identifier -> field_identifier)) ))) )) && (parenthesized_expression "(pWVar7->rRun <= pTemplate->rRun)" ( (binary_expression "pWVar7->rRun <= pTemplate->rRun" (field_expression "pWVar7->rRun" identifier -> field_identifier) <= (field_expression "pTemplate->rRun" identifier -> field_identifier)) ))) )) (compound_statement "{\nLAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }\nLAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;\n          }" { (labeled_statement "LAB_0003a2c4:\n            if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }" statement_identifier : (if_statement "if (pWVar7->nOut <= pTemplate->nOut) {\n              return (WhereLoop **)0x0;\n            }" if (parenthesized_expression "(pWVar7->nOut <= pTemplate->nOut)" ( (binary_expression "pWVar7->nOut <= pTemplate->nOut" (field_expression "pWVar7->nOut" identifier -> field_identifier) <= (field_expression "pTemplate->nOut" identifier -> field_identifier)) )) (compound_statement "{\n              return (WhereLoop **)0x0;\n            }" { (return_statement "return (WhereLoop **)0x0;" return (cast_expression "(WhereLoop **)0x0" ( (type_descriptor "WhereLoop **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ;) }))) (labeled_statement "LAB_0003a228:\n            if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;" statement_identifier : (if_statement "if ((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))\n            goto LAB_0003a2fe;" if (parenthesized_expression "((uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun))" ( (binary_expression "(uVar6 == uVar9 && uVar8 == uVar4) && (pTemplate->rRun <= pWVar7->rRun)" (parenthesized_expression "(uVar6 == uVar9 && uVar8 == uVar4)" ( (binary_expression "uVar6 == uVar9 && uVar8 == uVar4" (binary_expression "uVar6 == uVar9" identifier == identifier) && (binary_expression "uVar8 == uVar4" identifier == identifier)) )) && (parenthesized_expression "(pTemplate->rRun <= pWVar7->rRun)" ( (binary_expression "pTemplate->rRun <= pWVar7->rRun" (field_expression "pTemplate->rRun" identifier -> field_identifier) <= (field_expression "pWVar7->rRun" identifier -> field_identifier)) ))) )) (goto_statement "goto LAB_0003a2fe;" goto statement_identifier ;))) })) }))) })) (labeled_statement "LAB_0003a23a:\n      local_20 = &pWVar7->pNextLoop;" statement_identifier : (expression_statement "local_20 = &pWVar7->pNextLoop;" (assignment_expression "local_20 = &pWVar7->pNextLoop" identifier = (pointer_expression "&pWVar7->pNextLoop" & (field_expression "pWVar7->pNextLoop" identifier -> field_identifier))) ;)) (expression_statement "pWVar7 = pWVar7->pNextLoop;" (assignment_expression "pWVar7 = pWVar7->pNextLoop" identifier = (field_expression "pWVar7->pNextLoop" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pWVar7 != (WhereLoop *)0x0)" ( (binary_expression "pWVar7 != (WhereLoop *)0x0" identifier != (cast_expression "(WhereLoop *)0x0" ( (type_descriptor "WhereLoop *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (return_statement "return local_20;" return identifier ;) }))
(translation_unit "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint *local_20;\n  \n  puVar5 = (uint *)*param_1;\n  local_20 = param_1;\n  if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }\n  return local_20;\n}\n\n" (ERROR "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)" (binary_expression "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_0003a200(uint *param_1,uint *param_2)" identifier (argument_list "(uint *param_1,uint *param_2)" ( (binary_expression "uint *param_1" identifier * identifier) , (binary_expression "uint *param_2" identifier * identifier) ))))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint *local_20;\n  \n  puVar5 = (uint *)*param_1;\n  local_20 = param_1;\n  if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }\n  return local_20;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "puVar5 = (uint *)*param_1;" (assignment_expression "puVar5 = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" identifier = identifier) ;) (if_statement "if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }" if (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }" { (do_statement "do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);" do (compound_statement "{\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    }" { (if_statement "if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" if (parenthesized_expression "((short)puVar5[4] == (short)param_2[4])" ( (binary_expression "(short)puVar5[4] == (short)param_2[4]" (cast_expression "(short)puVar5[4]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[4]" identifier [ number_literal ])) == (cast_expression "(short)param_2[4]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[4]" identifier [ number_literal ]))) )) (compound_statement "{\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" { (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar3 = puVar5[1];" (assignment_expression "uVar3 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = uVar1 & uVar2;" (assignment_expression "uVar6 = uVar1 & uVar2" identifier = (binary_expression "uVar1 & uVar2" identifier & identifier)) ;) (expression_statement "uVar7 = uVar3 & uVar4;" (assignment_expression "uVar7 = uVar3 & uVar4" identifier = (binary_expression "uVar3 & uVar4" identifier & identifier)) ;) (if_statement "if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" if (parenthesized_expression "((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201))" ( (binary_expression "(((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)" (parenthesized_expression "(((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            )" ( (binary_expression "((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)" (parenthesized_expression "((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0)" ( (binary_expression "(*(byte *)((int)puVar5 + 0x25) & 0x40) == 0" (parenthesized_expression "(*(byte *)((int)puVar5 + 0x25) & 0x40)" ( (binary_expression "*(byte *)((int)puVar5 + 0x25) & 0x40" (pointer_expression "*(byte *)((int)puVar5 + 0x25)" * (cast_expression "(byte *)((int)puVar5 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x25)" ( (binary_expression "(int)puVar5 + 0x25" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(short *)((int)param_2 + 0x2a) != 0)" ( (binary_expression "*(short *)((int)param_2 + 0x2a) != 0" (pointer_expression "*(short *)((int)param_2 + 0x2a)" * (cast_expression "(short *)((int)param_2 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x2a)" ( (binary_expression "(int)param_2 + 0x2a" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "((param_2[9] & 0x201) != 0x201)" ( (binary_expression "(param_2[9] & 0x201) != 0x201" (parenthesized_expression "(param_2[9] & 0x201)" ( (binary_expression "param_2[9] & 0x201" (subscript_expression "param_2[9]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }" { (if_statement "if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;" if (parenthesized_expression "((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12)))" ( (binary_expression "(uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))" (parenthesized_expression "(uVar3 != uVar7 || uVar1 != uVar6)" ( (binary_expression "uVar3 != uVar7 || uVar1 != uVar6" (binary_expression "uVar3 != uVar7" identifier != identifier) || (binary_expression "uVar1 != uVar6" identifier != identifier)) )) || (parenthesized_expression "(*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))" ( (binary_expression "*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12)" (pointer_expression "*(short *)((int)param_2 + 0x12)" * (cast_expression "(short *)((int)param_2 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x12)" ( (binary_expression "(int)param_2 + 0x12" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (pointer_expression "*(short *)((int)puVar5 + 0x12)" * (cast_expression "(short *)((int)puVar5 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x12)" ( (binary_expression "(int)puVar5 + 0x12" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) (goto_statement "goto LAB_0003a228;" goto statement_identifier ;)) (if_statement "if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;" if (parenthesized_expression "((short)puVar5[5] <= (short)param_2[5])" ( (binary_expression "(short)puVar5[5] <= (short)param_2[5]" (cast_expression "(short)puVar5[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[5]" identifier [ number_literal ])) <= (cast_expression "(short)param_2[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[5]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0003a2c4;" goto statement_identifier ;)) (if_statement "if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;" if (parenthesized_expression "(uVar4 != uVar7 || uVar6 != uVar2)" ( (binary_expression "uVar4 != uVar7 || uVar6 != uVar2" (binary_expression "uVar4 != uVar7" identifier != identifier) || (binary_expression "uVar6 != uVar2" identifier != identifier)) )) (goto_statement "goto LAB_0003a23a;" goto statement_identifier ;)) (labeled_statement "LAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }" statement_identifier : (if_statement "if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }" if (parenthesized_expression "(*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16))" ( (binary_expression "*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)" (pointer_expression "*(short *)((int)param_2 + 0x16)" * (cast_expression "(short *)((int)param_2 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x16)" ( (binary_expression "(int)param_2 + 0x16" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (pointer_expression "*(short *)((int)puVar5 + 0x16)" * (cast_expression "(short *)((int)puVar5 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x16)" ( (binary_expression "(int)puVar5 + 0x16" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n            return local_20;\n          }" { (return_statement "return local_20;" return identifier ;) }))) }) (else_clause "else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" else (compound_statement "{\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" { (if_statement "if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }" if (parenthesized_expression "(uVar7 == uVar4 && uVar6 == uVar2)" ( (binary_expression "uVar7 == uVar4 && uVar6 == uVar2" (binary_expression "uVar7 == uVar4" identifier == identifier) && (binary_expression "uVar6 == uVar2" identifier == identifier)) )) (compound_statement "{\n            return local_20;\n          }" { (return_statement "return local_20;" return identifier ;) })) (if_statement "if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }" if (parenthesized_expression "(((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5]))" ( (binary_expression "((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])" (parenthesized_expression "((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12)))" ( (binary_expression "(uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))" (parenthesized_expression "(uVar3 == uVar7 && uVar1 == uVar6)" ( (binary_expression "uVar3 == uVar7 && uVar1 == uVar6" (binary_expression "uVar3 == uVar7" identifier == identifier) && (binary_expression "uVar1 == uVar6" identifier == identifier)) )) && (parenthesized_expression "(*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))" ( (binary_expression "*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12)" (pointer_expression "*(short *)((int)puVar5 + 0x12)" * (cast_expression "(short *)((int)puVar5 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x12)" ( (binary_expression "(int)puVar5 + 0x12" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (pointer_expression "*(short *)((int)param_2 + 0x12)" * (cast_expression "(short *)((int)param_2 + 0x12)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x12)" ( (binary_expression "(int)param_2 + 0x12" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) && (parenthesized_expression "((short)puVar5[5] <= (short)param_2[5])" ( (binary_expression "(short)puVar5[5] <= (short)param_2[5]" (cast_expression "(short)puVar5[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[5]" identifier [ number_literal ])) <= (cast_expression "(short)param_2[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[5]" identifier [ number_literal ]))) ))) )) (compound_statement "{\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }" { (labeled_statement "LAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }" statement_identifier : (if_statement "if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }" if (parenthesized_expression "(*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16))" ( (binary_expression "*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)" (pointer_expression "*(short *)((int)puVar5 + 0x16)" * (cast_expression "(short *)((int)puVar5 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x16)" ( (binary_expression "(int)puVar5 + 0x16" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (pointer_expression "*(short *)((int)param_2 + 0x16)" * (cast_expression "(short *)((int)param_2 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x16)" ( (binary_expression "(int)param_2 + 0x16" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n              return (uint *)0x0;\n            }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (labeled_statement "LAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;" statement_identifier : (if_statement "if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;" if (parenthesized_expression "((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))" ( (binary_expression "(uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5])" (parenthesized_expression "(uVar4 == uVar7 && uVar6 == uVar2)" ( (binary_expression "uVar4 == uVar7 && uVar6 == uVar2" (binary_expression "uVar4 == uVar7" identifier == identifier) && (binary_expression "uVar6 == uVar2" identifier == identifier)) )) && (parenthesized_expression "((short)param_2[5] <= (short)puVar5[5])" ( (binary_expression "(short)param_2[5] <= (short)puVar5[5]" (cast_expression "(short)param_2[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "param_2[5]" identifier [ number_literal ])) <= (cast_expression "(short)puVar5[5]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar5[5]" identifier [ number_literal ]))) ))) )) (goto_statement "goto LAB_0003a2fe;" goto statement_identifier ;))) })) }))) })) (labeled_statement "LAB_0003a23a:\n      local_20 = puVar5 + 0xd;" statement_identifier : (expression_statement "local_20 = puVar5 + 0xd;" (assignment_expression "local_20 = puVar5 + 0xd" identifier = (binary_expression "puVar5 + 0xd" identifier + number_literal)) ;)) (expression_statement "puVar5 = (uint *)puVar5[0xd];" (assignment_expression "puVar5 = (uint *)puVar5[0xd]" identifier = (cast_expression "(uint *)puVar5[0xd]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[0xd]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(puVar5 != (uint *)0x0)" ( (binary_expression "puVar5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (return_statement "return local_20;" return identifier ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) , (binary_expression IDENT * IDENT) ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ))) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))) ))) )) (goto_statement goto statement_identifier ;))) })) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (return_statement return IDENT ;) }))
(ERROR "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)" (binary_expression "uint * __regparm3 FUN_0003a200(uint *param_1,uint *param_2)" (identifier "uint") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_0003a200(uint *param_1,uint *param_2)" (identifier "FUN_0003a200") (argument_list "(uint *param_1,uint *param_2)" (( "(") (binary_expression "uint *param_1" (identifier "uint") (* "*") (identifier "param_1")) (, ",") (binary_expression "uint *param_2" (identifier "uint") (* "*") (identifier "param_2")) () ")"))))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint *local_20;\n  \n  puVar5 = (uint *)*param_1;\n  local_20 = param_1;\n  if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }\n  return local_20;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint *local_20;" (type_identifier "uint") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "puVar5 = (uint *)*param_1;" (assignment_expression "puVar5 = (uint *)*param_1" (identifier "puVar5") (= "=") (cast_expression "(uint *)*param_1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" (identifier "local_20") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (puVar5 != (uint *)0x0) {\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }" (if "if") (parenthesized_expression "(puVar5 != (uint *)0x0)" (( "(") (binary_expression "puVar5 != (uint *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);\n  }" ({ "{") (do_statement "do {\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    } while (puVar5 != (uint *)0x0);" (do "do") (compound_statement "{\n      if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }\nLAB_0003a23a:\n      local_20 = puVar5 + 0xd;\n      puVar5 = (uint *)puVar5[0xd];\n    }" ({ "{") (if_statement "if ((short)puVar5[4] == (short)param_2[4]) {\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((short)puVar5[4] == (short)param_2[4])" (( "(") (binary_expression "(short)puVar5[4] == (short)param_2[4]" (cast_expression "(short)puVar5[4]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]"))) (== "==") (cast_expression "(short)param_2[4]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")))) () ")")) (compound_statement "{\n        uVar1 = *puVar5;\n        uVar2 = *param_2;\n        uVar3 = puVar5[1];\n        uVar4 = param_2[1];\n        uVar6 = uVar1 & uVar2;\n        uVar7 = uVar3 & uVar4;\n        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }\n      }" ({ "{") (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" (identifier "uVar1") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar3 = puVar5[1];" (assignment_expression "uVar3 = puVar5[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" (identifier "uVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = uVar1 & uVar2;" (assignment_expression "uVar6 = uVar1 & uVar2" (identifier "uVar6") (= "=") (binary_expression "uVar1 & uVar2" (identifier "uVar1") (& "&") (identifier "uVar2"))) (; ";")) (expression_statement "uVar7 = uVar3 & uVar4;" (assignment_expression "uVar7 = uVar3 & uVar4" (identifier "uVar7") (= "=") (binary_expression "uVar3 & uVar4" (identifier "uVar3") (& "&") (identifier "uVar4"))) (; ";")) (if_statement "if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)) {\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }\n        else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" (if "if") (parenthesized_expression "((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201))" (( "(") (binary_expression "(((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            ) || ((param_2[9] & 0x201) != 0x201)" (parenthesized_expression "(((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)\n            )" (( "(") (binary_expression "((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)" (parenthesized_expression "((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0)" (( "(") (binary_expression "(*(byte *)((int)puVar5 + 0x25) & 0x40) == 0" (parenthesized_expression "(*(byte *)((int)puVar5 + 0x25) & 0x40)" (( "(") (binary_expression "*(byte *)((int)puVar5 + 0x25) & 0x40" (pointer_expression "*(byte *)((int)puVar5 + 0x25)" (* "*") (cast_expression "(byte *)((int)puVar5 + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 0x25)" (( "(") (binary_expression "(int)puVar5 + 0x25" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(short *)((int)param_2 + 0x2a) != 0)" (( "(") (binary_expression "*(short *)((int)param_2 + 0x2a) != 0" (pointer_expression "*(short *)((int)param_2 + 0x2a)" (* "*") (cast_expression "(short *)((int)param_2 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x2a)" (( "(") (binary_expression "(int)param_2 + 0x2a" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x2a")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((param_2[9] & 0x201) != 0x201)" (( "(") (binary_expression "(param_2[9] & 0x201) != 0x201" (parenthesized_expression "(param_2[9] & 0x201)" (( "(") (binary_expression "param_2[9] & 0x201" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (& "&") (number_literal "0x201")) () ")")) (!= "!=") (number_literal "0x201")) () ")"))) () ")")) (compound_statement "{\n          if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;\n          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;\n          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;\nLAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }\n        }" ({ "{") (if_statement "if ((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;" (if "if") (parenthesized_expression "((uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12)))" (( "(") (binary_expression "(uVar3 != uVar7 || uVar1 != uVar6) ||\n             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))" (parenthesized_expression "(uVar3 != uVar7 || uVar1 != uVar6)" (( "(") (binary_expression "uVar3 != uVar7 || uVar1 != uVar6" (binary_expression "uVar3 != uVar7" (identifier "uVar3") (!= "!=") (identifier "uVar7")) (|| "||") (binary_expression "uVar1 != uVar6" (identifier "uVar1") (!= "!=") (identifier "uVar6"))) () ")")) (|| "||") (parenthesized_expression "(*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))" (( "(") (binary_expression "*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12)" (pointer_expression "*(short *)((int)param_2 + 0x12)" (* "*") (cast_expression "(short *)((int)param_2 + 0x12)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x12)" (( "(") (binary_expression "(int)param_2 + 0x12" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x12")) () ")")))) (< "<") (pointer_expression "*(short *)((int)puVar5 + 0x12)" (* "*") (cast_expression "(short *)((int)puVar5 + 0x12)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 0x12)" (( "(") (binary_expression "(int)puVar5 + 0x12" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x12")) () ")"))))) () ")"))) () ")")) (goto_statement "goto LAB_0003a228;" (goto "goto") (statement_identifier "LAB_0003a228") (; ";"))) (if_statement "if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;" (if "if") (parenthesized_expression "((short)puVar5[5] <= (short)param_2[5])" (( "(") (binary_expression "(short)puVar5[5] <= (short)param_2[5]" (cast_expression "(short)puVar5[5]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]"))) (<= "<=") (cast_expression "(short)param_2[5]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")))) () ")")) (goto_statement "goto LAB_0003a2c4;" (goto "goto") (statement_identifier "LAB_0003a2c4") (; ";"))) (if_statement "if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;" (if "if") (parenthesized_expression "(uVar4 != uVar7 || uVar6 != uVar2)" (( "(") (binary_expression "uVar4 != uVar7 || uVar6 != uVar2" (binary_expression "uVar4 != uVar7" (identifier "uVar4") (!= "!=") (identifier "uVar7")) (|| "||") (binary_expression "uVar6 != uVar2" (identifier "uVar6") (!= "!=") (identifier "uVar2"))) () ")")) (goto_statement "goto LAB_0003a23a;" (goto "goto") (statement_identifier "LAB_0003a23a") (; ";"))) (labeled_statement "LAB_0003a2fe:\n          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }" (statement_identifier "LAB_0003a2fe") (: ":") (if_statement "if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {\n            return local_20;\n          }" (if "if") (parenthesized_expression "(*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16))" (( "(") (binary_expression "*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)" (pointer_expression "*(short *)((int)param_2 + 0x16)" (* "*") (cast_expression "(short *)((int)param_2 + 0x16)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x16)" (( "(") (binary_expression "(int)param_2 + 0x16" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x16")) () ")")))) (<= "<=") (pointer_expression "*(short *)((int)puVar5 + 0x16)" (* "*") (cast_expression "(short *)((int)puVar5 + 0x16)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 0x16)" (( "(") (binary_expression "(int)puVar5 + 0x16" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x16")) () ")"))))) () ")")) (compound_statement "{\n            return local_20;\n          }" ({ "{") (return_statement "return local_20;" (return "return") (identifier "local_20") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" (else "else") (compound_statement "{\n          if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }\n          if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }\n        }" ({ "{") (if_statement "if (uVar7 == uVar4 && uVar6 == uVar2) {\n            return local_20;\n          }" (if "if") (parenthesized_expression "(uVar7 == uVar4 && uVar6 == uVar2)" (( "(") (binary_expression "uVar7 == uVar4 && uVar6 == uVar2" (binary_expression "uVar7 == uVar4" (identifier "uVar7") (== "==") (identifier "uVar4")) (&& "&&") (binary_expression "uVar6 == uVar2" (identifier "uVar6") (== "==") (identifier "uVar2"))) () ")")) (compound_statement "{\n            return local_20;\n          }" ({ "{") (return_statement "return local_20;" (return "return") (identifier "local_20") (; ";")) (} "}"))) (if_statement "if (((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])) {\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }" (if "if") (parenthesized_expression "(((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5]))" (( "(") (binary_expression "((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&\n             ((short)puVar5[5] <= (short)param_2[5])" (parenthesized_expression "((uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12)))" (( "(") (binary_expression "(uVar3 == uVar7 && uVar1 == uVar6) &&\n              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))" (parenthesized_expression "(uVar3 == uVar7 && uVar1 == uVar6)" (( "(") (binary_expression "uVar3 == uVar7 && uVar1 == uVar6" (binary_expression "uVar3 == uVar7" (identifier "uVar3") (== "==") (identifier "uVar7")) (&& "&&") (binary_expression "uVar1 == uVar6" (identifier "uVar1") (== "==") (identifier "uVar6"))) () ")")) (&& "&&") (parenthesized_expression "(*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))" (( "(") (binary_expression "*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12)" (pointer_expression "*(short *)((int)puVar5 + 0x12)" (* "*") (cast_expression "(short *)((int)puVar5 + 0x12)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 0x12)" (( "(") (binary_expression "(int)puVar5 + 0x12" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x12")) () ")")))) (<= "<=") (pointer_expression "*(short *)((int)param_2 + 0x12)" (* "*") (cast_expression "(short *)((int)param_2 + 0x12)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x12)" (( "(") (binary_expression "(int)param_2 + 0x12" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x12")) () ")"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((short)puVar5[5] <= (short)param_2[5])" (( "(") (binary_expression "(short)puVar5[5] <= (short)param_2[5]" (cast_expression "(short)puVar5[5]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]"))) (<= "<=") (cast_expression "(short)param_2[5]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")))) () ")"))) () ")")) (compound_statement "{\nLAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }\nLAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;\n          }" ({ "{") (labeled_statement "LAB_0003a2c4:\n            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }" (statement_identifier "LAB_0003a2c4") (: ":") (if_statement "if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {\n              return (uint *)0x0;\n            }" (if "if") (parenthesized_expression "(*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16))" (( "(") (binary_expression "*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)" (pointer_expression "*(short *)((int)puVar5 + 0x16)" (* "*") (cast_expression "(short *)((int)puVar5 + 0x16)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 0x16)" (( "(") (binary_expression "(int)puVar5 + 0x16" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x16")) () ")")))) (<= "<=") (pointer_expression "*(short *)((int)param_2 + 0x16)" (* "*") (cast_expression "(short *)((int)param_2 + 0x16)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x16)" (( "(") (binary_expression "(int)param_2 + 0x16" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x16")) () ")"))))) () ")")) (compound_statement "{\n              return (uint *)0x0;\n            }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))) (labeled_statement "LAB_0003a228:\n            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;" (statement_identifier "LAB_0003a228") (: ":") (if_statement "if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))\n            goto LAB_0003a2fe;" (if "if") (parenthesized_expression "((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))" (( "(") (binary_expression "(uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5])" (parenthesized_expression "(uVar4 == uVar7 && uVar6 == uVar2)" (( "(") (binary_expression "uVar4 == uVar7 && uVar6 == uVar2" (binary_expression "uVar4 == uVar7" (identifier "uVar4") (== "==") (identifier "uVar7")) (&& "&&") (binary_expression "uVar6 == uVar2" (identifier "uVar6") (== "==") (identifier "uVar2"))) () ")")) (&& "&&") (parenthesized_expression "((short)param_2[5] <= (short)puVar5[5])" (( "(") (binary_expression "(short)param_2[5] <= (short)puVar5[5]" (cast_expression "(short)param_2[5]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (<= "<=") (cast_expression "(short)puVar5[5]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]")))) () ")"))) () ")")) (goto_statement "goto LAB_0003a2fe;" (goto "goto") (statement_identifier "LAB_0003a2fe") (; ";")))) (} "}"))) (} "}")))) (} "}"))) (labeled_statement "LAB_0003a23a:\n      local_20 = puVar5 + 0xd;" (statement_identifier "LAB_0003a23a") (: ":") (expression_statement "local_20 = puVar5 + 0xd;" (assignment_expression "local_20 = puVar5 + 0xd" (identifier "local_20") (= "=") (binary_expression "puVar5 + 0xd" (identifier "puVar5") (+ "+") (number_literal "0xd"))) (; ";"))) (expression_statement "puVar5 = (uint *)puVar5[0xd];" (assignment_expression "puVar5 = (uint *)puVar5[0xd]" (identifier "puVar5") (= "=") (cast_expression "(uint *)puVar5[0xd]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[0xd]" (identifier "puVar5") ([ "[") (number_literal "0xd") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 != (uint *)0x0)" (( "(") (binary_expression "puVar5 != (uint *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (return_statement "return local_20;" (return "return") (identifier "local_20") (; ";")) (} "}"))

type_2 ** __regparm3 whereLoopFindLesser(type_2 **ppPrev,type_2 *pTemplate)

{
  short var_2;
  short var_3;
  type_1 var_4;
  type_1 var_5;
  type_1 var_6;
  type_1 var_7;
  type_2 *var_1;
  type_1 var_9;
  type_1 var_8;
  type_2 **local_20;
  
  var_1 = *ppPrev;
  local_20 = ppPrev;
  if (var_1 != (type_2 *)0x0) {
    var_3._0_1_ = pTemplate->iTab;
    var_3._1_1_ = pTemplate->iSortIdx;
    do {
      var_2._0_1_ = var_1->iTab;
      var_2._1_1_ = var_1->iSortIdx;
      if (var_2 == var_3) {
        var_4 = (type_1)var_1->prereq;
        var_5 = (type_1)pTemplate->prereq;
        var_6 = *(type_1 *)((int)&var_1->prereq + 4);
        var_7 = *(type_1 *)((int)&pTemplate->prereq + 4);
        var_9 = var_4 & var_5;
        var_8 = var_6 & var_7;
        if ((((var_1->wsFlags & 0x4000) == 0) || (pTemplate->nSkip != 0)) ||
           ((pTemplate->wsFlags & 0x201) != 0x201)) {
          if ((var_6 != var_8 || var_4 != var_9) || (pTemplate->rSetup < var_1->rSetup))
          goto LAB_0003a228;
          if (var_1->rRun <= pTemplate->rRun) goto LAB_0003a2c4;
          if (var_7 != var_8 || var_9 != var_5) goto LAB_0003a23a;
LAB_0003a2fe:
          if (pTemplate->nOut <= var_1->nOut) {
            return local_20;
          }
        }
        else {
          if (var_8 == var_7 && var_9 == var_5) {
            return local_20;
          }
          if (((var_6 == var_8 && var_4 == var_9) && (var_1->rSetup <= pTemplate->rSetup)) &&
             (var_1->rRun <= pTemplate->rRun)) {
LAB_0003a2c4:
            if (var_1->nOut <= pTemplate->nOut) {
              return (type_2 **)0x0;
            }
LAB_0003a228:
            if ((var_7 == var_8 && var_9 == var_5) && (pTemplate->rRun <= var_1->rRun))
            goto LAB_0003a2fe;
          }
        }
      }
LAB_0003a23a:
      local_20 = &var_1->pNextLoop;
      var_1 = var_1->pNextLoop;
    } while (var_1 != (type_2 *)0x0);
  }
  return local_20;
}


(translation_unit (ERROR (binary_expression left: (identifier) (ERROR (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier)))))) (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (return_statement (identifier))))

uint * __regparm3 MASKED(uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint uVar6;
  uint uVar7;
  uint *local_20;
  
  puVar5 = (uint *)*param_1;
  local_20 = param_1;
  if (puVar5 != (uint *)0x0) {
    do {
      if ((short)puVar5[4] == (short)param_2[4]) {
        uVar1 = *puVar5;
        uVar2 = *param_2;
        uVar3 = puVar5[1];
        uVar4 = param_2[1];
        uVar6 = uVar1 & uVar2;
        uVar7 = uVar3 & uVar4;
        if ((((*(byte *)((int)puVar5 + 0x25) & 0x40) == 0) || (*(short *)((int)param_2 + 0x2a) != 0)
            ) || ((param_2[9] & 0x201) != 0x201)) {
          if ((uVar3 != uVar7 || uVar1 != uVar6) ||
             (*(short *)((int)param_2 + 0x12) < *(short *)((int)puVar5 + 0x12))) goto LAB_0003a228;
          if ((short)puVar5[5] <= (short)param_2[5]) goto LAB_0003a2c4;
          if (uVar4 != uVar7 || uVar6 != uVar2) goto LAB_0003a23a;
LAB_0003a2fe:
          if (*(short *)((int)param_2 + 0x16) <= *(short *)((int)puVar5 + 0x16)) {
            return local_20;
          }
        }
        else {
          if (uVar7 == uVar4 && uVar6 == uVar2) {
            return local_20;
          }
          if (((uVar3 == uVar7 && uVar1 == uVar6) &&
              (*(short *)((int)puVar5 + 0x12) <= *(short *)((int)param_2 + 0x12))) &&
             ((short)puVar5[5] <= (short)param_2[5])) {
LAB_0003a2c4:
            if (*(short *)((int)puVar5 + 0x16) <= *(short *)((int)param_2 + 0x16)) {
              return (uint *)0x0;
            }
LAB_0003a228:
            if ((uVar4 == uVar7 && uVar6 == uVar2) && ((short)param_2[5] <= (short)puVar5[5]))
            goto LAB_0003a2fe;
          }
        }
      }
LAB_0003a23a:
      local_20 = puVar5 + 0xd;
      puVar5 = (uint *)puVar5[0xd];
    } while (puVar5 != (uint *)0x0);
  }
  return local_20;
}

