
void __regparm3 add_hilite(hilite_tree *anchor,hilite *hl)

{
  int *piVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  POSITION PVar6;
  hilite_storage *phVar7;
  uint uVar8;
  hilite_node *phVar9;
  hilite_node *phVar10;
  hilite_node *phVar11;
  int iVar12;
  hilite_node *phVar13;
  hilite_node *phVar14;
  int iVar15;
  uint local_24;
  
  phVar10 = anchor->root;
  if (phVar10 == (hilite_node *)0x0) {
    phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);
    phVar10 = phVar7->nodes + phVar7->used;
    phVar7->used = phVar7->used + 1;
    *(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos;
    *(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)
    ;
    *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;
    *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);
    anchor->root = phVar10;
    anchor->lookaside = phVar10;
  }
  else {
    local_24 = (uint)hl->hl_startpos;
    iVar15 = *(int *)((int)&hl->hl_startpos + 4);
    uVar8 = (uint)(phVar10->r).hl_startpos;
    iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);
    if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==
        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;
    while( true ) {
      piVar1 = (int *)((int)&hl->hl_endpos + 4);
      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);
      iVar4 = iVar12 - *piVar1;
      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {
        *(uint *)&hl->hl_endpos = uVar8;
        *(int *)((int)&hl->hl_endpos + 4) = iVar12;
      }
      phVar9 = phVar10->left;
      if (phVar9 == (hilite_node *)0x0) break;
      while( true ) {
        uVar8 = (uint)(phVar9->r).hl_startpos;
        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);
        phVar10 = phVar9;
        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=
            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;
LAB_00027d36:
        uVar3 = (uint)(phVar10->r).hl_endpos;
        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);
        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=
            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {
          piVar1 = (int *)((int)&hl->hl_endpos + 4);
          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);
          iVar12 = *piVar1;
          iVar5 = iVar4 - *piVar1;
          *(uint *)&hl->hl_startpos = uVar3;
          *(int *)((int)&hl->hl_startpos + 4) = iVar4;
          local_24 = uVar3;
          iVar15 = iVar4;
          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {
            return;
          }
        }
        phVar9 = phVar10->right;
        if (phVar9 == (hilite_node *)0x0) {
          uVar8 = (uint)(phVar10->r).hl_startpos;
          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);
          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=
              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;
          if (iVar4 == iVar15 && uVar3 == local_24) {
            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);
            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;
            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;
            return;
          }
          phVar9 = phVar10->next;
          if ((phVar9 != (hilite_node *)0x0) &&
             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&
              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {
            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;
            *(uint *)&(phVar9->r).hl_startpos = local_24;
            return;
          }
          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);
          iVar15 = phVar7->used;
          phVar7->used = iVar15 + 1;
          phVar9 = phVar7->nodes + iVar15;
          phVar10->right = phVar9;
          phVar9->prev = phVar10;
          if (phVar10->next != (hilite_node *)0x0) {
            phVar9->next = phVar10->next;
            phVar10->next->prev = phVar9;
          }
          phVar10->next = phVar9;
          goto LAB_00027e50;
        }
      }
    }
LAB_00027dec:
    uVar3 = (uint)hl->hl_endpos;
    iVar4 = *(int *)((int)&hl->hl_endpos + 4);
    if (iVar12 == iVar4 && uVar8 == uVar3) {
      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;
      *(uint *)&(phVar10->r).hl_startpos = local_24;
    }
    else {
      phVar9 = phVar10->prev;
      if ((phVar9 == (hilite_node *)0x0) ||
         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||
          local_24 != (uint)(phVar9->r).hl_endpos)) {
        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);
        phVar9 = phVar7->nodes + phVar7->used;
        phVar7->used = phVar7->used + 1;
        phVar10->left = phVar9;
        phVar9->next = phVar10;
        if (phVar10->prev != (hilite_node *)0x0) {
          phVar9->prev = phVar10->prev;
          phVar10->prev->next = phVar9;
        }
        phVar10->prev = phVar9;
LAB_00027e50:
        PVar6 = hl->hl_startpos;
        phVar9->red = 1;
        phVar9->parent = phVar10;
        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;
        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =
             *(undefined4 *)((int)&hl->hl_startpos + 4);
        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;
        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);
        if (phVar10->red != 0) {
          phVar13 = phVar10->parent;
          phVar11 = phVar13->left;
          phVar14 = phVar11;
          if (phVar11 == phVar10) goto LAB_00027f37;
          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {
            phVar10->red = 0;
            phVar10 = phVar13->parent;
            phVar14->red = 0;
            phVar13->red = 1;
            if (phVar10 == (hilite_node *)0x0) {
              phVar13->red = 0;
              return;
            }
            if (phVar10->red == 0) {
              return;
            }
            phVar14 = phVar10->parent;
            phVar11 = phVar14->left;
            phVar9 = phVar13;
            phVar13 = phVar14;
            phVar14 = phVar11;
            if (phVar11 == phVar10) {
LAB_00027f37:
              phVar14 = phVar13->right;
            }
          }
          phVar14 = phVar10->right;
          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {
            phVar11 = phVar14->left;
            phVar13->left = phVar14;
            phVar14->left = phVar10;
            phVar10->right = phVar11;
            phVar14->parent = phVar13;
            phVar10->parent = phVar14;
            if (phVar11 != (hilite_node *)0x0) {
              phVar11->parent = phVar10;
            }
            phVar10 = phVar9->left;
            phVar9 = phVar10->parent;
          }
          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {
            phVar11 = phVar9->right;
            phVar13->right = phVar9;
            phVar9->right = phVar10;
            phVar10->left = phVar11;
            phVar9->parent = phVar13;
            phVar10->parent = phVar9;
            if (phVar11 != (hilite_node *)0x0) {
              phVar11->parent = phVar10;
              phVar9 = phVar10->parent;
            }
          }
          else {
            phVar10 = phVar9;
            phVar9 = phVar9->parent;
          }
          phVar13 = phVar9->parent;
          phVar9->red = 0;
          phVar11 = phVar13->parent;
          phVar13->red = 1;
          if (phVar10 == phVar9->left) {
            phVar10 = phVar13->left;
            phVar9 = phVar10->right;
            if (phVar11 == (hilite_node *)0x0) {
              anchor->root = phVar10;
            }
            else if (phVar13 == phVar11->right) {
              phVar11->right = phVar10;
            }
            else {
              phVar11->left = phVar10;
            }
            phVar10->right = phVar13;
            phVar13->left = phVar9;
            phVar10->parent = phVar11;
            phVar13->parent = phVar10;
            if (phVar9 != (hilite_node *)0x0) {
              phVar9->parent = phVar13;
            }
          }
          else {
            phVar10 = phVar13->right;
            phVar9 = phVar10->left;
            if (phVar11 == (hilite_node *)0x0) {
              anchor->root = phVar10;
            }
            else if (phVar13 == phVar11->left) {
              phVar11->left = phVar10;
            }
            else {
              phVar11->right = phVar10;
            }
            phVar10->left = phVar13;
            phVar13->right = phVar9;
            phVar10->parent = phVar11;
            phVar13->parent = phVar10;
            if (phVar9 != (hilite_node *)0x0) {
              phVar9->parent = phVar13;
            }
          }
        }
      }
      else {
        *(uint *)&(phVar9->r).hl_endpos = uVar3;
        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;
      }
    }
  }
  return;
}



void __regparm3 FUN_00027ce0(int param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  uint uVar10;
  int *piVar11;
  int *piVar12;
  uint uVar13;
  uint local_24;
  
  piVar8 = *(int **)(param_1 + 8);
  if (piVar8 == (int *)0x0) {
    iVar4 = FUN_00027c50();
    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    *(uint *)(iVar6 + 0x18) = *param_2;
    *(uint *)(iVar6 + 0x1c) = param_2[1];
    *(uint *)(iVar6 + 0x20) = param_2[2];
    *(uint *)(iVar6 + 0x24) = param_2[3];
    *(int *)(param_1 + 8) = iVar6;
    *(int *)(param_1 + 0xc) = iVar6;
  }
  else {
    local_24 = *param_2;
    uVar13 = param_2[1];
    uVar5 = piVar8[6];
    uVar10 = piVar8[7];
    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==
        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;
    while( true ) {
      iVar6 = uVar10 - param_2[3];
      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=
          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {
        param_2[2] = uVar5;
        param_2[3] = uVar10;
      }
      piVar7 = (int *)piVar8[1];
      if (piVar7 == (int *)0x0) break;
      while( true ) {
        uVar5 = piVar7[6];
        uVar10 = piVar7[7];
        piVar8 = piVar7;
        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=
            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;
LAB_00027d36:
        uVar1 = piVar8[8];
        uVar2 = piVar8[9];
        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=
            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {
          iVar6 = uVar2 - param_2[3];
          *param_2 = uVar1;
          param_2[1] = uVar2;
          local_24 = uVar1;
          uVar13 = uVar2;
          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==
              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {
            return;
          }
        }
        piVar7 = (int *)piVar8[2];
        if (piVar7 == (int *)0x0) {
          uVar5 = piVar8[6];
          uVar10 = piVar8[7];
          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=
              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;
          if (uVar2 == uVar13 && uVar1 == local_24) {
            uVar13 = param_2[3];
            piVar8[8] = param_2[2];
            piVar8[9] = uVar13;
            return;
          }
          iVar6 = piVar8[4];
          if ((iVar6 != 0) &&
             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {
            *(uint *)(iVar6 + 0x1c) = uVar13;
            *(uint *)(iVar6 + 0x18) = local_24;
            return;
          }
          iVar4 = FUN_00027c50();
          iVar6 = *(int *)(iVar4 + 4);
          *(int *)(iVar4 + 4) = iVar6 + 1;
          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);
          piVar8[2] = (int)piVar7;
          piVar7[3] = (int)piVar8;
          if (piVar8[4] != 0) {
            piVar7[4] = piVar8[4];
            *(int **)(piVar8[4] + 0xc) = piVar7;
          }
          piVar8[4] = (int)piVar7;
          goto LAB_00027e50;
        }
      }
    }
LAB_00027dec:
    uVar1 = param_2[3];
    if (uVar10 == uVar1 && uVar5 == param_2[2]) {
      piVar8[7] = uVar13;
      piVar8[6] = local_24;
    }
    else {
      iVar6 = piVar8[3];
      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))
         ) {
        iVar6 = FUN_00027c50();
        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);
        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;
        piVar8[1] = (int)piVar7;
        piVar7[4] = (int)piVar8;
        if (piVar8[3] != 0) {
          piVar7[3] = piVar8[3];
          *(int **)(piVar8[3] + 0x10) = piVar7;
        }
        piVar8[3] = (int)piVar7;
LAB_00027e50:
        uVar13 = *param_2;
        piVar7[5] = 1;
        *piVar7 = (int)piVar8;
        piVar7[6] = uVar13;
        piVar7[7] = param_2[1];
        piVar7[8] = param_2[2];
        piVar7[9] = param_2[3];
        if (piVar8[5] != 0) {
          piVar11 = (int *)*piVar8;
          piVar9 = (int *)piVar11[1];
          piVar12 = piVar9;
          if (piVar9 == piVar8) goto LAB_00027f37;
          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {
            piVar8[5] = 0;
            piVar8 = (int *)*piVar11;
            piVar12[5] = 0;
            piVar11[5] = 1;
            if (piVar8 == (int *)0x0) {
              piVar11[5] = 0;
              return;
            }
            if (piVar8[5] == 0) {
              return;
            }
            piVar12 = (int *)*piVar8;
            piVar9 = (int *)piVar12[1];
            piVar7 = piVar11;
            piVar11 = piVar12;
            piVar12 = piVar9;
            if (piVar9 == piVar8) {
LAB_00027f37:
              piVar12 = (int *)piVar11[2];
            }
          }
          piVar12 = (int *)piVar8[2];
          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {
            puVar3 = (undefined4 *)piVar12[1];
            piVar11[1] = (int)piVar12;
            piVar12[1] = (int)piVar8;
            piVar8[2] = (int)puVar3;
            *piVar12 = (int)piVar11;
            *piVar8 = (int)piVar12;
            if (puVar3 != (undefined4 *)0x0) {
              *puVar3 = piVar8;
            }
            piVar8 = (int *)piVar7[1];
            piVar7 = (int *)*piVar8;
          }
          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {
            puVar3 = (undefined4 *)piVar7[2];
            piVar11[2] = (int)piVar7;
            piVar7[2] = (int)piVar8;
            piVar8[1] = (int)puVar3;
            *piVar7 = (int)piVar11;
            *piVar8 = (int)piVar7;
            if (puVar3 != (undefined4 *)0x0) {
              *puVar3 = piVar8;
              piVar7 = (int *)*piVar8;
            }
          }
          else {
            piVar8 = piVar7;
            piVar7 = (int *)*piVar7;
          }
          piVar11 = (int *)*piVar7;
          piVar7[5] = 0;
          iVar6 = *piVar11;
          piVar11[5] = 1;
          if (piVar8 == (int *)piVar7[1]) {
            piVar8 = (int *)piVar11[1];
            piVar7 = (int *)piVar8[2];
            if (iVar6 == 0) {
              *(int **)(param_1 + 8) = piVar8;
            }
            else if (piVar11 == *(int **)(iVar6 + 8)) {
              *(int **)(iVar6 + 8) = piVar8;
            }
            else {
              *(int **)(iVar6 + 4) = piVar8;
            }
            piVar8[2] = (int)piVar11;
            piVar11[1] = (int)piVar7;
            *piVar8 = iVar6;
            *piVar11 = (int)piVar8;
            if (piVar7 != (int *)0x0) {
              *piVar7 = (int)piVar11;
            }
          }
          else {
            piVar8 = (int *)piVar11[2];
            piVar7 = (int *)piVar8[1];
            if (iVar6 == 0) {
              *(int **)(param_1 + 8) = piVar8;
            }
            else if (piVar11 == *(int **)(iVar6 + 4)) {
              *(int **)(iVar6 + 4) = piVar8;
            }
            else {
              *(int **)(iVar6 + 8) = piVar8;
            }
            piVar8[1] = (int)piVar11;
            piVar11[2] = (int)piVar7;
            *piVar8 = iVar6;
            *piVar11 = (int)piVar8;
            if (piVar7 != (int *)0x0) {
              *piVar7 = (int)piVar11;
            }
          }
        }
      }
      else {
        *(uint *)(iVar6 + 0x20) = param_2[2];
        *(uint *)(iVar6 + 0x24) = uVar1;
      }
    }
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EDX
PUSH EBX
SUB ESP,0x1c
MOV EBX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x4],EAX
TEST EBX,EBX
JZ 0x00027fc8
MOV EBP,dword ptr [EDX]
MOV EDI,dword ptr [EDX + 0x4]
MOV EAX,dword ptr [EBX + 0x18]
MOV EDX,dword ptr [EBX + 0x1c]
MOV ECX,EDI
CMP EBP,EAX
SBB ECX,EDX
JGE 0x00027d36
CMP EAX,dword ptr [ESI + 0x8]
MOV ECX,EDX
SBB ECX,dword ptr [ESI + 0xc]
JGE 0x00027d1b
MOV dword ptr [ESI + 0x8],EAX
MOV dword ptr [ESI + 0xc],EDX
MOV ECX,dword ptr [EBX + 0x4]
TEST ECX,ECX
JZ 0x00027de8
MOV EBX,ECX
MOV ECX,EDI
MOV EAX,dword ptr [EBX + 0x18]
MOV EDX,dword ptr [EBX + 0x1c]
CMP EBP,EAX
SBB ECX,EDX
JL 0x00027d0b
MOV EAX,dword ptr [EBX + 0x20]
MOV EDX,dword ptr [EBX + 0x24]
MOV ECX,EDI
CMP EBP,EAX
SBB ECX,EDX
JGE 0x00027d5b
CMP EAX,dword ptr [ESI + 0x8]
MOV EDI,EDX
SBB EDI,dword ptr [ESI + 0xc]
MOV dword ptr [ESI],EAX
MOV dword ptr [ESI + 0x4],EDX
JGE 0x00027ef0
MOV EBP,EAX
MOV EDI,EDX
MOV ECX,dword ptr [EBX + 0x8]
TEST ECX,ECX
JNZ 0x00027d26
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [EBX + 0x18]
MOV ECX,EBP
MOV dword ptr [ESP + 0x8],EBP
MOV EBP,EDX
MOV EDX,dword ptr [EBX + 0x1c]
CMP ECX,EAX
MOV ECX,EDI
SBB ECX,EDX
JL 0x00027dec
MOV EAX,dword ptr [ESP + 0xc]
XOR EBP,EDI
XOR EAX,dword ptr [ESP + 0x8]
OR EBP,EAX
JZ 0x00028010
MOV EAX,dword ptr [EBX + 0x10]
TEST EAX,EAX
JZ 0x00027da9
MOV EDX,dword ptr [ESI + 0x8]
MOV ECX,dword ptr [ESI + 0xc]
XOR EDX,dword ptr [EAX + 0x18]
XOR ECX,dword ptr [EAX + 0x1c]
OR ECX,EDX
JZ 0x00028040
MOV EAX,dword ptr [ESP + 0x4]
LEA EDX,[EAX + 0x4]
CALL 0x00027c50
MOV EDX,dword ptr [EAX + 0x4]
LEA ECX,[EDX + 0x1]
LEA EDX,[EDX + EDX*0x4]
MOV dword ptr [EAX + 0x4],ECX
MOV ECX,dword ptr [EAX + 0xc]
LEA EDX,[ECX + EDX*0x8]
MOV dword ptr [EBX + 0x8],EDX
MOV EAX,EDX
MOV dword ptr [EDX + 0xc],EBX
MOV EDX,dword ptr [EBX + 0x10]
TEST EDX,EDX
JZ 0x00027ddf
MOV dword ptr [EAX + 0x10],EDX
MOV EDX,dword ptr [EBX + 0x10]
MOV dword ptr [EDX + 0xc],EAX
MOV dword ptr [EBX + 0x10],EAX
JMP 0x00027e50
MOV dword ptr [ESP + 0x8],EBP
MOV EBP,dword ptr [ESI + 0x8]
MOV ECX,dword ptr [ESI + 0xc]
XOR EAX,EBP
XOR EDX,ECX
OR EDX,EAX
JZ 0x00028028
MOV EAX,dword ptr [EBX + 0xc]
TEST EAX,EAX
JZ 0x00027e17
MOV EDX,dword ptr [ESP + 0x8]
XOR EDI,dword ptr [EAX + 0x24]
XOR EDX,dword ptr [EAX + 0x20]
OR EDI,EDX
JZ 0x00028050
MOV EAX,dword ptr [ESP + 0x4]
LEA EDX,[EAX + 0x4]
CALL 0x00027c50
MOV EDX,dword ptr [EAX + 0x4]
MOV EDI,dword ptr [EAX + 0xc]
LEA ECX,[EDX + 0x1]
LEA EDX,[EDX + EDX*0x4]
LEA EDX,[EDI + EDX*0x8]
MOV dword ptr [EAX + 0x4],ECX
MOV dword ptr [EBX + 0x4],EDX
MOV EAX,EDX
MOV dword ptr [EDX + 0x10],EBX
MOV EDX,dword ptr [EBX + 0xc]
TEST EDX,EDX
JZ 0x00027e4d
MOV dword ptr [EAX + 0xc],EDX
MOV EDX,dword ptr [EBX + 0xc]
MOV dword ptr [EDX + 0x10],EAX
MOV dword ptr [EBX + 0xc],EAX
MOV EDX,dword ptr [ESI]
MOV dword ptr [EAX + 0x14],0x1
MOV dword ptr [EAX],EBX
MOV dword ptr [EAX + 0x18],EDX
MOV EDX,dword ptr [ESI + 0x4]
MOV dword ptr [EAX + 0x1c],EDX
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [EAX + 0x20],EDX
MOV EDX,dword ptr [ESI + 0xc]
MOV dword ptr [EAX + 0x24],EDX
MOV EDX,dword ptr [EBX + 0x14]
TEST EDX,EDX
JZ 0x00027ef0
MOV EDX,dword ptr [EBX]
MOV ECX,dword ptr [EDX + 0x4]
MOV ESI,ECX
CMP ECX,EBX
JZ 0x00027f37
TEST ESI,ESI
JZ 0x00027e91
MOV EDI,dword ptr [ESI + 0x14]
TEST EDI,EDI
JNZ 0x00027f00
MOV ESI,dword ptr [EBX + 0x8]
CMP ECX,EBX
JNZ 0x00027ea0
CMP ESI,EAX
JZ 0x00028060
CMP dword ptr [EBX + 0x4],EAX
JZ 0x00027f40
MOV ESI,dword ptr [EAX]
MOV EDX,dword ptr [ESI]
MOV dword ptr [ESI + 0x14],0x0
MOV ECX,dword ptr [EDX]
MOV dword ptr [EDX + 0x14],0x1
CMP EAX,dword ptr [ESI + 0x4]
JZ 0x00027f80
MOV EAX,dword ptr [EDX + 0x8]
MOV EBX,dword ptr [EAX + 0x4]
TEST ECX,ECX
JZ 0x00027fb8
CMP EDX,dword ptr [ECX + 0x4]
JZ 0x00027f70
MOV dword ptr [ECX + 0x8],EAX
MOV dword ptr [EAX + 0x4],EDX
MOV dword ptr [EDX + 0x8],EBX
MOV dword ptr [EAX],ECX
MOV dword ptr [EDX],EAX
TEST EBX,EBX
JZ 0x00027ef0
MOV dword ptr [EBX],EDX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EBX + 0x14],0x0
MOV EBX,dword ptr [EDX]
MOV dword ptr [ESI + 0x14],0x0
MOV dword ptr [EDX + 0x14],0x1
TEST EBX,EBX
JZ 0x00028098
MOV EBP,dword ptr [EBX + 0x14]
MOV EAX,EDX
TEST EBP,EBP
JZ 0x00027ef0
MOV EDX,dword ptr [EBX]
MOV ECX,dword ptr [EDX + 0x4]
MOV ESI,ECX
CMP ECX,EBX
JNZ 0x00027e86
MOV ESI,dword ptr [EDX + 0x8]
JMP 0x00027e86
CMP dword ptr [EDX + 0x8],EBX
JNZ 0x00027ea9
MOV ECX,dword ptr [EAX + 0x8]
MOV ESI,EAX
MOV dword ptr [EDX + 0x8],EAX
MOV dword ptr [EAX + 0x8],EBX
MOV dword ptr [EBX + 0x4],ECX
MOV dword ptr [EAX],EDX
MOV dword ptr [EBX],EAX
TEST ECX,ECX
JZ 0x00027f63
MOV dword ptr [ECX],EBX
MOV ESI,dword ptr [EBX]
MOV EAX,EBX
JMP 0x00027eab
MOV dword ptr [ECX + 0x4],EAX
JMP 0x00027ee0
MOV EAX,dword ptr [EDX + 0x4]
MOV EBX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x00028080
CMP EDX,dword ptr [ECX + 0x8]
JZ 0x00028090
MOV dword ptr [ECX + 0x4],EAX
MOV dword ptr [EAX + 0x8],EDX
MOV dword ptr [EDX + 0x4],EBX
MOV dword ptr [EAX],ECX
MOV dword ptr [EDX],EAX
TEST EBX,EBX
JZ 0x00027ef0
MOV dword ptr [EBX],EDX
JMP 0x00027ef0
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [EDI + 0x8],EAX
JMP 0x00027ee0
MOV EDI,dword ptr [ESP + 0x4]
LEA EDX,[EDI + 0x4]
MOV EAX,EDI
CALL 0x00027c50
MOV EDX,dword ptr [EAX + 0x4]
MOV EBP,dword ptr [EAX + 0xc]
LEA ECX,[EDX + 0x1]
LEA EDX,[EDX + EDX*0x4]
LEA EDX,[EBP + EDX*0x8]
MOV dword ptr [EAX + 0x4],ECX
MOV EAX,EDX
MOV EDX,dword ptr [ESI]
MOV dword ptr [EAX + 0x18],EDX
MOV EDX,dword ptr [ESI + 0x4]
MOV dword ptr [EAX + 0x1c],EDX
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [EAX + 0x20],EDX
MOV EDX,dword ptr [ESI + 0xc]
MOV dword ptr [EAX + 0x24],EDX
MOV dword ptr [EDI + 0x8],EAX
MOV dword ptr [EDI + 0xc],EAX
JMP 0x00027ef0
MOV EAX,dword ptr [ESI + 0x8]
MOV EDX,dword ptr [ESI + 0xc]
MOV dword ptr [EBX + 0x20],EAX
MOV dword ptr [EBX + 0x24],EDX
JMP 0x00027ef0
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [EBX + 0x1c],EDI
MOV dword ptr [EBX + 0x18],EAX
JMP 0x00027ef0
MOV ESI,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x1c],EDI
MOV dword ptr [EAX + 0x18],ESI
JMP 0x00027ef0
MOV dword ptr [EAX + 0x20],EBP
MOV dword ptr [EAX + 0x24],ECX
JMP 0x00027ef0
MOV ECX,dword ptr [ESI + 0x4]
MOV dword ptr [EDX + 0x4],ESI
MOV dword ptr [ESI + 0x4],EBX
MOV dword ptr [EBX + 0x8],ECX
MOV dword ptr [ESI],EDX
MOV dword ptr [EBX],ESI
TEST ECX,ECX
JZ 0x00028076
MOV dword ptr [ECX],EBX
MOV EAX,dword ptr [EAX + 0x4]
MOV ESI,dword ptr [EAX]
JMP 0x00027eab
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [EDI + 0x8],EAX
JMP 0x00027f9a
MOV dword ptr [ECX + 0x8],EAX
JMP 0x00027f9a
MOV dword ptr [EDX + 0x14],0x0
JMP 0x00027ef0
(translation_unit "void __regparm3 FUN_00027ce0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00027ce0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00027ce0(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "piVar8 = *(int **)(param_1 + 8);" (assignment_expression "piVar8 = *(int **)(param_1 + 8)" identifier = (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }" { (expression_statement "iVar4 = FUN_00027c50();" (assignment_expression "iVar4 = FUN_00027c50()" identifier = (call_expression "FUN_00027c50()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;" (assignment_expression "iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28" identifier = (binary_expression "*(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28" (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) + (binary_expression "*(int *)(iVar4 + 4) * 0x28" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "*(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;" (assignment_expression "*(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar4 + 4) + 1" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar6 + 0x18) = *param_2;" (assignment_expression "*(uint *)(iVar6 + 0x18) = *param_2" (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(uint *)(iVar6 + 0x1c) = param_2[1];" (assignment_expression "*(uint *)(iVar6 + 0x1c) = param_2[1]" (pointer_expression "*(uint *)(iVar6 + 0x1c)" * (cast_expression "(uint *)(iVar6 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar6 + 0x20) = param_2[2];" (assignment_expression "*(uint *)(iVar6 + 0x20) = param_2[2]" (pointer_expression "*(uint *)(iVar6 + 0x20)" * (cast_expression "(uint *)(iVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x20)" ( (binary_expression "iVar6 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar6 + 0x24) = param_2[3];" (assignment_expression "*(uint *)(iVar6 + 0x24) = param_2[3]" (pointer_expression "*(uint *)(iVar6 + 0x24)" * (cast_expression "(uint *)(iVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(param_1 + 8) = iVar6;" (assignment_expression "*(int *)(param_1 + 8) = iVar6" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xc) = iVar6;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar6" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" else (compound_statement "{\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" { (expression_statement "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar13 = param_2[1];" (assignment_expression "uVar13 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = piVar8[6];" (assignment_expression "uVar5 = piVar8[6]" identifier = (subscript_expression "piVar8[6]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = piVar8[7];" (assignment_expression "uVar10 = piVar8[7]" identifier = (subscript_expression "piVar8[7]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;" if (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" ( (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" identifier (argument_list "(uVar13,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" identifier (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" ( (binary_expression "uVar13 - uVar10" identifier - identifier) , (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) ))) )))) )) == (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00027d36;" goto statement_identifier ;)) (while_statement "while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }" { (expression_statement "iVar6 = uVar10 - param_2[3];" (assignment_expression "iVar6 = uVar10 - param_2[3]" identifier = (binary_expression "uVar10 - param_2[3]" identifier - (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (if_statement "if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }" if (parenthesized_expression "((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0)" ( (binary_expression "(SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0" (parenthesized_expression "(SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2])))" ( (binary_expression "SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))" (call_expression "SBORROW4(uVar10,param_2[3])" identifier (argument_list "(uVar10,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))" identifier (argument_list "(iVar6,(uint)(uVar5 < param_2[2]))" ( identifier , (call_expression "(uint)(uVar5 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2[2])" ( (binary_expression "uVar5 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) ))) )))) )) != (binary_expression "(int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0" (cast_expression "(int)(iVar6 - (uint)(uVar5 < param_2[2]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 - (uint)(uVar5 < param_2[2]))" ( (binary_expression "iVar6 - (uint)(uVar5 < param_2[2])" identifier - (call_expression "(uint)(uVar5 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2[2])" ( (binary_expression "uVar5 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (compound_statement "{\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }" { (expression_statement "param_2[2] = uVar5;" (assignment_expression "param_2[2] = uVar5" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = uVar10;" (assignment_expression "param_2[3] = uVar10" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "piVar7 = (int *)piVar8[1];" (assignment_expression "piVar7 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar7 == (int *)0x0) break;" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (while_statement "while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }" { (expression_statement "uVar5 = piVar7[6];" (assignment_expression "uVar5 = piVar7[6]" identifier = (subscript_expression "piVar7[6]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = piVar7[7];" (assignment_expression "uVar10 = piVar7[7]" identifier = (subscript_expression "piVar7[7]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;" if (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" ( (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" identifier (argument_list "(uVar13,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" identifier (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" ( (binary_expression "uVar13 - uVar10" identifier - identifier) , (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )))) ))) < number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00027d36:\n        uVar1 = piVar8[8];" statement_identifier : (expression_statement "uVar1 = piVar8[8];" (assignment_expression "uVar1 = piVar8[8]" identifier = (subscript_expression "piVar8[8]" identifier [ number_literal ])) ;)) (expression_statement "uVar2 = piVar8[9];" (assignment_expression "uVar2 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }" if (parenthesized_expression "((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1)))" ( (binary_expression "SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))" (call_expression "SBORROW4(uVar13,uVar2)" identifier (argument_list "(uVar13,uVar2)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))" identifier (argument_list "(uVar13 - uVar2,(uint)(local_24 < uVar1))" ( (binary_expression "uVar13 - uVar2" identifier - identifier) , (call_expression "(uint)(local_24 < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar1)" ( (binary_expression "local_24 < uVar1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0" (cast_expression "(int)((uVar13 - uVar2) - (uint)(local_24 < uVar1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar2) - (uint)(local_24 < uVar1))" ( (binary_expression "(uVar13 - uVar2) - (uint)(local_24 < uVar1)" (parenthesized_expression "(uVar13 - uVar2)" ( (binary_expression "uVar13 - uVar2" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar1)" ( (binary_expression "local_24 < uVar1" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }" { (expression_statement "iVar6 = uVar2 - param_2[3];" (assignment_expression "iVar6 = uVar2 - param_2[3]" identifier = (binary_expression "uVar2 - param_2[3]" identifier - (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar2;" (assignment_expression "param_2[1] = uVar2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_24 = uVar1;" (assignment_expression "local_24 = uVar1" identifier = identifier) ;) (expression_statement "uVar13 = uVar2;" (assignment_expression "uVar13 = uVar2" identifier = identifier) ;) (if_statement "if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }" if (parenthesized_expression "((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0)" ( (binary_expression "(SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0" (parenthesized_expression "(SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2])))" ( (binary_expression "SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))" (call_expression "SBORROW4(uVar2,param_2[3])" identifier (argument_list "(uVar2,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))" identifier (argument_list "(iVar6,(uint)(uVar1 < param_2[2]))" ( identifier , (call_expression "(uint)(uVar1 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < param_2[2])" ( (binary_expression "uVar1 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) ))) )))) )) == (binary_expression "(int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0" (cast_expression "(int)(iVar6 - (uint)(uVar1 < param_2[2]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 - (uint)(uVar1 < param_2[2]))" ( (binary_expression "iVar6 - (uint)(uVar1 < param_2[2])" identifier - (call_expression "(uint)(uVar1 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < param_2[2])" ( (binary_expression "uVar1 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) })) (expression_statement "piVar7 = (int *)piVar8[2];" (assignment_expression "piVar7 = (int *)piVar8[2]" identifier = (cast_expression "(int *)piVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }" { (expression_statement "uVar5 = piVar8[6];" (assignment_expression "uVar5 = piVar8[6]" identifier = (subscript_expression "piVar8[6]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = piVar8[7];" (assignment_expression "uVar10 = piVar8[7]" identifier = (subscript_expression "piVar8[7]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;" if (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" ( (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" identifier (argument_list "(uVar13,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" identifier (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" ( (binary_expression "uVar13 - uVar10" identifier - identifier) , (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00027dec;" goto statement_identifier ;)) (if_statement "if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }" if (parenthesized_expression "(uVar2 == uVar13 && uVar1 == local_24)" ( (binary_expression "uVar2 == uVar13 && uVar1 == local_24" (binary_expression "uVar2 == uVar13" identifier == identifier) && (binary_expression "uVar1 == local_24" identifier == identifier)) )) (compound_statement "{\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }" { (expression_statement "uVar13 = param_2[3];" (assignment_expression "uVar13 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "piVar8[8] = param_2[2];" (assignment_expression "piVar8[8] = param_2[2]" (subscript_expression "piVar8[8]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar8[9] = uVar13;" (assignment_expression "piVar8[9] = uVar13" (subscript_expression "piVar8[9]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "iVar6 = piVar8[4];" (assignment_expression "iVar6 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (if_statement "if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }" if (parenthesized_expression "((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18)))" ( (binary_expression "(iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))" ( (binary_expression "param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18)" (binary_expression "param_2[3] == *(uint *)(iVar6 + 0x1c)" (subscript_expression "param_2[3]" identifier [ number_literal ]) == (pointer_expression "*(uint *)(iVar6 + 0x1c)" * (cast_expression "(uint *)(iVar6 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) && (binary_expression "param_2[2] == *(uint *)(iVar6 + 0x18)" (subscript_expression "param_2[2]" identifier [ number_literal ]) == (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))))) ))) )) (compound_statement "{\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }" { (expression_statement "*(uint *)(iVar6 + 0x1c) = uVar13;" (assignment_expression "*(uint *)(iVar6 + 0x1c) = uVar13" (pointer_expression "*(uint *)(iVar6 + 0x1c)" * (cast_expression "(uint *)(iVar6 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar6 + 0x18) = local_24;" (assignment_expression "*(uint *)(iVar6 + 0x18) = local_24" (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "iVar4 = FUN_00027c50();" (assignment_expression "iVar4 = FUN_00027c50()" identifier = (call_expression "FUN_00027c50()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = *(int *)(iVar4 + 4);" (assignment_expression "iVar6 = *(int *)(iVar4 + 4)" identifier = (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar4 + 4) = iVar6 + 1;" (assignment_expression "*(int *)(iVar4 + 4) = iVar6 + 1" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);" (assignment_expression "piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" identifier = (cast_expression "(int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" ( (binary_expression "*(int *)(iVar4 + 0xc) + iVar6 * 0x28" (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) + (binary_expression "iVar6 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "piVar8[2] = (int)piVar7;" (assignment_expression "piVar8[2] = (int)piVar7" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[3] = (int)piVar8;" (assignment_expression "piVar7[3] = (int)piVar8" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }" if (parenthesized_expression "(piVar8[4] != 0)" ( (binary_expression "piVar8[4] != 0" (subscript_expression "piVar8[4]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }" { (expression_statement "piVar7[4] = piVar8[4];" (assignment_expression "piVar7[4] = piVar8[4]" (subscript_expression "piVar7[4]" identifier [ number_literal ]) = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(piVar8[4] + 0xc) = piVar7;" (assignment_expression "*(int **)(piVar8[4] + 0xc) = piVar7" (pointer_expression "*(int **)(piVar8[4] + 0xc)" * (cast_expression "(int **)(piVar8[4] + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8[4] + 0xc)" ( (binary_expression "piVar8[4] + 0xc" (subscript_expression "piVar8[4]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) })) (expression_statement "piVar8[4] = (int)piVar7;" (assignment_expression "piVar8[4] = (int)piVar7" (subscript_expression "piVar8[4]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00027e50;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00027dec:\n    uVar1 = param_2[3];" statement_identifier : (expression_statement "uVar1 = param_2[3];" (assignment_expression "uVar1 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;)) (if_statement "if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" if (parenthesized_expression "(uVar10 == uVar1 && uVar5 == param_2[2])" ( (binary_expression "uVar10 == uVar1 && uVar5 == param_2[2]" (binary_expression "uVar10 == uVar1" identifier == identifier) && (binary_expression "uVar5 == param_2[2]" identifier == (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }" { (expression_statement "piVar8[7] = uVar13;" (assignment_expression "piVar8[7] = uVar13" (subscript_expression "piVar8[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar8[6] = local_24;" (assignment_expression "piVar8[6] = local_24" (subscript_expression "piVar8[6]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" else (compound_statement "{\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" { (expression_statement "iVar6 = piVar8[3];" (assignment_expression "iVar6 = piVar8[3]" identifier = (subscript_expression "piVar8[3]" identifier [ number_literal ])) ;) (if_statement "if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" if (parenthesized_expression "((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         )" ( (binary_expression "(iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))" ( (binary_expression "uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20)" (binary_expression "uVar13 != *(uint *)(iVar6 + 0x24)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x24)" * (cast_expression "(uint *)(iVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) ))))) || (binary_expression "local_24 != *(uint *)(iVar6 + 0x20)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x20)" * (cast_expression "(uint *)(iVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x20)" ( (binary_expression "iVar6 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }" { (expression_statement "iVar6 = FUN_00027c50();" (assignment_expression "iVar6 = FUN_00027c50()" identifier = (call_expression "FUN_00027c50()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);" (assignment_expression "piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" identifier = (cast_expression "(int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" ( (binary_expression "*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28" (pointer_expression "*(int *)(iVar6 + 0xc)" * (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) + (binary_expression "*(int *)(iVar6 + 4) * 0x28" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) * number_literal)) )))) ;) (expression_statement "*(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;" (assignment_expression "*(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar6 + 4) + 1" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar8[1] = (int)piVar7;" (assignment_expression "piVar8[1] = (int)piVar7" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[4] = (int)piVar8;" (assignment_expression "piVar7[4] = (int)piVar8" (subscript_expression "piVar7[4]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }" if (parenthesized_expression "(piVar8[3] != 0)" ( (binary_expression "piVar8[3] != 0" (subscript_expression "piVar8[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }" { (expression_statement "piVar7[3] = piVar8[3];" (assignment_expression "piVar7[3] = piVar8[3]" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (subscript_expression "piVar8[3]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(piVar8[3] + 0x10) = piVar7;" (assignment_expression "*(int **)(piVar8[3] + 0x10) = piVar7" (pointer_expression "*(int **)(piVar8[3] + 0x10)" * (cast_expression "(int **)(piVar8[3] + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8[3] + 0x10)" ( (binary_expression "piVar8[3] + 0x10" (subscript_expression "piVar8[3]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) })) (expression_statement "piVar8[3] = (int)piVar7;" (assignment_expression "piVar8[3] = (int)piVar7" (subscript_expression "piVar8[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00027e50:\n        uVar13 = *param_2;" statement_identifier : (expression_statement "uVar13 = *param_2;" (assignment_expression "uVar13 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (expression_statement "piVar7[5] = 1;" (assignment_expression "piVar7[5] = 1" (subscript_expression "piVar7[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar7 = (int)piVar8;" (assignment_expression "*piVar7 = (int)piVar8" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[6] = uVar13;" (assignment_expression "piVar7[6] = uVar13" (subscript_expression "piVar7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7[7] = param_2[1];" (assignment_expression "piVar7[7] = param_2[1]" (subscript_expression "piVar7[7]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[8] = param_2[2];" (assignment_expression "piVar7[8] = param_2[2]" (subscript_expression "piVar7[8]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar7[9] = param_2[3];" (assignment_expression "piVar7[9] = param_2[3]" (subscript_expression "piVar7[9]" identifier [ number_literal ]) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }" if (parenthesized_expression "(piVar8[5] != 0)" ( (binary_expression "piVar8[5] != 0" (subscript_expression "piVar8[5]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }" { (expression_statement "piVar11 = (int *)*piVar8;" (assignment_expression "piVar11 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) (expression_statement "piVar9 = (int *)piVar11[1];" (assignment_expression "piVar9 = (int *)piVar11[1]" identifier = (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar12 = piVar9;" (assignment_expression "piVar12 = piVar9" identifier = identifier) ;) (if_statement "if (piVar9 == piVar8) goto LAB_00027f37;" if (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) (goto_statement "goto LAB_00027f37;" goto statement_identifier ;)) (while_statement "while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }" while (parenthesized_expression "((piVar12 != (int *)0x0 && (piVar12[5] != 0)))" ( (parenthesized_expression "(piVar12 != (int *)0x0 && (piVar12[5] != 0))" ( (binary_expression "piVar12 != (int *)0x0 && (piVar12[5] != 0)" (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(piVar12[5] != 0)" ( (binary_expression "piVar12[5] != 0" (subscript_expression "piVar12[5]" identifier [ number_literal ]) != number_literal) ))) )) )) (compound_statement "{\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }" { (expression_statement "piVar8[5] = 0;" (assignment_expression "piVar8[5] = 0" (subscript_expression "piVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar8 = (int *)*piVar11;" (assignment_expression "piVar8 = (int *)*piVar11" identifier = (cast_expression "(int *)*piVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;) (expression_statement "piVar12[5] = 0;" (assignment_expression "piVar12[5] = 0" (subscript_expression "piVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[5] = 1;" (assignment_expression "piVar11[5] = 1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar11[5] = 0;\n              return;\n            }" { (expression_statement "piVar11[5] = 0;" (assignment_expression "piVar11[5] = 0" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (piVar8[5] == 0) {\n              return;\n            }" if (parenthesized_expression "(piVar8[5] == 0)" ( (binary_expression "piVar8[5] == 0" (subscript_expression "piVar8[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "piVar12 = (int *)*piVar8;" (assignment_expression "piVar12 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) (expression_statement "piVar9 = (int *)piVar12[1];" (assignment_expression "piVar9 = (int *)piVar12[1]" identifier = (cast_expression "(int *)piVar12[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = piVar11;" (assignment_expression "piVar7 = piVar11" identifier = identifier) ;) (expression_statement "piVar11 = piVar12;" (assignment_expression "piVar11 = piVar12" identifier = identifier) ;) (expression_statement "piVar12 = piVar9;" (assignment_expression "piVar12 = piVar9" identifier = identifier) ;) (if_statement "if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }" if (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) (compound_statement "{\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }" { (labeled_statement "LAB_00027f37:\n              piVar12 = (int *)piVar11[2];" statement_identifier : (expression_statement "piVar12 = (int *)piVar11[2];" (assignment_expression "piVar12 = (int *)piVar11[2]" identifier = (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ]))) ;)) })) })) (expression_statement "piVar12 = (int *)piVar8[2];" (assignment_expression "piVar12 = (int *)piVar8[2]" identifier = (cast_expression "(int *)piVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" if (parenthesized_expression "((piVar9 == piVar8) && (piVar12 == piVar7))" ( (binary_expression "(piVar9 == piVar8) && (piVar12 == piVar7)" (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) && (parenthesized_expression "(piVar12 == piVar7)" ( (binary_expression "piVar12 == piVar7" identifier == identifier) ))) )) (compound_statement "{\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }" { (expression_statement "puVar3 = (undefined4 *)piVar12[1];" (assignment_expression "puVar3 = (undefined4 *)piVar12[1]" identifier = (cast_expression "(undefined4 *)piVar12[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar11[1] = (int)piVar12;" (assignment_expression "piVar11[1] = (int)piVar12" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar12[1] = (int)piVar8;" (assignment_expression "piVar12[1] = (int)piVar8" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar8[2] = (int)puVar3;" (assignment_expression "piVar8[2] = (int)puVar3" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar12 = (int)piVar11;" (assignment_expression "*piVar12 = (int)piVar11" (pointer_expression "*piVar12" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = (int)piVar12;" (assignment_expression "*piVar8 = (int)piVar12" (pointer_expression "*piVar8" * identifier) = (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }" if (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" ( (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *puVar3 = piVar8;\n            }" { (expression_statement "*puVar3 = piVar8;" (assignment_expression "*puVar3 = piVar8" (pointer_expression "*puVar3" * identifier) = identifier) ;) })) (expression_statement "piVar8 = (int *)piVar7[1];" (assignment_expression "piVar8 = (int *)piVar7[1]" identifier = (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) }) (else_clause "else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" else (if_statement "if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" if (parenthesized_expression "(((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8))" ( (binary_expression "((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)" (parenthesized_expression "((int *)piVar8[1] == piVar7)" ( (binary_expression "(int *)piVar8[1] == piVar7" (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ])) == identifier) )) && (parenthesized_expression "((int *)piVar11[2] == piVar8)" ( (binary_expression "(int *)piVar11[2] == piVar8" (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ])) == identifier) ))) )) (compound_statement "{\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }" { (expression_statement "puVar3 = (undefined4 *)piVar7[2];" (assignment_expression "puVar3 = (undefined4 *)piVar7[2]" identifier = (cast_expression "(undefined4 *)piVar7[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar11[2] = (int)piVar7;" (assignment_expression "piVar11[2] = (int)piVar7" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[2] = (int)piVar8;" (assignment_expression "piVar7[2] = (int)piVar8" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar8[1] = (int)puVar3;" (assignment_expression "piVar8[1] = (int)puVar3" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = (int)piVar7;" (assignment_expression "*piVar8 = (int)piVar7" (pointer_expression "*piVar8" * identifier) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }" if (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" ( (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }" { (expression_statement "*puVar3 = piVar8;" (assignment_expression "*puVar3 = piVar8" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) })) }) (else_clause "else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" else (compound_statement "{\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" { (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (expression_statement "piVar7 = (int *)*piVar7;" (assignment_expression "piVar7 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }))))) (expression_statement "piVar11 = (int *)*piVar7;" (assignment_expression "piVar11 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (expression_statement "piVar7[5] = 0;" (assignment_expression "piVar7[5] = 0" (subscript_expression "piVar7[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar6 = *piVar11;" (assignment_expression "iVar6 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "piVar11[5] = 1;" (assignment_expression "piVar11[5] = 1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" if (parenthesized_expression "(piVar8 == (int *)piVar7[1])" ( (binary_expression "piVar8 == (int *)piVar7[1]" identifier == (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ]))) )) (compound_statement "{\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" { (expression_statement "piVar8 = (int *)piVar11[1];" (assignment_expression "piVar8 = (int *)piVar11[1]" identifier = (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = (int *)piVar8[2];" (assignment_expression "piVar7 = (int *)piVar8[2]" identifier = (cast_expression "(int *)piVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              *(int **)(param_1 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(param_1 + 8) = piVar8;" (assignment_expression "*(int **)(param_1 + 8) = piVar8" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" else (if_statement "if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" if (parenthesized_expression "(piVar11 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar11 == *(int **)(iVar6 + 8)" identifier == (pointer_expression "*(int **)(iVar6 + 8)" * (cast_expression "(int **)(iVar6 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n              *(int **)(iVar6 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 8) = piVar8;" (assignment_expression "*(int **)(iVar6 + 8) = piVar8" (pointer_expression "*(int **)(iVar6 + 8)" * (cast_expression "(int **)(iVar6 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" else (compound_statement "{\n              *(int **)(iVar6 + 4) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 4) = piVar8;" (assignment_expression "*(int **)(iVar6 + 4) = piVar8" (pointer_expression "*(int **)(iVar6 + 4)" * (cast_expression "(int **)(iVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar8[2] = (int)piVar11;" (assignment_expression "piVar8[2] = (int)piVar11" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar11[1] = (int)piVar7;" (assignment_expression "piVar11[1] = (int)piVar7" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = iVar6;" (assignment_expression "*piVar8 = iVar6" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "*piVar11 = (int)piVar8;" (assignment_expression "*piVar11 = (int)piVar8" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *piVar7 = (int)piVar11;\n            }" { (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }) (else_clause "else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" else (compound_statement "{\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" { (expression_statement "piVar8 = (int *)piVar11[2];" (assignment_expression "piVar8 = (int *)piVar11[2]" identifier = (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = (int *)piVar8[1];" (assignment_expression "piVar7 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (if_statement "if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              *(int **)(param_1 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(param_1 + 8) = piVar8;" (assignment_expression "*(int **)(param_1 + 8) = piVar8" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" else (if_statement "if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" if (parenthesized_expression "(piVar11 == *(int **)(iVar6 + 4))" ( (binary_expression "piVar11 == *(int **)(iVar6 + 4)" identifier == (pointer_expression "*(int **)(iVar6 + 4)" * (cast_expression "(int **)(iVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n              *(int **)(iVar6 + 4) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 4) = piVar8;" (assignment_expression "*(int **)(iVar6 + 4) = piVar8" (pointer_expression "*(int **)(iVar6 + 4)" * (cast_expression "(int **)(iVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" else (compound_statement "{\n              *(int **)(iVar6 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 8) = piVar8;" (assignment_expression "*(int **)(iVar6 + 8) = piVar8" (pointer_expression "*(int **)(iVar6 + 8)" * (cast_expression "(int **)(iVar6 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar8[1] = (int)piVar11;" (assignment_expression "piVar8[1] = (int)piVar11" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar11[2] = (int)piVar7;" (assignment_expression "piVar11[2] = (int)piVar7" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = iVar6;" (assignment_expression "*piVar8 = iVar6" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "*piVar11 = (int)piVar8;" (assignment_expression "*piVar11 = (int)piVar8" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *piVar7 = (int)piVar11;\n            }" { (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }))) })) }) (else_clause "else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" else (compound_statement "{\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" { (expression_statement "*(uint *)(iVar6 + 0x20) = param_2[2];" (assignment_expression "*(uint *)(iVar6 + 0x20) = param_2[2]" (pointer_expression "*(uint *)(iVar6 + 0x20)" * (cast_expression "(uint *)(iVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x20)" ( (binary_expression "iVar6 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar6 + 0x24) = uVar1;" (assignment_expression "*(uint *)(iVar6 + 0x24) = uVar1" (pointer_expression "*(uint *)(iVar6 + 0x24)" * (cast_expression "(uint *)(iVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) = identifier) ;) }))) }))) }))) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 add_hilite(hilite_tree *anchor,hilite *hl)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  POSITION PVar6;\n  hilite_storage *phVar7;\n  uint uVar8;\n  hilite_node *phVar9;\n  hilite_node *phVar10;\n  hilite_node *phVar11;\n  int iVar12;\n  hilite_node *phVar13;\n  hilite_node *phVar14;\n  int iVar15;\n  uint local_24;\n  \n  phVar10 = anchor->root;\n  if (phVar10 == (hilite_node *)0x0) {\n    phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n    phVar10 = phVar7->nodes + phVar7->used;\n    phVar7->used = phVar7->used + 1;\n    *(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)\n    ;\n    *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n    anchor->root = phVar10;\n    anchor->lookaside = phVar10;\n  }\n  else {\n    local_24 = (uint)hl->hl_startpos;\n    iVar15 = *(int *)((int)&hl->hl_startpos + 4);\n    uVar8 = (uint)(phVar10->r).hl_startpos;\n    iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n    if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;\n    while( true ) {\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar3 = (uint)hl->hl_endpos;\n    iVar4 = *(int *)((int)&hl->hl_endpos + 4);\n    if (iVar12 == iVar4 && uVar8 == uVar3) {\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }\n    else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 add_hilite(hilite_tree *anchor,hilite *hl)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  POSITION PVar6;\n  hilite_storage *phVar7;\n  uint uVar8;\n  hilite_node *phVar9;\n  hilite_node *phVar10;\n  hilite_node *phVar11;\n  int iVar12;\n  hilite_node *phVar13;\n  hilite_node *phVar14;\n  int iVar15;\n  uint local_24;\n  \n  phVar10 = anchor->root;\n  if (phVar10 == (hilite_node *)0x0) {\n    phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n    phVar10 = phVar7->nodes + phVar7->used;\n    phVar7->used = phVar7->used + 1;\n    *(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)\n    ;\n    *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n    anchor->root = phVar10;\n    anchor->lookaside = phVar10;\n  }\n  else {\n    local_24 = (uint)hl->hl_startpos;\n    iVar15 = *(int *)((int)&hl->hl_startpos + 4);\n    uVar8 = (uint)(phVar10->r).hl_startpos;\n    iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n    if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;\n    while( true ) {\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar3 = (uint)hl->hl_endpos;\n    iVar4 = *(int *)((int)&hl->hl_endpos + 4);\n    if (iVar12 == iVar4 && uVar8 == uVar3) {\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }\n    else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "add_hilite(hilite_tree *anchor,hilite *hl)" identifier (parameter_list "(hilite_tree *anchor,hilite *hl)" ( (parameter_declaration "hilite_tree *anchor" type_identifier (pointer_declarator "*anchor" * identifier)) , (parameter_declaration "hilite *hl" type_identifier (pointer_declarator "*hl" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  POSITION PVar6;\n  hilite_storage *phVar7;\n  uint uVar8;\n  hilite_node *phVar9;\n  hilite_node *phVar10;\n  hilite_node *phVar11;\n  int iVar12;\n  hilite_node *phVar13;\n  hilite_node *phVar14;\n  int iVar15;\n  uint local_24;\n  \n  phVar10 = anchor->root;\n  if (phVar10 == (hilite_node *)0x0) {\n    phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n    phVar10 = phVar7->nodes + phVar7->used;\n    phVar7->used = phVar7->used + 1;\n    *(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)\n    ;\n    *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n    anchor->root = phVar10;\n    anchor->lookaside = phVar10;\n  }\n  else {\n    local_24 = (uint)hl->hl_startpos;\n    iVar15 = *(int *)((int)&hl->hl_startpos + 4);\n    uVar8 = (uint)(phVar10->r).hl_startpos;\n    iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n    if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;\n    while( true ) {\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar3 = (uint)hl->hl_endpos;\n    iVar4 = *(int *)((int)&hl->hl_endpos + 4);\n    if (iVar12 == iVar4 && uVar8 == uVar3) {\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }\n    else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "POSITION PVar6;" type_identifier identifier ;) (declaration "hilite_storage *phVar7;" type_identifier (pointer_declarator "*phVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "hilite_node *phVar9;" type_identifier (pointer_declarator "*phVar9" * identifier) ;) (declaration "hilite_node *phVar10;" type_identifier (pointer_declarator "*phVar10" * identifier) ;) (declaration "hilite_node *phVar11;" type_identifier (pointer_declarator "*phVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "hilite_node *phVar13;" type_identifier (pointer_declarator "*phVar13" * identifier) ;) (declaration "hilite_node *phVar14;" type_identifier (pointer_declarator "*phVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "phVar10 = anchor->root;" (assignment_expression "phVar10 = anchor->root" identifier = (field_expression "anchor->root" identifier -> field_identifier)) ;) (if_statement "if (phVar10 == (hilite_node *)0x0) {\n    phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n    phVar10 = phVar7->nodes + phVar7->used;\n    phVar7->used = phVar7->used + 1;\n    *(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)\n    ;\n    *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n    anchor->root = phVar10;\n    anchor->lookaside = phVar10;\n  }\n  else {\n    local_24 = (uint)hl->hl_startpos;\n    iVar15 = *(int *)((int)&hl->hl_startpos + 4);\n    uVar8 = (uint)(phVar10->r).hl_startpos;\n    iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n    if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;\n    while( true ) {\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar3 = (uint)hl->hl_endpos;\n    iVar4 = *(int *)((int)&hl->hl_endpos + 4);\n    if (iVar12 == iVar4 && uVar8 == uVar3) {\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }\n    else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }\n  }" if (parenthesized_expression "(phVar10 == (hilite_node *)0x0)" ( (binary_expression "phVar10 == (hilite_node *)0x0" identifier == (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n    phVar10 = phVar7->nodes + phVar7->used;\n    phVar7->used = phVar7->used + 1;\n    *(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)\n    ;\n    *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n    *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n    anchor->root = phVar10;\n    anchor->lookaside = phVar10;\n  }" { (expression_statement "phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);" (assignment_expression "phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current)" identifier = (call_expression "hlist_getstorage(anchor,(hilite_tree *)&anchor->current)" identifier (argument_list "(anchor,(hilite_tree *)&anchor->current)" ( identifier , (cast_expression "(hilite_tree *)&anchor->current" ( (type_descriptor "hilite_tree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&anchor->current" & (field_expression "anchor->current" identifier -> field_identifier))) )))) ;) (expression_statement "phVar10 = phVar7->nodes + phVar7->used;" (assignment_expression "phVar10 = phVar7->nodes + phVar7->used" identifier = (binary_expression "phVar7->nodes + phVar7->used" (field_expression "phVar7->nodes" identifier -> field_identifier) + (field_expression "phVar7->used" identifier -> field_identifier))) ;) (expression_statement "phVar7->used = phVar7->used + 1;" (assignment_expression "phVar7->used = phVar7->used + 1" (field_expression "phVar7->used" identifier -> field_identifier) = (binary_expression "phVar7->used + 1" (field_expression "phVar7->used" identifier -> field_identifier) + number_literal)) ;) (expression_statement "*(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos;" (assignment_expression "*(int *)&(phVar10->r).hl_startpos = (int)hl->hl_startpos" (pointer_expression "*(int *)&(phVar10->r).hl_startpos" * (cast_expression "(int *)&(phVar10->r).hl_startpos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar10->r).hl_startpos" & (field_expression "(phVar10->r).hl_startpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier)))) = (cast_expression "(int)hl->hl_startpos" ( (type_descriptor "int" primitive_type) ) (field_expression "hl->hl_startpos" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)\n    ;" (assignment_expression "*(undefined4 *)((int)&(phVar10->r).hl_startpos + 4) = *(undefined4 *)((int)&hl->hl_startpos + 4)" (pointer_expression "*(undefined4 *)((int)&(phVar10->r).hl_startpos + 4)" * (cast_expression "(undefined4 *)((int)&(phVar10->r).hl_startpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar10->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar10->r).hl_startpos + 4" (cast_expression "(int)&(phVar10->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar10->r).hl_startpos" & (field_expression "(phVar10->r).hl_startpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&hl->hl_startpos + 4)" * (cast_expression "(undefined4 *)((int)&hl->hl_startpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_startpos + 4)" ( (binary_expression "(int)&hl->hl_startpos + 4" (cast_expression "(int)&hl->hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_startpos" & (field_expression "hl->hl_startpos" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;" (assignment_expression "*(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos" (pointer_expression "*(int *)&(phVar10->r).hl_endpos" * (cast_expression "(int *)&(phVar10->r).hl_endpos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar10->r).hl_endpos" & (field_expression "(phVar10->r).hl_endpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier)))) = (cast_expression "(int)hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (field_expression "hl->hl_endpos" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);" (assignment_expression "*(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4)" (pointer_expression "*(undefined4 *)((int)&(phVar10->r).hl_endpos + 4)" * (cast_expression "(undefined4 *)((int)&(phVar10->r).hl_endpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar10->r).hl_endpos + 4)" ( (binary_expression "(int)&(phVar10->r).hl_endpos + 4" (cast_expression "(int)&(phVar10->r).hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar10->r).hl_endpos" & (field_expression "(phVar10->r).hl_endpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&hl->hl_endpos + 4)" * (cast_expression "(undefined4 *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "anchor->root = phVar10;" (assignment_expression "anchor->root = phVar10" (field_expression "anchor->root" identifier -> field_identifier) = identifier) ;) (expression_statement "anchor->lookaside = phVar10;" (assignment_expression "anchor->lookaside = phVar10" (field_expression "anchor->lookaside" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n    local_24 = (uint)hl->hl_startpos;\n    iVar15 = *(int *)((int)&hl->hl_startpos + 4);\n    uVar8 = (uint)(phVar10->r).hl_startpos;\n    iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n    if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;\n    while( true ) {\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar3 = (uint)hl->hl_endpos;\n    iVar4 = *(int *)((int)&hl->hl_endpos + 4);\n    if (iVar12 == iVar4 && uVar8 == uVar3) {\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }\n    else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }\n  }" else (compound_statement "{\n    local_24 = (uint)hl->hl_startpos;\n    iVar15 = *(int *)((int)&hl->hl_startpos + 4);\n    uVar8 = (uint)(phVar10->r).hl_startpos;\n    iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n    if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;\n    while( true ) {\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar3 = (uint)hl->hl_endpos;\n    iVar4 = *(int *)((int)&hl->hl_endpos + 4);\n    if (iVar12 == iVar4 && uVar8 == uVar3) {\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }\n    else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }\n  }" { (expression_statement "local_24 = (uint)hl->hl_startpos;" (assignment_expression "local_24 = (uint)hl->hl_startpos" identifier = (cast_expression "(uint)hl->hl_startpos" ( (type_descriptor "uint" type_identifier) ) (field_expression "hl->hl_startpos" identifier -> field_identifier))) ;) (expression_statement "iVar15 = *(int *)((int)&hl->hl_startpos + 4);" (assignment_expression "iVar15 = *(int *)((int)&hl->hl_startpos + 4)" identifier = (pointer_expression "*(int *)((int)&hl->hl_startpos + 4)" * (cast_expression "(int *)((int)&hl->hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_startpos + 4)" ( (binary_expression "(int)&hl->hl_startpos + 4" (cast_expression "(int)&hl->hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_startpos" & (field_expression "hl->hl_startpos" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar8 = (uint)(phVar10->r).hl_startpos;" (assignment_expression "uVar8 = (uint)(phVar10->r).hl_startpos" identifier = (field_expression "(uint)(phVar10->r).hl_startpos" (call_expression "(uint)(phVar10->r)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);" (assignment_expression "iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4)" identifier = (pointer_expression "*(int *)((int)&(phVar10->r).hl_startpos + 4)" * (cast_expression "(int *)((int)&(phVar10->r).hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar10->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar10->r).hl_startpos + 4" (cast_expression "(int)&(phVar10->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar10->r).hl_startpos" & (field_expression "(phVar10->r).hl_startpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027d36;" if (parenthesized_expression "((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0)" ( (binary_expression "(SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) ==\n        (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0" (parenthesized_expression "(SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8)))" ( (binary_expression "SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))" (call_expression "SBORROW4(iVar15,iVar12)" identifier (argument_list "(iVar15,iVar12)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))" identifier (argument_list "(iVar15 - iVar12,(uint)(local_24 < uVar8))" ( (binary_expression "iVar15 - iVar12" identifier - identifier) , (call_expression "(uint)(local_24 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar8)" ( (binary_expression "local_24 < uVar8" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0" (cast_expression "(int)((iVar15 - iVar12) - (uint)(local_24 < uVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar15 - iVar12) - (uint)(local_24 < uVar8))" ( (binary_expression "(iVar15 - iVar12) - (uint)(local_24 < uVar8)" (parenthesized_expression "(iVar15 - iVar12)" ( (binary_expression "iVar15 - iVar12" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar8)" ( (binary_expression "local_24 < uVar8" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00027d36;" goto statement_identifier ;)) (while_statement "while( true ) {\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      piVar1 = (int *)((int)&hl->hl_endpos + 4);\n      uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);\n      iVar4 = iVar12 - *piVar1;\n      if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }\n      phVar9 = phVar10->left;\n      if (phVar9 == (hilite_node *)0x0) break;\n      while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }\n    }" { (expression_statement "piVar1 = (int *)((int)&hl->hl_endpos + 4);" (assignment_expression "piVar1 = (int *)((int)&hl->hl_endpos + 4)" identifier = (cast_expression "(int *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos);" (assignment_expression "uVar3 = (uint)(uVar8 < (uint)hl->hl_endpos)" identifier = (call_expression "(uint)(uVar8 < (uint)hl->hl_endpos)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < (uint)hl->hl_endpos)" ( (binary_expression "uVar8 < (uint)hl->hl_endpos" identifier < (cast_expression "(uint)hl->hl_endpos" ( (type_descriptor "uint" type_identifier) ) (field_expression "hl->hl_endpos" identifier -> field_identifier))) )))) ;) (expression_statement "iVar4 = iVar12 - *piVar1;" (assignment_expression "iVar4 = iVar12 - *piVar1" identifier = (binary_expression "iVar12 - *piVar1" identifier - (pointer_expression "*piVar1" * identifier))) ;) (if_statement "if ((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0) {\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }" if (parenthesized_expression "((SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0)" ( (binary_expression "(SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)) != (int)(iVar4 - uVar3) < 0" (parenthesized_expression "(SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3))" ( (binary_expression "SBORROW4(iVar12,*piVar1) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(iVar12,*piVar1)" identifier (argument_list "(iVar12,*piVar1)" ( identifier , (pointer_expression "*piVar1" * identifier) ))) != (call_expression "SBORROW4(iVar4,uVar3)" identifier (argument_list "(iVar4,uVar3)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar4 - uVar3) < 0" (cast_expression "(int)(iVar4 - uVar3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar3)" ( (binary_expression "iVar4 - uVar3" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n        *(uint *)&hl->hl_endpos = uVar8;\n        *(int *)((int)&hl->hl_endpos + 4) = iVar12;\n      }" { (expression_statement "*(uint *)&hl->hl_endpos = uVar8;" (assignment_expression "*(uint *)&hl->hl_endpos = uVar8" (pointer_expression "*(uint *)&hl->hl_endpos" * (cast_expression "(uint *)&hl->hl_endpos" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&hl->hl_endpos + 4) = iVar12;" (assignment_expression "*(int *)((int)&hl->hl_endpos + 4) = iVar12" (pointer_expression "*(int *)((int)&hl->hl_endpos + 4)" * (cast_expression "(int *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) })) (expression_statement "phVar9 = phVar10->left;" (assignment_expression "phVar9 = phVar10->left" identifier = (field_expression "phVar10->left" identifier -> field_identifier)) ;) (if_statement "if (phVar9 == (hilite_node *)0x0) break;" if (parenthesized_expression "(phVar9 == (hilite_node *)0x0)" ( (binary_expression "phVar9 == (hilite_node *)0x0" identifier == (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (while_statement "while( true ) {\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar8 = (uint)(phVar9->r).hl_startpos;\n        iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);\n        phVar10 = phVar9;\n        if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;\nLAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;\n        iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);\n        if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }\n        phVar9 = phVar10->right;\n        if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }\n      }" { (expression_statement "uVar8 = (uint)(phVar9->r).hl_startpos;" (assignment_expression "uVar8 = (uint)(phVar9->r).hl_startpos" identifier = (field_expression "(uint)(phVar9->r).hl_startpos" (call_expression "(uint)(phVar9->r)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4);" (assignment_expression "iVar12 = *(int *)((int)&(phVar9->r).hl_startpos + 4)" identifier = (pointer_expression "*(int *)((int)&(phVar9->r).hl_startpos + 4)" * (cast_expression "(int *)((int)&(phVar9->r).hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar9->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar9->r).hl_startpos + 4" (cast_expression "(int)&(phVar9->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar9->r).hl_startpos" & (field_expression "(phVar9->r).hl_startpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "phVar10 = phVar9;" (assignment_expression "phVar10 = phVar9" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) break;" if (parenthesized_expression "((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0)" ( (binary_expression "(SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n            (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0" (parenthesized_expression "(SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8)))" ( (binary_expression "SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))" (call_expression "SBORROW4(iVar15,iVar12)" identifier (argument_list "(iVar15,iVar12)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))" identifier (argument_list "(iVar15 - iVar12,(uint)(local_24 < uVar8))" ( (binary_expression "iVar15 - iVar12" identifier - identifier) , (call_expression "(uint)(local_24 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar8)" ( (binary_expression "local_24 < uVar8" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0" (cast_expression "(int)((iVar15 - iVar12) - (uint)(local_24 < uVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar15 - iVar12) - (uint)(local_24 < uVar8))" ( (binary_expression "(iVar15 - iVar12) - (uint)(local_24 < uVar8)" (parenthesized_expression "(iVar15 - iVar12)" ( (binary_expression "iVar15 - iVar12" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar8)" ( (binary_expression "local_24 < uVar8" identifier < identifier) )))) ))) < number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00027d36:\n        uVar3 = (uint)(phVar10->r).hl_endpos;" statement_identifier : (expression_statement "uVar3 = (uint)(phVar10->r).hl_endpos;" (assignment_expression "uVar3 = (uint)(phVar10->r).hl_endpos" identifier = (field_expression "(uint)(phVar10->r).hl_endpos" (call_expression "(uint)(phVar10->r)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) ))) . field_identifier)) ;)) (expression_statement "iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4);" (assignment_expression "iVar4 = *(int *)((int)&(phVar10->r).hl_endpos + 4)" identifier = (pointer_expression "*(int *)((int)&(phVar10->r).hl_endpos + 4)" * (cast_expression "(int *)((int)&(phVar10->r).hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar10->r).hl_endpos + 4)" ( (binary_expression "(int)&(phVar10->r).hl_endpos + 4" (cast_expression "(int)&(phVar10->r).hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar10->r).hl_endpos" & (field_expression "(phVar10->r).hl_endpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if ((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0) {\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }" if (parenthesized_expression "((SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0)" ( (binary_expression "(SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))) !=\n            (int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0" (parenthesized_expression "(SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3)))" ( (binary_expression "SBORROW4(iVar15,iVar4) != SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))" (call_expression "SBORROW4(iVar15,iVar4)" identifier (argument_list "(iVar15,iVar4)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar15 - iVar4,(uint)(local_24 < uVar3))" identifier (argument_list "(iVar15 - iVar4,(uint)(local_24 < uVar3))" ( (binary_expression "iVar15 - iVar4" identifier - identifier) , (call_expression "(uint)(local_24 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar3)" ( (binary_expression "local_24 < uVar3" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar15 - iVar4) - (uint)(local_24 < uVar3)) < 0" (cast_expression "(int)((iVar15 - iVar4) - (uint)(local_24 < uVar3))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar15 - iVar4) - (uint)(local_24 < uVar3))" ( (binary_expression "(iVar15 - iVar4) - (uint)(local_24 < uVar3)" (parenthesized_expression "(iVar15 - iVar4)" ( (binary_expression "iVar15 - iVar4" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar3)" ( (binary_expression "local_24 < uVar3" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n          piVar1 = (int *)((int)&hl->hl_endpos + 4);\n          uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);\n          iVar12 = *piVar1;\n          iVar5 = iVar4 - *piVar1;\n          *(uint *)&hl->hl_startpos = uVar3;\n          *(int *)((int)&hl->hl_startpos + 4) = iVar4;\n          local_24 = uVar3;\n          iVar15 = iVar4;\n          if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }\n        }" { (expression_statement "piVar1 = (int *)((int)&hl->hl_endpos + 4);" (assignment_expression "piVar1 = (int *)((int)&hl->hl_endpos + 4)" identifier = (cast_expression "(int *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos);" (assignment_expression "uVar8 = (uint)(uVar3 < (uint)hl->hl_endpos)" identifier = (call_expression "(uint)(uVar3 < (uint)hl->hl_endpos)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < (uint)hl->hl_endpos)" ( (binary_expression "uVar3 < (uint)hl->hl_endpos" identifier < (cast_expression "(uint)hl->hl_endpos" ( (type_descriptor "uint" type_identifier) ) (field_expression "hl->hl_endpos" identifier -> field_identifier))) )))) ;) (expression_statement "iVar12 = *piVar1;" (assignment_expression "iVar12 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "iVar5 = iVar4 - *piVar1;" (assignment_expression "iVar5 = iVar4 - *piVar1" identifier = (binary_expression "iVar4 - *piVar1" identifier - (pointer_expression "*piVar1" * identifier))) ;) (expression_statement "*(uint *)&hl->hl_startpos = uVar3;" (assignment_expression "*(uint *)&hl->hl_startpos = uVar3" (pointer_expression "*(uint *)&hl->hl_startpos" * (cast_expression "(uint *)&hl->hl_startpos" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&hl->hl_startpos" & (field_expression "hl->hl_startpos" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&hl->hl_startpos + 4) = iVar4;" (assignment_expression "*(int *)((int)&hl->hl_startpos + 4) = iVar4" (pointer_expression "*(int *)((int)&hl->hl_startpos + 4)" * (cast_expression "(int *)((int)&hl->hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_startpos + 4)" ( (binary_expression "(int)&hl->hl_startpos + 4" (cast_expression "(int)&hl->hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_startpos" & (field_expression "hl->hl_startpos" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "local_24 = uVar3;" (assignment_expression "local_24 = uVar3" identifier = identifier) ;) (expression_statement "iVar15 = iVar4;" (assignment_expression "iVar15 = iVar4" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0) {\n            return;\n          }" if (parenthesized_expression "((SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0)" ( (binary_expression "(SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)) == (int)(iVar5 - uVar8) < 0" (parenthesized_expression "(SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8))" ( (binary_expression "SBORROW4(iVar4,iVar12) != SBORROW4(iVar5,uVar8)" (call_expression "SBORROW4(iVar4,iVar12)" identifier (argument_list "(iVar4,iVar12)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar5,uVar8)" identifier (argument_list "(iVar5,uVar8)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar5 - uVar8) < 0" (cast_expression "(int)(iVar5 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar5 - uVar8)" ( (binary_expression "iVar5 - uVar8" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) })) (expression_statement "phVar9 = phVar10->right;" (assignment_expression "phVar9 = phVar10->right" identifier = (field_expression "phVar10->right" identifier -> field_identifier)) ;) (if_statement "if (phVar9 == (hilite_node *)0x0) {\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }" if (parenthesized_expression "(phVar9 == (hilite_node *)0x0)" ( (binary_expression "phVar9 == (hilite_node *)0x0" identifier == (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar8 = (uint)(phVar10->r).hl_startpos;\n          iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);\n          if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;\n          if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }\n          phVar9 = phVar10->next;\n          if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }\n          phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n          iVar15 = phVar7->used;\n          phVar7->used = iVar15 + 1;\n          phVar9 = phVar7->nodes + iVar15;\n          phVar10->right = phVar9;\n          phVar9->prev = phVar10;\n          if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }\n          phVar10->next = phVar9;\n          goto LAB_00027e50;\n        }" { (expression_statement "uVar8 = (uint)(phVar10->r).hl_startpos;" (assignment_expression "uVar8 = (uint)(phVar10->r).hl_startpos" identifier = (field_expression "(uint)(phVar10->r).hl_startpos" (call_expression "(uint)(phVar10->r)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4);" (assignment_expression "iVar12 = *(int *)((int)&(phVar10->r).hl_startpos + 4)" identifier = (pointer_expression "*(int *)((int)&(phVar10->r).hl_startpos + 4)" * (cast_expression "(int *)((int)&(phVar10->r).hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar10->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar10->r).hl_startpos + 4" (cast_expression "(int)&(phVar10->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar10->r).hl_startpos" & (field_expression "(phVar10->r).hl_startpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (if_statement "if ((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0) goto LAB_00027dec;" if (parenthesized_expression "((SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0)" ( (binary_expression "(SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))) !=\n              (int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0" (parenthesized_expression "(SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8)))" ( (binary_expression "SBORROW4(iVar15,iVar12) != SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))" (call_expression "SBORROW4(iVar15,iVar12)" identifier (argument_list "(iVar15,iVar12)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar15 - iVar12,(uint)(local_24 < uVar8))" identifier (argument_list "(iVar15 - iVar12,(uint)(local_24 < uVar8))" ( (binary_expression "iVar15 - iVar12" identifier - identifier) , (call_expression "(uint)(local_24 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar8)" ( (binary_expression "local_24 < uVar8" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar15 - iVar12) - (uint)(local_24 < uVar8)) < 0" (cast_expression "(int)((iVar15 - iVar12) - (uint)(local_24 < uVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar15 - iVar12) - (uint)(local_24 < uVar8))" ( (binary_expression "(iVar15 - iVar12) - (uint)(local_24 < uVar8)" (parenthesized_expression "(iVar15 - iVar12)" ( (binary_expression "iVar15 - iVar12" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar8)" ( (binary_expression "local_24 < uVar8" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00027dec;" goto statement_identifier ;)) (if_statement "if (iVar4 == iVar15 && uVar3 == local_24) {\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }" if (parenthesized_expression "(iVar4 == iVar15 && uVar3 == local_24)" ( (binary_expression "iVar4 == iVar15 && uVar3 == local_24" (binary_expression "iVar4 == iVar15" identifier == identifier) && (binary_expression "uVar3 == local_24" identifier == identifier)) )) (compound_statement "{\n            uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);\n            *(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;\n            *(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;\n            return;\n          }" { (expression_statement "uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4);" (assignment_expression "uVar2 = *(undefined4 *)((int)&hl->hl_endpos + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&hl->hl_endpos + 4)" * (cast_expression "(undefined4 *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos;" (assignment_expression "*(int *)&(phVar10->r).hl_endpos = (int)hl->hl_endpos" (pointer_expression "*(int *)&(phVar10->r).hl_endpos" * (cast_expression "(int *)&(phVar10->r).hl_endpos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar10->r).hl_endpos" & (field_expression "(phVar10->r).hl_endpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier)))) = (cast_expression "(int)hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (field_expression "hl->hl_endpos" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2;" (assignment_expression "*(undefined4 *)((int)&(phVar10->r).hl_endpos + 4) = uVar2" (pointer_expression "*(undefined4 *)((int)&(phVar10->r).hl_endpos + 4)" * (cast_expression "(undefined4 *)((int)&(phVar10->r).hl_endpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar10->r).hl_endpos + 4)" ( (binary_expression "(int)&(phVar10->r).hl_endpos + 4" (cast_expression "(int)&(phVar10->r).hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar10->r).hl_endpos" & (field_expression "(phVar10->r).hl_endpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "phVar9 = phVar10->next;" (assignment_expression "phVar9 = phVar10->next" identifier = (field_expression "phVar10->next" identifier -> field_identifier)) ;) (if_statement "if ((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)) {\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }" if (parenthesized_expression "((phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos))" ( (binary_expression "(phVar9 != (hilite_node *)0x0) &&\n             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)" (parenthesized_expression "(phVar9 != (hilite_node *)0x0)" ( (binary_expression "phVar9 != (hilite_node *)0x0" identifier != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos)" ( (binary_expression "*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4) &&\n              (int)hl->hl_endpos == (int)(phVar9->r).hl_startpos" (binary_expression "*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(phVar9->r).hl_startpos + 4)" (pointer_expression "*(int *)((int)&hl->hl_endpos + 4)" * (cast_expression "(int *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) )))) == (pointer_expression "*(int *)((int)&(phVar9->r).hl_startpos + 4)" * (cast_expression "(int *)((int)&(phVar9->r).hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar9->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar9->r).hl_startpos + 4" (cast_expression "(int)&(phVar9->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar9->r).hl_startpos" & (field_expression "(phVar9->r).hl_startpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) && (binary_expression "(int)hl->hl_endpos == (int)(phVar9->r).hl_startpos" (cast_expression "(int)hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (field_expression "hl->hl_endpos" identifier -> field_identifier)) == (cast_expression "(int)(phVar9->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (field_expression "(phVar9->r).hl_startpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier)))) ))) )) (compound_statement "{\n            *(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;\n            *(uint *)&(phVar9->r).hl_startpos = local_24;\n            return;\n          }" { (expression_statement "*(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15;" (assignment_expression "*(int *)((int)&(phVar9->r).hl_startpos + 4) = iVar15" (pointer_expression "*(int *)((int)&(phVar9->r).hl_startpos + 4)" * (cast_expression "(int *)((int)&(phVar9->r).hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar9->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar9->r).hl_startpos + 4" (cast_expression "(int)&(phVar9->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar9->r).hl_startpos" & (field_expression "(phVar9->r).hl_startpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)&(phVar9->r).hl_startpos = local_24;" (assignment_expression "*(uint *)&(phVar9->r).hl_startpos = local_24" (pointer_expression "*(uint *)&(phVar9->r).hl_startpos" * (cast_expression "(uint *)&(phVar9->r).hl_startpos" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar9->r).hl_startpos" & (field_expression "(phVar9->r).hl_startpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);" (assignment_expression "phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current)" identifier = (call_expression "hlist_getstorage(anchor,(hilite_tree *)&anchor->current)" identifier (argument_list "(anchor,(hilite_tree *)&anchor->current)" ( identifier , (cast_expression "(hilite_tree *)&anchor->current" ( (type_descriptor "hilite_tree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&anchor->current" & (field_expression "anchor->current" identifier -> field_identifier))) )))) ;) (expression_statement "iVar15 = phVar7->used;" (assignment_expression "iVar15 = phVar7->used" identifier = (field_expression "phVar7->used" identifier -> field_identifier)) ;) (expression_statement "phVar7->used = iVar15 + 1;" (assignment_expression "phVar7->used = iVar15 + 1" (field_expression "phVar7->used" identifier -> field_identifier) = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "phVar9 = phVar7->nodes + iVar15;" (assignment_expression "phVar9 = phVar7->nodes + iVar15" identifier = (binary_expression "phVar7->nodes + iVar15" (field_expression "phVar7->nodes" identifier -> field_identifier) + identifier)) ;) (expression_statement "phVar10->right = phVar9;" (assignment_expression "phVar10->right = phVar9" (field_expression "phVar10->right" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar9->prev = phVar10;" (assignment_expression "phVar9->prev = phVar10" (field_expression "phVar9->prev" identifier -> field_identifier) = identifier) ;) (if_statement "if (phVar10->next != (hilite_node *)0x0) {\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }" if (parenthesized_expression "(phVar10->next != (hilite_node *)0x0)" ( (binary_expression "phVar10->next != (hilite_node *)0x0" (field_expression "phVar10->next" identifier -> field_identifier) != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            phVar9->next = phVar10->next;\n            phVar10->next->prev = phVar9;\n          }" { (expression_statement "phVar9->next = phVar10->next;" (assignment_expression "phVar9->next = phVar10->next" (field_expression "phVar9->next" identifier -> field_identifier) = (field_expression "phVar10->next" identifier -> field_identifier)) ;) (expression_statement "phVar10->next->prev = phVar9;" (assignment_expression "phVar10->next->prev = phVar9" (field_expression "phVar10->next->prev" (field_expression "phVar10->next" identifier -> field_identifier) -> field_identifier) = identifier) ;) })) (expression_statement "phVar10->next = phVar9;" (assignment_expression "phVar10->next = phVar9" (field_expression "phVar10->next" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_00027e50;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00027dec:\n    uVar3 = (uint)hl->hl_endpos;" statement_identifier : (expression_statement "uVar3 = (uint)hl->hl_endpos;" (assignment_expression "uVar3 = (uint)hl->hl_endpos" identifier = (cast_expression "(uint)hl->hl_endpos" ( (type_descriptor "uint" type_identifier) ) (field_expression "hl->hl_endpos" identifier -> field_identifier))) ;)) (expression_statement "iVar4 = *(int *)((int)&hl->hl_endpos + 4);" (assignment_expression "iVar4 = *(int *)((int)&hl->hl_endpos + 4)" identifier = (pointer_expression "*(int *)((int)&hl->hl_endpos + 4)" * (cast_expression "(int *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (iVar12 == iVar4 && uVar8 == uVar3) {\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }\n    else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }" if (parenthesized_expression "(iVar12 == iVar4 && uVar8 == uVar3)" ( (binary_expression "iVar12 == iVar4 && uVar8 == uVar3" (binary_expression "iVar12 == iVar4" identifier == identifier) && (binary_expression "uVar8 == uVar3" identifier == identifier)) )) (compound_statement "{\n      *(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;\n      *(uint *)&(phVar10->r).hl_startpos = local_24;\n    }" { (expression_statement "*(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15;" (assignment_expression "*(int *)((int)&(phVar10->r).hl_startpos + 4) = iVar15" (pointer_expression "*(int *)((int)&(phVar10->r).hl_startpos + 4)" * (cast_expression "(int *)((int)&(phVar10->r).hl_startpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar10->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar10->r).hl_startpos + 4" (cast_expression "(int)&(phVar10->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar10->r).hl_startpos" & (field_expression "(phVar10->r).hl_startpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)&(phVar10->r).hl_startpos = local_24;" (assignment_expression "*(uint *)&(phVar10->r).hl_startpos = local_24" (pointer_expression "*(uint *)&(phVar10->r).hl_startpos" * (cast_expression "(uint *)&(phVar10->r).hl_startpos" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar10->r).hl_startpos" & (field_expression "(phVar10->r).hl_startpos" (parenthesized_expression "(phVar10->r)" ( (field_expression "phVar10->r" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) }) (else_clause "else {\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }" else (compound_statement "{\n      phVar9 = phVar10->prev;\n      if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }\n    }" { (expression_statement "phVar9 = phVar10->prev;" (assignment_expression "phVar9 = phVar10->prev" identifier = (field_expression "phVar10->prev" identifier -> field_identifier)) ;) (if_statement "if ((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)) {\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }" if (parenthesized_expression "((phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos))" ( (binary_expression "(phVar9 == (hilite_node *)0x0) ||\n         (iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)" (parenthesized_expression "(phVar9 == (hilite_node *)0x0)" ( (binary_expression "phVar9 == (hilite_node *)0x0" identifier == (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos)" ( (binary_expression "iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4) ||\n          local_24 != (uint)(phVar9->r).hl_endpos" (binary_expression "iVar15 != *(int *)((int)&(phVar9->r).hl_endpos + 4)" identifier != (pointer_expression "*(int *)((int)&(phVar9->r).hl_endpos + 4)" * (cast_expression "(int *)((int)&(phVar9->r).hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar9->r).hl_endpos + 4)" ( (binary_expression "(int)&(phVar9->r).hl_endpos + 4" (cast_expression "(int)&(phVar9->r).hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar9->r).hl_endpos" & (field_expression "(phVar9->r).hl_endpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) || (binary_expression "local_24 != (uint)(phVar9->r).hl_endpos" identifier != (field_expression "(uint)(phVar9->r).hl_endpos" (call_expression "(uint)(phVar9->r)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) ))) . field_identifier))) ))) )) (compound_statement "{\n        phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);\n        phVar9 = phVar7->nodes + phVar7->used;\n        phVar7->used = phVar7->used + 1;\n        phVar10->left = phVar9;\n        phVar9->next = phVar10;\n        if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }\n        phVar10->prev = phVar9;\nLAB_00027e50:\n        PVar6 = hl->hl_startpos;\n        phVar9->red = 1;\n        phVar9->parent = phVar10;\n        *(int *)&(phVar9->r).hl_startpos = (int)PVar6;\n        *(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);\n        *(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;\n        *(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);\n        if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }\n      }" { (expression_statement "phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current);" (assignment_expression "phVar7 = hlist_getstorage(anchor,(hilite_tree *)&anchor->current)" identifier = (call_expression "hlist_getstorage(anchor,(hilite_tree *)&anchor->current)" identifier (argument_list "(anchor,(hilite_tree *)&anchor->current)" ( identifier , (cast_expression "(hilite_tree *)&anchor->current" ( (type_descriptor "hilite_tree *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&anchor->current" & (field_expression "anchor->current" identifier -> field_identifier))) )))) ;) (expression_statement "phVar9 = phVar7->nodes + phVar7->used;" (assignment_expression "phVar9 = phVar7->nodes + phVar7->used" identifier = (binary_expression "phVar7->nodes + phVar7->used" (field_expression "phVar7->nodes" identifier -> field_identifier) + (field_expression "phVar7->used" identifier -> field_identifier))) ;) (expression_statement "phVar7->used = phVar7->used + 1;" (assignment_expression "phVar7->used = phVar7->used + 1" (field_expression "phVar7->used" identifier -> field_identifier) = (binary_expression "phVar7->used + 1" (field_expression "phVar7->used" identifier -> field_identifier) + number_literal)) ;) (expression_statement "phVar10->left = phVar9;" (assignment_expression "phVar10->left = phVar9" (field_expression "phVar10->left" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar9->next = phVar10;" (assignment_expression "phVar9->next = phVar10" (field_expression "phVar9->next" identifier -> field_identifier) = identifier) ;) (if_statement "if (phVar10->prev != (hilite_node *)0x0) {\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }" if (parenthesized_expression "(phVar10->prev != (hilite_node *)0x0)" ( (binary_expression "phVar10->prev != (hilite_node *)0x0" (field_expression "phVar10->prev" identifier -> field_identifier) != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          phVar9->prev = phVar10->prev;\n          phVar10->prev->next = phVar9;\n        }" { (expression_statement "phVar9->prev = phVar10->prev;" (assignment_expression "phVar9->prev = phVar10->prev" (field_expression "phVar9->prev" identifier -> field_identifier) = (field_expression "phVar10->prev" identifier -> field_identifier)) ;) (expression_statement "phVar10->prev->next = phVar9;" (assignment_expression "phVar10->prev->next = phVar9" (field_expression "phVar10->prev->next" (field_expression "phVar10->prev" identifier -> field_identifier) -> field_identifier) = identifier) ;) })) (expression_statement "phVar10->prev = phVar9;" (assignment_expression "phVar10->prev = phVar9" (field_expression "phVar10->prev" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_00027e50:\n        PVar6 = hl->hl_startpos;" statement_identifier : (expression_statement "PVar6 = hl->hl_startpos;" (assignment_expression "PVar6 = hl->hl_startpos" identifier = (field_expression "hl->hl_startpos" identifier -> field_identifier)) ;)) (expression_statement "phVar9->red = 1;" (assignment_expression "phVar9->red = 1" (field_expression "phVar9->red" identifier -> field_identifier) = number_literal) ;) (expression_statement "phVar9->parent = phVar10;" (assignment_expression "phVar9->parent = phVar10" (field_expression "phVar9->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "*(int *)&(phVar9->r).hl_startpos = (int)PVar6;" (assignment_expression "*(int *)&(phVar9->r).hl_startpos = (int)PVar6" (pointer_expression "*(int *)&(phVar9->r).hl_startpos" * (cast_expression "(int *)&(phVar9->r).hl_startpos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar9->r).hl_startpos" & (field_expression "(phVar9->r).hl_startpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier)))) = (cast_expression "(int)PVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4);" (assignment_expression "*(undefined4 *)((int)&(phVar9->r).hl_startpos + 4) =\n             *(undefined4 *)((int)&hl->hl_startpos + 4)" (pointer_expression "*(undefined4 *)((int)&(phVar9->r).hl_startpos + 4)" * (cast_expression "(undefined4 *)((int)&(phVar9->r).hl_startpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar9->r).hl_startpos + 4)" ( (binary_expression "(int)&(phVar9->r).hl_startpos + 4" (cast_expression "(int)&(phVar9->r).hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar9->r).hl_startpos" & (field_expression "(phVar9->r).hl_startpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&hl->hl_startpos + 4)" * (cast_expression "(undefined4 *)((int)&hl->hl_startpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_startpos + 4)" ( (binary_expression "(int)&hl->hl_startpos + 4" (cast_expression "(int)&hl->hl_startpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_startpos" & (field_expression "hl->hl_startpos" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos;" (assignment_expression "*(int *)&(phVar9->r).hl_endpos = (int)hl->hl_endpos" (pointer_expression "*(int *)&(phVar9->r).hl_endpos" * (cast_expression "(int *)&(phVar9->r).hl_endpos" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar9->r).hl_endpos" & (field_expression "(phVar9->r).hl_endpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier)))) = (cast_expression "(int)hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (field_expression "hl->hl_endpos" identifier -> field_identifier))) ;) (expression_statement "*(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4);" (assignment_expression "*(undefined4 *)((int)&(phVar9->r).hl_endpos + 4) = *(undefined4 *)((int)&hl->hl_endpos + 4)" (pointer_expression "*(undefined4 *)((int)&(phVar9->r).hl_endpos + 4)" * (cast_expression "(undefined4 *)((int)&(phVar9->r).hl_endpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar9->r).hl_endpos + 4)" ( (binary_expression "(int)&(phVar9->r).hl_endpos + 4" (cast_expression "(int)&(phVar9->r).hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar9->r).hl_endpos" & (field_expression "(phVar9->r).hl_endpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)&hl->hl_endpos + 4)" * (cast_expression "(undefined4 *)((int)&hl->hl_endpos + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&hl->hl_endpos + 4)" ( (binary_expression "(int)&hl->hl_endpos + 4" (cast_expression "(int)&hl->hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&hl->hl_endpos" & (field_expression "hl->hl_endpos" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (phVar10->red != 0) {\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }" if (parenthesized_expression "(phVar10->red != 0)" ( (binary_expression "phVar10->red != 0" (field_expression "phVar10->red" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          phVar13 = phVar10->parent;\n          phVar11 = phVar13->left;\n          phVar14 = phVar11;\n          if (phVar11 == phVar10) goto LAB_00027f37;\n          while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }\n          phVar14 = phVar10->right;\n          if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }\n          phVar13 = phVar9->parent;\n          phVar9->red = 0;\n          phVar11 = phVar13->parent;\n          phVar13->red = 1;\n          if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n        }" { (expression_statement "phVar13 = phVar10->parent;" (assignment_expression "phVar13 = phVar10->parent" identifier = (field_expression "phVar10->parent" identifier -> field_identifier)) ;) (expression_statement "phVar11 = phVar13->left;" (assignment_expression "phVar11 = phVar13->left" identifier = (field_expression "phVar13->left" identifier -> field_identifier)) ;) (expression_statement "phVar14 = phVar11;" (assignment_expression "phVar14 = phVar11" identifier = identifier) ;) (if_statement "if (phVar11 == phVar10) goto LAB_00027f37;" if (parenthesized_expression "(phVar11 == phVar10)" ( (binary_expression "phVar11 == phVar10" identifier == identifier) )) (goto_statement "goto LAB_00027f37;" goto statement_identifier ;)) (while_statement "while ((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))) {\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }" while (parenthesized_expression "((phVar14 != (hilite_node *)0x0 && (phVar14->red != 0)))" ( (parenthesized_expression "(phVar14 != (hilite_node *)0x0 && (phVar14->red != 0))" ( (binary_expression "phVar14 != (hilite_node *)0x0 && (phVar14->red != 0)" (binary_expression "phVar14 != (hilite_node *)0x0" identifier != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(phVar14->red != 0)" ( (binary_expression "phVar14->red != 0" (field_expression "phVar14->red" identifier -> field_identifier) != number_literal) ))) )) )) (compound_statement "{\n            phVar10->red = 0;\n            phVar10 = phVar13->parent;\n            phVar14->red = 0;\n            phVar13->red = 1;\n            if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }\n            if (phVar10->red == 0) {\n              return;\n            }\n            phVar14 = phVar10->parent;\n            phVar11 = phVar14->left;\n            phVar9 = phVar13;\n            phVar13 = phVar14;\n            phVar14 = phVar11;\n            if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }\n          }" { (expression_statement "phVar10->red = 0;" (assignment_expression "phVar10->red = 0" (field_expression "phVar10->red" identifier -> field_identifier) = number_literal) ;) (expression_statement "phVar10 = phVar13->parent;" (assignment_expression "phVar10 = phVar13->parent" identifier = (field_expression "phVar13->parent" identifier -> field_identifier)) ;) (expression_statement "phVar14->red = 0;" (assignment_expression "phVar14->red = 0" (field_expression "phVar14->red" identifier -> field_identifier) = number_literal) ;) (expression_statement "phVar13->red = 1;" (assignment_expression "phVar13->red = 1" (field_expression "phVar13->red" identifier -> field_identifier) = number_literal) ;) (if_statement "if (phVar10 == (hilite_node *)0x0) {\n              phVar13->red = 0;\n              return;\n            }" if (parenthesized_expression "(phVar10 == (hilite_node *)0x0)" ( (binary_expression "phVar10 == (hilite_node *)0x0" identifier == (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              phVar13->red = 0;\n              return;\n            }" { (expression_statement "phVar13->red = 0;" (assignment_expression "phVar13->red = 0" (field_expression "phVar13->red" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (phVar10->red == 0) {\n              return;\n            }" if (parenthesized_expression "(phVar10->red == 0)" ( (binary_expression "phVar10->red == 0" (field_expression "phVar10->red" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "phVar14 = phVar10->parent;" (assignment_expression "phVar14 = phVar10->parent" identifier = (field_expression "phVar10->parent" identifier -> field_identifier)) ;) (expression_statement "phVar11 = phVar14->left;" (assignment_expression "phVar11 = phVar14->left" identifier = (field_expression "phVar14->left" identifier -> field_identifier)) ;) (expression_statement "phVar9 = phVar13;" (assignment_expression "phVar9 = phVar13" identifier = identifier) ;) (expression_statement "phVar13 = phVar14;" (assignment_expression "phVar13 = phVar14" identifier = identifier) ;) (expression_statement "phVar14 = phVar11;" (assignment_expression "phVar14 = phVar11" identifier = identifier) ;) (if_statement "if (phVar11 == phVar10) {\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }" if (parenthesized_expression "(phVar11 == phVar10)" ( (binary_expression "phVar11 == phVar10" identifier == identifier) )) (compound_statement "{\nLAB_00027f37:\n              phVar14 = phVar13->right;\n            }" { (labeled_statement "LAB_00027f37:\n              phVar14 = phVar13->right;" statement_identifier : (expression_statement "phVar14 = phVar13->right;" (assignment_expression "phVar14 = phVar13->right" identifier = (field_expression "phVar13->right" identifier -> field_identifier)) ;)) })) })) (expression_statement "phVar14 = phVar10->right;" (assignment_expression "phVar14 = phVar10->right" identifier = (field_expression "phVar10->right" identifier -> field_identifier)) ;) (if_statement "if ((phVar11 == phVar10) && (phVar14 == phVar9)) {\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }\n          else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }" if (parenthesized_expression "((phVar11 == phVar10) && (phVar14 == phVar9))" ( (binary_expression "(phVar11 == phVar10) && (phVar14 == phVar9)" (parenthesized_expression "(phVar11 == phVar10)" ( (binary_expression "phVar11 == phVar10" identifier == identifier) )) && (parenthesized_expression "(phVar14 == phVar9)" ( (binary_expression "phVar14 == phVar9" identifier == identifier) ))) )) (compound_statement "{\n            phVar11 = phVar14->left;\n            phVar13->left = phVar14;\n            phVar14->left = phVar10;\n            phVar10->right = phVar11;\n            phVar14->parent = phVar13;\n            phVar10->parent = phVar14;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }\n            phVar10 = phVar9->left;\n            phVar9 = phVar10->parent;\n          }" { (expression_statement "phVar11 = phVar14->left;" (assignment_expression "phVar11 = phVar14->left" identifier = (field_expression "phVar14->left" identifier -> field_identifier)) ;) (expression_statement "phVar13->left = phVar14;" (assignment_expression "phVar13->left = phVar14" (field_expression "phVar13->left" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar14->left = phVar10;" (assignment_expression "phVar14->left = phVar10" (field_expression "phVar14->left" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar10->right = phVar11;" (assignment_expression "phVar10->right = phVar11" (field_expression "phVar10->right" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar14->parent = phVar13;" (assignment_expression "phVar14->parent = phVar13" (field_expression "phVar14->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar10->parent = phVar14;" (assignment_expression "phVar10->parent = phVar14" (field_expression "phVar10->parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n            }" if (parenthesized_expression "(phVar11 != (hilite_node *)0x0)" ( (binary_expression "phVar11 != (hilite_node *)0x0" identifier != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              phVar11->parent = phVar10;\n            }" { (expression_statement "phVar11->parent = phVar10;" (assignment_expression "phVar11->parent = phVar10" (field_expression "phVar11->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "phVar10 = phVar9->left;" (assignment_expression "phVar10 = phVar9->left" identifier = (field_expression "phVar9->left" identifier -> field_identifier)) ;) (expression_statement "phVar9 = phVar10->parent;" (assignment_expression "phVar9 = phVar10->parent" identifier = (field_expression "phVar10->parent" identifier -> field_identifier)) ;) }) (else_clause "else if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }" else (if_statement "if ((phVar10->left == phVar9) && (phVar13->right == phVar10)) {\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }\n          else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }" if (parenthesized_expression "((phVar10->left == phVar9) && (phVar13->right == phVar10))" ( (binary_expression "(phVar10->left == phVar9) && (phVar13->right == phVar10)" (parenthesized_expression "(phVar10->left == phVar9)" ( (binary_expression "phVar10->left == phVar9" (field_expression "phVar10->left" identifier -> field_identifier) == identifier) )) && (parenthesized_expression "(phVar13->right == phVar10)" ( (binary_expression "phVar13->right == phVar10" (field_expression "phVar13->right" identifier -> field_identifier) == identifier) ))) )) (compound_statement "{\n            phVar11 = phVar9->right;\n            phVar13->right = phVar9;\n            phVar9->right = phVar10;\n            phVar10->left = phVar11;\n            phVar9->parent = phVar13;\n            phVar10->parent = phVar9;\n            if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }\n          }" { (expression_statement "phVar11 = phVar9->right;" (assignment_expression "phVar11 = phVar9->right" identifier = (field_expression "phVar9->right" identifier -> field_identifier)) ;) (expression_statement "phVar13->right = phVar9;" (assignment_expression "phVar13->right = phVar9" (field_expression "phVar13->right" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar9->right = phVar10;" (assignment_expression "phVar9->right = phVar10" (field_expression "phVar9->right" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar10->left = phVar11;" (assignment_expression "phVar10->left = phVar11" (field_expression "phVar10->left" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar9->parent = phVar13;" (assignment_expression "phVar9->parent = phVar13" (field_expression "phVar9->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar10->parent = phVar9;" (assignment_expression "phVar10->parent = phVar9" (field_expression "phVar10->parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (phVar11 != (hilite_node *)0x0) {\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }" if (parenthesized_expression "(phVar11 != (hilite_node *)0x0)" ( (binary_expression "phVar11 != (hilite_node *)0x0" identifier != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              phVar11->parent = phVar10;\n              phVar9 = phVar10->parent;\n            }" { (expression_statement "phVar11->parent = phVar10;" (assignment_expression "phVar11->parent = phVar10" (field_expression "phVar11->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar9 = phVar10->parent;" (assignment_expression "phVar9 = phVar10->parent" identifier = (field_expression "phVar10->parent" identifier -> field_identifier)) ;) })) }) (else_clause "else {\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }" else (compound_statement "{\n            phVar10 = phVar9;\n            phVar9 = phVar9->parent;\n          }" { (expression_statement "phVar10 = phVar9;" (assignment_expression "phVar10 = phVar9" identifier = identifier) ;) (expression_statement "phVar9 = phVar9->parent;" (assignment_expression "phVar9 = phVar9->parent" identifier = (field_expression "phVar9->parent" identifier -> field_identifier)) ;) }))))) (expression_statement "phVar13 = phVar9->parent;" (assignment_expression "phVar13 = phVar9->parent" identifier = (field_expression "phVar9->parent" identifier -> field_identifier)) ;) (expression_statement "phVar9->red = 0;" (assignment_expression "phVar9->red = 0" (field_expression "phVar9->red" identifier -> field_identifier) = number_literal) ;) (expression_statement "phVar11 = phVar13->parent;" (assignment_expression "phVar11 = phVar13->parent" identifier = (field_expression "phVar13->parent" identifier -> field_identifier)) ;) (expression_statement "phVar13->red = 1;" (assignment_expression "phVar13->red = 1" (field_expression "phVar13->red" identifier -> field_identifier) = number_literal) ;) (if_statement "if (phVar10 == phVar9->left) {\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }\n          else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }" if (parenthesized_expression "(phVar10 == phVar9->left)" ( (binary_expression "phVar10 == phVar9->left" identifier == (field_expression "phVar9->left" identifier -> field_identifier)) )) (compound_statement "{\n            phVar10 = phVar13->left;\n            phVar9 = phVar10->right;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }\n            phVar10->right = phVar13;\n            phVar13->left = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }" { (expression_statement "phVar10 = phVar13->left;" (assignment_expression "phVar10 = phVar13->left" identifier = (field_expression "phVar13->left" identifier -> field_identifier)) ;) (expression_statement "phVar9 = phVar10->right;" (assignment_expression "phVar9 = phVar10->right" identifier = (field_expression "phVar10->right" identifier -> field_identifier)) ;) (if_statement "if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }" if (parenthesized_expression "(phVar11 == (hilite_node *)0x0)" ( (binary_expression "phVar11 == (hilite_node *)0x0" identifier == (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              anchor->root = phVar10;\n            }" { (expression_statement "anchor->root = phVar10;" (assignment_expression "anchor->root = phVar10" (field_expression "anchor->root" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }" else (if_statement "if (phVar13 == phVar11->right) {\n              phVar11->right = phVar10;\n            }\n            else {\n              phVar11->left = phVar10;\n            }" if (parenthesized_expression "(phVar13 == phVar11->right)" ( (binary_expression "phVar13 == phVar11->right" identifier == (field_expression "phVar11->right" identifier -> field_identifier)) )) (compound_statement "{\n              phVar11->right = phVar10;\n            }" { (expression_statement "phVar11->right = phVar10;" (assignment_expression "phVar11->right = phVar10" (field_expression "phVar11->right" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n              phVar11->left = phVar10;\n            }" else (compound_statement "{\n              phVar11->left = phVar10;\n            }" { (expression_statement "phVar11->left = phVar10;" (assignment_expression "phVar11->left = phVar10" (field_expression "phVar11->left" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "phVar10->right = phVar13;" (assignment_expression "phVar10->right = phVar13" (field_expression "phVar10->right" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar13->left = phVar9;" (assignment_expression "phVar13->left = phVar9" (field_expression "phVar13->left" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar10->parent = phVar11;" (assignment_expression "phVar10->parent = phVar11" (field_expression "phVar10->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar13->parent = phVar10;" (assignment_expression "phVar13->parent = phVar10" (field_expression "phVar13->parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }" if (parenthesized_expression "(phVar9 != (hilite_node *)0x0)" ( (binary_expression "phVar9 != (hilite_node *)0x0" identifier != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              phVar9->parent = phVar13;\n            }" { (expression_statement "phVar9->parent = phVar13;" (assignment_expression "phVar9->parent = phVar13" (field_expression "phVar9->parent" identifier -> field_identifier) = identifier) ;) })) }) (else_clause "else {\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }" else (compound_statement "{\n            phVar10 = phVar13->right;\n            phVar9 = phVar10->left;\n            if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }\n            phVar10->left = phVar13;\n            phVar13->right = phVar9;\n            phVar10->parent = phVar11;\n            phVar13->parent = phVar10;\n            if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }\n          }" { (expression_statement "phVar10 = phVar13->right;" (assignment_expression "phVar10 = phVar13->right" identifier = (field_expression "phVar13->right" identifier -> field_identifier)) ;) (expression_statement "phVar9 = phVar10->left;" (assignment_expression "phVar9 = phVar10->left" identifier = (field_expression "phVar10->left" identifier -> field_identifier)) ;) (if_statement "if (phVar11 == (hilite_node *)0x0) {\n              anchor->root = phVar10;\n            }\n            else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }" if (parenthesized_expression "(phVar11 == (hilite_node *)0x0)" ( (binary_expression "phVar11 == (hilite_node *)0x0" identifier == (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              anchor->root = phVar10;\n            }" { (expression_statement "anchor->root = phVar10;" (assignment_expression "anchor->root = phVar10" (field_expression "anchor->root" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }" else (if_statement "if (phVar13 == phVar11->left) {\n              phVar11->left = phVar10;\n            }\n            else {\n              phVar11->right = phVar10;\n            }" if (parenthesized_expression "(phVar13 == phVar11->left)" ( (binary_expression "phVar13 == phVar11->left" identifier == (field_expression "phVar11->left" identifier -> field_identifier)) )) (compound_statement "{\n              phVar11->left = phVar10;\n            }" { (expression_statement "phVar11->left = phVar10;" (assignment_expression "phVar11->left = phVar10" (field_expression "phVar11->left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n              phVar11->right = phVar10;\n            }" else (compound_statement "{\n              phVar11->right = phVar10;\n            }" { (expression_statement "phVar11->right = phVar10;" (assignment_expression "phVar11->right = phVar10" (field_expression "phVar11->right" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "phVar10->left = phVar13;" (assignment_expression "phVar10->left = phVar13" (field_expression "phVar10->left" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar13->right = phVar9;" (assignment_expression "phVar13->right = phVar9" (field_expression "phVar13->right" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar10->parent = phVar11;" (assignment_expression "phVar10->parent = phVar11" (field_expression "phVar10->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar13->parent = phVar10;" (assignment_expression "phVar13->parent = phVar10" (field_expression "phVar13->parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (phVar9 != (hilite_node *)0x0) {\n              phVar9->parent = phVar13;\n            }" if (parenthesized_expression "(phVar9 != (hilite_node *)0x0)" ( (binary_expression "phVar9 != (hilite_node *)0x0" identifier != (cast_expression "(hilite_node *)0x0" ( (type_descriptor "hilite_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              phVar9->parent = phVar13;\n            }" { (expression_statement "phVar9->parent = phVar13;" (assignment_expression "phVar9->parent = phVar13" (field_expression "phVar9->parent" identifier -> field_identifier) = identifier) ;) })) }))) })) }) (else_clause "else {\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }" else (compound_statement "{\n        *(uint *)&(phVar9->r).hl_endpos = uVar3;\n        *(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;\n      }" { (expression_statement "*(uint *)&(phVar9->r).hl_endpos = uVar3;" (assignment_expression "*(uint *)&(phVar9->r).hl_endpos = uVar3" (pointer_expression "*(uint *)&(phVar9->r).hl_endpos" * (cast_expression "(uint *)&(phVar9->r).hl_endpos" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(phVar9->r).hl_endpos" & (field_expression "(phVar9->r).hl_endpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4;" (assignment_expression "*(int *)((int)&(phVar9->r).hl_endpos + 4) = iVar4" (pointer_expression "*(int *)((int)&(phVar9->r).hl_endpos + 4)" * (cast_expression "(int *)((int)&(phVar9->r).hl_endpos + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(phVar9->r).hl_endpos + 4)" ( (binary_expression "(int)&(phVar9->r).hl_endpos + 4" (cast_expression "(int)&(phVar9->r).hl_endpos" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(phVar9->r).hl_endpos" & (field_expression "(phVar9->r).hl_endpos" (parenthesized_expression "(phVar9->r)" ( (field_expression "phVar9->r" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = identifier) ;) }))) }))) }))) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_00027ce0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00027ce0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00027ce0(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "piVar8 = *(int **)(param_1 + 8);" (assignment_expression "piVar8 = *(int **)(param_1 + 8)" identifier = (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }" { (expression_statement "iVar4 = FUN_00027c50();" (assignment_expression "iVar4 = FUN_00027c50()" identifier = (call_expression "FUN_00027c50()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;" (assignment_expression "iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28" identifier = (binary_expression "*(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28" (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) + (binary_expression "*(int *)(iVar4 + 4) * 0x28" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "*(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;" (assignment_expression "*(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar4 + 4) + 1" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(iVar6 + 0x18) = *param_2;" (assignment_expression "*(uint *)(iVar6 + 0x18) = *param_2" (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(uint *)(iVar6 + 0x1c) = param_2[1];" (assignment_expression "*(uint *)(iVar6 + 0x1c) = param_2[1]" (pointer_expression "*(uint *)(iVar6 + 0x1c)" * (cast_expression "(uint *)(iVar6 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar6 + 0x20) = param_2[2];" (assignment_expression "*(uint *)(iVar6 + 0x20) = param_2[2]" (pointer_expression "*(uint *)(iVar6 + 0x20)" * (cast_expression "(uint *)(iVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x20)" ( (binary_expression "iVar6 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar6 + 0x24) = param_2[3];" (assignment_expression "*(uint *)(iVar6 + 0x24) = param_2[3]" (pointer_expression "*(uint *)(iVar6 + 0x24)" * (cast_expression "(uint *)(iVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(param_1 + 8) = iVar6;" (assignment_expression "*(int *)(param_1 + 8) = iVar6" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xc) = iVar6;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar6" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" else (compound_statement "{\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" { (expression_statement "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar13 = param_2[1];" (assignment_expression "uVar13 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = piVar8[6];" (assignment_expression "uVar5 = piVar8[6]" identifier = (subscript_expression "piVar8[6]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = piVar8[7];" (assignment_expression "uVar10 = piVar8[7]" identifier = (subscript_expression "piVar8[7]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;" if (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" ( (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" identifier (argument_list "(uVar13,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" identifier (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" ( (binary_expression "uVar13 - uVar10" identifier - identifier) , (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) ))) )))) )) == (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00027d36;" goto statement_identifier ;)) (while_statement "while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }" { (expression_statement "iVar6 = uVar10 - param_2[3];" (assignment_expression "iVar6 = uVar10 - param_2[3]" identifier = (binary_expression "uVar10 - param_2[3]" identifier - (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (if_statement "if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }" if (parenthesized_expression "((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0)" ( (binary_expression "(SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0" (parenthesized_expression "(SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2])))" ( (binary_expression "SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))" (call_expression "SBORROW4(uVar10,param_2[3])" identifier (argument_list "(uVar10,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))" identifier (argument_list "(iVar6,(uint)(uVar5 < param_2[2]))" ( identifier , (call_expression "(uint)(uVar5 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2[2])" ( (binary_expression "uVar5 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) ))) )))) )) != (binary_expression "(int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0" (cast_expression "(int)(iVar6 - (uint)(uVar5 < param_2[2]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 - (uint)(uVar5 < param_2[2]))" ( (binary_expression "iVar6 - (uint)(uVar5 < param_2[2])" identifier - (call_expression "(uint)(uVar5 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < param_2[2])" ( (binary_expression "uVar5 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (compound_statement "{\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }" { (expression_statement "param_2[2] = uVar5;" (assignment_expression "param_2[2] = uVar5" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = uVar10;" (assignment_expression "param_2[3] = uVar10" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "piVar7 = (int *)piVar8[1];" (assignment_expression "piVar7 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar7 == (int *)0x0) break;" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (while_statement "while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }" { (expression_statement "uVar5 = piVar7[6];" (assignment_expression "uVar5 = piVar7[6]" identifier = (subscript_expression "piVar7[6]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = piVar7[7];" (assignment_expression "uVar10 = piVar7[7]" identifier = (subscript_expression "piVar7[7]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;" if (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" ( (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" identifier (argument_list "(uVar13,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" identifier (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" ( (binary_expression "uVar13 - uVar10" identifier - identifier) , (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )))) ))) < number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00027d36:\n        uVar1 = piVar8[8];" statement_identifier : (expression_statement "uVar1 = piVar8[8];" (assignment_expression "uVar1 = piVar8[8]" identifier = (subscript_expression "piVar8[8]" identifier [ number_literal ])) ;)) (expression_statement "uVar2 = piVar8[9];" (assignment_expression "uVar2 = piVar8[9]" identifier = (subscript_expression "piVar8[9]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }" if (parenthesized_expression "((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1)))" ( (binary_expression "SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))" (call_expression "SBORROW4(uVar13,uVar2)" identifier (argument_list "(uVar13,uVar2)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))" identifier (argument_list "(uVar13 - uVar2,(uint)(local_24 < uVar1))" ( (binary_expression "uVar13 - uVar2" identifier - identifier) , (call_expression "(uint)(local_24 < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar1)" ( (binary_expression "local_24 < uVar1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0" (cast_expression "(int)((uVar13 - uVar2) - (uint)(local_24 < uVar1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar2) - (uint)(local_24 < uVar1))" ( (binary_expression "(uVar13 - uVar2) - (uint)(local_24 < uVar1)" (parenthesized_expression "(uVar13 - uVar2)" ( (binary_expression "uVar13 - uVar2" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar1)" ( (binary_expression "local_24 < uVar1" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }" { (expression_statement "iVar6 = uVar2 - param_2[3];" (assignment_expression "iVar6 = uVar2 - param_2[3]" identifier = (binary_expression "uVar2 - param_2[3]" identifier - (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar2;" (assignment_expression "param_2[1] = uVar2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_24 = uVar1;" (assignment_expression "local_24 = uVar1" identifier = identifier) ;) (expression_statement "uVar13 = uVar2;" (assignment_expression "uVar13 = uVar2" identifier = identifier) ;) (if_statement "if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }" if (parenthesized_expression "((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0)" ( (binary_expression "(SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0" (parenthesized_expression "(SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2])))" ( (binary_expression "SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))" (call_expression "SBORROW4(uVar2,param_2[3])" identifier (argument_list "(uVar2,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) != (call_expression "SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))" identifier (argument_list "(iVar6,(uint)(uVar1 < param_2[2]))" ( identifier , (call_expression "(uint)(uVar1 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < param_2[2])" ( (binary_expression "uVar1 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) ))) )))) )) == (binary_expression "(int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0" (cast_expression "(int)(iVar6 - (uint)(uVar1 < param_2[2]))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 - (uint)(uVar1 < param_2[2]))" ( (binary_expression "iVar6 - (uint)(uVar1 < param_2[2])" identifier - (call_expression "(uint)(uVar1 < param_2[2])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < param_2[2])" ( (binary_expression "uVar1 < param_2[2]" identifier < (subscript_expression "param_2[2]" identifier [ number_literal ])) )))) ))) < number_literal)) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) })) (expression_statement "piVar7 = (int *)piVar8[2];" (assignment_expression "piVar7 = (int *)piVar8[2]" identifier = (cast_expression "(int *)piVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }" { (expression_statement "uVar5 = piVar8[6];" (assignment_expression "uVar5 = piVar8[6]" identifier = (subscript_expression "piVar8[6]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = piVar8[7];" (assignment_expression "uVar10 = piVar8[7]" identifier = (subscript_expression "piVar8[7]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;" if (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" ( (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" ( (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" identifier (argument_list "(uVar13,uVar10)" ( identifier , identifier ))) != (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" identifier (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" ( (binary_expression "uVar13 - uVar10" identifier - identifier) , (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) ))) )))) )) != (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" ( (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) - (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )))) ))) < number_literal)) )) (goto_statement "goto LAB_00027dec;" goto statement_identifier ;)) (if_statement "if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }" if (parenthesized_expression "(uVar2 == uVar13 && uVar1 == local_24)" ( (binary_expression "uVar2 == uVar13 && uVar1 == local_24" (binary_expression "uVar2 == uVar13" identifier == identifier) && (binary_expression "uVar1 == local_24" identifier == identifier)) )) (compound_statement "{\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }" { (expression_statement "uVar13 = param_2[3];" (assignment_expression "uVar13 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "piVar8[8] = param_2[2];" (assignment_expression "piVar8[8] = param_2[2]" (subscript_expression "piVar8[8]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar8[9] = uVar13;" (assignment_expression "piVar8[9] = uVar13" (subscript_expression "piVar8[9]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "iVar6 = piVar8[4];" (assignment_expression "iVar6 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (if_statement "if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }" if (parenthesized_expression "((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18)))" ( (binary_expression "(iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))" ( (binary_expression "param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18)" (binary_expression "param_2[3] == *(uint *)(iVar6 + 0x1c)" (subscript_expression "param_2[3]" identifier [ number_literal ]) == (pointer_expression "*(uint *)(iVar6 + 0x1c)" * (cast_expression "(uint *)(iVar6 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) && (binary_expression "param_2[2] == *(uint *)(iVar6 + 0x18)" (subscript_expression "param_2[2]" identifier [ number_literal ]) == (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))))) ))) )) (compound_statement "{\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }" { (expression_statement "*(uint *)(iVar6 + 0x1c) = uVar13;" (assignment_expression "*(uint *)(iVar6 + 0x1c) = uVar13" (pointer_expression "*(uint *)(iVar6 + 0x1c)" * (cast_expression "(uint *)(iVar6 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar6 + 0x18) = local_24;" (assignment_expression "*(uint *)(iVar6 + 0x18) = local_24" (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "iVar4 = FUN_00027c50();" (assignment_expression "iVar4 = FUN_00027c50()" identifier = (call_expression "FUN_00027c50()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = *(int *)(iVar4 + 4);" (assignment_expression "iVar6 = *(int *)(iVar4 + 4)" identifier = (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar4 + 4) = iVar6 + 1;" (assignment_expression "*(int *)(iVar4 + 4) = iVar6 + 1" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);" (assignment_expression "piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" identifier = (cast_expression "(int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" ( (binary_expression "*(int *)(iVar4 + 0xc) + iVar6 * 0x28" (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) + (binary_expression "iVar6 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "piVar8[2] = (int)piVar7;" (assignment_expression "piVar8[2] = (int)piVar7" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[3] = (int)piVar8;" (assignment_expression "piVar7[3] = (int)piVar8" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }" if (parenthesized_expression "(piVar8[4] != 0)" ( (binary_expression "piVar8[4] != 0" (subscript_expression "piVar8[4]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }" { (expression_statement "piVar7[4] = piVar8[4];" (assignment_expression "piVar7[4] = piVar8[4]" (subscript_expression "piVar7[4]" identifier [ number_literal ]) = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(piVar8[4] + 0xc) = piVar7;" (assignment_expression "*(int **)(piVar8[4] + 0xc) = piVar7" (pointer_expression "*(int **)(piVar8[4] + 0xc)" * (cast_expression "(int **)(piVar8[4] + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8[4] + 0xc)" ( (binary_expression "piVar8[4] + 0xc" (subscript_expression "piVar8[4]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) })) (expression_statement "piVar8[4] = (int)piVar7;" (assignment_expression "piVar8[4] = (int)piVar7" (subscript_expression "piVar8[4]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00027e50;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00027dec:\n    uVar1 = param_2[3];" statement_identifier : (expression_statement "uVar1 = param_2[3];" (assignment_expression "uVar1 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;)) (if_statement "if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" if (parenthesized_expression "(uVar10 == uVar1 && uVar5 == param_2[2])" ( (binary_expression "uVar10 == uVar1 && uVar5 == param_2[2]" (binary_expression "uVar10 == uVar1" identifier == identifier) && (binary_expression "uVar5 == param_2[2]" identifier == (subscript_expression "param_2[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }" { (expression_statement "piVar8[7] = uVar13;" (assignment_expression "piVar8[7] = uVar13" (subscript_expression "piVar8[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar8[6] = local_24;" (assignment_expression "piVar8[6] = local_24" (subscript_expression "piVar8[6]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" else (compound_statement "{\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" { (expression_statement "iVar6 = piVar8[3];" (assignment_expression "iVar6 = piVar8[3]" identifier = (subscript_expression "piVar8[3]" identifier [ number_literal ])) ;) (if_statement "if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" if (parenthesized_expression "((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         )" ( (binary_expression "(iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))" ( (binary_expression "uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20)" (binary_expression "uVar13 != *(uint *)(iVar6 + 0x24)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x24)" * (cast_expression "(uint *)(iVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) ))))) || (binary_expression "local_24 != *(uint *)(iVar6 + 0x20)" identifier != (pointer_expression "*(uint *)(iVar6 + 0x20)" * (cast_expression "(uint *)(iVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x20)" ( (binary_expression "iVar6 + 0x20" identifier + number_literal) )))))) ))) )) (compound_statement "{\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }" { (expression_statement "iVar6 = FUN_00027c50();" (assignment_expression "iVar6 = FUN_00027c50()" identifier = (call_expression "FUN_00027c50()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);" (assignment_expression "piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" identifier = (cast_expression "(int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" ( (binary_expression "*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28" (pointer_expression "*(int *)(iVar6 + 0xc)" * (cast_expression "(int *)(iVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) + (binary_expression "*(int *)(iVar6 + 4) * 0x28" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) * number_literal)) )))) ;) (expression_statement "*(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;" (assignment_expression "*(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar6 + 4) + 1" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "piVar8[1] = (int)piVar7;" (assignment_expression "piVar8[1] = (int)piVar7" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[4] = (int)piVar8;" (assignment_expression "piVar7[4] = (int)piVar8" (subscript_expression "piVar7[4]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }" if (parenthesized_expression "(piVar8[3] != 0)" ( (binary_expression "piVar8[3] != 0" (subscript_expression "piVar8[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }" { (expression_statement "piVar7[3] = piVar8[3];" (assignment_expression "piVar7[3] = piVar8[3]" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = (subscript_expression "piVar8[3]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(piVar8[3] + 0x10) = piVar7;" (assignment_expression "*(int **)(piVar8[3] + 0x10) = piVar7" (pointer_expression "*(int **)(piVar8[3] + 0x10)" * (cast_expression "(int **)(piVar8[3] + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8[3] + 0x10)" ( (binary_expression "piVar8[3] + 0x10" (subscript_expression "piVar8[3]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) })) (expression_statement "piVar8[3] = (int)piVar7;" (assignment_expression "piVar8[3] = (int)piVar7" (subscript_expression "piVar8[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_00027e50:\n        uVar13 = *param_2;" statement_identifier : (expression_statement "uVar13 = *param_2;" (assignment_expression "uVar13 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (expression_statement "piVar7[5] = 1;" (assignment_expression "piVar7[5] = 1" (subscript_expression "piVar7[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar7 = (int)piVar8;" (assignment_expression "*piVar7 = (int)piVar8" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[6] = uVar13;" (assignment_expression "piVar7[6] = uVar13" (subscript_expression "piVar7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7[7] = param_2[1];" (assignment_expression "piVar7[7] = param_2[1]" (subscript_expression "piVar7[7]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7[8] = param_2[2];" (assignment_expression "piVar7[8] = param_2[2]" (subscript_expression "piVar7[8]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar7[9] = param_2[3];" (assignment_expression "piVar7[9] = param_2[3]" (subscript_expression "piVar7[9]" identifier [ number_literal ]) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }" if (parenthesized_expression "(piVar8[5] != 0)" ( (binary_expression "piVar8[5] != 0" (subscript_expression "piVar8[5]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }" { (expression_statement "piVar11 = (int *)*piVar8;" (assignment_expression "piVar11 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) (expression_statement "piVar9 = (int *)piVar11[1];" (assignment_expression "piVar9 = (int *)piVar11[1]" identifier = (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar12 = piVar9;" (assignment_expression "piVar12 = piVar9" identifier = identifier) ;) (if_statement "if (piVar9 == piVar8) goto LAB_00027f37;" if (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) (goto_statement "goto LAB_00027f37;" goto statement_identifier ;)) (while_statement "while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }" while (parenthesized_expression "((piVar12 != (int *)0x0 && (piVar12[5] != 0)))" ( (parenthesized_expression "(piVar12 != (int *)0x0 && (piVar12[5] != 0))" ( (binary_expression "piVar12 != (int *)0x0 && (piVar12[5] != 0)" (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(piVar12[5] != 0)" ( (binary_expression "piVar12[5] != 0" (subscript_expression "piVar12[5]" identifier [ number_literal ]) != number_literal) ))) )) )) (compound_statement "{\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }" { (expression_statement "piVar8[5] = 0;" (assignment_expression "piVar8[5] = 0" (subscript_expression "piVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar8 = (int *)*piVar11;" (assignment_expression "piVar8 = (int *)*piVar11" identifier = (cast_expression "(int *)*piVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;) (expression_statement "piVar12[5] = 0;" (assignment_expression "piVar12[5] = 0" (subscript_expression "piVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11[5] = 1;" (assignment_expression "piVar11[5] = 1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }" if (parenthesized_expression "(piVar8 == (int *)0x0)" ( (binary_expression "piVar8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar11[5] = 0;\n              return;\n            }" { (expression_statement "piVar11[5] = 0;" (assignment_expression "piVar11[5] = 0" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (piVar8[5] == 0) {\n              return;\n            }" if (parenthesized_expression "(piVar8[5] == 0)" ( (binary_expression "piVar8[5] == 0" (subscript_expression "piVar8[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (expression_statement "piVar12 = (int *)*piVar8;" (assignment_expression "piVar12 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) (expression_statement "piVar9 = (int *)piVar12[1];" (assignment_expression "piVar9 = (int *)piVar12[1]" identifier = (cast_expression "(int *)piVar12[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = piVar11;" (assignment_expression "piVar7 = piVar11" identifier = identifier) ;) (expression_statement "piVar11 = piVar12;" (assignment_expression "piVar11 = piVar12" identifier = identifier) ;) (expression_statement "piVar12 = piVar9;" (assignment_expression "piVar12 = piVar9" identifier = identifier) ;) (if_statement "if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }" if (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) (compound_statement "{\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }" { (labeled_statement "LAB_00027f37:\n              piVar12 = (int *)piVar11[2];" statement_identifier : (expression_statement "piVar12 = (int *)piVar11[2];" (assignment_expression "piVar12 = (int *)piVar11[2]" identifier = (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ]))) ;)) })) })) (expression_statement "piVar12 = (int *)piVar8[2];" (assignment_expression "piVar12 = (int *)piVar8[2]" identifier = (cast_expression "(int *)piVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" if (parenthesized_expression "((piVar9 == piVar8) && (piVar12 == piVar7))" ( (binary_expression "(piVar9 == piVar8) && (piVar12 == piVar7)" (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) && (parenthesized_expression "(piVar12 == piVar7)" ( (binary_expression "piVar12 == piVar7" identifier == identifier) ))) )) (compound_statement "{\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }" { (expression_statement "puVar3 = (undefined4 *)piVar12[1];" (assignment_expression "puVar3 = (undefined4 *)piVar12[1]" identifier = (cast_expression "(undefined4 *)piVar12[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar11[1] = (int)piVar12;" (assignment_expression "piVar11[1] = (int)piVar12" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar12[1] = (int)piVar8;" (assignment_expression "piVar12[1] = (int)piVar8" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar8[2] = (int)puVar3;" (assignment_expression "piVar8[2] = (int)puVar3" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar12 = (int)piVar11;" (assignment_expression "*piVar12 = (int)piVar11" (pointer_expression "*piVar12" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = (int)piVar12;" (assignment_expression "*piVar8 = (int)piVar12" (pointer_expression "*piVar8" * identifier) = (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }" if (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" ( (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *puVar3 = piVar8;\n            }" { (expression_statement "*puVar3 = piVar8;" (assignment_expression "*puVar3 = piVar8" (pointer_expression "*puVar3" * identifier) = identifier) ;) })) (expression_statement "piVar8 = (int *)piVar7[1];" (assignment_expression "piVar8 = (int *)piVar7[1]" identifier = (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) }) (else_clause "else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" else (if_statement "if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" if (parenthesized_expression "(((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8))" ( (binary_expression "((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)" (parenthesized_expression "((int *)piVar8[1] == piVar7)" ( (binary_expression "(int *)piVar8[1] == piVar7" (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ])) == identifier) )) && (parenthesized_expression "((int *)piVar11[2] == piVar8)" ( (binary_expression "(int *)piVar11[2] == piVar8" (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ])) == identifier) ))) )) (compound_statement "{\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }" { (expression_statement "puVar3 = (undefined4 *)piVar7[2];" (assignment_expression "puVar3 = (undefined4 *)piVar7[2]" identifier = (cast_expression "(undefined4 *)piVar7[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar11[2] = (int)piVar7;" (assignment_expression "piVar11[2] = (int)piVar7" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[2] = (int)piVar8;" (assignment_expression "piVar7[2] = (int)piVar8" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar8[1] = (int)puVar3;" (assignment_expression "piVar8[1] = (int)puVar3" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = (int)piVar7;" (assignment_expression "*piVar8 = (int)piVar7" (pointer_expression "*piVar8" * identifier) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }" if (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" ( (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }" { (expression_statement "*puVar3 = piVar8;" (assignment_expression "*puVar3 = piVar8" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) })) }) (else_clause "else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" else (compound_statement "{\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" { (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (expression_statement "piVar7 = (int *)*piVar7;" (assignment_expression "piVar7 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }))))) (expression_statement "piVar11 = (int *)*piVar7;" (assignment_expression "piVar11 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (expression_statement "piVar7[5] = 0;" (assignment_expression "piVar7[5] = 0" (subscript_expression "piVar7[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar6 = *piVar11;" (assignment_expression "iVar6 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "piVar11[5] = 1;" (assignment_expression "piVar11[5] = 1" (subscript_expression "piVar11[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" if (parenthesized_expression "(piVar8 == (int *)piVar7[1])" ( (binary_expression "piVar8 == (int *)piVar7[1]" identifier == (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ]))) )) (compound_statement "{\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" { (expression_statement "piVar8 = (int *)piVar11[1];" (assignment_expression "piVar8 = (int *)piVar11[1]" identifier = (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = (int *)piVar8[2];" (assignment_expression "piVar7 = (int *)piVar8[2]" identifier = (cast_expression "(int *)piVar8[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              *(int **)(param_1 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(param_1 + 8) = piVar8;" (assignment_expression "*(int **)(param_1 + 8) = piVar8" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" else (if_statement "if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" if (parenthesized_expression "(piVar11 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar11 == *(int **)(iVar6 + 8)" identifier == (pointer_expression "*(int **)(iVar6 + 8)" * (cast_expression "(int **)(iVar6 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n              *(int **)(iVar6 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 8) = piVar8;" (assignment_expression "*(int **)(iVar6 + 8) = piVar8" (pointer_expression "*(int **)(iVar6 + 8)" * (cast_expression "(int **)(iVar6 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" else (compound_statement "{\n              *(int **)(iVar6 + 4) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 4) = piVar8;" (assignment_expression "*(int **)(iVar6 + 4) = piVar8" (pointer_expression "*(int **)(iVar6 + 4)" * (cast_expression "(int **)(iVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar8[2] = (int)piVar11;" (assignment_expression "piVar8[2] = (int)piVar11" (subscript_expression "piVar8[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar11[1] = (int)piVar7;" (assignment_expression "piVar11[1] = (int)piVar7" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = iVar6;" (assignment_expression "*piVar8 = iVar6" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "*piVar11 = (int)piVar8;" (assignment_expression "*piVar11 = (int)piVar8" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *piVar7 = (int)piVar11;\n            }" { (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }) (else_clause "else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" else (compound_statement "{\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" { (expression_statement "piVar8 = (int *)piVar11[2];" (assignment_expression "piVar8 = (int *)piVar11[2]" identifier = (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = (int *)piVar8[1];" (assignment_expression "piVar7 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (if_statement "if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              *(int **)(param_1 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(param_1 + 8) = piVar8;" (assignment_expression "*(int **)(param_1 + 8) = piVar8" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" else (if_statement "if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" if (parenthesized_expression "(piVar11 == *(int **)(iVar6 + 4))" ( (binary_expression "piVar11 == *(int **)(iVar6 + 4)" identifier == (pointer_expression "*(int **)(iVar6 + 4)" * (cast_expression "(int **)(iVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n              *(int **)(iVar6 + 4) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 4) = piVar8;" (assignment_expression "*(int **)(iVar6 + 4) = piVar8" (pointer_expression "*(int **)(iVar6 + 4)" * (cast_expression "(int **)(iVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" else (compound_statement "{\n              *(int **)(iVar6 + 8) = piVar8;\n            }" { (expression_statement "*(int **)(iVar6 + 8) = piVar8;" (assignment_expression "*(int **)(iVar6 + 8) = piVar8" (pointer_expression "*(int **)(iVar6 + 8)" * (cast_expression "(int **)(iVar6 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar8[1] = (int)piVar11;" (assignment_expression "piVar8[1] = (int)piVar11" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar11[2] = (int)piVar7;" (assignment_expression "piVar11[2] = (int)piVar7" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar8 = iVar6;" (assignment_expression "*piVar8 = iVar6" (pointer_expression "*piVar8" * identifier) = identifier) ;) (expression_statement "*piVar11 = (int)piVar8;" (assignment_expression "*piVar11 = (int)piVar8" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *piVar7 = (int)piVar11;\n            }" { (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }))) })) }) (else_clause "else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" else (compound_statement "{\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" { (expression_statement "*(uint *)(iVar6 + 0x20) = param_2[2];" (assignment_expression "*(uint *)(iVar6 + 0x20) = param_2[2]" (pointer_expression "*(uint *)(iVar6 + 0x20)" * (cast_expression "(uint *)(iVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x20)" ( (binary_expression "iVar6 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(uint *)(iVar6 + 0x24) = uVar1;" (assignment_expression "*(uint *)(iVar6 + 0x24) = uVar1" (pointer_expression "*(uint *)(iVar6 + 0x24)" * (cast_expression "(uint *)(iVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) = identifier) ;) }))) }))) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (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 = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )))) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) != (call_expression IDENT (argument_list ( IDENT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )))) ))) < LIT)) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) }))) }))) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_00027ce0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00027ce0(int param_1,uint *param_2)" (identifier "FUN_00027ce0") (parameter_list "(int param_1,uint *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  uint uVar13;\n  uint local_24;\n  \n  piVar8 = *(int **)(param_1 + 8);\n  if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (expression_statement "piVar8 = *(int **)(param_1 + 8);" (assignment_expression "piVar8 = *(int **)(param_1 + 8)" (identifier "piVar8") (= "=") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (piVar8 == (int *)0x0) {\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }\n  else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(piVar8 == (int *)0x0)" (( "(") (binary_expression "piVar8 == (int *)0x0" (identifier "piVar8") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar4 = FUN_00027c50();\n    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;\n    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;\n    *(uint *)(iVar6 + 0x18) = *param_2;\n    *(uint *)(iVar6 + 0x1c) = param_2[1];\n    *(uint *)(iVar6 + 0x20) = param_2[2];\n    *(uint *)(iVar6 + 0x24) = param_2[3];\n    *(int *)(param_1 + 8) = iVar6;\n    *(int *)(param_1 + 0xc) = iVar6;\n  }" ({ "{") (expression_statement "iVar4 = FUN_00027c50();" (assignment_expression "iVar4 = FUN_00027c50()" (identifier "iVar4") (= "=") (call_expression "FUN_00027c50()" (identifier "FUN_00027c50") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;" (assignment_expression "iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28" (identifier "iVar6") (= "=") (binary_expression "*(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28" (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "*(int *)(iVar4 + 4) * 0x28" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (* "*") (number_literal "0x28")))) (; ";")) (expression_statement "*(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;" (assignment_expression "*(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar4 + 4) + 1" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(iVar6 + 0x18) = *param_2;" (assignment_expression "*(uint *)(iVar6 + 0x18) = *param_2" (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(uint *)(iVar6 + 0x1c) = param_2[1];" (assignment_expression "*(uint *)(iVar6 + 0x1c) = param_2[1]" (pointer_expression "*(uint *)(iVar6 + 0x1c)" (* "*") (cast_expression "(uint *)(iVar6 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(uint *)(iVar6 + 0x20) = param_2[2];" (assignment_expression "*(uint *)(iVar6 + 0x20) = param_2[2]" (pointer_expression "*(uint *)(iVar6 + 0x20)" (* "*") (cast_expression "(uint *)(iVar6 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x20)" (( "(") (binary_expression "iVar6 + 0x20" (identifier "iVar6") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(uint *)(iVar6 + 0x24) = param_2[3];" (assignment_expression "*(uint *)(iVar6 + 0x24) = param_2[3]" (pointer_expression "*(uint *)(iVar6 + 0x24)" (* "*") (cast_expression "(uint *)(iVar6 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x24)" (( "(") (binary_expression "iVar6 + 0x24" (identifier "iVar6") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = iVar6;" (assignment_expression "*(int *)(param_1 + 8) = iVar6" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(int *)(param_1 + 0xc) = iVar6;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar6" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (} "}")) (else_clause "else {\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    local_24 = *param_2;\n    uVar13 = param_2[1];\n    uVar5 = piVar8[6];\n    uVar10 = piVar8[7];\n    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;\n    while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }\nLAB_00027dec:\n    uVar1 = param_2[3];\n    if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }\n  }" ({ "{") (expression_statement "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" (identifier "local_24") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar13 = param_2[1];" (assignment_expression "uVar13 = param_2[1]" (identifier "uVar13") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = piVar8[6];" (assignment_expression "uVar5 = piVar8[6]" (identifier "uVar5") (= "=") (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar10 = piVar8[7];" (assignment_expression "uVar10 = piVar8[7]" (identifier "uVar10") (= "=") (subscript_expression "piVar8[7]" (identifier "piVar8") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;" (if "if") (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==\n        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" (( "(") (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" (identifier "SBORROW4") (argument_list "(uVar13,uVar10)" (( "(") (identifier "uVar13") (, ",") (identifier "uVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (identifier "SBORROW4") (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" (( "(") (binary_expression "uVar13 - uVar10" (identifier "uVar13") (- "-") (identifier "uVar10")) (, ",") (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar5)" (( "(") (binary_expression "local_24 < uVar5" (identifier "local_24") (< "<") (identifier "uVar5")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" (( "(") (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" (( "(") (binary_expression "uVar13 - uVar10" (identifier "uVar13") (- "-") (identifier "uVar10")) () ")")) (- "-") (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar5)" (( "(") (binary_expression "local_24 < uVar5" (identifier "local_24") (< "<") (identifier "uVar5")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_00027d36;" (goto "goto") (statement_identifier "LAB_00027d36") (; ";"))) (while_statement "while( true ) {\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar6 = uVar10 - param_2[3];\n      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }\n      piVar7 = (int *)piVar8[1];\n      if (piVar7 == (int *)0x0) break;\n      while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }\n    }" ({ "{") (expression_statement "iVar6 = uVar10 - param_2[3];" (assignment_expression "iVar6 = uVar10 - param_2[3]" (identifier "iVar6") (= "=") (binary_expression "uVar10 - param_2[3]" (identifier "uVar10") (- "-") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }" (if "if") (parenthesized_expression "((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0)" (( "(") (binary_expression "(SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=\n          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0" (parenthesized_expression "(SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2])))" (( "(") (binary_expression "SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))" (call_expression "SBORROW4(uVar10,param_2[3])" (identifier "SBORROW4") (argument_list "(uVar10,param_2[3])" (( "(") (identifier "uVar10") (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))" (identifier "SBORROW4") (argument_list "(iVar6,(uint)(uVar5 < param_2[2]))" (( "(") (identifier "iVar6") (, ",") (call_expression "(uint)(uVar5 < param_2[2])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < param_2[2])" (( "(") (binary_expression "uVar5 < param_2[2]" (identifier "uVar5") (< "<") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0" (cast_expression "(int)(iVar6 - (uint)(uVar5 < param_2[2]))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar6 - (uint)(uVar5 < param_2[2]))" (( "(") (binary_expression "iVar6 - (uint)(uVar5 < param_2[2])" (identifier "iVar6") (- "-") (call_expression "(uint)(uVar5 < param_2[2])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < param_2[2])" (( "(") (binary_expression "uVar5 < param_2[2]" (identifier "uVar5") (< "<") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n        param_2[2] = uVar5;\n        param_2[3] = uVar10;\n      }" ({ "{") (expression_statement "param_2[2] = uVar5;" (assignment_expression "param_2[2] = uVar5" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "param_2[3] = uVar10;" (assignment_expression "param_2[3] = uVar10" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "piVar7 = (int *)piVar8[1];" (assignment_expression "piVar7 = (int *)piVar8[1]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (piVar7 == (int *)0x0) break;" (if "if") (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (while_statement "while( true ) {\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        uVar5 = piVar7[6];\n        uVar10 = piVar7[7];\n        piVar8 = piVar7;\n        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;\nLAB_00027d36:\n        uVar1 = piVar8[8];\n        uVar2 = piVar8[9];\n        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }\n        piVar7 = (int *)piVar8[2];\n        if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }\n      }" ({ "{") (expression_statement "uVar5 = piVar7[6];" (assignment_expression "uVar5 = piVar7[6]" (identifier "uVar5") (= "=") (subscript_expression "piVar7[6]" (identifier "piVar7") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar10 = piVar7[7];" (assignment_expression "uVar10 = piVar7[7]" (identifier "uVar10") (= "=") (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" (identifier "piVar8") (= "=") (identifier "piVar7")) (; ";")) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;" (if "if") (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" (( "(") (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" (identifier "SBORROW4") (argument_list "(uVar13,uVar10)" (( "(") (identifier "uVar13") (, ",") (identifier "uVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (identifier "SBORROW4") (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" (( "(") (binary_expression "uVar13 - uVar10" (identifier "uVar13") (- "-") (identifier "uVar10")) (, ",") (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar5)" (( "(") (binary_expression "local_24 < uVar5" (identifier "local_24") (< "<") (identifier "uVar5")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" (( "(") (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" (( "(") (binary_expression "uVar13 - uVar10" (identifier "uVar13") (- "-") (identifier "uVar10")) () ")")) (- "-") (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar5)" (( "(") (binary_expression "local_24 < uVar5" (identifier "local_24") (< "<") (identifier "uVar5")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00027d36:\n        uVar1 = piVar8[8];" (statement_identifier "LAB_00027d36") (: ":") (expression_statement "uVar1 = piVar8[8];" (assignment_expression "uVar1 = piVar8[8]" (identifier "uVar1") (= "=") (subscript_expression "piVar8[8]" (identifier "piVar8") ([ "[") (number_literal "8") (] "]"))) (; ";"))) (expression_statement "uVar2 = piVar8[9];" (assignment_expression "uVar2 = piVar8[9]" (identifier "uVar2") (= "=") (subscript_expression "piVar8[9]" (identifier "piVar8") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }" (if "if") (parenthesized_expression "((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=\n            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1)))" (( "(") (binary_expression "SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))" (call_expression "SBORROW4(uVar13,uVar2)" (identifier "SBORROW4") (argument_list "(uVar13,uVar2)" (( "(") (identifier "uVar13") (, ",") (identifier "uVar2") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))" (identifier "SBORROW4") (argument_list "(uVar13 - uVar2,(uint)(local_24 < uVar1))" (( "(") (binary_expression "uVar13 - uVar2" (identifier "uVar13") (- "-") (identifier "uVar2")) (, ",") (call_expression "(uint)(local_24 < uVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar1)" (( "(") (binary_expression "local_24 < uVar1" (identifier "local_24") (< "<") (identifier "uVar1")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0" (cast_expression "(int)((uVar13 - uVar2) - (uint)(local_24 < uVar1))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar13 - uVar2) - (uint)(local_24 < uVar1))" (( "(") (binary_expression "(uVar13 - uVar2) - (uint)(local_24 < uVar1)" (parenthesized_expression "(uVar13 - uVar2)" (( "(") (binary_expression "uVar13 - uVar2" (identifier "uVar13") (- "-") (identifier "uVar2")) () ")")) (- "-") (call_expression "(uint)(local_24 < uVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar1)" (( "(") (binary_expression "local_24 < uVar1" (identifier "local_24") (< "<") (identifier "uVar1")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n          iVar6 = uVar2 - param_2[3];\n          *param_2 = uVar1;\n          param_2[1] = uVar2;\n          local_24 = uVar1;\n          uVar13 = uVar2;\n          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }\n        }" ({ "{") (expression_statement "iVar6 = uVar2 - param_2[3];" (assignment_expression "iVar6 = uVar2 - param_2[3]" (identifier "iVar6") (= "=") (binary_expression "uVar2 - param_2[3]" (identifier "uVar2") (- "-") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_2[1] = uVar2;" (assignment_expression "param_2[1] = uVar2" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "local_24 = uVar1;" (assignment_expression "local_24 = uVar1" (identifier "local_24") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar13 = uVar2;" (assignment_expression "uVar13 = uVar2" (identifier "uVar13") (= "=") (identifier "uVar2")) (; ";")) (if_statement "if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {\n            return;\n          }" (if "if") (parenthesized_expression "((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0)" (( "(") (binary_expression "(SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==\n              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0" (parenthesized_expression "(SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2])))" (( "(") (binary_expression "SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))" (call_expression "SBORROW4(uVar2,param_2[3])" (identifier "SBORROW4") (argument_list "(uVar2,param_2[3])" (( "(") (identifier "uVar2") (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))" (identifier "SBORROW4") (argument_list "(iVar6,(uint)(uVar1 < param_2[2]))" (( "(") (identifier "iVar6") (, ",") (call_expression "(uint)(uVar1 < param_2[2])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 < param_2[2])" (( "(") (binary_expression "uVar1 < param_2[2]" (identifier "uVar1") (< "<") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0" (cast_expression "(int)(iVar6 - (uint)(uVar1 < param_2[2]))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar6 - (uint)(uVar1 < param_2[2]))" (( "(") (binary_expression "iVar6 - (uint)(uVar1 < param_2[2])" (identifier "iVar6") (- "-") (call_expression "(uint)(uVar1 < param_2[2])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 < param_2[2])" (( "(") (binary_expression "uVar1 < param_2[2]" (identifier "uVar1") (< "<") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar7 = (int *)piVar8[2];" (assignment_expression "piVar7 = (int *)piVar8[2]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar8[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (piVar7 == (int *)0x0) {\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }" (if "if") (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          uVar5 = piVar8[6];\n          uVar10 = piVar8[7];\n          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;\n          if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }\n          iVar6 = piVar8[4];\n          if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }\n          iVar4 = FUN_00027c50();\n          iVar6 = *(int *)(iVar4 + 4);\n          *(int *)(iVar4 + 4) = iVar6 + 1;\n          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);\n          piVar8[2] = (int)piVar7;\n          piVar7[3] = (int)piVar8;\n          if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }\n          piVar8[4] = (int)piVar7;\n          goto LAB_00027e50;\n        }" ({ "{") (expression_statement "uVar5 = piVar8[6];" (assignment_expression "uVar5 = piVar8[6]" (identifier "uVar5") (= "=") (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar10 = piVar8[7];" (assignment_expression "uVar10 = piVar8[7]" (identifier "uVar10") (= "=") (subscript_expression "piVar8[7]" (identifier "piVar8") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;" (if "if") (parenthesized_expression "((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=\n              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (parenthesized_expression "(SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5)))" (( "(") (binary_expression "SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (call_expression "SBORROW4(uVar13,uVar10)" (identifier "SBORROW4") (argument_list "(uVar13,uVar10)" (( "(") (identifier "uVar13") (, ",") (identifier "uVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))" (identifier "SBORROW4") (argument_list "(uVar13 - uVar10,(uint)(local_24 < uVar5))" (( "(") (binary_expression "uVar13 - uVar10" (identifier "uVar13") (- "-") (identifier "uVar10")) (, ",") (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar5)" (( "(") (binary_expression "local_24 < uVar5" (identifier "local_24") (< "<") (identifier "uVar5")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0" (cast_expression "(int)((uVar13 - uVar10) - (uint)(local_24 < uVar5))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar13 - uVar10) - (uint)(local_24 < uVar5))" (( "(") (binary_expression "(uVar13 - uVar10) - (uint)(local_24 < uVar5)" (parenthesized_expression "(uVar13 - uVar10)" (( "(") (binary_expression "uVar13 - uVar10" (identifier "uVar13") (- "-") (identifier "uVar10")) () ")")) (- "-") (call_expression "(uint)(local_24 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < uVar5)" (( "(") (binary_expression "local_24 < uVar5" (identifier "local_24") (< "<") (identifier "uVar5")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_00027dec;" (goto "goto") (statement_identifier "LAB_00027dec") (; ";"))) (if_statement "if (uVar2 == uVar13 && uVar1 == local_24) {\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }" (if "if") (parenthesized_expression "(uVar2 == uVar13 && uVar1 == local_24)" (( "(") (binary_expression "uVar2 == uVar13 && uVar1 == local_24" (binary_expression "uVar2 == uVar13" (identifier "uVar2") (== "==") (identifier "uVar13")) (&& "&&") (binary_expression "uVar1 == local_24" (identifier "uVar1") (== "==") (identifier "local_24"))) () ")")) (compound_statement "{\n            uVar13 = param_2[3];\n            piVar8[8] = param_2[2];\n            piVar8[9] = uVar13;\n            return;\n          }" ({ "{") (expression_statement "uVar13 = param_2[3];" (assignment_expression "uVar13 = param_2[3]" (identifier "uVar13") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "piVar8[8] = param_2[2];" (assignment_expression "piVar8[8] = param_2[2]" (subscript_expression "piVar8[8]" (identifier "piVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar8[9] = uVar13;" (assignment_expression "piVar8[9] = uVar13" (subscript_expression "piVar8[9]" (identifier "piVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar6 = piVar8[4];" (assignment_expression "iVar6 = piVar8[4]" (identifier "iVar6") (= "=") (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }" (if "if") (parenthesized_expression "((iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18)))" (( "(") (binary_expression "(iVar6 != 0) &&\n             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))" (( "(") (binary_expression "param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18)" (binary_expression "param_2[3] == *(uint *)(iVar6 + 0x1c)" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (== "==") (pointer_expression "*(uint *)(iVar6 + 0x1c)" (* "*") (cast_expression "(uint *)(iVar6 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")"))))) (&& "&&") (binary_expression "param_2[2] == *(uint *)(iVar6 + 0x18)" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n            *(uint *)(iVar6 + 0x1c) = uVar13;\n            *(uint *)(iVar6 + 0x18) = local_24;\n            return;\n          }" ({ "{") (expression_statement "*(uint *)(iVar6 + 0x1c) = uVar13;" (assignment_expression "*(uint *)(iVar6 + 0x1c) = uVar13" (pointer_expression "*(uint *)(iVar6 + 0x1c)" (* "*") (cast_expression "(uint *)(iVar6 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(uint *)(iVar6 + 0x18) = local_24;" (assignment_expression "*(uint *)(iVar6 + 0x18) = local_24" (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "local_24")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_00027c50();" (assignment_expression "iVar4 = FUN_00027c50()" (identifier "iVar4") (= "=") (call_expression "FUN_00027c50()" (identifier "FUN_00027c50") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar4 + 4);" (assignment_expression "iVar6 = *(int *)(iVar4 + 4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar4 + 4) = iVar6 + 1;" (assignment_expression "*(int *)(iVar4 + 4) = iVar6 + 1" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);" (assignment_expression "piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" (identifier "piVar7") (= "=") (cast_expression "(int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0xc) + iVar6 * 0x28)" (( "(") (binary_expression "*(int *)(iVar4 + 0xc) + iVar6 * 0x28" (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "iVar6 * 0x28" (identifier "iVar6") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (expression_statement "piVar8[2] = (int)piVar7;" (assignment_expression "piVar8[2] = (int)piVar7" (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (expression_statement "piVar7[3] = (int)piVar8;" (assignment_expression "piVar7[3] = (int)piVar8" (subscript_expression "piVar7[3]" (identifier "piVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (if_statement "if (piVar8[4] != 0) {\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }" (if "if") (parenthesized_expression "(piVar8[4] != 0)" (( "(") (binary_expression "piVar8[4] != 0" (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            piVar7[4] = piVar8[4];\n            *(int **)(piVar8[4] + 0xc) = piVar7;\n          }" ({ "{") (expression_statement "piVar7[4] = piVar8[4];" (assignment_expression "piVar7[4] = piVar8[4]" (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(int **)(piVar8[4] + 0xc) = piVar7;" (assignment_expression "*(int **)(piVar8[4] + 0xc) = piVar7" (pointer_expression "*(int **)(piVar8[4] + 0xc)" (* "*") (cast_expression "(int **)(piVar8[4] + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8[4] + 0xc)" (( "(") (binary_expression "piVar8[4] + 0xc" (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar7")) (; ";")) (} "}"))) (expression_statement "piVar8[4] = (int)piVar7;" (assignment_expression "piVar8[4] = (int)piVar7" (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (goto_statement "goto LAB_00027e50;" (goto "goto") (statement_identifier "LAB_00027e50") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00027dec:\n    uVar1 = param_2[3];" (statement_identifier "LAB_00027dec") (: ":") (expression_statement "uVar1 = param_2[3];" (assignment_expression "uVar1 = param_2[3]" (identifier "uVar1") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";"))) (if_statement "if (uVar10 == uVar1 && uVar5 == param_2[2]) {\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }\n    else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" (if "if") (parenthesized_expression "(uVar10 == uVar1 && uVar5 == param_2[2])" (( "(") (binary_expression "uVar10 == uVar1 && uVar5 == param_2[2]" (binary_expression "uVar10 == uVar1" (identifier "uVar10") (== "==") (identifier "uVar1")) (&& "&&") (binary_expression "uVar5 == param_2[2]" (identifier "uVar5") (== "==") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n      piVar8[7] = uVar13;\n      piVar8[6] = local_24;\n    }" ({ "{") (expression_statement "piVar8[7] = uVar13;" (assignment_expression "piVar8[7] = uVar13" (subscript_expression "piVar8[7]" (identifier "piVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "piVar8[6] = local_24;" (assignment_expression "piVar8[6] = local_24" (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "local_24")) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" (else "else") (compound_statement "{\n      iVar6 = piVar8[3];\n      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }\n    }" ({ "{") (expression_statement "iVar6 = piVar8[3];" (assignment_expression "iVar6 = piVar8[3]" (identifier "iVar6") (= "=") (subscript_expression "piVar8[3]" (identifier "piVar8") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         ) {\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }\n      else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" (if "if") (parenthesized_expression "((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))\n         )" (( "(") (binary_expression "(iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))" (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))" (( "(") (binary_expression "uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20)" (binary_expression "uVar13 != *(uint *)(iVar6 + 0x24)" (identifier "uVar13") (!= "!=") (pointer_expression "*(uint *)(iVar6 + 0x24)" (* "*") (cast_expression "(uint *)(iVar6 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x24)" (( "(") (binary_expression "iVar6 + 0x24" (identifier "iVar6") (+ "+") (number_literal "0x24")) () ")"))))) (|| "||") (binary_expression "local_24 != *(uint *)(iVar6 + 0x20)" (identifier "local_24") (!= "!=") (pointer_expression "*(uint *)(iVar6 + 0x20)" (* "*") (cast_expression "(uint *)(iVar6 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x20)" (( "(") (binary_expression "iVar6 + 0x20" (identifier "iVar6") (+ "+") (number_literal "0x20")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n        iVar6 = FUN_00027c50();\n        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);\n        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;\n        piVar8[1] = (int)piVar7;\n        piVar7[4] = (int)piVar8;\n        if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }\n        piVar8[3] = (int)piVar7;\nLAB_00027e50:\n        uVar13 = *param_2;\n        piVar7[5] = 1;\n        *piVar7 = (int)piVar8;\n        piVar7[6] = uVar13;\n        piVar7[7] = param_2[1];\n        piVar7[8] = param_2[2];\n        piVar7[9] = param_2[3];\n        if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "iVar6 = FUN_00027c50();" (assignment_expression "iVar6 = FUN_00027c50()" (identifier "iVar6") (= "=") (call_expression "FUN_00027c50()" (identifier "FUN_00027c50") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);" (assignment_expression "piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" (identifier "piVar7") (= "=") (cast_expression "(int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28)" (( "(") (binary_expression "*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28" (pointer_expression "*(int *)(iVar6 + 0xc)" (* "*") (cast_expression "(int *)(iVar6 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "*(int *)(iVar6 + 4) * 0x28" (pointer_expression "*(int *)(iVar6 + 4)" (* "*") (cast_expression "(int *)(iVar6 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 4)" (( "(") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) () ")")))) (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (expression_statement "*(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;" (assignment_expression "*(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1" (pointer_expression "*(int *)(iVar6 + 4)" (* "*") (cast_expression "(int *)(iVar6 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 4)" (( "(") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(int *)(iVar6 + 4) + 1" (pointer_expression "*(int *)(iVar6 + 4)" (* "*") (cast_expression "(int *)(iVar6 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 4)" (( "(") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar8[1] = (int)piVar7;" (assignment_expression "piVar8[1] = (int)piVar7" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (expression_statement "piVar7[4] = (int)piVar8;" (assignment_expression "piVar7[4] = (int)piVar8" (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (if_statement "if (piVar8[3] != 0) {\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }" (if "if") (parenthesized_expression "(piVar8[3] != 0)" (( "(") (binary_expression "piVar8[3] != 0" (subscript_expression "piVar8[3]" (identifier "piVar8") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          piVar7[3] = piVar8[3];\n          *(int **)(piVar8[3] + 0x10) = piVar7;\n        }" ({ "{") (expression_statement "piVar7[3] = piVar8[3];" (assignment_expression "piVar7[3] = piVar8[3]" (subscript_expression "piVar7[3]" (identifier "piVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "piVar8[3]" (identifier "piVar8") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(int **)(piVar8[3] + 0x10) = piVar7;" (assignment_expression "*(int **)(piVar8[3] + 0x10) = piVar7" (pointer_expression "*(int **)(piVar8[3] + 0x10)" (* "*") (cast_expression "(int **)(piVar8[3] + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8[3] + 0x10)" (( "(") (binary_expression "piVar8[3] + 0x10" (subscript_expression "piVar8[3]" (identifier "piVar8") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar7")) (; ";")) (} "}"))) (expression_statement "piVar8[3] = (int)piVar7;" (assignment_expression "piVar8[3] = (int)piVar7" (subscript_expression "piVar8[3]" (identifier "piVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (labeled_statement "LAB_00027e50:\n        uVar13 = *param_2;" (statement_identifier "LAB_00027e50") (: ":") (expression_statement "uVar13 = *param_2;" (assignment_expression "uVar13 = *param_2" (identifier "uVar13") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";"))) (expression_statement "piVar7[5] = 1;" (assignment_expression "piVar7[5] = 1" (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar7 = (int)piVar8;" (assignment_expression "*piVar7 = (int)piVar8" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (expression_statement "piVar7[6] = uVar13;" (assignment_expression "piVar7[6] = uVar13" (subscript_expression "piVar7[6]" (identifier "piVar7") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "piVar7[7] = param_2[1];" (assignment_expression "piVar7[7] = param_2[1]" (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar7[8] = param_2[2];" (assignment_expression "piVar7[8] = param_2[2]" (subscript_expression "piVar7[8]" (identifier "piVar7") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar7[9] = param_2[3];" (assignment_expression "piVar7[9] = param_2[3]" (subscript_expression "piVar7[9]" (identifier "piVar7") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (piVar8[5] != 0) {\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(piVar8[5] != 0)" (( "(") (binary_expression "piVar8[5] != 0" (subscript_expression "piVar8[5]" (identifier "piVar8") ([ "[") (number_literal "5") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          piVar11 = (int *)*piVar8;\n          piVar9 = (int *)piVar11[1];\n          piVar12 = piVar9;\n          if (piVar9 == piVar8) goto LAB_00027f37;\n          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }\n          piVar12 = (int *)piVar8[2];\n          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }\n          piVar11 = (int *)*piVar7;\n          piVar7[5] = 0;\n          iVar6 = *piVar11;\n          piVar11[5] = 1;\n          if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n        }" ({ "{") (expression_statement "piVar11 = (int *)*piVar8;" (assignment_expression "piVar11 = (int *)*piVar8" (identifier "piVar11") (= "=") (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (; ";")) (expression_statement "piVar9 = (int *)piVar11[1];" (assignment_expression "piVar9 = (int *)piVar11[1]" (identifier "piVar9") (= "=") (cast_expression "(int *)piVar11[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar12 = piVar9;" (assignment_expression "piVar12 = piVar9" (identifier "piVar12") (= "=") (identifier "piVar9")) (; ";")) (if_statement "if (piVar9 == piVar8) goto LAB_00027f37;" (if "if") (parenthesized_expression "(piVar9 == piVar8)" (( "(") (binary_expression "piVar9 == piVar8" (identifier "piVar9") (== "==") (identifier "piVar8")) () ")")) (goto_statement "goto LAB_00027f37;" (goto "goto") (statement_identifier "LAB_00027f37") (; ";"))) (while_statement "while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }" (while "while") (parenthesized_expression "((piVar12 != (int *)0x0 && (piVar12[5] != 0)))" (( "(") (parenthesized_expression "(piVar12 != (int *)0x0 && (piVar12[5] != 0))" (( "(") (binary_expression "piVar12 != (int *)0x0 && (piVar12[5] != 0)" (binary_expression "piVar12 != (int *)0x0" (identifier "piVar12") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(piVar12[5] != 0)" (( "(") (binary_expression "piVar12[5] != 0" (subscript_expression "piVar12[5]" (identifier "piVar12") ([ "[") (number_literal "5") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")")) (compound_statement "{\n            piVar8[5] = 0;\n            piVar8 = (int *)*piVar11;\n            piVar12[5] = 0;\n            piVar11[5] = 1;\n            if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }\n            if (piVar8[5] == 0) {\n              return;\n            }\n            piVar12 = (int *)*piVar8;\n            piVar9 = (int *)piVar12[1];\n            piVar7 = piVar11;\n            piVar11 = piVar12;\n            piVar12 = piVar9;\n            if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }\n          }" ({ "{") (expression_statement "piVar8[5] = 0;" (assignment_expression "piVar8[5] = 0" (subscript_expression "piVar8[5]" (identifier "piVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar8 = (int *)*piVar11;" (assignment_expression "piVar8 = (int *)*piVar11" (identifier "piVar8") (= "=") (cast_expression "(int *)*piVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar11" (* "*") (identifier "piVar11")))) (; ";")) (expression_statement "piVar12[5] = 0;" (assignment_expression "piVar12[5] = 0" (subscript_expression "piVar12[5]" (identifier "piVar12") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11[5] = 1;" (assignment_expression "piVar11[5] = 1" (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (piVar8 == (int *)0x0) {\n              piVar11[5] = 0;\n              return;\n            }" (if "if") (parenthesized_expression "(piVar8 == (int *)0x0)" (( "(") (binary_expression "piVar8 == (int *)0x0" (identifier "piVar8") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              piVar11[5] = 0;\n              return;\n            }" ({ "{") (expression_statement "piVar11[5] = 0;" (assignment_expression "piVar11[5] = 0" (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (piVar8[5] == 0) {\n              return;\n            }" (if "if") (parenthesized_expression "(piVar8[5] == 0)" (( "(") (binary_expression "piVar8[5] == 0" (subscript_expression "piVar8[5]" (identifier "piVar8") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              return;\n            }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "piVar12 = (int *)*piVar8;" (assignment_expression "piVar12 = (int *)*piVar8" (identifier "piVar12") (= "=") (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (; ";")) (expression_statement "piVar9 = (int *)piVar12[1];" (assignment_expression "piVar9 = (int *)piVar12[1]" (identifier "piVar9") (= "=") (cast_expression "(int *)piVar12[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar7 = piVar11;" (assignment_expression "piVar7 = piVar11" (identifier "piVar7") (= "=") (identifier "piVar11")) (; ";")) (expression_statement "piVar11 = piVar12;" (assignment_expression "piVar11 = piVar12" (identifier "piVar11") (= "=") (identifier "piVar12")) (; ";")) (expression_statement "piVar12 = piVar9;" (assignment_expression "piVar12 = piVar9" (identifier "piVar12") (= "=") (identifier "piVar9")) (; ";")) (if_statement "if (piVar9 == piVar8) {\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }" (if "if") (parenthesized_expression "(piVar9 == piVar8)" (( "(") (binary_expression "piVar9 == piVar8" (identifier "piVar9") (== "==") (identifier "piVar8")) () ")")) (compound_statement "{\nLAB_00027f37:\n              piVar12 = (int *)piVar11[2];\n            }" ({ "{") (labeled_statement "LAB_00027f37:\n              piVar12 = (int *)piVar11[2];" (statement_identifier "LAB_00027f37") (: ":") (expression_statement "piVar12 = (int *)piVar11[2];" (assignment_expression "piVar12 = (int *)piVar11[2]" (identifier "piVar12") (= "=") (cast_expression "(int *)piVar11[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")))) (; ";"))) (} "}"))) (} "}"))) (expression_statement "piVar12 = (int *)piVar8[2];" (assignment_expression "piVar12 = (int *)piVar8[2]" (identifier "piVar12") (= "=") (cast_expression "(int *)piVar8[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((piVar9 == piVar8) && (piVar12 == piVar7)) {\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }\n          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" (if "if") (parenthesized_expression "((piVar9 == piVar8) && (piVar12 == piVar7))" (( "(") (binary_expression "(piVar9 == piVar8) && (piVar12 == piVar7)" (parenthesized_expression "(piVar9 == piVar8)" (( "(") (binary_expression "piVar9 == piVar8" (identifier "piVar9") (== "==") (identifier "piVar8")) () ")")) (&& "&&") (parenthesized_expression "(piVar12 == piVar7)" (( "(") (binary_expression "piVar12 == piVar7" (identifier "piVar12") (== "==") (identifier "piVar7")) () ")"))) () ")")) (compound_statement "{\n            puVar3 = (undefined4 *)piVar12[1];\n            piVar11[1] = (int)piVar12;\n            piVar12[1] = (int)piVar8;\n            piVar8[2] = (int)puVar3;\n            *piVar12 = (int)piVar11;\n            *piVar8 = (int)piVar12;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }\n            piVar8 = (int *)piVar7[1];\n            piVar7 = (int *)*piVar8;\n          }" ({ "{") (expression_statement "puVar3 = (undefined4 *)piVar12[1];" (assignment_expression "puVar3 = (undefined4 *)piVar12[1]" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)piVar12[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar11[1] = (int)piVar12;" (assignment_expression "piVar11[1] = (int)piVar12" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12"))) (; ";")) (expression_statement "piVar12[1] = (int)piVar8;" (assignment_expression "piVar12[1] = (int)piVar8" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (expression_statement "piVar8[2] = (int)puVar3;" (assignment_expression "piVar8[2] = (int)puVar3" (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3"))) (; ";")) (expression_statement "*piVar12 = (int)piVar11;" (assignment_expression "*piVar12 = (int)piVar11" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar8 = (int)piVar12;" (assignment_expression "*piVar8 = (int)piVar12" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12"))) (; ";")) (if_statement "if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n            }" (if "if") (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar3 != (undefined4 *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *puVar3 = piVar8;\n            }" ({ "{") (expression_statement "*puVar3 = piVar8;" (assignment_expression "*puVar3 = piVar8" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "piVar8")) (; ";")) (} "}"))) (expression_statement "piVar8 = (int *)piVar7[1];" (assignment_expression "piVar8 = (int *)piVar7[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar7[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (; ";")) (} "}")) (else_clause "else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" (else "else") (if_statement "if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }\n          else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" (if "if") (parenthesized_expression "(((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8))" (( "(") (binary_expression "((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)" (parenthesized_expression "((int *)piVar8[1] == piVar7)" (( "(") (binary_expression "(int *)piVar8[1] == piVar7" (cast_expression "(int *)piVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar7")) () ")")) (&& "&&") (parenthesized_expression "((int *)piVar11[2] == piVar8)" (( "(") (binary_expression "(int *)piVar11[2] == piVar8" (cast_expression "(int *)piVar11[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]"))) (== "==") (identifier "piVar8")) () ")"))) () ")")) (compound_statement "{\n            puVar3 = (undefined4 *)piVar7[2];\n            piVar11[2] = (int)piVar7;\n            piVar7[2] = (int)piVar8;\n            piVar8[1] = (int)puVar3;\n            *piVar7 = (int)piVar11;\n            *piVar8 = (int)piVar7;\n            if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }\n          }" ({ "{") (expression_statement "puVar3 = (undefined4 *)piVar7[2];" (assignment_expression "puVar3 = (undefined4 *)piVar7[2]" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)piVar7[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar11[2] = (int)piVar7;" (assignment_expression "piVar11[2] = (int)piVar7" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (expression_statement "piVar7[2] = (int)piVar8;" (assignment_expression "piVar7[2] = (int)piVar8" (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (expression_statement "piVar8[1] = (int)puVar3;" (assignment_expression "piVar8[1] = (int)puVar3" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3"))) (; ";")) (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar8 = (int)piVar7;" (assignment_expression "*piVar8 = (int)piVar7" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (if_statement "if (puVar3 != (undefined4 *)0x0) {\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }" (if "if") (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar3 != (undefined4 *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *puVar3 = piVar8;\n              piVar7 = (int *)*piVar8;\n            }" ({ "{") (expression_statement "*puVar3 = piVar8;" (assignment_expression "*puVar3 = piVar8" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "piVar8")) (; ";")) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" (else "else") (compound_statement "{\n            piVar8 = piVar7;\n            piVar7 = (int *)*piVar7;\n          }" ({ "{") (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" (identifier "piVar8") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "piVar7 = (int *)*piVar7;" (assignment_expression "piVar7 = (int *)*piVar7" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (} "}")))))) (expression_statement "piVar11 = (int *)*piVar7;" (assignment_expression "piVar11 = (int *)*piVar7" (identifier "piVar11") (= "=") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (expression_statement "piVar7[5] = 0;" (assignment_expression "piVar7[5] = 0" (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = *piVar11;" (assignment_expression "iVar6 = *piVar11" (identifier "iVar6") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "piVar11[5] = 1;" (assignment_expression "piVar11[5] = 1" (subscript_expression "piVar11[5]" (identifier "piVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (piVar8 == (int *)piVar7[1]) {\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }\n          else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" (if "if") (parenthesized_expression "(piVar8 == (int *)piVar7[1])" (( "(") (binary_expression "piVar8 == (int *)piVar7[1]" (identifier "piVar8") (== "==") (cast_expression "(int *)piVar7[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n            piVar8 = (int *)piVar11[1];\n            piVar7 = (int *)piVar8[2];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            piVar8[2] = (int)piVar11;\n            piVar11[1] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" ({ "{") (expression_statement "piVar8 = (int *)piVar11[1];" (assignment_expression "piVar8 = (int *)piVar11[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar11[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar7 = (int *)piVar8[2];" (assignment_expression "piVar7 = (int *)piVar8[2]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar8[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              *(int **)(param_1 + 8) = piVar8;\n            }" ({ "{") (expression_statement "*(int **)(param_1 + 8) = piVar8;" (assignment_expression "*(int **)(param_1 + 8) = piVar8" (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" (else "else") (if_statement "if (piVar11 == *(int **)(iVar6 + 8)) {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" (if "if") (parenthesized_expression "(piVar11 == *(int **)(iVar6 + 8))" (( "(") (binary_expression "piVar11 == *(int **)(iVar6 + 8)" (identifier "piVar11") (== "==") (pointer_expression "*(int **)(iVar6 + 8)" (* "*") (cast_expression "(int **)(iVar6 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n              *(int **)(iVar6 + 8) = piVar8;\n            }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar8;" (assignment_expression "*(int **)(iVar6 + 8) = piVar8" (pointer_expression "*(int **)(iVar6 + 8)" (* "*") (cast_expression "(int **)(iVar6 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n              *(int **)(iVar6 + 4) = piVar8;\n            }" (else "else") (compound_statement "{\n              *(int **)(iVar6 + 4) = piVar8;\n            }" ({ "{") (expression_statement "*(int **)(iVar6 + 4) = piVar8;" (assignment_expression "*(int **)(iVar6 + 4) = piVar8" (pointer_expression "*(int **)(iVar6 + 4)" (* "*") (cast_expression "(int **)(iVar6 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 4)" (( "(") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")))))) (expression_statement "piVar8[2] = (int)piVar11;" (assignment_expression "piVar8[2] = (int)piVar11" (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "piVar11[1] = (int)piVar7;" (assignment_expression "piVar11[1] = (int)piVar7" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (expression_statement "*piVar8 = iVar6;" (assignment_expression "*piVar8 = iVar6" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*piVar11 = (int)piVar8;" (assignment_expression "*piVar11 = (int)piVar8" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (if_statement "if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }" (if "if") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *piVar7 = (int)piVar11;\n            }" ({ "{") (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" (else "else") (compound_statement "{\n            piVar8 = (int *)piVar11[2];\n            piVar7 = (int *)piVar8[1];\n            if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }\n            piVar8[1] = (int)piVar11;\n            piVar11[2] = (int)piVar7;\n            *piVar8 = iVar6;\n            *piVar11 = (int)piVar8;\n            if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }\n          }" ({ "{") (expression_statement "piVar8 = (int *)piVar11[2];" (assignment_expression "piVar8 = (int *)piVar11[2]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar11[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar7 = (int *)piVar8[1];" (assignment_expression "piVar7 = (int *)piVar8[1]" (identifier "piVar7") (= "=") (cast_expression "(int *)piVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (iVar6 == 0) {\n              *(int **)(param_1 + 8) = piVar8;\n            }\n            else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              *(int **)(param_1 + 8) = piVar8;\n            }" ({ "{") (expression_statement "*(int **)(param_1 + 8) = piVar8;" (assignment_expression "*(int **)(param_1 + 8) = piVar8" (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" (else "else") (if_statement "if (piVar11 == *(int **)(iVar6 + 4)) {\n              *(int **)(iVar6 + 4) = piVar8;\n            }\n            else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" (if "if") (parenthesized_expression "(piVar11 == *(int **)(iVar6 + 4))" (( "(") (binary_expression "piVar11 == *(int **)(iVar6 + 4)" (identifier "piVar11") (== "==") (pointer_expression "*(int **)(iVar6 + 4)" (* "*") (cast_expression "(int **)(iVar6 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 4)" (( "(") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n              *(int **)(iVar6 + 4) = piVar8;\n            }" ({ "{") (expression_statement "*(int **)(iVar6 + 4) = piVar8;" (assignment_expression "*(int **)(iVar6 + 4) = piVar8" (pointer_expression "*(int **)(iVar6 + 4)" (* "*") (cast_expression "(int **)(iVar6 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 4)" (( "(") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")) (else_clause "else {\n              *(int **)(iVar6 + 8) = piVar8;\n            }" (else "else") (compound_statement "{\n              *(int **)(iVar6 + 8) = piVar8;\n            }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar8;" (assignment_expression "*(int **)(iVar6 + 8) = piVar8" (pointer_expression "*(int **)(iVar6 + 8)" (* "*") (cast_expression "(int **)(iVar6 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar8")) (; ";")) (} "}")))))) (expression_statement "piVar8[1] = (int)piVar11;" (assignment_expression "piVar8[1] = (int)piVar11" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "piVar11[2] = (int)piVar7;" (assignment_expression "piVar11[2] = (int)piVar7" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (expression_statement "*piVar8 = iVar6;" (assignment_expression "*piVar8 = iVar6" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*piVar11 = (int)piVar8;" (assignment_expression "*piVar11 = (int)piVar8" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (if_statement "if (piVar7 != (int *)0x0) {\n              *piVar7 = (int)piVar11;\n            }" (if "if") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *piVar7 = (int)piVar11;\n            }" ({ "{") (expression_statement "*piVar7 = (int)piVar11;" (assignment_expression "*piVar7 = (int)piVar11" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" (else "else") (compound_statement "{\n        *(uint *)(iVar6 + 0x20) = param_2[2];\n        *(uint *)(iVar6 + 0x24) = uVar1;\n      }" ({ "{") (expression_statement "*(uint *)(iVar6 + 0x20) = param_2[2];" (assignment_expression "*(uint *)(iVar6 + 0x20) = param_2[2]" (pointer_expression "*(uint *)(iVar6 + 0x20)" (* "*") (cast_expression "(uint *)(iVar6 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x20)" (( "(") (binary_expression "iVar6 + 0x20" (identifier "iVar6") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(uint *)(iVar6 + 0x24) = uVar1;" (assignment_expression "*(uint *)(iVar6 + 0x24) = uVar1" (pointer_expression "*(uint *)(iVar6 + 0x24)" (* "*") (cast_expression "(uint *)(iVar6 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x24)" (( "(") (binary_expression "iVar6 + 0x24" (identifier "iVar6") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void __regparm3 function_1(type_1 *anchor,type_2 *hl)

{
  int *piVar1;
  type_3 uVar2;
  type_4 var_9;
  int var_8;
  int var_11;
  type_5 PVar6;
  type_6 *phVar7;
  type_4 var_7;
  type_7 *var_10;
  type_7 *var_1;
  type_7 *var_12;
  int var_5;
  type_7 *var_14;
  type_7 *var_13;
  int var_4;
  type_4 var_6;
  
  var_1 = anchor->root;
  if (var_1 == (type_7 *)0x0) {
    phVar7 = var_2(anchor,(type_1 *)&anchor->current);
    var_1 = phVar7->nodes + phVar7->used;
    phVar7->used = phVar7->used + 1;
    *(int *)&(var_1->r).hl_startpos = (int)hl->hl_startpos;
    *(type_3 *)((int)&(var_1->r).hl_startpos + 4) = *(type_3 *)((int)&hl->hl_startpos + 4)
    ;
    *(int *)&(var_1->r).hl_endpos = (int)hl->hl_endpos;
    *(type_3 *)((int)&(var_1->r).hl_endpos + 4) = *(type_3 *)((int)&hl->hl_endpos + 4);
    anchor->root = var_1;
    anchor->lookaside = var_1;
  }
  else {
    var_6 = (type_4)hl->hl_startpos;
    var_4 = *(int *)((int)&hl->hl_startpos + 4);
    var_7 = (type_4)(var_1->r).hl_startpos;
    var_5 = *(int *)((int)&(var_1->r).hl_startpos + 4);
    if ((var_3(var_4,var_5) != var_3(var_4 - var_5,(type_4)(var_6 < var_7))) ==
        (int)((var_4 - var_5) - (type_4)(var_6 < var_7)) < 0) goto LAB_00027d36;
    while( true ) {
      piVar1 = (int *)((int)&hl->hl_endpos + 4);
      var_9 = (type_4)(var_7 < (type_4)hl->hl_endpos);
      var_8 = var_5 - *piVar1;
      if ((var_3(var_5,*piVar1) != var_3(var_8,var_9)) != (int)(var_8 - var_9) < 0) {
        *(type_4 *)&hl->hl_endpos = var_7;
        *(int *)((int)&hl->hl_endpos + 4) = var_5;
      }
      var_10 = var_1->left;
      if (var_10 == (type_7 *)0x0) break;
      while( true ) {
        var_7 = (type_4)(var_10->r).hl_startpos;
        var_5 = *(int *)((int)&(var_10->r).hl_startpos + 4);
        var_1 = var_10;
        if ((var_3(var_4,var_5) != var_3(var_4 - var_5,(type_4)(var_6 < var_7))) !=
            (int)((var_4 - var_5) - (type_4)(var_6 < var_7)) < 0) break;
LAB_00027d36:
        var_9 = (type_4)(var_1->r).hl_endpos;
        var_8 = *(int *)((int)&(var_1->r).hl_endpos + 4);
        if ((var_3(var_4,var_8) != var_3(var_4 - var_8,(type_4)(var_6 < var_9))) !=
            (int)((var_4 - var_8) - (type_4)(var_6 < var_9)) < 0) {
          piVar1 = (int *)((int)&hl->hl_endpos + 4);
          var_7 = (type_4)(var_9 < (type_4)hl->hl_endpos);
          var_5 = *piVar1;
          var_11 = var_8 - *piVar1;
          *(type_4 *)&hl->hl_startpos = var_9;
          *(int *)((int)&hl->hl_startpos + 4) = var_8;
          var_6 = var_9;
          var_4 = var_8;
          if ((var_3(var_8,var_5) != var_3(var_11,var_7)) == (int)(var_11 - var_7) < 0) {
            return;
          }
        }
        var_10 = var_1->right;
        if (var_10 == (type_7 *)0x0) {
          var_7 = (type_4)(var_1->r).hl_startpos;
          var_5 = *(int *)((int)&(var_1->r).hl_startpos + 4);
          if ((var_3(var_4,var_5) != var_3(var_4 - var_5,(type_4)(var_6 < var_7))) !=
              (int)((var_4 - var_5) - (type_4)(var_6 < var_7)) < 0) goto LAB_00027dec;
          if (var_8 == var_4 && var_9 == var_6) {
            uVar2 = *(type_3 *)((int)&hl->hl_endpos + 4);
            *(int *)&(var_1->r).hl_endpos = (int)hl->hl_endpos;
            *(type_3 *)((int)&(var_1->r).hl_endpos + 4) = uVar2;
            return;
          }
          var_10 = var_1->next;
          if ((var_10 != (type_7 *)0x0) &&
             (*(int *)((int)&hl->hl_endpos + 4) == *(int *)((int)&(var_10->r).hl_startpos + 4) &&
              (int)hl->hl_endpos == (int)(var_10->r).hl_startpos)) {
            *(int *)((int)&(var_10->r).hl_startpos + 4) = var_4;
            *(type_4 *)&(var_10->r).hl_startpos = var_6;
            return;
          }
          phVar7 = var_2(anchor,(type_1 *)&anchor->current);
          var_4 = phVar7->used;
          phVar7->used = var_4 + 1;
          var_10 = phVar7->nodes + var_4;
          var_1->right = var_10;
          var_10->prev = var_1;
          if (var_1->next != (type_7 *)0x0) {
            var_10->next = var_1->next;
            var_1->next->prev = var_10;
          }
          var_1->next = var_10;
          goto LAB_00027e50;
        }
      }
    }
LAB_00027dec:
    var_9 = (type_4)hl->hl_endpos;
    var_8 = *(int *)((int)&hl->hl_endpos + 4);
    if (var_5 == var_8 && var_7 == var_9) {
      *(int *)((int)&(var_1->r).hl_startpos + 4) = var_4;
      *(type_4 *)&(var_1->r).hl_startpos = var_6;
    }
    else {
      var_10 = var_1->prev;
      if ((var_10 == (type_7 *)0x0) ||
         (var_4 != *(int *)((int)&(var_10->r).hl_endpos + 4) ||
          var_6 != (type_4)(var_10->r).hl_endpos)) {
        phVar7 = var_2(anchor,(type_1 *)&anchor->current);
        var_10 = phVar7->nodes + phVar7->used;
        phVar7->used = phVar7->used + 1;
        var_1->left = var_10;
        var_10->next = var_1;
        if (var_1->prev != (type_7 *)0x0) {
          var_10->prev = var_1->prev;
          var_1->prev->next = var_10;
        }
        var_1->prev = var_10;
LAB_00027e50:
        PVar6 = hl->hl_startpos;
        var_10->red = 1;
        var_10->parent = var_1;
        *(int *)&(var_10->r).hl_startpos = (int)PVar6;
        *(type_3 *)((int)&(var_10->r).hl_startpos + 4) =
             *(type_3 *)((int)&hl->hl_startpos + 4);
        *(int *)&(var_10->r).hl_endpos = (int)hl->hl_endpos;
        *(type_3 *)((int)&(var_10->r).hl_endpos + 4) = *(type_3 *)((int)&hl->hl_endpos + 4);
        if (var_1->red != 0) {
          var_14 = var_1->parent;
          var_12 = var_14->left;
          var_13 = var_12;
          if (var_12 == var_1) goto LAB_00027f37;
          while ((var_13 != (type_7 *)0x0 && (var_13->red != 0))) {
            var_1->red = 0;
            var_1 = var_14->parent;
            var_13->red = 0;
            var_14->red = 1;
            if (var_1 == (type_7 *)0x0) {
              var_14->red = 0;
              return;
            }
            if (var_1->red == 0) {
              return;
            }
            var_13 = var_1->parent;
            var_12 = var_13->left;
            var_10 = var_14;
            var_14 = var_13;
            var_13 = var_12;
            if (var_12 == var_1) {
LAB_00027f37:
              var_13 = var_14->right;
            }
          }
          var_13 = var_1->right;
          if ((var_12 == var_1) && (var_13 == var_10)) {
            var_12 = var_13->left;
            var_14->left = var_13;
            var_13->left = var_1;
            var_1->right = var_12;
            var_13->parent = var_14;
            var_1->parent = var_13;
            if (var_12 != (type_7 *)0x0) {
              var_12->parent = var_1;
            }
            var_1 = var_10->left;
            var_10 = var_1->parent;
          }
          else if ((var_1->left == var_10) && (var_14->right == var_1)) {
            var_12 = var_10->right;
            var_14->right = var_10;
            var_10->right = var_1;
            var_1->left = var_12;
            var_10->parent = var_14;
            var_1->parent = var_10;
            if (var_12 != (type_7 *)0x0) {
              var_12->parent = var_1;
              var_10 = var_1->parent;
            }
          }
          else {
            var_1 = var_10;
            var_10 = var_10->parent;
          }
          var_14 = var_10->parent;
          var_10->red = 0;
          var_12 = var_14->parent;
          var_14->red = 1;
          if (var_1 == var_10->left) {
            var_1 = var_14->left;
            var_10 = var_1->right;
            if (var_12 == (type_7 *)0x0) {
              anchor->root = var_1;
            }
            else if (var_14 == var_12->right) {
              var_12->right = var_1;
            }
            else {
              var_12->left = var_1;
            }
            var_1->right = var_14;
            var_14->left = var_10;
            var_1->parent = var_12;
            var_14->parent = var_1;
            if (var_10 != (type_7 *)0x0) {
              var_10->parent = var_14;
            }
          }
          else {
            var_1 = var_14->right;
            var_10 = var_1->left;
            if (var_12 == (type_7 *)0x0) {
              anchor->root = var_1;
            }
            else if (var_14 == var_12->left) {
              var_12->left = var_1;
            }
            else {
              var_12->right = var_1;
            }
            var_1->left = var_14;
            var_14->right = var_10;
            var_1->parent = var_12;
            var_14->parent = var_1;
            if (var_10 != (type_7 *)0x0) {
              var_10->parent = var_14;
            }
          }
        }
      }
      else {
        *(type_4 *)&(var_10->r).hl_endpos = var_9;
        *(int *)((int)&(var_10->r).hl_endpos + 4) = var_8;
      }
    }
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)))) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) right: (number_literal)))) consequence: (break_statement)) (labeled_statement label: (statement_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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)))) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) right: (number_literal)))) consequence: (compound_statement (return_statement))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) right: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (goto_statement label: (statement_identifier)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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 (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))))) consequence: (compound_statement (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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 (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))))))) (return_statement))))

void __regparm3 MASKED(int param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  uint uVar10;
  int *piVar11;
  int *piVar12;
  uint uVar13;
  uint local_24;
  
  piVar8 = *(int **)(param_1 + 8);
  if (piVar8 == (int *)0x0) {
    iVar4 = FUN_00027c50();
    iVar6 = *(int *)(iVar4 + 0xc) + *(int *)(iVar4 + 4) * 0x28;
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    *(uint *)(iVar6 + 0x18) = *param_2;
    *(uint *)(iVar6 + 0x1c) = param_2[1];
    *(uint *)(iVar6 + 0x20) = param_2[2];
    *(uint *)(iVar6 + 0x24) = param_2[3];
    *(int *)(param_1 + 8) = iVar6;
    *(int *)(param_1 + 0xc) = iVar6;
  }
  else {
    local_24 = *param_2;
    uVar13 = param_2[1];
    uVar5 = piVar8[6];
    uVar10 = piVar8[7];
    if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) ==
        (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027d36;
    while( true ) {
      iVar6 = uVar10 - param_2[3];
      if ((SBORROW4(uVar10,param_2[3]) != SBORROW4(iVar6,(uint)(uVar5 < param_2[2]))) !=
          (int)(iVar6 - (uint)(uVar5 < param_2[2])) < 0) {
        param_2[2] = uVar5;
        param_2[3] = uVar10;
      }
      piVar7 = (int *)piVar8[1];
      if (piVar7 == (int *)0x0) break;
      while( true ) {
        uVar5 = piVar7[6];
        uVar10 = piVar7[7];
        piVar8 = piVar7;
        if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=
            (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) break;
LAB_00027d36:
        uVar1 = piVar8[8];
        uVar2 = piVar8[9];
        if ((SBORROW4(uVar13,uVar2) != SBORROW4(uVar13 - uVar2,(uint)(local_24 < uVar1))) !=
            (int)((uVar13 - uVar2) - (uint)(local_24 < uVar1)) < 0) {
          iVar6 = uVar2 - param_2[3];
          *param_2 = uVar1;
          param_2[1] = uVar2;
          local_24 = uVar1;
          uVar13 = uVar2;
          if ((SBORROW4(uVar2,param_2[3]) != SBORROW4(iVar6,(uint)(uVar1 < param_2[2]))) ==
              (int)(iVar6 - (uint)(uVar1 < param_2[2])) < 0) {
            return;
          }
        }
        piVar7 = (int *)piVar8[2];
        if (piVar7 == (int *)0x0) {
          uVar5 = piVar8[6];
          uVar10 = piVar8[7];
          if ((SBORROW4(uVar13,uVar10) != SBORROW4(uVar13 - uVar10,(uint)(local_24 < uVar5))) !=
              (int)((uVar13 - uVar10) - (uint)(local_24 < uVar5)) < 0) goto LAB_00027dec;
          if (uVar2 == uVar13 && uVar1 == local_24) {
            uVar13 = param_2[3];
            piVar8[8] = param_2[2];
            piVar8[9] = uVar13;
            return;
          }
          iVar6 = piVar8[4];
          if ((iVar6 != 0) &&
             (param_2[3] == *(uint *)(iVar6 + 0x1c) && param_2[2] == *(uint *)(iVar6 + 0x18))) {
            *(uint *)(iVar6 + 0x1c) = uVar13;
            *(uint *)(iVar6 + 0x18) = local_24;
            return;
          }
          iVar4 = FUN_00027c50();
          iVar6 = *(int *)(iVar4 + 4);
          *(int *)(iVar4 + 4) = iVar6 + 1;
          piVar7 = (int *)(*(int *)(iVar4 + 0xc) + iVar6 * 0x28);
          piVar8[2] = (int)piVar7;
          piVar7[3] = (int)piVar8;
          if (piVar8[4] != 0) {
            piVar7[4] = piVar8[4];
            *(int **)(piVar8[4] + 0xc) = piVar7;
          }
          piVar8[4] = (int)piVar7;
          goto LAB_00027e50;
        }
      }
    }
LAB_00027dec:
    uVar1 = param_2[3];
    if (uVar10 == uVar1 && uVar5 == param_2[2]) {
      piVar8[7] = uVar13;
      piVar8[6] = local_24;
    }
    else {
      iVar6 = piVar8[3];
      if ((iVar6 == 0) || (uVar13 != *(uint *)(iVar6 + 0x24) || local_24 != *(uint *)(iVar6 + 0x20))
         ) {
        iVar6 = FUN_00027c50();
        piVar7 = (int *)(*(int *)(iVar6 + 0xc) + *(int *)(iVar6 + 4) * 0x28);
        *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;
        piVar8[1] = (int)piVar7;
        piVar7[4] = (int)piVar8;
        if (piVar8[3] != 0) {
          piVar7[3] = piVar8[3];
          *(int **)(piVar8[3] + 0x10) = piVar7;
        }
        piVar8[3] = (int)piVar7;
LAB_00027e50:
        uVar13 = *param_2;
        piVar7[5] = 1;
        *piVar7 = (int)piVar8;
        piVar7[6] = uVar13;
        piVar7[7] = param_2[1];
        piVar7[8] = param_2[2];
        piVar7[9] = param_2[3];
        if (piVar8[5] != 0) {
          piVar11 = (int *)*piVar8;
          piVar9 = (int *)piVar11[1];
          piVar12 = piVar9;
          if (piVar9 == piVar8) goto LAB_00027f37;
          while ((piVar12 != (int *)0x0 && (piVar12[5] != 0))) {
            piVar8[5] = 0;
            piVar8 = (int *)*piVar11;
            piVar12[5] = 0;
            piVar11[5] = 1;
            if (piVar8 == (int *)0x0) {
              piVar11[5] = 0;
              return;
            }
            if (piVar8[5] == 0) {
              return;
            }
            piVar12 = (int *)*piVar8;
            piVar9 = (int *)piVar12[1];
            piVar7 = piVar11;
            piVar11 = piVar12;
            piVar12 = piVar9;
            if (piVar9 == piVar8) {
LAB_00027f37:
              piVar12 = (int *)piVar11[2];
            }
          }
          piVar12 = (int *)piVar8[2];
          if ((piVar9 == piVar8) && (piVar12 == piVar7)) {
            puVar3 = (undefined4 *)piVar12[1];
            piVar11[1] = (int)piVar12;
            piVar12[1] = (int)piVar8;
            piVar8[2] = (int)puVar3;
            *piVar12 = (int)piVar11;
            *piVar8 = (int)piVar12;
            if (puVar3 != (undefined4 *)0x0) {
              *puVar3 = piVar8;
            }
            piVar8 = (int *)piVar7[1];
            piVar7 = (int *)*piVar8;
          }
          else if (((int *)piVar8[1] == piVar7) && ((int *)piVar11[2] == piVar8)) {
            puVar3 = (undefined4 *)piVar7[2];
            piVar11[2] = (int)piVar7;
            piVar7[2] = (int)piVar8;
            piVar8[1] = (int)puVar3;
            *piVar7 = (int)piVar11;
            *piVar8 = (int)piVar7;
            if (puVar3 != (undefined4 *)0x0) {
              *puVar3 = piVar8;
              piVar7 = (int *)*piVar8;
            }
          }
          else {
            piVar8 = piVar7;
            piVar7 = (int *)*piVar7;
          }
          piVar11 = (int *)*piVar7;
          piVar7[5] = 0;
          iVar6 = *piVar11;
          piVar11[5] = 1;
          if (piVar8 == (int *)piVar7[1]) {
            piVar8 = (int *)piVar11[1];
            piVar7 = (int *)piVar8[2];
            if (iVar6 == 0) {
              *(int **)(param_1 + 8) = piVar8;
            }
            else if (piVar11 == *(int **)(iVar6 + 8)) {
              *(int **)(iVar6 + 8) = piVar8;
            }
            else {
              *(int **)(iVar6 + 4) = piVar8;
            }
            piVar8[2] = (int)piVar11;
            piVar11[1] = (int)piVar7;
            *piVar8 = iVar6;
            *piVar11 = (int)piVar8;
            if (piVar7 != (int *)0x0) {
              *piVar7 = (int)piVar11;
            }
          }
          else {
            piVar8 = (int *)piVar11[2];
            piVar7 = (int *)piVar8[1];
            if (iVar6 == 0) {
              *(int **)(param_1 + 8) = piVar8;
            }
            else if (piVar11 == *(int **)(iVar6 + 4)) {
              *(int **)(iVar6 + 4) = piVar8;
            }
            else {
              *(int **)(iVar6 + 8) = piVar8;
            }
            piVar8[1] = (int)piVar11;
            piVar11[2] = (int)piVar7;
            *piVar8 = iVar6;
            *piVar11 = (int)piVar8;
            if (piVar7 != (int *)0x0) {
              *piVar7 = (int)piVar11;
            }
          }
        }
      }
      else {
        *(uint *)(iVar6 + 0x20) = param_2[2];
        *(uint *)(iVar6 + 0x24) = uVar1;
      }
    }
  }
  return;
}

