
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) */

void std::_Rb_tree_rebalance_for_erase(_Rb_tree_node_base *param_1,_Rb_tree_node_base *param_2)

{
  _Rb_tree_node_base *p_Var1;
  _Rb_tree_node_base *p_Var2;
  _Base_ptr p_Var3;
  _Base_ptr p_Var4;
  _Rb_tree_node_base *p_Var5;
  _Base_ptr p_Var6;
  _Rb_tree_node_base *p_Var7;
  _Base_ptr p_Var8;
  _Base_ptr p_Var9;
  _Rb_tree_color _Var10;
  _Base_ptr local_14;
  
  p_Var7 = param_1->_M_left;
  p_Var1 = param_1->_M_right;
  p_Var3 = p_Var1;
  if (p_Var7 == (_Rb_tree_node_base *)0x0) {
LAB_001e8a48:
    p_Var4 = param_1->_M_parent;
    if (p_Var3 != (_Rb_tree_node_base *)0x0) goto LAB_001e87a6;
    p_Var3 = (_Rb_tree_node_base *)0x0;
  }
  else {
    p_Var2 = p_Var1;
    if (p_Var1 != (_Rb_tree_node_base *)0x0) {
      do {
        p_Var5 = p_Var2;
        p_Var2 = p_Var5->_M_left;
      } while (p_Var5->_M_left != (_Base_ptr)0x0);
      p_Var3 = p_Var5->_M_right;
      if (p_Var5 != param_1) {
        p_Var7->_M_parent = p_Var5;
        p_Var5->_M_left = p_Var7;
        p_Var4 = p_Var5;
        if (p_Var5 != p_Var1) {
          p_Var4 = p_Var5->_M_parent;
          p_Var9 = p_Var4;
          if (p_Var3 != (_Base_ptr)0x0) {
            p_Var3->_M_parent = p_Var4;
            p_Var9 = p_Var5->_M_parent;
          }
          p_Var9->_M_left = p_Var3;
          p_Var5->_M_right = p_Var1;
          param_1->_M_right->_M_parent = p_Var5;
        }
        if (param_2->_M_parent == param_1) {
          param_2->_M_parent = p_Var5;
          p_Var9 = param_1->_M_parent;
        }
        else {
          p_Var9 = param_1->_M_parent;
          if (p_Var9->_M_left == param_1) {
            p_Var9->_M_left = p_Var5;
          }
          else {
            p_Var9->_M_right = p_Var5;
          }
        }
        p_Var5->_M_parent = p_Var9;
        _Var10 = p_Var5->_M_color;
        p_Var5->_M_color = param_1->_M_color;
        param_1->_M_color = _Var10;
        goto LAB_001e885e;
      }
      goto LAB_001e8a48;
    }
    p_Var4 = param_1->_M_parent;
    p_Var3 = p_Var7;
LAB_001e87a6:
    p_Var3->_M_parent = p_Var4;
  }
  if (param_2->_M_parent == param_1) {
    param_2->_M_parent = p_Var3;
  }
  else {
    p_Var9 = param_1->_M_parent;
    if (p_Var9->_M_left == param_1) {
      p_Var9->_M_left = p_Var3;
    }
    else {
      p_Var9->_M_right = p_Var3;
    }
  }
  if (param_2->_M_left == param_1) {
    p_Var9 = p_Var3;
    if (param_1->_M_right == (_Base_ptr)0x0) {
      param_2->_M_left = param_1->_M_parent;
    }
    else {
      do {
        p_Var7 = p_Var9;
        p_Var9 = p_Var7->_M_left;
      } while (p_Var9 != (_Base_ptr)0x0);
      param_2->_M_left = p_Var7;
    }
  }
  _Var10 = param_1->_M_color;
  if (param_2->_M_right == param_1) {
    p_Var9 = p_Var3;
    if (param_1->_M_left == (_Base_ptr)0x0) {
      param_2->_M_right = param_1->_M_parent;
    }
    else {
      do {
        p_Var7 = p_Var9;
        p_Var9 = p_Var7->_M_right;
      } while (p_Var9 != (_Base_ptr)0x0);
      param_2->_M_right = p_Var7;
    }
  }
LAB_001e885e:
  if (_Var10 != _S_red) {
    while (param_2->_M_parent != p_Var3) {
      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))
      goto LAB_001e89c8;
      p_Var7 = p_Var4->_M_left;
      if (p_Var7 != p_Var3) {
        p_Var9 = p_Var7->_M_right;
        p_Var6 = p_Var7;
        if (p_Var7->_M_color == _S_red) {
          p_Var7->_M_color = _S_black;
          p_Var4->_M_color = _S_red;
          p_Var4->_M_left = p_Var9;
          if (p_Var9 != (_Base_ptr)0x0) {
            p_Var9->_M_parent = p_Var4;
          }
          p_Var6 = p_Var4->_M_parent;
          p_Var7->_M_parent = p_Var6;
          if (p_Var4 == param_2->_M_parent) {
            param_2->_M_parent = p_Var7;
            p_Var6 = p_Var4->_M_left;
          }
          else if (p_Var4 == p_Var6->_M_right) {
            p_Var6->_M_right = p_Var7;
            p_Var6 = p_Var9;
          }
          else {
            p_Var6->_M_left = p_Var7;
            p_Var6 = p_Var4->_M_left;
          }
          p_Var7->_M_right = p_Var4;
          p_Var9 = p_Var6->_M_right;
          p_Var4->_M_parent = p_Var7;
        }
        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {
          local_14 = p_Var6->_M_left;
          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;
LAB_001e8af2:
          p_Var9 = p_Var4->_M_left;
          p_Var6->_M_color = p_Var4->_M_color;
          p_Var4->_M_color = _S_black;
LAB_001e8aff:
          local_14->_M_color = _S_black;
        }
        else {
          local_14 = p_Var6->_M_left;
          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;
          p_Var8 = p_Var9->_M_left;
          p_Var9->_M_color = _S_black;
          p_Var6->_M_color = _S_red;
          p_Var6->_M_right = p_Var8;
          if (p_Var8 != (_Base_ptr)0x0) {
            p_Var8->_M_parent = p_Var6;
          }
          p_Var8 = p_Var6->_M_parent;
          p_Var9->_M_parent = p_Var8;
          if (p_Var6 == param_2->_M_parent) {
            param_2->_M_parent = p_Var9;
          }
          else if (p_Var6 == p_Var8->_M_left) {
            p_Var8->_M_left = p_Var9;
          }
          else {
            p_Var8->_M_right = p_Var9;
          }
          p_Var9->_M_left = p_Var6;
          p_Var6->_M_parent = p_Var9;
          p_Var9 = p_Var4->_M_left;
          local_14 = p_Var9->_M_left;
          p_Var9->_M_color = p_Var4->_M_color;
          p_Var4->_M_color = _S_black;
          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;
        }
        p_Var6 = p_Var9->_M_right;
        p_Var4->_M_left = p_Var6;
        if (p_Var6 != (_Base_ptr)0x0) {
          p_Var6->_M_parent = p_Var4;
        }
        p_Var6 = p_Var4->_M_parent;
        p_Var9->_M_parent = p_Var6;
        if (p_Var4 == param_2->_M_parent) {
          param_2->_M_parent = p_Var9;
        }
        else if (p_Var4 == p_Var6->_M_right) {
          p_Var6->_M_right = p_Var9;
        }
        else {
          p_Var6->_M_left = p_Var9;
        }
        p_Var9->_M_right = p_Var4;
        p_Var4->_M_parent = p_Var9;
        break;
      }
      p_Var9 = p_Var4->_M_right;
      p_Var8 = p_Var9->_M_left;
      p_Var6 = p_Var9;
      if (p_Var9->_M_color == _S_red) {
        p_Var9->_M_color = _S_black;
        p_Var4->_M_color = _S_red;
        p_Var4->_M_right = p_Var8;
        if (p_Var8 != (_Base_ptr)0x0) {
          p_Var8->_M_parent = p_Var4;
        }
        p_Var6 = p_Var4->_M_parent;
        p_Var9->_M_parent = p_Var6;
        if (p_Var4 == param_2->_M_parent) {
          param_2->_M_parent = p_Var9;
          p_Var6 = p_Var4->_M_right;
        }
        else if (p_Var4 == p_Var6->_M_left) {
          p_Var6->_M_left = p_Var9;
          p_Var6 = p_Var8;
        }
        else {
          p_Var6->_M_right = p_Var9;
          p_Var6 = p_Var4->_M_right;
        }
        p_Var9->_M_left = p_Var4;
        p_Var8 = p_Var6->_M_left;
        p_Var4->_M_parent = p_Var9;
      }
      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {
        local_14 = p_Var6->_M_right;
        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;
        p_Var9 = p_Var8->_M_right;
        p_Var8->_M_color = _S_black;
        p_Var6->_M_color = _S_red;
        p_Var6->_M_left = p_Var9;
        if (p_Var9 != (_Base_ptr)0x0) {
          p_Var9->_M_parent = p_Var6;
        }
        p_Var9 = p_Var6->_M_parent;
        p_Var8->_M_parent = p_Var9;
        if (p_Var6 == param_2->_M_parent) {
          param_2->_M_parent = p_Var8;
        }
        else if (p_Var6 == p_Var9->_M_right) {
          p_Var9->_M_right = p_Var8;
        }
        else {
          p_Var9->_M_left = p_Var8;
        }
        p_Var8->_M_right = p_Var6;
        p_Var6->_M_parent = p_Var8;
        p_Var9 = p_Var4->_M_right;
        local_14 = p_Var9->_M_right;
        p_Var9->_M_color = p_Var4->_M_color;
        p_Var4->_M_color = _S_black;
        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;
LAB_001e898a:
        p_Var6 = p_Var9->_M_left;
        p_Var4->_M_right = p_Var6;
        if (p_Var6 != (_Base_ptr)0x0) {
          p_Var6->_M_parent = p_Var4;
        }
        p_Var6 = p_Var4->_M_parent;
        p_Var9->_M_parent = p_Var6;
        if (p_Var4 == param_2->_M_parent) {
          param_2->_M_parent = p_Var9;
        }
        else if (p_Var4 == p_Var6->_M_left) {
          p_Var6->_M_left = p_Var9;
        }
        else {
          p_Var6->_M_right = p_Var9;
        }
        p_Var9->_M_left = p_Var4;
        p_Var4->_M_parent = p_Var9;
        break;
      }
      local_14 = p_Var6->_M_right;
      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {
LAB_001e8974:
        p_Var9 = p_Var4->_M_right;
        p_Var6->_M_color = p_Var4->_M_color;
        p_Var4->_M_color = _S_black;
LAB_001e8981:
        local_14->_M_color = _S_black;
        goto LAB_001e898a;
      }
LAB_001e88d6:
      p_Var6->_M_color = _S_red;
      p_Var3 = p_Var4;
      p_Var4 = p_Var4->_M_parent;
    }
    if (p_Var3 != (_Rb_tree_node_base *)0x0) {
LAB_001e89c8:
      p_Var3->_M_color = _S_black;
      return;
    }
  }
  return;
}



void FUN_001e8780(int *param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  int *local_14;
  
  piVar5 = (int *)param_1[2];
  piVar4 = (int *)param_1[3];
  piVar1 = piVar4;
  if (piVar5 == (int *)0x0) {
LAB_001e8a48:
    piVar2 = (int *)param_1[1];
    if (piVar1 != (int *)0x0) goto LAB_001e87a6;
    piVar1 = (int *)0x0;
  }
  else {
    if (piVar4 != (int *)0x0) {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)piVar3[2];
      } while ((int *)piVar3[2] != (int *)0x0);
      piVar1 = (int *)piVar3[3];
      if (piVar3 != param_1) {
        piVar5[1] = (int)piVar3;
        piVar3[2] = (int)piVar5;
        piVar2 = piVar3;
        if (piVar3 != piVar4) {
          piVar2 = (int *)piVar3[1];
          piVar5 = piVar2;
          if (piVar1 != (int *)0x0) {
            piVar1[1] = (int)piVar2;
            piVar5 = (int *)piVar3[1];
          }
          piVar5[2] = (int)piVar1;
          piVar3[3] = (int)piVar4;
          *(int **)(param_1[3] + 4) = piVar3;
        }
        if (*(int **)(param_2 + 4) == param_1) {
          *(int **)(param_2 + 4) = piVar3;
          iVar6 = param_1[1];
        }
        else {
          iVar6 = param_1[1];
          if (*(int **)(iVar6 + 8) == param_1) {
            *(int **)(iVar6 + 8) = piVar3;
          }
          else {
            *(int **)(iVar6 + 0xc) = piVar3;
          }
        }
        piVar3[1] = iVar6;
        iVar6 = *piVar3;
        *piVar3 = *param_1;
        *param_1 = iVar6;
        goto LAB_001e885e;
      }
      goto LAB_001e8a48;
    }
    piVar2 = (int *)param_1[1];
    piVar1 = piVar5;
LAB_001e87a6:
    piVar1[1] = (int)piVar2;
  }
  if (*(int **)(param_2 + 4) == param_1) {
    *(int **)(param_2 + 4) = piVar1;
  }
  else {
    iVar6 = param_1[1];
    if (*(int **)(iVar6 + 8) == param_1) {
      *(int **)(iVar6 + 8) = piVar1;
    }
    else {
      *(int **)(iVar6 + 0xc) = piVar1;
    }
  }
  if (*(int **)(param_2 + 8) == param_1) {
    piVar5 = piVar1;
    if (param_1[3] == 0) {
      *(int *)(param_2 + 8) = param_1[1];
    }
    else {
      do {
        piVar4 = piVar5;
        piVar5 = (int *)piVar4[2];
      } while (piVar5 != (int *)0x0);
      *(int **)(param_2 + 8) = piVar4;
    }
  }
  iVar6 = *param_1;
  if (*(int **)(param_2 + 0xc) == param_1) {
    piVar5 = piVar1;
    if (param_1[2] == 0) {
      *(int *)(param_2 + 0xc) = param_1[1];
    }
    else {
      do {
        piVar4 = piVar5;
        piVar5 = (int *)piVar4[3];
      } while (piVar5 != (int *)0x0);
      *(int **)(param_2 + 0xc) = piVar4;
    }
  }
LAB_001e885e:
  if (iVar6 != 0) {
    while (*(int **)(param_2 + 4) != piVar1) {
      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;
      piVar5 = (int *)piVar2[2];
      if (piVar5 != piVar1) {
        piVar4 = (int *)piVar5[3];
        piVar3 = piVar5;
        if (*piVar5 == 0) {
          *piVar5 = 1;
          *piVar2 = 0;
          piVar2[2] = (int)piVar4;
          if (piVar4 != (int *)0x0) {
            piVar4[1] = (int)piVar2;
          }
          iVar6 = piVar2[1];
          piVar5[1] = iVar6;
          if (piVar2 == *(int **)(param_2 + 4)) {
            *(int **)(param_2 + 4) = piVar5;
            piVar3 = (int *)piVar2[2];
          }
          else if (piVar2 == *(int **)(iVar6 + 0xc)) {
            *(int **)(iVar6 + 0xc) = piVar5;
            piVar3 = piVar4;
          }
          else {
            *(int **)(iVar6 + 8) = piVar5;
            piVar3 = (int *)piVar2[2];
          }
          piVar5[3] = (int)piVar2;
          piVar4 = (int *)piVar3[3];
          piVar2[1] = (int)piVar5;
        }
        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {
          local_14 = (int *)piVar3[2];
          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;
LAB_001e8af2:
          piVar5 = (int *)piVar2[2];
          *piVar3 = *piVar2;
          *piVar2 = 1;
LAB_001e8aff:
          *local_14 = 1;
        }
        else {
          local_14 = (int *)piVar3[2];
          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;
          iVar6 = piVar4[2];
          *piVar4 = 1;
          *piVar3 = 0;
          piVar3[3] = iVar6;
          if (iVar6 != 0) {
            *(int **)(iVar6 + 4) = piVar3;
          }
          iVar6 = piVar3[1];
          piVar4[1] = iVar6;
          if (piVar3 == *(int **)(param_2 + 4)) {
            *(int **)(param_2 + 4) = piVar4;
          }
          else if (piVar3 == *(int **)(iVar6 + 8)) {
            *(int **)(iVar6 + 8) = piVar4;
          }
          else {
            *(int **)(iVar6 + 0xc) = piVar4;
          }
          piVar4[2] = (int)piVar3;
          piVar3[1] = (int)piVar4;
          piVar5 = (int *)piVar2[2];
          local_14 = (int *)piVar5[2];
          *piVar5 = *piVar2;
          *piVar2 = 1;
          if (local_14 != (int *)0x0) goto LAB_001e8aff;
        }
        iVar6 = piVar5[3];
        piVar2[2] = iVar6;
        if (iVar6 != 0) {
          *(int **)(iVar6 + 4) = piVar2;
        }
        iVar6 = piVar2[1];
        piVar5[1] = iVar6;
        if (piVar2 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar5;
        }
        else if (piVar2 == *(int **)(iVar6 + 0xc)) {
          *(int **)(iVar6 + 0xc) = piVar5;
        }
        else {
          *(int **)(iVar6 + 8) = piVar5;
        }
        piVar5[3] = (int)piVar2;
        piVar2[1] = (int)piVar5;
        break;
      }
      piVar5 = (int *)piVar2[3];
      piVar4 = (int *)piVar5[2];
      piVar3 = piVar5;
      if (*piVar5 == 0) {
        *piVar5 = 1;
        *piVar2 = 0;
        piVar2[3] = (int)piVar4;
        if (piVar4 != (int *)0x0) {
          piVar4[1] = (int)piVar2;
        }
        iVar6 = piVar2[1];
        piVar5[1] = iVar6;
        if (piVar2 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar5;
          piVar3 = (int *)piVar2[3];
        }
        else if (piVar2 == *(int **)(iVar6 + 8)) {
          *(int **)(iVar6 + 8) = piVar5;
          piVar3 = piVar4;
        }
        else {
          *(int **)(iVar6 + 0xc) = piVar5;
          piVar3 = (int *)piVar2[3];
        }
        piVar5[2] = (int)piVar2;
        piVar4 = (int *)piVar3[2];
        piVar2[1] = (int)piVar5;
      }
      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {
        local_14 = (int *)piVar3[3];
        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;
        iVar6 = piVar4[3];
        *piVar4 = 1;
        *piVar3 = 0;
        piVar3[2] = iVar6;
        if (iVar6 != 0) {
          *(int **)(iVar6 + 4) = piVar3;
        }
        iVar6 = piVar3[1];
        piVar4[1] = iVar6;
        if (piVar3 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar4;
        }
        else if (piVar3 == *(int **)(iVar6 + 0xc)) {
          *(int **)(iVar6 + 0xc) = piVar4;
        }
        else {
          *(int **)(iVar6 + 8) = piVar4;
        }
        piVar4[3] = (int)piVar3;
        piVar3[1] = (int)piVar4;
        piVar5 = (int *)piVar2[3];
        local_14 = (int *)piVar5[3];
        *piVar5 = *piVar2;
        *piVar2 = 1;
        if (local_14 != (int *)0x0) goto LAB_001e8981;
LAB_001e898a:
        iVar6 = piVar5[2];
        piVar2[3] = iVar6;
        if (iVar6 != 0) {
          *(int **)(iVar6 + 4) = piVar2;
        }
        iVar6 = piVar2[1];
        piVar5[1] = iVar6;
        if (piVar2 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar5;
        }
        else if (piVar2 == *(int **)(iVar6 + 8)) {
          *(int **)(iVar6 + 8) = piVar5;
        }
        else {
          *(int **)(iVar6 + 0xc) = piVar5;
        }
        piVar5[2] = (int)piVar2;
        piVar2[1] = (int)piVar5;
        break;
      }
      local_14 = (int *)piVar3[3];
      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {
LAB_001e8974:
        piVar5 = (int *)piVar2[3];
        *piVar3 = *piVar2;
        *piVar2 = 1;
LAB_001e8981:
        *local_14 = 1;
        goto LAB_001e898a;
      }
LAB_001e88d6:
      *piVar3 = 0;
      piVar1 = piVar2;
      piVar2 = (int *)piVar2[1];
    }
    if (piVar1 != (int *)0x0) {
LAB_001e89c8:
      *piVar1 = 1;
      return;
    }
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x18]
MOV ESI,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [EAX + 0x8]
MOV EBP,dword ptr [EAX + 0xc]
TEST EDI,EDI
JZ 0x001e8a48
MOV EBX,EBP
TEST EBP,EBP
JNZ 0x001e8802
MOV EDX,dword ptr [EAX + 0x4]
MOV dword ptr [EDI + 0x4],EDX
MOV ECX,EDI
CMP dword ptr [ESI + 0x4],EAX
JZ 0x001e8a88
MOV EBX,dword ptr [EAX + 0x4]
CMP dword ptr [EBX + 0x8],EAX
JZ 0x001e8a2a
MOV dword ptr [EBX + 0xc],ECX
CMP dword ptr [ESI + 0x8],EAX
JZ 0x001e8a60
MOV EDI,dword ptr [EAX]
CMP dword ptr [ESI + 0xc],EAX
JNZ 0x001e885e
MOV EBX,dword ptr [EAX + 0x8]
MOV EBP,ECX
TEST EBX,EBX
JNZ 0x001e87ea
JMP 0x001e8bbc
MOV EBP,EBX
MOV EBX,dword ptr [EBP + 0xc]
TEST EBX,EBX
JNZ 0x001e87e8
MOV dword ptr [ESI + 0xc],EBP
JMP 0x001e885e
MOV EBX,EDX
MOV EDX,dword ptr [EBX + 0x8]
TEST EDX,EDX
JNZ 0x001e8800
MOV ECX,dword ptr [EBX + 0xc]
CMP EBX,EAX
JZ 0x001e8a40
MOV dword ptr [EDI + 0x4],EBX
MOV EDX,EBX
MOV dword ptr [EBX + 0x8],EDI
CMP EBX,EBP
JZ 0x001e883b
MOV EDX,dword ptr [EBX + 0x4]
MOV EDI,EDX
TEST ECX,ECX
JZ 0x001e882f
MOV dword ptr [ECX + 0x4],EDX
MOV EDI,dword ptr [EBX + 0x4]
MOV dword ptr [EDI + 0x8],ECX
MOV dword ptr [EBX + 0xc],EBP
MOV EDI,dword ptr [EAX + 0xc]
MOV dword ptr [EDI + 0x4],EBX
CMP dword ptr [ESI + 0x4],EAX
JZ 0x001e89e0
MOV EDI,dword ptr [EAX + 0x4]
CMP dword ptr [EDI + 0x8],EAX
JZ 0x001e8a38
MOV dword ptr [EDI + 0xc],EBX
MOV dword ptr [EBX + 0x4],EDI
MOV EBP,dword ptr [EAX]
MOV EDI,dword ptr [EBX]
MOV dword ptr [EBX],EBP
MOV dword ptr [EAX],EDI
TEST EDI,EDI
JNZ 0x001e88e3
ADD ESP,0x4
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [EBX]
MOV EBP,dword ptr [EBX + 0xc]
TEST EDI,EDI
JNZ 0x001e88b8
MOV dword ptr [EBX],0x1
MOV dword ptr [EDX],0x0
MOV dword ptr [EDX + 0x8],EBP
TEST EBP,EBP
JZ 0x001e888f
MOV dword ptr [EBP + 0x4],EDX
MOV EDI,dword ptr [EDX + 0x4]
MOV dword ptr [EBX + 0x4],EDI
CMP EDX,dword ptr [ESI + 0x4]
JZ 0x001e89f0
CMP EDX,dword ptr [EDI + 0xc]
JZ 0x001e8a00
MOV dword ptr [EDI + 0x8],EBX
MOV EDI,dword ptr [EDX + 0x8]
MOV dword ptr [EBX + 0xc],EDX
MOV EBP,dword ptr [EDI + 0xc]
MOV dword ptr [EDX + 0x4],EBX
MOV EBX,EDI
TEST EBP,EBP
JZ 0x001e88c6
CMP dword ptr [EBP],0x1
JNZ 0x001e8a90
MOV EDI,dword ptr [EBX + 0x8]
TEST EDI,EDI
JZ 0x001e88d6
CMP dword ptr [EDI],0x1
JNZ 0x001e8aef
MOV dword ptr [EBX],0x0
MOV EBX,dword ptr [EDX + 0x4]
MOV ECX,EDX
MOV EDX,EBX
CMP dword ptr [ESI + 0x4],ECX
JZ 0x001e89c0
TEST ECX,ECX
JZ 0x001e88f9
CMP dword ptr [ECX],0x1
JNZ 0x001e89c8
MOV EBX,dword ptr [EDX + 0x8]
CMP EBX,ECX
JNZ 0x001e8870
MOV EBX,dword ptr [EDX + 0xc]
MOV EDI,dword ptr [EBX]
MOV EBP,dword ptr [EBX + 0x8]
TEST EDI,EDI
JNZ 0x001e894f
MOV dword ptr [EBX],0x1
MOV dword ptr [EDX],0x0
MOV dword ptr [EDX + 0xc],EBP
TEST EBP,EBP
JZ 0x001e8926
MOV dword ptr [EBP + 0x4],EDX
MOV EDI,dword ptr [EDX + 0x4]
MOV dword ptr [EBX + 0x4],EDI
CMP EDX,dword ptr [ESI + 0x4]
JZ 0x001e8a10
CMP EDX,dword ptr [EDI + 0x8]
JZ 0x001e8a20
MOV dword ptr [EDI + 0xc],EBX
MOV EDI,dword ptr [EDX + 0xc]
MOV dword ptr [EBX + 0x8],EDX
MOV EBP,dword ptr [EDI + 0x8]
MOV dword ptr [EDX + 0x4],EBX
MOV EBX,EDI
TEST EBP,EBP
JZ 0x001e895d
CMP dword ptr [EBP],0x1
JNZ 0x001e8b52
MOV EDI,dword ptr [EBX + 0xc]
TEST EDI,EDI
JZ 0x001e88d6
CMP dword ptr [EDI],0x1
JZ 0x001e88d6
MOV dword ptr [ESP],EDI
MOV EDI,dword ptr [EDX]
MOV EBP,dword ptr [EDX + 0xc]
MOV dword ptr [EBX],EDI
MOV dword ptr [EDX],0x1
MOV EDI,dword ptr [ESP]
MOV dword ptr [EDI],0x1
MOV EBX,dword ptr [EBP + 0x8]
MOV dword ptr [EDX + 0xc],EBX
TEST EBX,EBX
JZ 0x001e8997
MOV dword ptr [EBX + 0x4],EDX
MOV EBX,dword ptr [EDX + 0x4]
MOV dword ptr [EBP + 0x4],EBX
CMP EDX,dword ptr [ESI + 0x4]
JZ 0x001e8bda
CMP EDX,dword ptr [EBX + 0x8]
JZ 0x001e8bf0
MOV dword ptr [EBX + 0xc],EBP
MOV dword ptr [EBP + 0x8],EDX
MOV dword ptr [EDX + 0x4],EBP
LEA ESI,[ESI]
NOP
TEST ECX,ECX
JZ 0x001e8866
MOV dword ptr [ECX],0x1
ADD ESP,0x4
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESI + 0x4],EBX
MOV EDI,dword ptr [EAX + 0x4]
JMP 0x001e8853
MOV dword ptr [ESI + 0x4],EBX
MOV EDI,dword ptr [EDX + 0x8]
JMP 0x001e88ad
MOV dword ptr [EDI + 0xc],EBX
MOV EDI,EBP
JMP 0x001e88ad
MOV dword ptr [ESI + 0x4],EBX
MOV EDI,dword ptr [EDX + 0xc]
JMP 0x001e8944
MOV dword ptr [EDI + 0x8],EBX
MOV EDI,EBP
JMP 0x001e8944
MOV dword ptr [EBX + 0x8],ECX
JMP 0x001e87c3
MOV dword ptr [EDI + 0x8],EBX
JMP 0x001e8853
MOV EBP,ECX
LEA ESI,[ESI]
MOV EDX,dword ptr [EAX + 0x4]
TEST EBP,EBP
JNZ 0x001e8c02
XOR ECX,ECX
JMP 0x001e87ab
MOV EBP,dword ptr [EAX + 0xc]
MOV EDI,ECX
TEST EBP,EBP
JNZ 0x001e8a72
JMP 0x001e8bc7
MOV EDI,EBX
MOV EBX,dword ptr [EDI + 0x8]
TEST EBX,EBX
JNZ 0x001e8a70
MOV dword ptr [ESI + 0x8],EDI
JMP 0x001e87cc
MOV dword ptr [ESI + 0x4],ECX
JMP 0x001e87c3
MOV EDI,dword ptr [EBX + 0x8]
MOV dword ptr [ESP],EDI
TEST EDI,EDI
JNZ 0x001e8b37
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP],0x1
MOV dword ptr [EBX],0x0
MOV dword ptr [EBX + 0xc],EDI
TEST EDI,EDI
JZ 0x001e8ab8
MOV dword ptr [EDI + 0x4],EBX
MOV EDI,dword ptr [EBX + 0x4]
MOV dword ptr [EBP + 0x4],EDI
CMP EBX,dword ptr [ESI + 0x4]
JZ 0x001e8bd2
CMP EBX,dword ptr [EDI + 0x8]
JZ 0x001e8b48
MOV dword ptr [EDI + 0xc],EBP
MOV dword ptr [EBP + 0x8],EBX
MOV dword ptr [EBX + 0x4],EBP
MOV EBP,dword ptr [EDX + 0x8]
MOV EBX,dword ptr [EDX]
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP],EBX
MOV dword ptr [ESP],EDI
MOV dword ptr [EDX],0x1
TEST EDI,EDI
JZ 0x001e8b08
JMP 0x001e8aff
MOV dword ptr [ESP],EDI
MOV EDI,dword ptr [EDX]
MOV EBP,dword ptr [EDX + 0x8]
MOV dword ptr [EBX],EDI
MOV dword ptr [EDX],0x1
MOV EDI,dword ptr [ESP]
MOV dword ptr [EDI],0x1
MOV EBX,dword ptr [EBP + 0xc]
MOV dword ptr [EDX + 0x8],EBX
TEST EBX,EBX
JZ 0x001e8b15
MOV dword ptr [EBX + 0x4],EDX
MOV EBX,dword ptr [EDX + 0x4]
MOV dword ptr [EBP + 0x4],EBX
CMP EDX,dword ptr [ESI + 0x4]
JZ 0x001e8b4d
CMP EDX,dword ptr [EBX + 0xc]
JZ 0x001e8bb4
MOV dword ptr [EBX + 0x8],EBP
MOV dword ptr [EBP + 0xc],EDX
MOV dword ptr [EDX + 0x4],EBP
JMP 0x001e89c0
CMP dword ptr [EDI],0x1
JZ 0x001e8a9e
JMP 0x001e8af2
MOV dword ptr [EDI + 0x8],EBP
JMP 0x001e8acf
MOV dword ptr [ESI + 0x4],EBP
JMP 0x001e8b2c
MOV EDI,dword ptr [EBX + 0xc]
MOV dword ptr [ESP],EDI
TEST EDI,EDI
JNZ 0x001e8be2
MOV EDI,dword ptr [EBP + 0xc]
MOV dword ptr [EBP],0x1
MOV dword ptr [EBX],0x0
MOV dword ptr [EBX + 0x8],EDI
TEST EDI,EDI
JZ 0x001e8b7a
MOV dword ptr [EDI + 0x4],EBX
MOV EDI,dword ptr [EBX + 0x4]
MOV dword ptr [EBP + 0x4],EDI
CMP EBX,dword ptr [ESI + 0x4]
JZ 0x001e8bf8
CMP EBX,dword ptr [EDI + 0xc]
JZ 0x001e8bfd
MOV dword ptr [EDI + 0x8],EBP
MOV dword ptr [EBP + 0xc],EBX
MOV dword ptr [EBX + 0x4],EBP
MOV EBP,dword ptr [EDX + 0xc]
MOV EBX,dword ptr [EDX]
MOV EDI,dword ptr [EBP + 0xc]
MOV dword ptr [EBP],EBX
MOV dword ptr [ESP],EDI
MOV dword ptr [EDX],0x1
TEST EDI,EDI
JZ 0x001e898a
JMP 0x001e8981
MOV dword ptr [EBX + 0xc],EBP
JMP 0x001e8b2c
MOV EBX,dword ptr [EAX + 0x4]
MOV dword ptr [ESI + 0xc],EBX
JMP 0x001e885e
MOV EBX,dword ptr [EAX + 0x4]
MOV dword ptr [ESI + 0x8],EBX
JMP 0x001e87cc
MOV dword ptr [ESI + 0x4],EBP
JMP 0x001e8acf
MOV dword ptr [ESI + 0x4],EBP
JMP 0x001e89b2
CMP dword ptr [EDI],0x1
JZ 0x001e8b60
JMP 0x001e8974
MOV dword ptr [EBX + 0x8],EBP
JMP 0x001e89b2
MOV dword ptr [ESI + 0x4],EBP
JMP 0x001e8b8d
MOV dword ptr [EDI + 0xc],EBP
JMP 0x001e8b8d
MOV EDI,EBP
JMP 0x001e87a6
(translation_unit "void FUN_001e8780(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_001e8780(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001e8780(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *local_14;" primitive_type (pointer_declarator "*local_14" * identifier) ;) (expression_statement "piVar5 = (int *)param_1[2];" (assignment_expression "piVar5 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)param_1[3];" (assignment_expression "piVar4 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" identifier = identifier) ;) (if_statement "if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }" { (labeled_statement "LAB_001e8a48:\n    piVar2 = (int *)param_1[1];" statement_identifier : (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;)) (if_statement "if (piVar1 != (int *)0x0) goto LAB_001e87a6;" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e87a6;" goto statement_identifier ;)) (expression_statement "piVar1 = (int *)0x0;" (assignment_expression "piVar1 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" else (compound_statement "{\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" { (if_statement "if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" { (do_statement "do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);" do (compound_statement "{\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      }" { (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" identifier = identifier) ;) (expression_statement "piVar1 = (int *)piVar3[2];" (assignment_expression "piVar1 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "((int *)piVar3[2] != (int *)0x0)" ( (binary_expression "(int *)piVar3[2] != (int *)0x0" (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar1 = (int *)piVar3[3];" (assignment_expression "piVar1 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (if_statement "if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }" if (parenthesized_expression "(piVar3 != param_1)" ( (binary_expression "piVar3 != param_1" identifier != identifier) )) (compound_statement "{\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }" { (expression_statement "piVar5[1] = (int)piVar3;" (assignment_expression "piVar5[1] = (int)piVar3" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[2] = (int)piVar5;" (assignment_expression "piVar3[2] = (int)piVar5" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar2 = piVar3;" (assignment_expression "piVar2 = piVar3" identifier = identifier) ;) (if_statement "if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }" if (parenthesized_expression "(piVar3 != piVar4)" ( (binary_expression "piVar3 != piVar4" identifier != identifier) )) (compound_statement "{\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }" { (expression_statement "piVar2 = (int *)piVar3[1];" (assignment_expression "piVar2 = (int *)piVar3[1]" identifier = (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" identifier = identifier) ;) (if_statement "if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }" { (expression_statement "piVar1[1] = (int)piVar2;" (assignment_expression "piVar1[1] = (int)piVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = (int *)piVar3[1];" (assignment_expression "piVar5 = (int *)piVar3[1]" identifier = (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar5[2] = (int)piVar1;" (assignment_expression "piVar5[2] = (int)piVar1" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[3] = (int)piVar4;" (assignment_expression "piVar3[3] = (int)piVar4" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int **)(param_1[3] + 4) = piVar3;" (assignment_expression "*(int **)(param_1[3] + 4) = piVar3" (pointer_expression "*(int **)(param_1[3] + 4)" * (cast_expression "(int **)(param_1[3] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[3] + 4)" ( (binary_expression "param_1[3] + 4" (subscript_expression "param_1[3]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" if (parenthesized_expression "(*(int **)(param_2 + 4) == param_1)" ( (binary_expression "*(int **)(param_2 + 4) == param_1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar3;" (assignment_expression "*(int **)(param_2 + 4) = piVar3" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" else (compound_statement "{\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" { (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }" if (parenthesized_expression "(*(int **)(iVar6 + 8) == param_1)" ( (binary_expression "*(int **)(iVar6 + 8) == param_1" (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) )) (compound_statement "{\n            *(int **)(iVar6 + 8) = piVar3;\n          }" { (expression_statement "*(int **)(iVar6 + 8) = piVar3;" (assignment_expression "*(int **)(iVar6 + 8) = piVar3" (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 + 0xc) = piVar3;\n          }" else (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar3;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar3" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) }))) (expression_statement "piVar3[1] = iVar6;" (assignment_expression "piVar3[1] = iVar6" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar6 = *piVar3;" (assignment_expression "iVar6 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = *param_1;" (assignment_expression "*piVar3 = *param_1" (pointer_expression "*piVar3" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = iVar6;" (assignment_expression "*param_1 = iVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (goto_statement "goto LAB_001e885e;" goto statement_identifier ;) })) (goto_statement "goto LAB_001e8a48;" goto statement_identifier ;) })) (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" identifier = identifier) ;) (labeled_statement "LAB_001e87a6:\n    piVar1[1] = (int)piVar2;" statement_identifier : (expression_statement "piVar1[1] = (int)piVar2;" (assignment_expression "piVar1[1] = (int)piVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) }))) (if_statement "if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 4) == param_1)" ( (binary_expression "*(int **)(param_2 + 4) == param_1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    *(int **)(param_2 + 4) = piVar1;\n  }" { (expression_statement "*(int **)(param_2 + 4) = piVar1;" (assignment_expression "*(int **)(param_2 + 4) = piVar1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" else (compound_statement "{\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" { (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }" if (parenthesized_expression "(*(int **)(iVar6 + 8) == param_1)" ( (binary_expression "*(int **)(iVar6 + 8) == param_1" (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) )) (compound_statement "{\n      *(int **)(iVar6 + 8) = piVar1;\n    }" { (expression_statement "*(int **)(iVar6 + 8) = piVar1;" (assignment_expression "*(int **)(iVar6 + 8) = piVar1" (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 + 0xc) = piVar1;\n    }" else (compound_statement "{\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar1;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar1" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) }))) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 8) == param_1)" ( (binary_expression "*(int **)(param_2 + 8) == param_1" (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }" { (expression_statement "piVar5 = piVar1;" (assignment_expression "piVar5 = piVar1" identifier = identifier) ;) (if_statement "if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" if (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      *(int *)(param_2 + 8) = param_1[1];\n    }" { (expression_statement "*(int *)(param_2 + 8) = param_1[1];" (assignment_expression "*(int *)(param_2 + 8) = param_1[1]" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" else (compound_statement "{\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" { (do_statement "do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);" do (compound_statement "{\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      }" { (expression_statement "piVar4 = piVar5;" (assignment_expression "piVar4 = piVar5" identifier = identifier) ;) (expression_statement "piVar5 = (int *)piVar4[2];" (assignment_expression "piVar5 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 8) = piVar4;" (assignment_expression "*(int **)(param_2 + 8) = piVar4" (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 0xc) == param_1)" ( (binary_expression "*(int **)(param_2 + 0xc) == param_1" (pointer_expression "*(int **)(param_2 + 0xc)" * (cast_expression "(int **)(param_2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }" { (expression_statement "piVar5 = piVar1;" (assignment_expression "piVar5 = piVar1" identifier = identifier) ;) (if_statement "if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" if (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }" { (expression_statement "*(int *)(param_2 + 0xc) = param_1[1];" (assignment_expression "*(int *)(param_2 + 0xc) = param_1[1]" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" else (compound_statement "{\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" { (do_statement "do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);" do (compound_statement "{\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      }" { (expression_statement "piVar4 = piVar5;" (assignment_expression "piVar4 = piVar5" identifier = identifier) ;) (expression_statement "piVar5 = (int *)piVar4[3];" (assignment_expression "piVar5 = (int *)piVar4[3]" identifier = (cast_expression "(int *)piVar4[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[3]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 0xc) = piVar4;" (assignment_expression "*(int **)(param_2 + 0xc) = piVar4" (pointer_expression "*(int **)(param_2 + 0xc)" * (cast_expression "(int **)(param_2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) })) (labeled_statement "LAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" statement_identifier : (if_statement "if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" { (while_statement "while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }" while (parenthesized_expression "(*(int **)(param_2 + 4) != piVar1)" ( (binary_expression "*(int **)(param_2 + 4) != piVar1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }" { (if_statement "if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;" if (parenthesized_expression "((piVar1 != (int *)0x0) && (*piVar1 != 1))" ( (binary_expression "(piVar1 != (int *)0x0) && (*piVar1 != 1)" (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar1 != 1)" ( (binary_expression "*piVar1 != 1" (pointer_expression "*piVar1" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_001e89c8;" goto statement_identifier ;)) (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" if (parenthesized_expression "(piVar5 != piVar1)" ( (binary_expression "piVar5 != piVar1" identifier != identifier) )) (compound_statement "{\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" { (expression_statement "piVar4 = (int *)piVar5[3];" (assignment_expression "piVar4 = (int *)piVar5[3]" identifier = (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (expression_statement "piVar2[2] = (int)piVar4;" (assignment_expression "piVar2[2] = (int)piVar4" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            piVar4[1] = (int)piVar2;\n          }" { (expression_statement "piVar4[1] = (int)piVar2;" (assignment_expression "piVar4[1] = (int)piVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 0xc))" ( (binary_expression "piVar2 == *(int **)(iVar6 + 0xc)" identifier == (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) }) (else_clause "else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" else (compound_statement "{\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }))))) (expression_statement "piVar5[3] = (int)piVar2;" (assignment_expression "piVar5[3] = (int)piVar2" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)piVar3[3];" (assignment_expression "piVar4 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" if (parenthesized_expression "((piVar4 == (int *)0x0) || (*piVar4 == 1))" ( (binary_expression "(piVar4 == (int *)0x0) || (*piVar4 == 1)" (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar4 == 1)" ( (binary_expression "*piVar4 == 1" (pointer_expression "*piVar4" * identifier) == number_literal) ))) )) (compound_statement "{\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }" { (expression_statement "local_14 = (int *)piVar3[2];" (assignment_expression "local_14 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;" if (parenthesized_expression "((local_14 == (int *)0x0) || (*local_14 == 1))" ( (binary_expression "(local_14 == (int *)0x0) || (*local_14 == 1)" (parenthesized_expression "(local_14 == (int *)0x0)" ( (binary_expression "local_14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*local_14 == 1)" ( (binary_expression "*local_14 == 1" (pointer_expression "*local_14" * identifier) == number_literal) ))) )) (goto_statement "goto LAB_001e88d6;" goto statement_identifier ;)) (labeled_statement "LAB_001e8af2:\n          piVar5 = (int *)piVar2[2];" statement_identifier : (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;)) (expression_statement "*piVar3 = *piVar2;" (assignment_expression "*piVar3 = *piVar2" (pointer_expression "*piVar3" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (labeled_statement "LAB_001e8aff:\n          *local_14 = 1;" statement_identifier : (expression_statement "*local_14 = 1;" (assignment_expression "*local_14 = 1" (pointer_expression "*local_14" * identifier) = number_literal) ;)) }) (else_clause "else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" else (compound_statement "{\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" { (expression_statement "local_14 = (int *)piVar3[2];" (assignment_expression "local_14 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;" if (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" ( (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_14 != 1)" ( (binary_expression "*local_14 != 1" (pointer_expression "*local_14" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_001e8af2;" goto statement_identifier ;)) (expression_statement "iVar6 = piVar4[2];" (assignment_expression "iVar6 = piVar4[2]" identifier = (subscript_expression "piVar4[2]" identifier [ number_literal ])) ;) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "piVar3[3] = iVar6;" (assignment_expression "piVar3[3] = iVar6" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n            *(int **)(iVar6 + 4) = piVar3;\n          }" { (expression_statement "*(int **)(iVar6 + 4) = piVar3;" (assignment_expression "*(int **)(iVar6 + 4) = piVar3" (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 "iVar6 = piVar3[1];" (assignment_expression "iVar6 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "piVar4[1] = iVar6;" (assignment_expression "piVar4[1] = iVar6" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 4))" ( (binary_expression "piVar3 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int **)(param_2 + 4) = piVar4;\n          }" { (expression_statement "*(int **)(param_2 + 4) = piVar4;" (assignment_expression "*(int **)(param_2 + 4) = piVar4" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" else (if_statement "if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" if (parenthesized_expression "(piVar3 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar3 == *(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) = piVar4;\n          }" { (expression_statement "*(int **)(iVar6 + 8) = piVar4;" (assignment_expression "*(int **)(iVar6 + 8) = piVar4" (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 + 0xc) = piVar4;\n          }" else (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar4[2] = (int)piVar3;" (assignment_expression "piVar4[2] = (int)piVar3" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = (int)piVar4;" (assignment_expression "piVar3[1] = (int)piVar4" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (expression_statement "local_14 = (int *)piVar5[2];" (assignment_expression "local_14 = (int *)piVar5[2]" identifier = (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) ;) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (if_statement "if (local_14 != (int *)0x0) goto LAB_001e8aff;" if (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e8aff;" goto statement_identifier ;)) }))) (expression_statement "iVar6 = piVar5[3];" (assignment_expression "iVar6 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "piVar2[2] = iVar6;" (assignment_expression "piVar2[2] = iVar6" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar2;\n        }" { (expression_statement "*(int **)(iVar6 + 4) = piVar2;" (assignment_expression "*(int **)(iVar6 + 4) = piVar2" (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 "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 0xc))" ( (binary_expression "piVar2 == *(int **)(iVar6 + 0xc)" identifier == (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 8) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar5[3] = (int)piVar2;" (assignment_expression "piVar5[3] = (int)piVar2" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)piVar5[2];" (assignment_expression "piVar4 = (int *)piVar5[2]" identifier = (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (expression_statement "piVar2[3] = (int)piVar4;" (assignment_expression "piVar2[3] = (int)piVar4" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar4[1] = (int)piVar2;\n        }" { (expression_statement "piVar4[1] = (int)piVar2;" (assignment_expression "piVar4[1] = (int)piVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = (int *)piVar2[3];" (assignment_expression "piVar3 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar2 == *(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) = piVar5;\n          piVar3 = piVar4;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) }) (else_clause "else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = (int *)piVar2[3];" (assignment_expression "piVar3 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) }))))) (expression_statement "piVar5[2] = (int)piVar2;" (assignment_expression "piVar5[2] = (int)piVar2" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)piVar3[2];" (assignment_expression "piVar4 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" if (parenthesized_expression "((piVar4 != (int *)0x0) && (*piVar4 != 1))" ( (binary_expression "(piVar4 != (int *)0x0) && (*piVar4 != 1)" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar4 != 1)" ( (binary_expression "*piVar4 != 1" (pointer_expression "*piVar4" * identifier) != number_literal) ))) )) (compound_statement "{\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" { (expression_statement "local_14 = (int *)piVar3[3];" (assignment_expression "local_14 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;" if (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" ( (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_14 != 1)" ( (binary_expression "*local_14 != 1" (pointer_expression "*local_14" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_001e8974;" goto statement_identifier ;)) (expression_statement "iVar6 = piVar4[3];" (assignment_expression "iVar6 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "piVar3[2] = iVar6;" (assignment_expression "piVar3[2] = iVar6" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar3;\n        }" { (expression_statement "*(int **)(iVar6 + 4) = piVar3;" (assignment_expression "*(int **)(iVar6 + 4) = piVar3" (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 "iVar6 = piVar3[1];" (assignment_expression "iVar6 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "piVar4[1] = iVar6;" (assignment_expression "piVar4[1] = iVar6" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 4))" ( (binary_expression "piVar3 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar4;\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar4;" (assignment_expression "*(int **)(param_2 + 4) = piVar4" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" else (if_statement "if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" if (parenthesized_expression "(piVar3 == *(int **)(iVar6 + 0xc))" ( (binary_expression "piVar3 == *(int **)(iVar6 + 0xc)" identifier == (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 8) = piVar4;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar4;" (assignment_expression "*(int **)(iVar6 + 8) = piVar4" (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 "piVar4[3] = (int)piVar3;" (assignment_expression "piVar4[3] = (int)piVar3" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = (int)piVar4;" (assignment_expression "piVar3[1] = (int)piVar4" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) (expression_statement "local_14 = (int *)piVar5[3];" (assignment_expression "local_14 = (int *)piVar5[3]" identifier = (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) ;) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (if_statement "if (local_14 != (int *)0x0) goto LAB_001e8981;" if (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e8981;" goto statement_identifier ;)) (labeled_statement "LAB_001e898a:\n        iVar6 = piVar5[2];" statement_identifier : (expression_statement "iVar6 = piVar5[2];" (assignment_expression "iVar6 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;)) (expression_statement "piVar2[3] = iVar6;" (assignment_expression "piVar2[3] = iVar6" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar2;\n        }" { (expression_statement "*(int **)(iVar6 + 4) = piVar2;" (assignment_expression "*(int **)(iVar6 + 4) = piVar2" (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 "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar2 == *(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) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 + 0xc) = piVar5;\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar5[2] = (int)piVar2;" (assignment_expression "piVar5[2] = (int)piVar2" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "local_14 = (int *)piVar3[3];" (assignment_expression "local_14 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }" if (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" ( (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_14 != 1)" ( (binary_expression "*local_14 != 1" (pointer_expression "*local_14" * identifier) != number_literal) ))) )) (compound_statement "{\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }" { (labeled_statement "LAB_001e8974:\n        piVar5 = (int *)piVar2[3];" statement_identifier : (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;)) (expression_statement "*piVar3 = *piVar2;" (assignment_expression "*piVar3 = *piVar2" (pointer_expression "*piVar3" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (labeled_statement "LAB_001e8981:\n        *local_14 = 1;" statement_identifier : (expression_statement "*local_14 = 1;" (assignment_expression "*local_14 = 1" (pointer_expression "*local_14" * identifier) = number_literal) ;)) (goto_statement "goto LAB_001e898a;" goto statement_identifier ;) })) (labeled_statement "LAB_001e88d6:\n      *piVar3 = 0;" statement_identifier : (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;)) (expression_statement "piVar1 = piVar2;" (assignment_expression "piVar1 = piVar2" identifier = identifier) ;) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) })) (if_statement "if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }" { (labeled_statement "LAB_001e89c8:\n      *piVar1 = 1;" statement_identifier : (expression_statement "*piVar1 = 1;" (assignment_expression "*piVar1 = 1" (pointer_expression "*piVar1" * identifier) = number_literal) ;)) (return_statement "return;" return ;) })) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) */\n\nvoid std::_Rb_tree_rebalance_for_erase(_Rb_tree_node_base *param_1,_Rb_tree_node_base *param_2)\n\n{\n  _Rb_tree_node_base *p_Var1;\n  _Rb_tree_node_base *p_Var2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  _Base_ptr p_Var8;\n  _Base_ptr p_Var9;\n  _Rb_tree_color _Var10;\n  _Base_ptr local_14;\n  \n  p_Var7 = param_1->_M_left;\n  p_Var1 = param_1->_M_right;\n  p_Var3 = p_Var1;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_001e8a48:\n    p_Var4 = param_1->_M_parent;\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) goto LAB_001e87a6;\n    p_Var3 = (_Rb_tree_node_base *)0x0;\n  }\n  else {\n    p_Var2 = p_Var1;\n    if (p_Var1 != (_Rb_tree_node_base *)0x0) {\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    p_Var4 = param_1->_M_parent;\n    p_Var3 = p_Var7;\nLAB_001e87a6:\n    p_Var3->_M_parent = p_Var4;\n  }\n  if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var3;\n  }\n  else {\n    p_Var9 = param_1->_M_parent;\n    if (p_Var9->_M_left == param_1) {\n      p_Var9->_M_left = p_Var3;\n    }\n    else {\n      p_Var9->_M_right = p_Var3;\n    }\n  }\n  if (param_2->_M_left == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_right == (_Base_ptr)0x0) {\n      param_2->_M_left = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }\n  }\n  _Var10 = param_1->_M_color;\n  if (param_2->_M_right == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_left == (_Base_ptr)0x0) {\n      param_2->_M_right = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }\n  }\nLAB_001e885e:\n  if (_Var10 != _S_red) {\n    while (param_2->_M_parent != p_Var3) {\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) {\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }\n  }\n  return;\n}\n\n" comment comment (function_definition "void std::_Rb_tree_rebalance_for_erase(_Rb_tree_node_base *param_1,_Rb_tree_node_base *param_2)\n\n{\n  _Rb_tree_node_base *p_Var1;\n  _Rb_tree_node_base *p_Var2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  _Base_ptr p_Var8;\n  _Base_ptr p_Var9;\n  _Rb_tree_color _Var10;\n  _Base_ptr local_14;\n  \n  p_Var7 = param_1->_M_left;\n  p_Var1 = param_1->_M_right;\n  p_Var3 = p_Var1;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_001e8a48:\n    p_Var4 = param_1->_M_parent;\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) goto LAB_001e87a6;\n    p_Var3 = (_Rb_tree_node_base *)0x0;\n  }\n  else {\n    p_Var2 = p_Var1;\n    if (p_Var1 != (_Rb_tree_node_base *)0x0) {\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    p_Var4 = param_1->_M_parent;\n    p_Var3 = p_Var7;\nLAB_001e87a6:\n    p_Var3->_M_parent = p_Var4;\n  }\n  if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var3;\n  }\n  else {\n    p_Var9 = param_1->_M_parent;\n    if (p_Var9->_M_left == param_1) {\n      p_Var9->_M_left = p_Var3;\n    }\n    else {\n      p_Var9->_M_right = p_Var3;\n    }\n  }\n  if (param_2->_M_left == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_right == (_Base_ptr)0x0) {\n      param_2->_M_left = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }\n  }\n  _Var10 = param_1->_M_color;\n  if (param_2->_M_right == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_left == (_Base_ptr)0x0) {\n      param_2->_M_right = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }\n  }\nLAB_001e885e:\n  if (_Var10 != _S_red) {\n    while (param_2->_M_parent != p_Var3) {\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) {\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }\n  }\n  return;\n}" primitive_type (ERROR "std::" identifier : :) (function_declarator "_Rb_tree_rebalance_for_erase(_Rb_tree_node_base *param_1,_Rb_tree_node_base *param_2)" identifier (parameter_list "(_Rb_tree_node_base *param_1,_Rb_tree_node_base *param_2)" ( (parameter_declaration "_Rb_tree_node_base *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "_Rb_tree_node_base *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  _Rb_tree_node_base *p_Var1;\n  _Rb_tree_node_base *p_Var2;\n  _Base_ptr p_Var3;\n  _Base_ptr p_Var4;\n  _Rb_tree_node_base *p_Var5;\n  _Base_ptr p_Var6;\n  _Rb_tree_node_base *p_Var7;\n  _Base_ptr p_Var8;\n  _Base_ptr p_Var9;\n  _Rb_tree_color _Var10;\n  _Base_ptr local_14;\n  \n  p_Var7 = param_1->_M_left;\n  p_Var1 = param_1->_M_right;\n  p_Var3 = p_Var1;\n  if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_001e8a48:\n    p_Var4 = param_1->_M_parent;\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) goto LAB_001e87a6;\n    p_Var3 = (_Rb_tree_node_base *)0x0;\n  }\n  else {\n    p_Var2 = p_Var1;\n    if (p_Var1 != (_Rb_tree_node_base *)0x0) {\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    p_Var4 = param_1->_M_parent;\n    p_Var3 = p_Var7;\nLAB_001e87a6:\n    p_Var3->_M_parent = p_Var4;\n  }\n  if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var3;\n  }\n  else {\n    p_Var9 = param_1->_M_parent;\n    if (p_Var9->_M_left == param_1) {\n      p_Var9->_M_left = p_Var3;\n    }\n    else {\n      p_Var9->_M_right = p_Var3;\n    }\n  }\n  if (param_2->_M_left == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_right == (_Base_ptr)0x0) {\n      param_2->_M_left = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }\n  }\n  _Var10 = param_1->_M_color;\n  if (param_2->_M_right == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_left == (_Base_ptr)0x0) {\n      param_2->_M_right = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }\n  }\nLAB_001e885e:\n  if (_Var10 != _S_red) {\n    while (param_2->_M_parent != p_Var3) {\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) {\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }\n  }\n  return;\n}" { (declaration "_Rb_tree_node_base *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "_Base_ptr p_Var3;" type_identifier identifier ;) (declaration "_Base_ptr p_Var4;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "_Base_ptr p_Var6;" type_identifier identifier ;) (declaration "_Rb_tree_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "_Base_ptr p_Var8;" type_identifier identifier ;) (declaration "_Base_ptr p_Var9;" type_identifier identifier ;) (declaration "_Rb_tree_color _Var10;" type_identifier identifier ;) (declaration "_Base_ptr local_14;" type_identifier identifier ;) (expression_statement "p_Var7 = param_1->_M_left;" (assignment_expression "p_Var7 = param_1->_M_left" identifier = (field_expression "param_1->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var1 = param_1->_M_right;" (assignment_expression "p_Var1 = param_1->_M_right" identifier = (field_expression "param_1->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var3 = p_Var1;" (assignment_expression "p_Var3 = p_Var1" identifier = identifier) ;) (if_statement "if (p_Var7 == (_Rb_tree_node_base *)0x0) {\nLAB_001e8a48:\n    p_Var4 = param_1->_M_parent;\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) goto LAB_001e87a6;\n    p_Var3 = (_Rb_tree_node_base *)0x0;\n  }\n  else {\n    p_Var2 = p_Var1;\n    if (p_Var1 != (_Rb_tree_node_base *)0x0) {\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    p_Var4 = param_1->_M_parent;\n    p_Var3 = p_Var7;\nLAB_001e87a6:\n    p_Var3->_M_parent = p_Var4;\n  }" if (parenthesized_expression "(p_Var7 == (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var7 == (_Rb_tree_node_base *)0x0" identifier == (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001e8a48:\n    p_Var4 = param_1->_M_parent;\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) goto LAB_001e87a6;\n    p_Var3 = (_Rb_tree_node_base *)0x0;\n  }" { (labeled_statement "LAB_001e8a48:\n    p_Var4 = param_1->_M_parent;" statement_identifier : (expression_statement "p_Var4 = param_1->_M_parent;" (assignment_expression "p_Var4 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;)) (if_statement "if (p_Var3 != (_Rb_tree_node_base *)0x0) goto LAB_001e87a6;" if (parenthesized_expression "(p_Var3 != (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var3 != (_Rb_tree_node_base *)0x0" identifier != (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e87a6;" goto statement_identifier ;)) (expression_statement "p_Var3 = (_Rb_tree_node_base *)0x0;" (assignment_expression "p_Var3 = (_Rb_tree_node_base *)0x0" identifier = (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    p_Var2 = p_Var1;\n    if (p_Var1 != (_Rb_tree_node_base *)0x0) {\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    p_Var4 = param_1->_M_parent;\n    p_Var3 = p_Var7;\nLAB_001e87a6:\n    p_Var3->_M_parent = p_Var4;\n  }" else (compound_statement "{\n    p_Var2 = p_Var1;\n    if (p_Var1 != (_Rb_tree_node_base *)0x0) {\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    p_Var4 = param_1->_M_parent;\n    p_Var3 = p_Var7;\nLAB_001e87a6:\n    p_Var3->_M_parent = p_Var4;\n  }" { (expression_statement "p_Var2 = p_Var1;" (assignment_expression "p_Var2 = p_Var1" identifier = identifier) ;) (if_statement "if (p_Var1 != (_Rb_tree_node_base *)0x0) {\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" if (parenthesized_expression "(p_Var1 != (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var1 != (_Rb_tree_node_base *)0x0" identifier != (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);\n      p_Var3 = p_Var5->_M_right;\n      if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" { (do_statement "do {\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      } while (p_Var5->_M_left != (_Base_ptr)0x0);" do (compound_statement "{\n        p_Var5 = p_Var2;\n        p_Var2 = p_Var5->_M_left;\n      }" { (expression_statement "p_Var5 = p_Var2;" (assignment_expression "p_Var5 = p_Var2" identifier = identifier) ;) (expression_statement "p_Var2 = p_Var5->_M_left;" (assignment_expression "p_Var2 = p_Var5->_M_left" identifier = (field_expression "p_Var5->_M_left" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(p_Var5->_M_left != (_Base_ptr)0x0)" ( (binary_expression "p_Var5->_M_left != (_Base_ptr)0x0" (field_expression "p_Var5->_M_left" identifier -> field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "p_Var3 = p_Var5->_M_right;" (assignment_expression "p_Var3 = p_Var5->_M_right" identifier = (field_expression "p_Var5->_M_right" identifier -> field_identifier)) ;) (if_statement "if (p_Var5 != param_1) {\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }" if (parenthesized_expression "(p_Var5 != param_1)" ( (binary_expression "p_Var5 != param_1" identifier != identifier) )) (compound_statement "{\n        p_Var7->_M_parent = p_Var5;\n        p_Var5->_M_left = p_Var7;\n        p_Var4 = p_Var5;\n        if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }\n        if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }\n        p_Var5->_M_parent = p_Var9;\n        _Var10 = p_Var5->_M_color;\n        p_Var5->_M_color = param_1->_M_color;\n        param_1->_M_color = _Var10;\n        goto LAB_001e885e;\n      }" { (expression_statement "p_Var7->_M_parent = p_Var5;" (assignment_expression "p_Var7->_M_parent = p_Var5" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var5->_M_left = p_Var7;" (assignment_expression "p_Var5->_M_left = p_Var7" (field_expression "p_Var5->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4 = p_Var5;" (assignment_expression "p_Var4 = p_Var5" identifier = identifier) ;) (if_statement "if (p_Var5 != p_Var1) {\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }" if (parenthesized_expression "(p_Var5 != p_Var1)" ( (binary_expression "p_Var5 != p_Var1" identifier != identifier) )) (compound_statement "{\n          p_Var4 = p_Var5->_M_parent;\n          p_Var9 = p_Var4;\n          if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }\n          p_Var9->_M_left = p_Var3;\n          p_Var5->_M_right = p_Var1;\n          param_1->_M_right->_M_parent = p_Var5;\n        }" { (expression_statement "p_Var4 = p_Var5->_M_parent;" (assignment_expression "p_Var4 = p_Var5->_M_parent" identifier = (field_expression "p_Var5->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var9 = p_Var4;" (assignment_expression "p_Var9 = p_Var4" identifier = identifier) ;) (if_statement "if (p_Var3 != (_Base_ptr)0x0) {\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }" if (parenthesized_expression "(p_Var3 != (_Base_ptr)0x0)" ( (binary_expression "p_Var3 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            p_Var3->_M_parent = p_Var4;\n            p_Var9 = p_Var5->_M_parent;\n          }" { (expression_statement "p_Var3->_M_parent = p_Var4;" (assignment_expression "p_Var3->_M_parent = p_Var4" (field_expression "p_Var3->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var9 = p_Var5->_M_parent;" (assignment_expression "p_Var9 = p_Var5->_M_parent" identifier = (field_expression "p_Var5->_M_parent" identifier -> field_identifier)) ;) })) (expression_statement "p_Var9->_M_left = p_Var3;" (assignment_expression "p_Var9->_M_left = p_Var3" (field_expression "p_Var9->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var5->_M_right = p_Var1;" (assignment_expression "p_Var5->_M_right = p_Var1" (field_expression "p_Var5->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "param_1->_M_right->_M_parent = p_Var5;" (assignment_expression "param_1->_M_right->_M_parent = p_Var5" (field_expression "param_1->_M_right->_M_parent" (field_expression "param_1->_M_right" identifier -> field_identifier) -> field_identifier) = identifier) ;) })) (if_statement "if (param_2->_M_parent == param_1) {\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }\n        else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }" if (parenthesized_expression "(param_2->_M_parent == param_1)" ( (binary_expression "param_2->_M_parent == param_1" (field_expression "param_2->_M_parent" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          param_2->_M_parent = p_Var5;\n          p_Var9 = param_1->_M_parent;\n        }" { (expression_statement "param_2->_M_parent = p_Var5;" (assignment_expression "param_2->_M_parent = p_Var5" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var9 = param_1->_M_parent;" (assignment_expression "p_Var9 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) }) (else_clause "else {\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }" else (compound_statement "{\n          p_Var9 = param_1->_M_parent;\n          if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }\n        }" { (expression_statement "p_Var9 = param_1->_M_parent;" (assignment_expression "p_Var9 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) (if_statement "if (p_Var9->_M_left == param_1) {\n            p_Var9->_M_left = p_Var5;\n          }\n          else {\n            p_Var9->_M_right = p_Var5;\n          }" if (parenthesized_expression "(p_Var9->_M_left == param_1)" ( (binary_expression "p_Var9->_M_left == param_1" (field_expression "p_Var9->_M_left" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            p_Var9->_M_left = p_Var5;\n          }" { (expression_statement "p_Var9->_M_left = p_Var5;" (assignment_expression "p_Var9->_M_left = p_Var5" (field_expression "p_Var9->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            p_Var9->_M_right = p_Var5;\n          }" else (compound_statement "{\n            p_Var9->_M_right = p_Var5;\n          }" { (expression_statement "p_Var9->_M_right = p_Var5;" (assignment_expression "p_Var9->_M_right = p_Var5" (field_expression "p_Var9->_M_right" identifier -> field_identifier) = identifier) ;) }))) }))) (expression_statement "p_Var5->_M_parent = p_Var9;" (assignment_expression "p_Var5->_M_parent = p_Var9" (field_expression "p_Var5->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "_Var10 = p_Var5->_M_color;" (assignment_expression "_Var10 = p_Var5->_M_color" identifier = (field_expression "p_Var5->_M_color" identifier -> field_identifier)) ;) (expression_statement "p_Var5->_M_color = param_1->_M_color;" (assignment_expression "p_Var5->_M_color = param_1->_M_color" (field_expression "p_Var5->_M_color" identifier -> field_identifier) = (field_expression "param_1->_M_color" identifier -> field_identifier)) ;) (expression_statement "param_1->_M_color = _Var10;" (assignment_expression "param_1->_M_color = _Var10" (field_expression "param_1->_M_color" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_001e885e;" goto statement_identifier ;) })) (goto_statement "goto LAB_001e8a48;" goto statement_identifier ;) })) (expression_statement "p_Var4 = param_1->_M_parent;" (assignment_expression "p_Var4 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var3 = p_Var7;" (assignment_expression "p_Var3 = p_Var7" identifier = identifier) ;) (labeled_statement "LAB_001e87a6:\n    p_Var3->_M_parent = p_Var4;" statement_identifier : (expression_statement "p_Var3->_M_parent = p_Var4;" (assignment_expression "p_Var3->_M_parent = p_Var4" (field_expression "p_Var3->_M_parent" identifier -> field_identifier) = identifier) ;)) }))) (if_statement "if (param_2->_M_parent == param_1) {\n    param_2->_M_parent = p_Var3;\n  }\n  else {\n    p_Var9 = param_1->_M_parent;\n    if (p_Var9->_M_left == param_1) {\n      p_Var9->_M_left = p_Var3;\n    }\n    else {\n      p_Var9->_M_right = p_Var3;\n    }\n  }" if (parenthesized_expression "(param_2->_M_parent == param_1)" ( (binary_expression "param_2->_M_parent == param_1" (field_expression "param_2->_M_parent" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    param_2->_M_parent = p_Var3;\n  }" { (expression_statement "param_2->_M_parent = p_Var3;" (assignment_expression "param_2->_M_parent = p_Var3" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n    p_Var9 = param_1->_M_parent;\n    if (p_Var9->_M_left == param_1) {\n      p_Var9->_M_left = p_Var3;\n    }\n    else {\n      p_Var9->_M_right = p_Var3;\n    }\n  }" else (compound_statement "{\n    p_Var9 = param_1->_M_parent;\n    if (p_Var9->_M_left == param_1) {\n      p_Var9->_M_left = p_Var3;\n    }\n    else {\n      p_Var9->_M_right = p_Var3;\n    }\n  }" { (expression_statement "p_Var9 = param_1->_M_parent;" (assignment_expression "p_Var9 = param_1->_M_parent" identifier = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) (if_statement "if (p_Var9->_M_left == param_1) {\n      p_Var9->_M_left = p_Var3;\n    }\n    else {\n      p_Var9->_M_right = p_Var3;\n    }" if (parenthesized_expression "(p_Var9->_M_left == param_1)" ( (binary_expression "p_Var9->_M_left == param_1" (field_expression "p_Var9->_M_left" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      p_Var9->_M_left = p_Var3;\n    }" { (expression_statement "p_Var9->_M_left = p_Var3;" (assignment_expression "p_Var9->_M_left = p_Var3" (field_expression "p_Var9->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      p_Var9->_M_right = p_Var3;\n    }" else (compound_statement "{\n      p_Var9->_M_right = p_Var3;\n    }" { (expression_statement "p_Var9->_M_right = p_Var3;" (assignment_expression "p_Var9->_M_right = p_Var3" (field_expression "p_Var9->_M_right" identifier -> field_identifier) = identifier) ;) }))) }))) (if_statement "if (param_2->_M_left == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_right == (_Base_ptr)0x0) {\n      param_2->_M_left = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }\n  }" if (parenthesized_expression "(param_2->_M_left == param_1)" ( (binary_expression "param_2->_M_left == param_1" (field_expression "param_2->_M_left" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    p_Var9 = p_Var3;\n    if (param_1->_M_right == (_Base_ptr)0x0) {\n      param_2->_M_left = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }\n  }" { (expression_statement "p_Var9 = p_Var3;" (assignment_expression "p_Var9 = p_Var3" identifier = identifier) ;) (if_statement "if (param_1->_M_right == (_Base_ptr)0x0) {\n      param_2->_M_left = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }" if (parenthesized_expression "(param_1->_M_right == (_Base_ptr)0x0)" ( (binary_expression "param_1->_M_right == (_Base_ptr)0x0" (field_expression "param_1->_M_right" identifier -> field_identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      param_2->_M_left = param_1->_M_parent;\n    }" { (expression_statement "param_2->_M_left = param_1->_M_parent;" (assignment_expression "param_2->_M_left = param_1->_M_parent" (field_expression "param_2->_M_left" identifier -> field_identifier) = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) }) (else_clause "else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }" else (compound_statement "{\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_left = p_Var7;\n    }" { (do_statement "do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      } while (p_Var9 != (_Base_ptr)0x0);" do (compound_statement "{\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_left;\n      }" { (expression_statement "p_Var7 = p_Var9;" (assignment_expression "p_Var7 = p_Var9" identifier = identifier) ;) (expression_statement "p_Var9 = p_Var7->_M_left;" (assignment_expression "p_Var9 = p_Var7->_M_left" identifier = (field_expression "p_Var7->_M_left" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(p_Var9 != (_Base_ptr)0x0)" ( (binary_expression "p_Var9 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "param_2->_M_left = p_Var7;" (assignment_expression "param_2->_M_left = p_Var7" (field_expression "param_2->_M_left" identifier -> field_identifier) = identifier) ;) }))) })) (expression_statement "_Var10 = param_1->_M_color;" (assignment_expression "_Var10 = param_1->_M_color" identifier = (field_expression "param_1->_M_color" identifier -> field_identifier)) ;) (if_statement "if (param_2->_M_right == param_1) {\n    p_Var9 = p_Var3;\n    if (param_1->_M_left == (_Base_ptr)0x0) {\n      param_2->_M_right = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }\n  }" if (parenthesized_expression "(param_2->_M_right == param_1)" ( (binary_expression "param_2->_M_right == param_1" (field_expression "param_2->_M_right" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    p_Var9 = p_Var3;\n    if (param_1->_M_left == (_Base_ptr)0x0) {\n      param_2->_M_right = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }\n  }" { (expression_statement "p_Var9 = p_Var3;" (assignment_expression "p_Var9 = p_Var3" identifier = identifier) ;) (if_statement "if (param_1->_M_left == (_Base_ptr)0x0) {\n      param_2->_M_right = param_1->_M_parent;\n    }\n    else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }" if (parenthesized_expression "(param_1->_M_left == (_Base_ptr)0x0)" ( (binary_expression "param_1->_M_left == (_Base_ptr)0x0" (field_expression "param_1->_M_left" identifier -> field_identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      param_2->_M_right = param_1->_M_parent;\n    }" { (expression_statement "param_2->_M_right = param_1->_M_parent;" (assignment_expression "param_2->_M_right = param_1->_M_parent" (field_expression "param_2->_M_right" identifier -> field_identifier) = (field_expression "param_1->_M_parent" identifier -> field_identifier)) ;) }) (else_clause "else {\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }" else (compound_statement "{\n      do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);\n      param_2->_M_right = p_Var7;\n    }" { (do_statement "do {\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      } while (p_Var9 != (_Base_ptr)0x0);" do (compound_statement "{\n        p_Var7 = p_Var9;\n        p_Var9 = p_Var7->_M_right;\n      }" { (expression_statement "p_Var7 = p_Var9;" (assignment_expression "p_Var7 = p_Var9" identifier = identifier) ;) (expression_statement "p_Var9 = p_Var7->_M_right;" (assignment_expression "p_Var9 = p_Var7->_M_right" identifier = (field_expression "p_Var7->_M_right" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(p_Var9 != (_Base_ptr)0x0)" ( (binary_expression "p_Var9 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "param_2->_M_right = p_Var7;" (assignment_expression "param_2->_M_right = p_Var7" (field_expression "param_2->_M_right" identifier -> field_identifier) = identifier) ;) }))) })) (labeled_statement "LAB_001e885e:\n  if (_Var10 != _S_red) {\n    while (param_2->_M_parent != p_Var3) {\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) {\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }\n  }" statement_identifier : (if_statement "if (_Var10 != _S_red) {\n    while (param_2->_M_parent != p_Var3) {\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) {\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }\n  }" if (parenthesized_expression "(_Var10 != _S_red)" ( (binary_expression "_Var10 != _S_red" identifier != identifier) )) (compound_statement "{\n    while (param_2->_M_parent != p_Var3) {\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }\n    if (p_Var3 != (_Rb_tree_node_base *)0x0) {\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }\n  }" { (while_statement "while (param_2->_M_parent != p_Var3) {\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }" while (parenthesized_expression "(param_2->_M_parent != p_Var3)" ( (binary_expression "param_2->_M_parent != p_Var3" (field_expression "param_2->_M_parent" identifier -> field_identifier) != identifier) )) (compound_statement "{\n      if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;\n      p_Var7 = p_Var4->_M_left;\n      if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      p_Var9 = p_Var4->_M_right;\n      p_Var8 = p_Var9->_M_left;\n      p_Var6 = p_Var9;\n      if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }\n      if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }\n      local_14 = p_Var6->_M_right;\n      if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      p_Var6->_M_color = _S_red;\n      p_Var3 = p_Var4;\n      p_Var4 = p_Var4->_M_parent;\n    }" { (if_statement "if ((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))\n      goto LAB_001e89c8;" if (parenthesized_expression "((p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black))" ( (binary_expression "(p_Var3 != (_Rb_tree_node_base *)0x0) && (p_Var3->_M_color != _S_black)" (parenthesized_expression "(p_Var3 != (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var3 != (_Rb_tree_node_base *)0x0" identifier != (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(p_Var3->_M_color != _S_black)" ( (binary_expression "p_Var3->_M_color != _S_black" (field_expression "p_Var3->_M_color" identifier -> field_identifier) != identifier) ))) )) (goto_statement "goto LAB_001e89c8;" goto statement_identifier ;)) (expression_statement "p_Var7 = p_Var4->_M_left;" (assignment_expression "p_Var7 = p_Var4->_M_left" identifier = (field_expression "p_Var4->_M_left" identifier -> field_identifier)) ;) (if_statement "if (p_Var7 != p_Var3) {\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }" if (parenthesized_expression "(p_Var7 != p_Var3)" ( (binary_expression "p_Var7 != p_Var3" identifier != identifier) )) (compound_statement "{\n        p_Var9 = p_Var7->_M_right;\n        p_Var6 = p_Var7;\n        if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }\n        if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }\n        p_Var6 = p_Var9->_M_right;\n        p_Var4->_M_left = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }\n        p_Var9->_M_right = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }" { (expression_statement "p_Var9 = p_Var7->_M_right;" (assignment_expression "p_Var9 = p_Var7->_M_right" identifier = (field_expression "p_Var7->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var6 = p_Var7;" (assignment_expression "p_Var6 = p_Var7" identifier = identifier) ;) (if_statement "if (p_Var7->_M_color == _S_red) {\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }" if (parenthesized_expression "(p_Var7->_M_color == _S_red)" ( (binary_expression "p_Var7->_M_color == _S_red" (field_expression "p_Var7->_M_color" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          p_Var7->_M_color = _S_black;\n          p_Var4->_M_color = _S_red;\n          p_Var4->_M_left = p_Var9;\n          if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }\n          p_Var6 = p_Var4->_M_parent;\n          p_Var7->_M_parent = p_Var6;\n          if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          p_Var7->_M_right = p_Var4;\n          p_Var9 = p_Var6->_M_right;\n          p_Var4->_M_parent = p_Var7;\n        }" { (expression_statement "p_Var7->_M_color = _S_black;" (assignment_expression "p_Var7->_M_color = _S_black" (field_expression "p_Var7->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4->_M_color = _S_red;" (assignment_expression "p_Var4->_M_color = _S_red" (field_expression "p_Var4->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4->_M_left = p_Var9;" (assignment_expression "p_Var4->_M_left = p_Var9" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var9 != (_Base_ptr)0x0) {\n            p_Var9->_M_parent = p_Var4;\n          }" if (parenthesized_expression "(p_Var9 != (_Base_ptr)0x0)" ( (binary_expression "p_Var9 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            p_Var9->_M_parent = p_Var4;\n          }" { (expression_statement "p_Var9->_M_parent = p_Var4;" (assignment_expression "p_Var9->_M_parent = p_Var4" (field_expression "p_Var9->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var6 = p_Var4->_M_parent;" (assignment_expression "p_Var6 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var7->_M_parent = p_Var6;" (assignment_expression "p_Var7->_M_parent = p_Var6" (field_expression "p_Var7->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }\n          else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }" if (parenthesized_expression "(p_Var4 == param_2->_M_parent)" ( (binary_expression "p_Var4 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n            param_2->_M_parent = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }" { (expression_statement "param_2->_M_parent = p_Var7;" (assignment_expression "param_2->_M_parent = p_Var7" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var4->_M_left;" (assignment_expression "p_Var6 = p_Var4->_M_left" identifier = (field_expression "p_Var4->_M_left" identifier -> field_identifier)) ;) }) (else_clause "else if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }" else (if_statement "if (p_Var4 == p_Var6->_M_right) {\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }\n          else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }" if (parenthesized_expression "(p_Var4 == p_Var6->_M_right)" ( (binary_expression "p_Var4 == p_Var6->_M_right" identifier == (field_expression "p_Var6->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n            p_Var6->_M_right = p_Var7;\n            p_Var6 = p_Var9;\n          }" { (expression_statement "p_Var6->_M_right = p_Var7;" (assignment_expression "p_Var6->_M_right = p_Var7" (field_expression "p_Var6->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var9;" (assignment_expression "p_Var6 = p_Var9" identifier = identifier) ;) }) (else_clause "else {\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }" else (compound_statement "{\n            p_Var6->_M_left = p_Var7;\n            p_Var6 = p_Var4->_M_left;\n          }" { (expression_statement "p_Var6->_M_left = p_Var7;" (assignment_expression "p_Var6->_M_left = p_Var7" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var4->_M_left;" (assignment_expression "p_Var6 = p_Var4->_M_left" identifier = (field_expression "p_Var4->_M_left" identifier -> field_identifier)) ;) }))))) (expression_statement "p_Var7->_M_right = p_Var4;" (assignment_expression "p_Var7->_M_right = p_Var4" (field_expression "p_Var7->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var9 = p_Var6->_M_right;" (assignment_expression "p_Var9 = p_Var6->_M_right" identifier = (field_expression "p_Var6->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_parent = p_Var7;" (assignment_expression "p_Var4->_M_parent = p_Var7" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) })) (if_statement "if ((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)) {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }\n        else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }" if (parenthesized_expression "((p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black))" ( (binary_expression "(p_Var9 == (_Base_ptr)0x0) || (p_Var9->_M_color == _S_black)" (parenthesized_expression "(p_Var9 == (_Base_ptr)0x0)" ( (binary_expression "p_Var9 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(p_Var9->_M_color == _S_black)" ( (binary_expression "p_Var9->_M_color == _S_black" (field_expression "p_Var9->_M_color" identifier -> field_identifier) == identifier) ))) )) (compound_statement "{\n          local_14 = p_Var6->_M_left;\n          if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;\nLAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;\n          p_Var6->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\nLAB_001e8aff:\n          local_14->_M_color = _S_black;\n        }" { (expression_statement "local_14 = p_Var6->_M_left;" (assignment_expression "local_14 = p_Var6->_M_left" identifier = (field_expression "p_Var6->_M_left" identifier -> field_identifier)) ;) (if_statement "if ((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)) goto LAB_001e88d6;" if (parenthesized_expression "((local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black))" ( (binary_expression "(local_14 == (_Base_ptr)0x0) || (local_14->_M_color == _S_black)" (parenthesized_expression "(local_14 == (_Base_ptr)0x0)" ( (binary_expression "local_14 == (_Base_ptr)0x0" identifier == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) || (parenthesized_expression "(local_14->_M_color == _S_black)" ( (binary_expression "local_14->_M_color == _S_black" (field_expression "local_14->_M_color" identifier -> field_identifier) == identifier) ))) )) (goto_statement "goto LAB_001e88d6;" goto statement_identifier ;)) (labeled_statement "LAB_001e8af2:\n          p_Var9 = p_Var4->_M_left;" statement_identifier : (expression_statement "p_Var9 = p_Var4->_M_left;" (assignment_expression "p_Var9 = p_Var4->_M_left" identifier = (field_expression "p_Var4->_M_left" identifier -> field_identifier)) ;)) (expression_statement "p_Var6->_M_color = p_Var4->_M_color;" (assignment_expression "p_Var6->_M_color = p_Var4->_M_color" (field_expression "p_Var6->_M_color" identifier -> field_identifier) = (field_expression "p_Var4->_M_color" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_color = _S_black;" (assignment_expression "p_Var4->_M_color = _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_001e8aff:\n          local_14->_M_color = _S_black;" statement_identifier : (expression_statement "local_14->_M_color = _S_black;" (assignment_expression "local_14->_M_color = _S_black" (field_expression "local_14->_M_color" identifier -> field_identifier) = identifier) ;)) }) (else_clause "else {\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }" else (compound_statement "{\n          local_14 = p_Var6->_M_left;\n          if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;\n          p_Var8 = p_Var9->_M_left;\n          p_Var9->_M_color = _S_black;\n          p_Var6->_M_color = _S_red;\n          p_Var6->_M_right = p_Var8;\n          if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }\n          p_Var8 = p_Var6->_M_parent;\n          p_Var9->_M_parent = p_Var8;\n          if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }\n          p_Var9->_M_left = p_Var6;\n          p_Var6->_M_parent = p_Var9;\n          p_Var9 = p_Var4->_M_left;\n          local_14 = p_Var9->_M_left;\n          p_Var9->_M_color = p_Var4->_M_color;\n          p_Var4->_M_color = _S_black;\n          if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;\n        }" { (expression_statement "local_14 = p_Var6->_M_left;" (assignment_expression "local_14 = p_Var6->_M_left" identifier = (field_expression "p_Var6->_M_left" identifier -> field_identifier)) ;) (if_statement "if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8af2;" if (parenthesized_expression "((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black))" ( (binary_expression "(local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)" (parenthesized_expression "(local_14 != (_Base_ptr)0x0)" ( (binary_expression "local_14 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(local_14->_M_color != _S_black)" ( (binary_expression "local_14->_M_color != _S_black" (field_expression "local_14->_M_color" identifier -> field_identifier) != identifier) ))) )) (goto_statement "goto LAB_001e8af2;" goto statement_identifier ;)) (expression_statement "p_Var8 = p_Var9->_M_left;" (assignment_expression "p_Var8 = p_Var9->_M_left" identifier = (field_expression "p_Var9->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var9->_M_color = _S_black;" (assignment_expression "p_Var9->_M_color = _S_black" (field_expression "p_Var9->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6->_M_color = _S_red;" (assignment_expression "p_Var6->_M_color = _S_red" (field_expression "p_Var6->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6->_M_right = p_Var8;" (assignment_expression "p_Var6->_M_right = p_Var8" (field_expression "p_Var6->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var8 != (_Base_ptr)0x0) {\n            p_Var8->_M_parent = p_Var6;\n          }" if (parenthesized_expression "(p_Var8 != (_Base_ptr)0x0)" ( (binary_expression "p_Var8 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            p_Var8->_M_parent = p_Var6;\n          }" { (expression_statement "p_Var8->_M_parent = p_Var6;" (assignment_expression "p_Var8->_M_parent = p_Var6" (field_expression "p_Var8->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var8 = p_Var6->_M_parent;" (assignment_expression "p_Var8 = p_Var6->_M_parent" identifier = (field_expression "p_Var6->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var9->_M_parent = p_Var8;" (assignment_expression "p_Var9->_M_parent = p_Var8" (field_expression "p_Var9->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var6 == param_2->_M_parent) {\n            param_2->_M_parent = p_Var9;\n          }\n          else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }" if (parenthesized_expression "(p_Var6 == param_2->_M_parent)" ( (binary_expression "p_Var6 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n            param_2->_M_parent = p_Var9;\n          }" { (expression_statement "param_2->_M_parent = p_Var9;" (assignment_expression "param_2->_M_parent = p_Var9" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }" else (if_statement "if (p_Var6 == p_Var8->_M_left) {\n            p_Var8->_M_left = p_Var9;\n          }\n          else {\n            p_Var8->_M_right = p_Var9;\n          }" if (parenthesized_expression "(p_Var6 == p_Var8->_M_left)" ( (binary_expression "p_Var6 == p_Var8->_M_left" identifier == (field_expression "p_Var8->_M_left" identifier -> field_identifier)) )) (compound_statement "{\n            p_Var8->_M_left = p_Var9;\n          }" { (expression_statement "p_Var8->_M_left = p_Var9;" (assignment_expression "p_Var8->_M_left = p_Var9" (field_expression "p_Var8->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            p_Var8->_M_right = p_Var9;\n          }" else (compound_statement "{\n            p_Var8->_M_right = p_Var9;\n          }" { (expression_statement "p_Var8->_M_right = p_Var9;" (assignment_expression "p_Var8->_M_right = p_Var9" (field_expression "p_Var8->_M_right" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var9->_M_left = p_Var6;" (assignment_expression "p_Var9->_M_left = p_Var6" (field_expression "p_Var9->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6->_M_parent = p_Var9;" (assignment_expression "p_Var6->_M_parent = p_Var9" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var9 = p_Var4->_M_left;" (assignment_expression "p_Var9 = p_Var4->_M_left" identifier = (field_expression "p_Var4->_M_left" identifier -> field_identifier)) ;) (expression_statement "local_14 = p_Var9->_M_left;" (assignment_expression "local_14 = p_Var9->_M_left" identifier = (field_expression "p_Var9->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var9->_M_color = p_Var4->_M_color;" (assignment_expression "p_Var9->_M_color = p_Var4->_M_color" (field_expression "p_Var9->_M_color" identifier -> field_identifier) = (field_expression "p_Var4->_M_color" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_color = _S_black;" (assignment_expression "p_Var4->_M_color = _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_14 != (_Base_ptr)0x0) goto LAB_001e8aff;" if (parenthesized_expression "(local_14 != (_Base_ptr)0x0)" ( (binary_expression "local_14 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_001e8aff;" goto statement_identifier ;)) }))) (expression_statement "p_Var6 = p_Var9->_M_right;" (assignment_expression "p_Var6 = p_Var9->_M_right" identifier = (field_expression "p_Var9->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_left = p_Var6;" (assignment_expression "p_Var4->_M_left = p_Var6" (field_expression "p_Var4->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }" if (parenthesized_expression "(p_Var6 != (_Base_ptr)0x0)" ( (binary_expression "p_Var6 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var6->_M_parent = p_Var4;\n        }" { (expression_statement "p_Var6->_M_parent = p_Var4;" (assignment_expression "p_Var6->_M_parent = p_Var4" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var6 = p_Var4->_M_parent;" (assignment_expression "p_Var6 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var9->_M_parent = p_Var6;" (assignment_expression "p_Var9->_M_parent = p_Var6" (field_expression "p_Var9->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }" if (parenthesized_expression "(p_Var4 == param_2->_M_parent)" ( (binary_expression "p_Var4 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n          param_2->_M_parent = p_Var9;\n        }" { (expression_statement "param_2->_M_parent = p_Var9;" (assignment_expression "param_2->_M_parent = p_Var9" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }" else (if_statement "if (p_Var4 == p_Var6->_M_right) {\n          p_Var6->_M_right = p_Var9;\n        }\n        else {\n          p_Var6->_M_left = p_Var9;\n        }" if (parenthesized_expression "(p_Var4 == p_Var6->_M_right)" ( (binary_expression "p_Var4 == p_Var6->_M_right" identifier == (field_expression "p_Var6->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n          p_Var6->_M_right = p_Var9;\n        }" { (expression_statement "p_Var6->_M_right = p_Var9;" (assignment_expression "p_Var6->_M_right = p_Var9" (field_expression "p_Var6->_M_right" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          p_Var6->_M_left = p_Var9;\n        }" else (compound_statement "{\n          p_Var6->_M_left = p_Var9;\n        }" { (expression_statement "p_Var6->_M_left = p_Var9;" (assignment_expression "p_Var6->_M_left = p_Var9" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var9->_M_right = p_Var4;" (assignment_expression "p_Var9->_M_right = p_Var4" (field_expression "p_Var9->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4->_M_parent = p_Var9;" (assignment_expression "p_Var4->_M_parent = p_Var9" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "p_Var9 = p_Var4->_M_right;" (assignment_expression "p_Var9 = p_Var4->_M_right" identifier = (field_expression "p_Var4->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var8 = p_Var9->_M_left;" (assignment_expression "p_Var8 = p_Var9->_M_left" identifier = (field_expression "p_Var9->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var6 = p_Var9;" (assignment_expression "p_Var6 = p_Var9" identifier = identifier) ;) (if_statement "if (p_Var9->_M_color == _S_red) {\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }" if (parenthesized_expression "(p_Var9->_M_color == _S_red)" ( (binary_expression "p_Var9->_M_color == _S_red" (field_expression "p_Var9->_M_color" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        p_Var9->_M_color = _S_black;\n        p_Var4->_M_color = _S_red;\n        p_Var4->_M_right = p_Var8;\n        if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var8 = p_Var6->_M_left;\n        p_Var4->_M_parent = p_Var9;\n      }" { (expression_statement "p_Var9->_M_color = _S_black;" (assignment_expression "p_Var9->_M_color = _S_black" (field_expression "p_Var9->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4->_M_color = _S_red;" (assignment_expression "p_Var4->_M_color = _S_red" (field_expression "p_Var4->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4->_M_right = p_Var8;" (assignment_expression "p_Var4->_M_right = p_Var8" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var8 != (_Base_ptr)0x0) {\n          p_Var8->_M_parent = p_Var4;\n        }" if (parenthesized_expression "(p_Var8 != (_Base_ptr)0x0)" ( (binary_expression "p_Var8 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var8->_M_parent = p_Var4;\n        }" { (expression_statement "p_Var8->_M_parent = p_Var4;" (assignment_expression "p_Var8->_M_parent = p_Var4" (field_expression "p_Var8->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var6 = p_Var4->_M_parent;" (assignment_expression "p_Var6 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var9->_M_parent = p_Var6;" (assignment_expression "p_Var9->_M_parent = p_Var6" (field_expression "p_Var9->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }" if (parenthesized_expression "(p_Var4 == param_2->_M_parent)" ( (binary_expression "p_Var4 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n          param_2->_M_parent = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }" { (expression_statement "param_2->_M_parent = p_Var9;" (assignment_expression "param_2->_M_parent = p_Var9" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var4->_M_right;" (assignment_expression "p_Var6 = p_Var4->_M_right" identifier = (field_expression "p_Var4->_M_right" identifier -> field_identifier)) ;) }) (else_clause "else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }" else (if_statement "if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }" if (parenthesized_expression "(p_Var4 == p_Var6->_M_left)" ( (binary_expression "p_Var4 == p_Var6->_M_left" identifier == (field_expression "p_Var6->_M_left" identifier -> field_identifier)) )) (compound_statement "{\n          p_Var6->_M_left = p_Var9;\n          p_Var6 = p_Var8;\n        }" { (expression_statement "p_Var6->_M_left = p_Var9;" (assignment_expression "p_Var6->_M_left = p_Var9" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var8;" (assignment_expression "p_Var6 = p_Var8" identifier = identifier) ;) }) (else_clause "else {\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }" else (compound_statement "{\n          p_Var6->_M_right = p_Var9;\n          p_Var6 = p_Var4->_M_right;\n        }" { (expression_statement "p_Var6->_M_right = p_Var9;" (assignment_expression "p_Var6->_M_right = p_Var9" (field_expression "p_Var6->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6 = p_Var4->_M_right;" (assignment_expression "p_Var6 = p_Var4->_M_right" identifier = (field_expression "p_Var4->_M_right" identifier -> field_identifier)) ;) }))))) (expression_statement "p_Var9->_M_left = p_Var4;" (assignment_expression "p_Var9->_M_left = p_Var4" (field_expression "p_Var9->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var8 = p_Var6->_M_left;" (assignment_expression "p_Var8 = p_Var6->_M_left" identifier = (field_expression "p_Var6->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_parent = p_Var9;" (assignment_expression "p_Var4->_M_parent = p_Var9" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) })) (if_statement "if ((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)) {\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }" if (parenthesized_expression "((p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black))" ( (binary_expression "(p_Var8 != (_Base_ptr)0x0) && (p_Var8->_M_color != _S_black)" (parenthesized_expression "(p_Var8 != (_Base_ptr)0x0)" ( (binary_expression "p_Var8 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(p_Var8->_M_color != _S_black)" ( (binary_expression "p_Var8->_M_color != _S_black" (field_expression "p_Var8->_M_color" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\n        local_14 = p_Var6->_M_right;\n        if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;\n        p_Var9 = p_Var8->_M_right;\n        p_Var8->_M_color = _S_black;\n        p_Var6->_M_color = _S_red;\n        p_Var6->_M_left = p_Var9;\n        if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }\n        p_Var9 = p_Var6->_M_parent;\n        p_Var8->_M_parent = p_Var9;\n        if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }\n        p_Var8->_M_right = p_Var6;\n        p_Var6->_M_parent = p_Var8;\n        p_Var9 = p_Var4->_M_right;\n        local_14 = p_Var9->_M_right;\n        p_Var9->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\n        if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        p_Var6 = p_Var9->_M_left;\n        p_Var4->_M_right = p_Var6;\n        if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }\n        p_Var6 = p_Var4->_M_parent;\n        p_Var9->_M_parent = p_Var6;\n        if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }\n        p_Var9->_M_left = p_Var4;\n        p_Var4->_M_parent = p_Var9;\n        break;\n      }" { (expression_statement "local_14 = p_Var6->_M_right;" (assignment_expression "local_14 = p_Var6->_M_right" identifier = (field_expression "p_Var6->_M_right" identifier -> field_identifier)) ;) (if_statement "if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) goto LAB_001e8974;" if (parenthesized_expression "((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black))" ( (binary_expression "(local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)" (parenthesized_expression "(local_14 != (_Base_ptr)0x0)" ( (binary_expression "local_14 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(local_14->_M_color != _S_black)" ( (binary_expression "local_14->_M_color != _S_black" (field_expression "local_14->_M_color" identifier -> field_identifier) != identifier) ))) )) (goto_statement "goto LAB_001e8974;" goto statement_identifier ;)) (expression_statement "p_Var9 = p_Var8->_M_right;" (assignment_expression "p_Var9 = p_Var8->_M_right" identifier = (field_expression "p_Var8->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var8->_M_color = _S_black;" (assignment_expression "p_Var8->_M_color = _S_black" (field_expression "p_Var8->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6->_M_color = _S_red;" (assignment_expression "p_Var6->_M_color = _S_red" (field_expression "p_Var6->_M_color" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6->_M_left = p_Var9;" (assignment_expression "p_Var6->_M_left = p_Var9" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var9 != (_Base_ptr)0x0) {\n          p_Var9->_M_parent = p_Var6;\n        }" if (parenthesized_expression "(p_Var9 != (_Base_ptr)0x0)" ( (binary_expression "p_Var9 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var9->_M_parent = p_Var6;\n        }" { (expression_statement "p_Var9->_M_parent = p_Var6;" (assignment_expression "p_Var9->_M_parent = p_Var6" (field_expression "p_Var9->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var9 = p_Var6->_M_parent;" (assignment_expression "p_Var9 = p_Var6->_M_parent" identifier = (field_expression "p_Var6->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var8->_M_parent = p_Var9;" (assignment_expression "p_Var8->_M_parent = p_Var9" (field_expression "p_Var8->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var6 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var8;\n        }\n        else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }" if (parenthesized_expression "(p_Var6 == param_2->_M_parent)" ( (binary_expression "p_Var6 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n          param_2->_M_parent = p_Var8;\n        }" { (expression_statement "param_2->_M_parent = p_Var8;" (assignment_expression "param_2->_M_parent = p_Var8" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }" else (if_statement "if (p_Var6 == p_Var9->_M_right) {\n          p_Var9->_M_right = p_Var8;\n        }\n        else {\n          p_Var9->_M_left = p_Var8;\n        }" if (parenthesized_expression "(p_Var6 == p_Var9->_M_right)" ( (binary_expression "p_Var6 == p_Var9->_M_right" identifier == (field_expression "p_Var9->_M_right" identifier -> field_identifier)) )) (compound_statement "{\n          p_Var9->_M_right = p_Var8;\n        }" { (expression_statement "p_Var9->_M_right = p_Var8;" (assignment_expression "p_Var9->_M_right = p_Var8" (field_expression "p_Var9->_M_right" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          p_Var9->_M_left = p_Var8;\n        }" else (compound_statement "{\n          p_Var9->_M_left = p_Var8;\n        }" { (expression_statement "p_Var9->_M_left = p_Var8;" (assignment_expression "p_Var9->_M_left = p_Var8" (field_expression "p_Var9->_M_left" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var8->_M_right = p_Var6;" (assignment_expression "p_Var8->_M_right = p_Var6" (field_expression "p_Var8->_M_right" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var6->_M_parent = p_Var8;" (assignment_expression "p_Var6->_M_parent = p_Var8" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var9 = p_Var4->_M_right;" (assignment_expression "p_Var9 = p_Var4->_M_right" identifier = (field_expression "p_Var4->_M_right" identifier -> field_identifier)) ;) (expression_statement "local_14 = p_Var9->_M_right;" (assignment_expression "local_14 = p_Var9->_M_right" identifier = (field_expression "p_Var9->_M_right" identifier -> field_identifier)) ;) (expression_statement "p_Var9->_M_color = p_Var4->_M_color;" (assignment_expression "p_Var9->_M_color = p_Var4->_M_color" (field_expression "p_Var9->_M_color" identifier -> field_identifier) = (field_expression "p_Var4->_M_color" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_color = _S_black;" (assignment_expression "p_Var4->_M_color = _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_14 != (_Base_ptr)0x0) goto LAB_001e8981;" if (parenthesized_expression "(local_14 != (_Base_ptr)0x0)" ( (binary_expression "local_14 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_001e8981;" goto statement_identifier ;)) (labeled_statement "LAB_001e898a:\n        p_Var6 = p_Var9->_M_left;" statement_identifier : (expression_statement "p_Var6 = p_Var9->_M_left;" (assignment_expression "p_Var6 = p_Var9->_M_left" identifier = (field_expression "p_Var9->_M_left" identifier -> field_identifier)) ;)) (expression_statement "p_Var4->_M_right = p_Var6;" (assignment_expression "p_Var4->_M_right = p_Var6" (field_expression "p_Var4->_M_right" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var6 != (_Base_ptr)0x0) {\n          p_Var6->_M_parent = p_Var4;\n        }" if (parenthesized_expression "(p_Var6 != (_Base_ptr)0x0)" ( (binary_expression "p_Var6 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var6->_M_parent = p_Var4;\n        }" { (expression_statement "p_Var6->_M_parent = p_Var4;" (assignment_expression "p_Var6->_M_parent = p_Var4" (field_expression "p_Var6->_M_parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "p_Var6 = p_Var4->_M_parent;" (assignment_expression "p_Var6 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) (expression_statement "p_Var9->_M_parent = p_Var6;" (assignment_expression "p_Var9->_M_parent = p_Var6" (field_expression "p_Var9->_M_parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var4 == param_2->_M_parent) {\n          param_2->_M_parent = p_Var9;\n        }\n        else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }" if (parenthesized_expression "(p_Var4 == param_2->_M_parent)" ( (binary_expression "p_Var4 == param_2->_M_parent" identifier == (field_expression "param_2->_M_parent" identifier -> field_identifier)) )) (compound_statement "{\n          param_2->_M_parent = p_Var9;\n        }" { (expression_statement "param_2->_M_parent = p_Var9;" (assignment_expression "param_2->_M_parent = p_Var9" (field_expression "param_2->_M_parent" identifier -> field_identifier) = identifier) ;) }) (else_clause "else if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }" else (if_statement "if (p_Var4 == p_Var6->_M_left) {\n          p_Var6->_M_left = p_Var9;\n        }\n        else {\n          p_Var6->_M_right = p_Var9;\n        }" if (parenthesized_expression "(p_Var4 == p_Var6->_M_left)" ( (binary_expression "p_Var4 == p_Var6->_M_left" identifier == (field_expression "p_Var6->_M_left" identifier -> field_identifier)) )) (compound_statement "{\n          p_Var6->_M_left = p_Var9;\n        }" { (expression_statement "p_Var6->_M_left = p_Var9;" (assignment_expression "p_Var6->_M_left = p_Var9" (field_expression "p_Var6->_M_left" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          p_Var6->_M_right = p_Var9;\n        }" else (compound_statement "{\n          p_Var6->_M_right = p_Var9;\n        }" { (expression_statement "p_Var6->_M_right = p_Var9;" (assignment_expression "p_Var6->_M_right = p_Var9" (field_expression "p_Var6->_M_right" identifier -> field_identifier) = identifier) ;) }))))) (expression_statement "p_Var9->_M_left = p_Var4;" (assignment_expression "p_Var9->_M_left = p_Var4" (field_expression "p_Var9->_M_left" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var4->_M_parent = p_Var9;" (assignment_expression "p_Var4->_M_parent = p_Var9" (field_expression "p_Var4->_M_parent" identifier -> field_identifier) = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "local_14 = p_Var6->_M_right;" (assignment_expression "local_14 = p_Var6->_M_right" identifier = (field_expression "p_Var6->_M_right" identifier -> field_identifier)) ;) (if_statement "if ((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)) {\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }" if (parenthesized_expression "((local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black))" ( (binary_expression "(local_14 != (_Base_ptr)0x0) && (local_14->_M_color != _S_black)" (parenthesized_expression "(local_14 != (_Base_ptr)0x0)" ( (binary_expression "local_14 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) && (parenthesized_expression "(local_14->_M_color != _S_black)" ( (binary_expression "local_14->_M_color != _S_black" (field_expression "local_14->_M_color" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\nLAB_001e8974:\n        p_Var9 = p_Var4->_M_right;\n        p_Var6->_M_color = p_Var4->_M_color;\n        p_Var4->_M_color = _S_black;\nLAB_001e8981:\n        local_14->_M_color = _S_black;\n        goto LAB_001e898a;\n      }" { (labeled_statement "LAB_001e8974:\n        p_Var9 = p_Var4->_M_right;" statement_identifier : (expression_statement "p_Var9 = p_Var4->_M_right;" (assignment_expression "p_Var9 = p_Var4->_M_right" identifier = (field_expression "p_Var4->_M_right" identifier -> field_identifier)) ;)) (expression_statement "p_Var6->_M_color = p_Var4->_M_color;" (assignment_expression "p_Var6->_M_color = p_Var4->_M_color" (field_expression "p_Var6->_M_color" identifier -> field_identifier) = (field_expression "p_Var4->_M_color" identifier -> field_identifier)) ;) (expression_statement "p_Var4->_M_color = _S_black;" (assignment_expression "p_Var4->_M_color = _S_black" (field_expression "p_Var4->_M_color" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_001e8981:\n        local_14->_M_color = _S_black;" statement_identifier : (expression_statement "local_14->_M_color = _S_black;" (assignment_expression "local_14->_M_color = _S_black" (field_expression "local_14->_M_color" identifier -> field_identifier) = identifier) ;)) (goto_statement "goto LAB_001e898a;" goto statement_identifier ;) })) (labeled_statement "LAB_001e88d6:\n      p_Var6->_M_color = _S_red;" statement_identifier : (expression_statement "p_Var6->_M_color = _S_red;" (assignment_expression "p_Var6->_M_color = _S_red" (field_expression "p_Var6->_M_color" identifier -> field_identifier) = identifier) ;)) (expression_statement "p_Var3 = p_Var4;" (assignment_expression "p_Var3 = p_Var4" identifier = identifier) ;) (expression_statement "p_Var4 = p_Var4->_M_parent;" (assignment_expression "p_Var4 = p_Var4->_M_parent" identifier = (field_expression "p_Var4->_M_parent" identifier -> field_identifier)) ;) })) (if_statement "if (p_Var3 != (_Rb_tree_node_base *)0x0) {\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }" if (parenthesized_expression "(p_Var3 != (_Rb_tree_node_base *)0x0)" ( (binary_expression "p_Var3 != (_Rb_tree_node_base *)0x0" identifier != (cast_expression "(_Rb_tree_node_base *)0x0" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001e89c8:\n      p_Var3->_M_color = _S_black;\n      return;\n    }" { (labeled_statement "LAB_001e89c8:\n      p_Var3->_M_color = _S_black;" statement_identifier : (expression_statement "p_Var3->_M_color = _S_black;" (assignment_expression "p_Var3->_M_color = _S_black" (field_expression "p_Var3->_M_color" identifier -> field_identifier) = identifier) ;)) (return_statement "return;" return ;) })) }))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001e8780(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_001e8780(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001e8780(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *local_14;" primitive_type (pointer_declarator "*local_14" * identifier) ;) (expression_statement "piVar5 = (int *)param_1[2];" (assignment_expression "piVar5 = (int *)param_1[2]" identifier = (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)param_1[3];" (assignment_expression "piVar4 = (int *)param_1[3]" identifier = (cast_expression "(int *)param_1[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" identifier = identifier) ;) (if_statement "if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }" { (labeled_statement "LAB_001e8a48:\n    piVar2 = (int *)param_1[1];" statement_identifier : (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;)) (if_statement "if (piVar1 != (int *)0x0) goto LAB_001e87a6;" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e87a6;" goto statement_identifier ;)) (expression_statement "piVar1 = (int *)0x0;" (assignment_expression "piVar1 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" else (compound_statement "{\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" { (if_statement "if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" { (do_statement "do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);" do (compound_statement "{\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      }" { (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" identifier = identifier) ;) (expression_statement "piVar1 = (int *)piVar3[2];" (assignment_expression "piVar1 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "((int *)piVar3[2] != (int *)0x0)" ( (binary_expression "(int *)piVar3[2] != (int *)0x0" (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar1 = (int *)piVar3[3];" (assignment_expression "piVar1 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (if_statement "if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }" if (parenthesized_expression "(piVar3 != param_1)" ( (binary_expression "piVar3 != param_1" identifier != identifier) )) (compound_statement "{\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }" { (expression_statement "piVar5[1] = (int)piVar3;" (assignment_expression "piVar5[1] = (int)piVar3" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[2] = (int)piVar5;" (assignment_expression "piVar3[2] = (int)piVar5" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar2 = piVar3;" (assignment_expression "piVar2 = piVar3" identifier = identifier) ;) (if_statement "if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }" if (parenthesized_expression "(piVar3 != piVar4)" ( (binary_expression "piVar3 != piVar4" identifier != identifier) )) (compound_statement "{\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }" { (expression_statement "piVar2 = (int *)piVar3[1];" (assignment_expression "piVar2 = (int *)piVar3[1]" identifier = (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" identifier = identifier) ;) (if_statement "if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }" { (expression_statement "piVar1[1] = (int)piVar2;" (assignment_expression "piVar1[1] = (int)piVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = (int *)piVar3[1];" (assignment_expression "piVar5 = (int *)piVar3[1]" identifier = (cast_expression "(int *)piVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar5[2] = (int)piVar1;" (assignment_expression "piVar5[2] = (int)piVar1" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[3] = (int)piVar4;" (assignment_expression "piVar3[3] = (int)piVar4" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int **)(param_1[3] + 4) = piVar3;" (assignment_expression "*(int **)(param_1[3] + 4) = piVar3" (pointer_expression "*(int **)(param_1[3] + 4)" * (cast_expression "(int **)(param_1[3] + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[3] + 4)" ( (binary_expression "param_1[3] + 4" (subscript_expression "param_1[3]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" if (parenthesized_expression "(*(int **)(param_2 + 4) == param_1)" ( (binary_expression "*(int **)(param_2 + 4) == param_1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar3;" (assignment_expression "*(int **)(param_2 + 4) = piVar3" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" else (compound_statement "{\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" { (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }" if (parenthesized_expression "(*(int **)(iVar6 + 8) == param_1)" ( (binary_expression "*(int **)(iVar6 + 8) == param_1" (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) )) (compound_statement "{\n            *(int **)(iVar6 + 8) = piVar3;\n          }" { (expression_statement "*(int **)(iVar6 + 8) = piVar3;" (assignment_expression "*(int **)(iVar6 + 8) = piVar3" (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 + 0xc) = piVar3;\n          }" else (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar3;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar3" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) }))) (expression_statement "piVar3[1] = iVar6;" (assignment_expression "piVar3[1] = iVar6" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar6 = *piVar3;" (assignment_expression "iVar6 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "*piVar3 = *param_1;" (assignment_expression "*piVar3 = *param_1" (pointer_expression "*piVar3" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = iVar6;" (assignment_expression "*param_1 = iVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (goto_statement "goto LAB_001e885e;" goto statement_identifier ;) })) (goto_statement "goto LAB_001e8a48;" goto statement_identifier ;) })) (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" identifier = identifier) ;) (labeled_statement "LAB_001e87a6:\n    piVar1[1] = (int)piVar2;" statement_identifier : (expression_statement "piVar1[1] = (int)piVar2;" (assignment_expression "piVar1[1] = (int)piVar2" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) }))) (if_statement "if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 4) == param_1)" ( (binary_expression "*(int **)(param_2 + 4) == param_1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    *(int **)(param_2 + 4) = piVar1;\n  }" { (expression_statement "*(int **)(param_2 + 4) = piVar1;" (assignment_expression "*(int **)(param_2 + 4) = piVar1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" else (compound_statement "{\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" { (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }" if (parenthesized_expression "(*(int **)(iVar6 + 8) == param_1)" ( (binary_expression "*(int **)(iVar6 + 8) == param_1" (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) )) (compound_statement "{\n      *(int **)(iVar6 + 8) = piVar1;\n    }" { (expression_statement "*(int **)(iVar6 + 8) = piVar1;" (assignment_expression "*(int **)(iVar6 + 8) = piVar1" (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 + 0xc) = piVar1;\n    }" else (compound_statement "{\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar1;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar1" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) }))) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 8) == param_1)" ( (binary_expression "*(int **)(param_2 + 8) == param_1" (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }" { (expression_statement "piVar5 = piVar1;" (assignment_expression "piVar5 = piVar1" identifier = identifier) ;) (if_statement "if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" if (parenthesized_expression "(param_1[3] == 0)" ( (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      *(int *)(param_2 + 8) = param_1[1];\n    }" { (expression_statement "*(int *)(param_2 + 8) = param_1[1];" (assignment_expression "*(int *)(param_2 + 8) = param_1[1]" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" else (compound_statement "{\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" { (do_statement "do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);" do (compound_statement "{\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      }" { (expression_statement "piVar4 = piVar5;" (assignment_expression "piVar4 = piVar5" identifier = identifier) ;) (expression_statement "piVar5 = (int *)piVar4[2];" (assignment_expression "piVar5 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 8) = piVar4;" (assignment_expression "*(int **)(param_2 + 8) = piVar4" (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) }))) })) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }" if (parenthesized_expression "(*(int **)(param_2 + 0xc) == param_1)" ( (binary_expression "*(int **)(param_2 + 0xc) == param_1" (pointer_expression "*(int **)(param_2 + 0xc)" * (cast_expression "(int **)(param_2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }" { (expression_statement "piVar5 = piVar1;" (assignment_expression "piVar5 = piVar1" identifier = identifier) ;) (if_statement "if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" if (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }" { (expression_statement "*(int *)(param_2 + 0xc) = param_1[1];" (assignment_expression "*(int *)(param_2 + 0xc) = param_1[1]" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" else (compound_statement "{\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" { (do_statement "do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);" do (compound_statement "{\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      }" { (expression_statement "piVar4 = piVar5;" (assignment_expression "piVar4 = piVar5" identifier = identifier) ;) (expression_statement "piVar5 = (int *)piVar4[3];" (assignment_expression "piVar5 = (int *)piVar4[3]" identifier = (cast_expression "(int *)piVar4[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[3]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(int **)(param_2 + 0xc) = piVar4;" (assignment_expression "*(int **)(param_2 + 0xc) = piVar4" (pointer_expression "*(int **)(param_2 + 0xc)" * (cast_expression "(int **)(param_2 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) })) (labeled_statement "LAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" statement_identifier : (if_statement "if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" { (while_statement "while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }" while (parenthesized_expression "(*(int **)(param_2 + 4) != piVar1)" ( (binary_expression "*(int **)(param_2 + 4) != piVar1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }" { (if_statement "if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;" if (parenthesized_expression "((piVar1 != (int *)0x0) && (*piVar1 != 1))" ( (binary_expression "(piVar1 != (int *)0x0) && (*piVar1 != 1)" (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar1 != 1)" ( (binary_expression "*piVar1 != 1" (pointer_expression "*piVar1" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_001e89c8;" goto statement_identifier ;)) (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" if (parenthesized_expression "(piVar5 != piVar1)" ( (binary_expression "piVar5 != piVar1" identifier != identifier) )) (compound_statement "{\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" { (expression_statement "piVar4 = (int *)piVar5[3];" (assignment_expression "piVar4 = (int *)piVar5[3]" identifier = (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (expression_statement "piVar2[2] = (int)piVar4;" (assignment_expression "piVar2[2] = (int)piVar4" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            piVar4[1] = (int)piVar2;\n          }" { (expression_statement "piVar4[1] = (int)piVar2;" (assignment_expression "piVar4[1] = (int)piVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 0xc))" ( (binary_expression "piVar2 == *(int **)(iVar6 + 0xc)" identifier == (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) }) (else_clause "else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" else (compound_statement "{\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }))))) (expression_statement "piVar5[3] = (int)piVar2;" (assignment_expression "piVar5[3] = (int)piVar2" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)piVar3[3];" (assignment_expression "piVar4 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" if (parenthesized_expression "((piVar4 == (int *)0x0) || (*piVar4 == 1))" ( (binary_expression "(piVar4 == (int *)0x0) || (*piVar4 == 1)" (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar4 == 1)" ( (binary_expression "*piVar4 == 1" (pointer_expression "*piVar4" * identifier) == number_literal) ))) )) (compound_statement "{\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }" { (expression_statement "local_14 = (int *)piVar3[2];" (assignment_expression "local_14 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;" if (parenthesized_expression "((local_14 == (int *)0x0) || (*local_14 == 1))" ( (binary_expression "(local_14 == (int *)0x0) || (*local_14 == 1)" (parenthesized_expression "(local_14 == (int *)0x0)" ( (binary_expression "local_14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*local_14 == 1)" ( (binary_expression "*local_14 == 1" (pointer_expression "*local_14" * identifier) == number_literal) ))) )) (goto_statement "goto LAB_001e88d6;" goto statement_identifier ;)) (labeled_statement "LAB_001e8af2:\n          piVar5 = (int *)piVar2[2];" statement_identifier : (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;)) (expression_statement "*piVar3 = *piVar2;" (assignment_expression "*piVar3 = *piVar2" (pointer_expression "*piVar3" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (labeled_statement "LAB_001e8aff:\n          *local_14 = 1;" statement_identifier : (expression_statement "*local_14 = 1;" (assignment_expression "*local_14 = 1" (pointer_expression "*local_14" * identifier) = number_literal) ;)) }) (else_clause "else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" else (compound_statement "{\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" { (expression_statement "local_14 = (int *)piVar3[2];" (assignment_expression "local_14 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;" if (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" ( (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_14 != 1)" ( (binary_expression "*local_14 != 1" (pointer_expression "*local_14" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_001e8af2;" goto statement_identifier ;)) (expression_statement "iVar6 = piVar4[2];" (assignment_expression "iVar6 = piVar4[2]" identifier = (subscript_expression "piVar4[2]" identifier [ number_literal ])) ;) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "piVar3[3] = iVar6;" (assignment_expression "piVar3[3] = iVar6" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n            *(int **)(iVar6 + 4) = piVar3;\n          }" { (expression_statement "*(int **)(iVar6 + 4) = piVar3;" (assignment_expression "*(int **)(iVar6 + 4) = piVar3" (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 "iVar6 = piVar3[1];" (assignment_expression "iVar6 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "piVar4[1] = iVar6;" (assignment_expression "piVar4[1] = iVar6" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 4))" ( (binary_expression "piVar3 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n            *(int **)(param_2 + 4) = piVar4;\n          }" { (expression_statement "*(int **)(param_2 + 4) = piVar4;" (assignment_expression "*(int **)(param_2 + 4) = piVar4" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" else (if_statement "if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" if (parenthesized_expression "(piVar3 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar3 == *(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) = piVar4;\n          }" { (expression_statement "*(int **)(iVar6 + 8) = piVar4;" (assignment_expression "*(int **)(iVar6 + 8) = piVar4" (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 + 0xc) = piVar4;\n          }" else (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar4[2] = (int)piVar3;" (assignment_expression "piVar4[2] = (int)piVar3" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = (int)piVar4;" (assignment_expression "piVar3[1] = (int)piVar4" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) (expression_statement "local_14 = (int *)piVar5[2];" (assignment_expression "local_14 = (int *)piVar5[2]" identifier = (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) ;) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (if_statement "if (local_14 != (int *)0x0) goto LAB_001e8aff;" if (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e8aff;" goto statement_identifier ;)) }))) (expression_statement "iVar6 = piVar5[3];" (assignment_expression "iVar6 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "piVar2[2] = iVar6;" (assignment_expression "piVar2[2] = iVar6" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar2;\n        }" { (expression_statement "*(int **)(iVar6 + 4) = piVar2;" (assignment_expression "*(int **)(iVar6 + 4) = piVar2" (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 "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 0xc))" ( (binary_expression "piVar2 == *(int **)(iVar6 + 0xc)" identifier == (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 8) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar5[3] = (int)piVar2;" (assignment_expression "piVar5[3] = (int)piVar2" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)piVar5[2];" (assignment_expression "piVar4 = (int *)piVar5[2]" identifier = (cast_expression "(int *)piVar5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }" if (parenthesized_expression "(*piVar5 == 0)" ( (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }" { (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (expression_statement "piVar2[3] = (int)piVar4;" (assignment_expression "piVar2[3] = (int)piVar4" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar4[1] = (int)piVar2;\n        }" { (expression_statement "piVar4[1] = (int)piVar2;" (assignment_expression "piVar4[1] = (int)piVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = (int *)piVar2[3];" (assignment_expression "piVar3 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar2 == *(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) = piVar5;\n          piVar3 = piVar4;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) }) (else_clause "else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3 = (int *)piVar2[3];" (assignment_expression "piVar3 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) }))))) (expression_statement "piVar5[2] = (int)piVar2;" (assignment_expression "piVar5[2] = (int)piVar2" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = (int *)piVar3[2];" (assignment_expression "piVar4 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" if (parenthesized_expression "((piVar4 != (int *)0x0) && (*piVar4 != 1))" ( (binary_expression "(piVar4 != (int *)0x0) && (*piVar4 != 1)" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar4 != 1)" ( (binary_expression "*piVar4 != 1" (pointer_expression "*piVar4" * identifier) != number_literal) ))) )) (compound_statement "{\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" { (expression_statement "local_14 = (int *)piVar3[3];" (assignment_expression "local_14 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;" if (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" ( (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_14 != 1)" ( (binary_expression "*local_14 != 1" (pointer_expression "*local_14" * identifier) != number_literal) ))) )) (goto_statement "goto LAB_001e8974;" goto statement_identifier ;)) (expression_statement "iVar6 = piVar4[3];" (assignment_expression "iVar6 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" * identifier) = number_literal) ;) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "piVar3[2] = iVar6;" (assignment_expression "piVar3[2] = iVar6" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar3;\n        }" { (expression_statement "*(int **)(iVar6 + 4) = piVar3;" (assignment_expression "*(int **)(iVar6 + 4) = piVar3" (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 "iVar6 = piVar3[1];" (assignment_expression "iVar6 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;) (expression_statement "piVar4[1] = iVar6;" (assignment_expression "piVar4[1] = iVar6" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" if (parenthesized_expression "(piVar3 == *(int **)(param_2 + 4))" ( (binary_expression "piVar3 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar4;\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar4;" (assignment_expression "*(int **)(param_2 + 4) = piVar4" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" else (if_statement "if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" if (parenthesized_expression "(piVar3 == *(int **)(iVar6 + 0xc))" ( (binary_expression "piVar3 == *(int **)(iVar6 + 0xc)" identifier == (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 8) = piVar4;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar4;" (assignment_expression "*(int **)(iVar6 + 8) = piVar4" (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 "piVar4[3] = (int)piVar3;" (assignment_expression "piVar4[3] = (int)piVar3" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = (int)piVar4;" (assignment_expression "piVar3[1] = (int)piVar4" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;) (expression_statement "local_14 = (int *)piVar5[3];" (assignment_expression "local_14 = (int *)piVar5[3]" identifier = (cast_expression "(int *)piVar5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[3]" identifier [ number_literal ]))) ;) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (if_statement "if (local_14 != (int *)0x0) goto LAB_001e8981;" if (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e8981;" goto statement_identifier ;)) (labeled_statement "LAB_001e898a:\n        iVar6 = piVar5[2];" statement_identifier : (expression_statement "iVar6 = piVar5[2];" (assignment_expression "iVar6 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;)) (expression_statement "piVar2[3] = iVar6;" (assignment_expression "piVar2[3] = iVar6" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar2;\n        }" { (expression_statement "*(int **)(iVar6 + 4) = piVar2;" (assignment_expression "*(int **)(iVar6 + 4) = piVar2" (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 "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" ( (binary_expression "piVar2 == *(int **)(param_2 + 4)" identifier == (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n        }" { (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" else (if_statement "if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" if (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 8))" ( (binary_expression "piVar2 == *(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) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 + 0xc) = piVar5;\n        }" else (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" { (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" * (cast_expression "(int **)(iVar6 + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) }))))) (expression_statement "piVar5[2] = (int)piVar2;" (assignment_expression "piVar5[2] = (int)piVar2" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "local_14 = (int *)piVar3[3];" (assignment_expression "local_14 = (int *)piVar3[3]" identifier = (cast_expression "(int *)piVar3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[3]" identifier [ number_literal ]))) ;) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }" if (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" ( (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" ( (binary_expression "local_14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_14 != 1)" ( (binary_expression "*local_14 != 1" (pointer_expression "*local_14" * identifier) != number_literal) ))) )) (compound_statement "{\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }" { (labeled_statement "LAB_001e8974:\n        piVar5 = (int *)piVar2[3];" statement_identifier : (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" identifier = (cast_expression "(int *)piVar2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ]))) ;)) (expression_statement "*piVar3 = *piVar2;" (assignment_expression "*piVar3 = *piVar2" (pointer_expression "*piVar3" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (labeled_statement "LAB_001e8981:\n        *local_14 = 1;" statement_identifier : (expression_statement "*local_14 = 1;" (assignment_expression "*local_14 = 1" (pointer_expression "*local_14" * identifier) = number_literal) ;)) (goto_statement "goto LAB_001e898a;" goto statement_identifier ;) })) (labeled_statement "LAB_001e88d6:\n      *piVar3 = 0;" statement_identifier : (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;)) (expression_statement "piVar1 = piVar2;" (assignment_expression "piVar1 = piVar2" identifier = identifier) ;) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) })) (if_statement "if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }" if (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }" { (labeled_statement "LAB_001e89c8:\n      *piVar1 = 1;" statement_identifier : (expression_statement "*piVar1 = 1;" (assignment_expression "*piVar1 = 1" (pointer_expression "*piVar1" * identifier) = number_literal) ;)) (return_statement "return;" return ;) })) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (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)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 != IDENT) )) (compound_statement { (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 IDENT = IDENT) ;) (if_statement if (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 IDENT = IDENT) ;) (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 ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (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 IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (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 ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (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 IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (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) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (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 ])) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (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 IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (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 ])) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (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 != IDENT) )) (compound_statement { (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 (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (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) ;) (expression_statement (assignment_expression IDENT = 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 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 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)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (compound_statement { (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) }) (else_clause else (compound_statement { (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (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 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 ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (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)) ;) (break_statement break ;) })) (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 ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (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) ;) (expression_statement (assignment_expression IDENT = 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 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 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)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (compound_statement { (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (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 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 ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 (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)) ;) (break_statement break ;) })) (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (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 (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression IDENT = 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)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (return_statement return ;) })) }))) (return_statement return ;) })))
(function_definition "void FUN_001e8780(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001e8780(int *param_1,int param_2)" (identifier "FUN_001e8780") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  int iVar6;\n  int *local_14;\n  \n  piVar5 = (int *)param_1[2];\n  piVar4 = (int *)param_1[3];\n  piVar1 = piVar4;\n  if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }\n  if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }\n  if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }\n  iVar6 = *param_1;\n  if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }\nLAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *local_14;" (primitive_type "int") (pointer_declarator "*local_14" (* "*") (identifier "local_14")) (; ";")) (expression_statement "piVar5 = (int *)param_1[2];" (assignment_expression "piVar5 = (int *)param_1[2]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar4 = (int *)param_1[3];" (assignment_expression "piVar4 = (int *)param_1[3]" (identifier "piVar4") (= "=") (cast_expression "(int *)param_1[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "piVar1 = piVar4;" (assignment_expression "piVar1 = piVar4" (identifier "piVar1") (= "=") (identifier "piVar4")) (; ";")) (if_statement "if (piVar5 == (int *)0x0) {\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }\n  else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_001e8a48:\n    piVar2 = (int *)param_1[1];\n    if (piVar1 != (int *)0x0) goto LAB_001e87a6;\n    piVar1 = (int *)0x0;\n  }" ({ "{") (labeled_statement "LAB_001e8a48:\n    piVar2 = (int *)param_1[1];" (statement_identifier "LAB_001e8a48") (: ":") (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)param_1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";"))) (if_statement "if (piVar1 != (int *)0x0) goto LAB_001e87a6;" (if "if") (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001e87a6;" (goto "goto") (statement_identifier "LAB_001e87a6") (; ";"))) (expression_statement "piVar1 = (int *)0x0;" (assignment_expression "piVar1 = (int *)0x0" (identifier "piVar1") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" (else "else") (compound_statement "{\n    if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }\n    piVar2 = (int *)param_1[1];\n    piVar1 = piVar5;\nLAB_001e87a6:\n    piVar1[1] = (int)piVar2;\n  }" ({ "{") (if_statement "if (piVar4 != (int *)0x0) {\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" (if "if") (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);\n      piVar1 = (int *)piVar3[3];\n      if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }\n      goto LAB_001e8a48;\n    }" ({ "{") (do_statement "do {\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      } while ((int *)piVar3[2] != (int *)0x0);" (do "do") (compound_statement "{\n        piVar3 = piVar1;\n        piVar1 = (int *)piVar3[2];\n      }" ({ "{") (expression_statement "piVar3 = piVar1;" (assignment_expression "piVar3 = piVar1" (identifier "piVar3") (= "=") (identifier "piVar1")) (; ";")) (expression_statement "piVar1 = (int *)piVar3[2];" (assignment_expression "piVar1 = (int *)piVar3[2]" (identifier "piVar1") (= "=") (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)piVar3[2] != (int *)0x0)" (( "(") (binary_expression "(int *)piVar3[2] != (int *)0x0" (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "piVar1 = (int *)piVar3[3];" (assignment_expression "piVar1 = (int *)piVar3[3]" (identifier "piVar1") (= "=") (cast_expression "(int *)piVar3[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if (piVar3 != param_1) {\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }" (if "if") (parenthesized_expression "(piVar3 != param_1)" (( "(") (binary_expression "piVar3 != param_1" (identifier "piVar3") (!= "!=") (identifier "param_1")) () ")")) (compound_statement "{\n        piVar5[1] = (int)piVar3;\n        piVar3[2] = (int)piVar5;\n        piVar2 = piVar3;\n        if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }\n        if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }\n        piVar3[1] = iVar6;\n        iVar6 = *piVar3;\n        *piVar3 = *param_1;\n        *param_1 = iVar6;\n        goto LAB_001e885e;\n      }" ({ "{") (expression_statement "piVar5[1] = (int)piVar3;" (assignment_expression "piVar5[1] = (int)piVar3" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) (; ";")) (expression_statement "piVar3[2] = (int)piVar5;" (assignment_expression "piVar3[2] = (int)piVar5" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (expression_statement "piVar2 = piVar3;" (assignment_expression "piVar2 = piVar3" (identifier "piVar2") (= "=") (identifier "piVar3")) (; ";")) (if_statement "if (piVar3 != piVar4) {\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }" (if "if") (parenthesized_expression "(piVar3 != piVar4)" (( "(") (binary_expression "piVar3 != piVar4" (identifier "piVar3") (!= "!=") (identifier "piVar4")) () ")")) (compound_statement "{\n          piVar2 = (int *)piVar3[1];\n          piVar5 = piVar2;\n          if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }\n          piVar5[2] = (int)piVar1;\n          piVar3[3] = (int)piVar4;\n          *(int **)(param_1[3] + 4) = piVar3;\n        }" ({ "{") (expression_statement "piVar2 = (int *)piVar3[1];" (assignment_expression "piVar2 = (int *)piVar3[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar5 = piVar2;" (assignment_expression "piVar5 = piVar2" (identifier "piVar5") (= "=") (identifier "piVar2")) (; ";")) (if_statement "if (piVar1 != (int *)0x0) {\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }" (if "if") (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            piVar1[1] = (int)piVar2;\n            piVar5 = (int *)piVar3[1];\n          }" ({ "{") (expression_statement "piVar1[1] = (int)piVar2;" (assignment_expression "piVar1[1] = (int)piVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";")) (expression_statement "piVar5 = (int *)piVar3[1];" (assignment_expression "piVar5 = (int *)piVar3[1]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "piVar5[2] = (int)piVar1;" (assignment_expression "piVar5[2] = (int)piVar1" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (; ";")) (expression_statement "piVar3[3] = (int)piVar4;" (assignment_expression "piVar3[3] = (int)piVar4" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (expression_statement "*(int **)(param_1[3] + 4) = piVar3;" (assignment_expression "*(int **)(param_1[3] + 4) = piVar3" (pointer_expression "*(int **)(param_1[3] + 4)" (* "*") (cast_expression "(int **)(param_1[3] + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[3] + 4)" (( "(") (binary_expression "param_1[3] + 4" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (} "}"))) (if_statement "if (*(int **)(param_2 + 4) == param_1) {\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }\n        else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 4) == param_1)" (( "(") (binary_expression "*(int **)(param_2 + 4) == param_1" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar3;\n          iVar6 = param_1[1];\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar3;" (assignment_expression "*(int **)(param_2 + 4) = piVar3" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" (identifier "iVar6") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" (else "else") (compound_statement "{\n          iVar6 = param_1[1];\n          if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }\n        }" ({ "{") (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" (identifier "iVar6") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(int **)(iVar6 + 8) == param_1) {\n            *(int **)(iVar6 + 8) = piVar3;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }" (if "if") (parenthesized_expression "(*(int **)(iVar6 + 8) == param_1)" (( "(") (binary_expression "*(int **)(iVar6 + 8) == param_1" (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 "param_1")) () ")")) (compound_statement "{\n            *(int **)(iVar6 + 8) = piVar3;\n          }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar3;" (assignment_expression "*(int **)(iVar6 + 8) = piVar3" (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 "piVar3")) (; ";")) (} "}")) (else_clause "else {\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }" (else "else") (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar3;\n          }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar3;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar3" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (} "}")))) (} "}")))) (expression_statement "piVar3[1] = iVar6;" (assignment_expression "piVar3[1] = iVar6" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar6 = *piVar3;" (assignment_expression "iVar6 = *piVar3" (identifier "iVar6") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "*piVar3 = *param_1;" (assignment_expression "*piVar3 = *param_1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*param_1 = iVar6;" (assignment_expression "*param_1 = iVar6" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar6")) (; ";")) (goto_statement "goto LAB_001e885e;" (goto "goto") (statement_identifier "LAB_001e885e") (; ";")) (} "}"))) (goto_statement "goto LAB_001e8a48;" (goto "goto") (statement_identifier "LAB_001e8a48") (; ";")) (} "}"))) (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)param_1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar1 = piVar5;" (assignment_expression "piVar1 = piVar5" (identifier "piVar1") (= "=") (identifier "piVar5")) (; ";")) (labeled_statement "LAB_001e87a6:\n    piVar1[1] = (int)piVar2;" (statement_identifier "LAB_001e87a6") (: ":") (expression_statement "piVar1[1] = (int)piVar2;" (assignment_expression "piVar1[1] = (int)piVar2" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";"))) (} "}")))) (if_statement "if (*(int **)(param_2 + 4) == param_1) {\n    *(int **)(param_2 + 4) = piVar1;\n  }\n  else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 4) == param_1)" (( "(") (binary_expression "*(int **)(param_2 + 4) == param_1" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    *(int **)(param_2 + 4) = piVar1;\n  }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar1;" (assignment_expression "*(int **)(param_2 + 4) = piVar1" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (} "}")) (else_clause "else {\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" (else "else") (compound_statement "{\n    iVar6 = param_1[1];\n    if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }\n  }" ({ "{") (expression_statement "iVar6 = param_1[1];" (assignment_expression "iVar6 = param_1[1]" (identifier "iVar6") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(int **)(iVar6 + 8) == param_1) {\n      *(int **)(iVar6 + 8) = piVar1;\n    }\n    else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }" (if "if") (parenthesized_expression "(*(int **)(iVar6 + 8) == param_1)" (( "(") (binary_expression "*(int **)(iVar6 + 8) == param_1" (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 "param_1")) () ")")) (compound_statement "{\n      *(int **)(iVar6 + 8) = piVar1;\n    }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar1;" (assignment_expression "*(int **)(iVar6 + 8) = piVar1" (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 "piVar1")) (; ";")) (} "}")) (else_clause "else {\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }" (else "else") (compound_statement "{\n      *(int **)(iVar6 + 0xc) = piVar1;\n    }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar1;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar1" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (} "}")))) (} "}")))) (if_statement "if (*(int **)(param_2 + 8) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 8) == param_1)" (( "(") (binary_expression "*(int **)(param_2 + 8) == param_1" (pointer_expression "*(int **)(param_2 + 8)" (* "*") (cast_expression "(int **)(param_2 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    piVar5 = piVar1;\n    if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }\n  }" ({ "{") (expression_statement "piVar5 = piVar1;" (assignment_expression "piVar5 = piVar1" (identifier "piVar5") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (param_1[3] == 0) {\n      *(int *)(param_2 + 8) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" (if "if") (parenthesized_expression "(param_1[3] == 0)" (( "(") (binary_expression "param_1[3] == 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(param_2 + 8) = param_1[1];\n    }" ({ "{") (expression_statement "*(int *)(param_2 + 8) = param_1[1];" (assignment_expression "*(int *)(param_2 + 8) = param_1[1]" (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" (else "else") (compound_statement "{\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 8) = piVar4;\n    }" ({ "{") (do_statement "do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      } while (piVar5 != (int *)0x0);" (do "do") (compound_statement "{\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[2];\n      }" ({ "{") (expression_statement "piVar4 = piVar5;" (assignment_expression "piVar4 = piVar5" (identifier "piVar4") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar5 = (int *)piVar4[2];" (assignment_expression "piVar5 = (int *)piVar4[2]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar5 != (int *)0x0)" (( "(") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "*(int **)(param_2 + 8) = piVar4;" (assignment_expression "*(int **)(param_2 + 8) = piVar4" (pointer_expression "*(int **)(param_2 + 8)" (* "*") (cast_expression "(int **)(param_2 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" (identifier "iVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (*(int **)(param_2 + 0xc) == param_1) {\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 0xc) == param_1)" (( "(") (binary_expression "*(int **)(param_2 + 0xc) == param_1" (pointer_expression "*(int **)(param_2 + 0xc)" (* "*") (cast_expression "(int **)(param_2 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n    piVar5 = piVar1;\n    if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }\n  }" ({ "{") (expression_statement "piVar5 = piVar1;" (assignment_expression "piVar5 = piVar1" (identifier "piVar5") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (param_1[2] == 0) {\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }\n    else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" (if "if") (parenthesized_expression "(param_1[2] == 0)" (( "(") (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(param_2 + 0xc) = param_1[1];\n    }" ({ "{") (expression_statement "*(int *)(param_2 + 0xc) = param_1[1];" (assignment_expression "*(int *)(param_2 + 0xc) = param_1[1]" (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" (else "else") (compound_statement "{\n      do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);\n      *(int **)(param_2 + 0xc) = piVar4;\n    }" ({ "{") (do_statement "do {\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      } while (piVar5 != (int *)0x0);" (do "do") (compound_statement "{\n        piVar4 = piVar5;\n        piVar5 = (int *)piVar4[3];\n      }" ({ "{") (expression_statement "piVar4 = piVar5;" (assignment_expression "piVar4 = piVar5" (identifier "piVar4") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar5 = (int *)piVar4[3];" (assignment_expression "piVar5 = (int *)piVar4[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar4[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar5 != (int *)0x0)" (( "(") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "*(int **)(param_2 + 0xc) = piVar4;" (assignment_expression "*(int **)(param_2 + 0xc) = piVar4" (pointer_expression "*(int **)(param_2 + 0xc)" (* "*") (cast_expression "(int **)(param_2 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_001e885e:\n  if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" (statement_identifier "LAB_001e885e") (: ":") (if_statement "if (iVar6 != 0) {\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }\n    if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }\n  }" ({ "{") (while_statement "while (*(int **)(param_2 + 4) != piVar1) {\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }" (while "while") (parenthesized_expression "(*(int **)(param_2 + 4) != piVar1)" (( "(") (binary_expression "*(int **)(param_2 + 4) != piVar1" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (identifier "piVar1")) () ")")) (compound_statement "{\n      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;\n      piVar5 = (int *)piVar2[2];\n      if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      piVar5 = (int *)piVar2[3];\n      piVar4 = (int *)piVar5[2];\n      piVar3 = piVar5;\n      if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }\n      local_14 = (int *)piVar3[3];\n      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }\nLAB_001e88d6:\n      *piVar3 = 0;\n      piVar1 = piVar2;\n      piVar2 = (int *)piVar2[1];\n    }" ({ "{") (if_statement "if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;" (if "if") (parenthesized_expression "((piVar1 != (int *)0x0) && (*piVar1 != 1))" (( "(") (binary_expression "(piVar1 != (int *)0x0) && (*piVar1 != 1)" (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar1 != 1)" (( "(") (binary_expression "*piVar1 != 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_001e89c8;" (goto "goto") (statement_identifier "LAB_001e89c8") (; ";"))) (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (piVar5 != piVar1) {\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" (if "if") (parenthesized_expression "(piVar5 != piVar1)" (( "(") (binary_expression "piVar5 != piVar1" (identifier "piVar5") (!= "!=") (identifier "piVar1")) () ")")) (compound_statement "{\n        piVar4 = (int *)piVar5[3];\n        piVar3 = piVar5;\n        if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }\n        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }\n        iVar6 = piVar5[3];\n        piVar2[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        piVar5[3] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" ({ "{") (expression_statement "piVar4 = (int *)piVar5[3];" (assignment_expression "piVar4 = (int *)piVar5[3]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar5[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" (identifier "piVar3") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if (*piVar5 == 0) {\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }" (if "if") (parenthesized_expression "(*piVar5 == 0)" (( "(") (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *piVar5 = 1;\n          *piVar2 = 0;\n          piVar2[2] = (int)piVar4;\n          if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }\n          iVar6 = piVar2[1];\n          piVar5[1] = iVar6;\n          if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          piVar5[3] = (int)piVar2;\n          piVar4 = (int *)piVar3[3];\n          piVar2[1] = (int)piVar5;\n        }" ({ "{") (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar2[2] = (int)piVar4;" (assignment_expression "piVar2[2] = (int)piVar4" (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (if_statement "if (piVar4 != (int *)0x0) {\n            piVar4[1] = (int)piVar2;\n          }" (if "if") (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            piVar4[1] = (int)piVar2;\n          }" ({ "{") (expression_statement "piVar4[1] = (int)piVar2;" (assignment_expression "piVar4[1] = (int)piVar2" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";")) (} "}"))) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }\n          else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" (( "(") (binary_expression "piVar2 == *(int **)(param_2 + 4)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n            *(int **)(param_2 + 4) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" (else "else") (if_statement "if (piVar2 == *(int **)(iVar6 + 0xc)) {\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 0xc))" (( "(") (binary_expression "piVar2 == *(int **)(iVar6 + 0xc)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar5;\n            piVar3 = piVar4;\n          }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" (identifier "piVar3") (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else {\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" (else "else") (compound_statement "{\n            *(int **)(iVar6 + 8) = piVar5;\n            piVar3 = (int *)piVar2[2];\n          }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar5")) (; ";")) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))))) (expression_statement "piVar5[3] = (int)piVar2;" (assignment_expression "piVar5[3] = (int)piVar2" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";")) (expression_statement "piVar4 = (int *)piVar3[3];" (assignment_expression "piVar4 = (int *)piVar3[3]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar3[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (} "}"))) (if_statement "if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }\n        else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" (if "if") (parenthesized_expression "((piVar4 == (int *)0x0) || (*piVar4 == 1))" (( "(") (binary_expression "(piVar4 == (int *)0x0) || (*piVar4 == 1)" (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*piVar4 == 1)" (( "(") (binary_expression "*piVar4 == 1" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n          local_14 = (int *)piVar3[2];\n          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;\nLAB_001e8af2:\n          piVar5 = (int *)piVar2[2];\n          *piVar3 = *piVar2;\n          *piVar2 = 1;\nLAB_001e8aff:\n          *local_14 = 1;\n        }" ({ "{") (expression_statement "local_14 = (int *)piVar3[2];" (assignment_expression "local_14 = (int *)piVar3[2]" (identifier "local_14") (= "=") (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;" (if "if") (parenthesized_expression "((local_14 == (int *)0x0) || (*local_14 == 1))" (( "(") (binary_expression "(local_14 == (int *)0x0) || (*local_14 == 1)" (parenthesized_expression "(local_14 == (int *)0x0)" (( "(") (binary_expression "local_14 == (int *)0x0" (identifier "local_14") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*local_14 == 1)" (( "(") (binary_expression "*local_14 == 1" (pointer_expression "*local_14" (* "*") (identifier "local_14")) (== "==") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_001e88d6;" (goto "goto") (statement_identifier "LAB_001e88d6") (; ";"))) (labeled_statement "LAB_001e8af2:\n          piVar5 = (int *)piVar2[2];" (statement_identifier "LAB_001e8af2") (: ":") (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";"))) (expression_statement "*piVar3 = *piVar2;" (assignment_expression "*piVar3 = *piVar2" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_001e8aff:\n          *local_14 = 1;" (statement_identifier "LAB_001e8aff") (: ":") (expression_statement "*local_14 = 1;" (assignment_expression "*local_14 = 1" (pointer_expression "*local_14" (* "*") (identifier "local_14")) (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" (else "else") (compound_statement "{\n          local_14 = (int *)piVar3[2];\n          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;\n          iVar6 = piVar4[2];\n          *piVar4 = 1;\n          *piVar3 = 0;\n          piVar3[3] = iVar6;\n          if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }\n          iVar6 = piVar3[1];\n          piVar4[1] = iVar6;\n          if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }\n          piVar4[2] = (int)piVar3;\n          piVar3[1] = (int)piVar4;\n          piVar5 = (int *)piVar2[2];\n          local_14 = (int *)piVar5[2];\n          *piVar5 = *piVar2;\n          *piVar2 = 1;\n          if (local_14 != (int *)0x0) goto LAB_001e8aff;\n        }" ({ "{") (expression_statement "local_14 = (int *)piVar3[2];" (assignment_expression "local_14 = (int *)piVar3[2]" (identifier "local_14") (= "=") (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;" (if "if") (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" (( "(") (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" (( "(") (binary_expression "local_14 != (int *)0x0" (identifier "local_14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*local_14 != 1)" (( "(") (binary_expression "*local_14 != 1" (pointer_expression "*local_14" (* "*") (identifier "local_14")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_001e8af2;" (goto "goto") (statement_identifier "LAB_001e8af2") (; ";"))) (expression_statement "iVar6 = piVar4[2];" (assignment_expression "iVar6 = piVar4[2]" (identifier "iVar6") (= "=") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3[3] = iVar6;" (assignment_expression "piVar3[3] = iVar6" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar6 != 0) {\n            *(int **)(iVar6 + 4) = piVar3;\n          }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(int **)(iVar6 + 4) = piVar3;\n          }" ({ "{") (expression_statement "*(int **)(iVar6 + 4) = piVar3;" (assignment_expression "*(int **)(iVar6 + 4) = piVar3" (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 "piVar3")) (; ";")) (} "}"))) (expression_statement "iVar6 = piVar3[1];" (assignment_expression "iVar6 = piVar3[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar4[1] = iVar6;" (assignment_expression "piVar4[1] = iVar6" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (piVar3 == *(int **)(param_2 + 4)) {\n            *(int **)(param_2 + 4) = piVar4;\n          }\n          else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(param_2 + 4))" (( "(") (binary_expression "piVar3 == *(int **)(param_2 + 4)" (identifier "piVar3") (== "==") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n            *(int **)(param_2 + 4) = piVar4;\n          }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar4;" (assignment_expression "*(int **)(param_2 + 4) = piVar4" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" (else "else") (if_statement "if (piVar3 == *(int **)(iVar6 + 8)) {\n            *(int **)(iVar6 + 8) = piVar4;\n          }\n          else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(iVar6 + 8))" (( "(") (binary_expression "piVar3 == *(int **)(iVar6 + 8)" (identifier "piVar3") (== "==") (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) = piVar4;\n          }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar4;" (assignment_expression "*(int **)(iVar6 + 8) = piVar4" (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 "piVar4")) (; ";")) (} "}")) (else_clause "else {\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" (else "else") (compound_statement "{\n            *(int **)(iVar6 + 0xc) = piVar4;\n          }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")))))) (expression_statement "piVar4[2] = (int)piVar3;" (assignment_expression "piVar4[2] = (int)piVar3" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) (; ";")) (expression_statement "piVar3[1] = (int)piVar4;" (assignment_expression "piVar3[1] = (int)piVar4" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (expression_statement "piVar5 = (int *)piVar2[2];" (assignment_expression "piVar5 = (int *)piVar2[2]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_14 = (int *)piVar5[2];" (assignment_expression "local_14 = (int *)piVar5[2]" (identifier "local_14") (= "=") (cast_expression "(int *)piVar5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (local_14 != (int *)0x0) goto LAB_001e8aff;" (if "if") (parenthesized_expression "(local_14 != (int *)0x0)" (( "(") (binary_expression "local_14 != (int *)0x0" (identifier "local_14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001e8aff;" (goto "goto") (statement_identifier "LAB_001e8aff") (; ";"))) (} "}")))) (expression_statement "iVar6 = piVar5[3];" (assignment_expression "iVar6 = piVar5[3]" (identifier "iVar6") (= "=") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "piVar2[2] = iVar6;" (assignment_expression "piVar2[2] = iVar6" (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar2;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 4) = piVar2;" (assignment_expression "*(int **)(iVar6 + 4) = piVar2" (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 "piVar2")) (; ";")) (} "}"))) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" (( "(") (binary_expression "piVar2 == *(int **)(param_2 + 4)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}")) (else_clause "else if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" (else "else") (if_statement "if (piVar2 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 0xc))" (( "(") (binary_expression "piVar2 == *(int **)(iVar6 + 0xc)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}")) (else_clause "else {\n          *(int **)(iVar6 + 8) = piVar5;\n        }" (else "else") (compound_statement "{\n          *(int **)(iVar6 + 8) = piVar5;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar5")) (; ";")) (} "}")))))) (expression_statement "piVar5[3] = (int)piVar2;" (assignment_expression "piVar5[3] = (int)piVar2" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";")) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "piVar4 = (int *)piVar5[2];" (assignment_expression "piVar4 = (int *)piVar5[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" (identifier "piVar3") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if (*piVar5 == 0) {\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }" (if "if") (parenthesized_expression "(*piVar5 == 0)" (( "(") (binary_expression "*piVar5 == 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *piVar5 = 1;\n        *piVar2 = 0;\n        piVar2[3] = (int)piVar4;\n        if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        piVar5[2] = (int)piVar2;\n        piVar4 = (int *)piVar3[2];\n        piVar2[1] = (int)piVar5;\n      }" ({ "{") (expression_statement "*piVar5 = 1;" (assignment_expression "*piVar5 = 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar2[3] = (int)piVar4;" (assignment_expression "piVar2[3] = (int)piVar4" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (if_statement "if (piVar4 != (int *)0x0) {\n          piVar4[1] = (int)piVar2;\n        }" (if "if") (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          piVar4[1] = (int)piVar2;\n        }" ({ "{") (expression_statement "piVar4[1] = (int)piVar2;" (assignment_expression "piVar4[1] = (int)piVar2" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";")) (} "}"))) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" (( "(") (binary_expression "piVar2 == *(int **)(param_2 + 4)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar3 = (int *)piVar2[3];" (assignment_expression "piVar3 = (int *)piVar2[3]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (} "}")) (else_clause "else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" (else "else") (if_statement "if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n          piVar3 = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 8))" (( "(") (binary_expression "piVar2 == *(int **)(iVar6 + 8)" (identifier "piVar2") (== "==") (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) = piVar5;\n          piVar3 = piVar4;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar5")) (; ";")) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" (identifier "piVar3") (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" (else "else") (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n          piVar3 = (int *)piVar2[3];\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "piVar3 = (int *)piVar2[3];" (assignment_expression "piVar3 = (int *)piVar2[3]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (} "}")))))) (expression_statement "piVar5[2] = (int)piVar2;" (assignment_expression "piVar5[2] = (int)piVar2" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";")) (expression_statement "piVar4 = (int *)piVar3[2];" (assignment_expression "piVar4 = (int *)piVar3[2]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (} "}"))) (if_statement "if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" (if "if") (parenthesized_expression "((piVar4 != (int *)0x0) && (*piVar4 != 1))" (( "(") (binary_expression "(piVar4 != (int *)0x0) && (*piVar4 != 1)" (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar4 != 1)" (( "(") (binary_expression "*piVar4 != 1" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n        local_14 = (int *)piVar3[3];\n        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;\n        iVar6 = piVar4[3];\n        *piVar4 = 1;\n        *piVar3 = 0;\n        piVar3[2] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }\n        iVar6 = piVar3[1];\n        piVar4[1] = iVar6;\n        if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }\n        piVar4[3] = (int)piVar3;\n        piVar3[1] = (int)piVar4;\n        piVar5 = (int *)piVar2[3];\n        local_14 = (int *)piVar5[3];\n        *piVar5 = *piVar2;\n        *piVar2 = 1;\n        if (local_14 != (int *)0x0) goto LAB_001e8981;\nLAB_001e898a:\n        iVar6 = piVar5[2];\n        piVar2[3] = iVar6;\n        if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }\n        iVar6 = piVar2[1];\n        piVar5[1] = iVar6;\n        if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }\n        piVar5[2] = (int)piVar2;\n        piVar2[1] = (int)piVar5;\n        break;\n      }" ({ "{") (expression_statement "local_14 = (int *)piVar3[3];" (assignment_expression "local_14 = (int *)piVar3[3]" (identifier "local_14") (= "=") (cast_expression "(int *)piVar3[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;" (if "if") (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" (( "(") (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" (( "(") (binary_expression "local_14 != (int *)0x0" (identifier "local_14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*local_14 != 1)" (( "(") (binary_expression "*local_14 != 1" (pointer_expression "*local_14" (* "*") (identifier "local_14")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (goto_statement "goto LAB_001e8974;" (goto "goto") (statement_identifier "LAB_001e8974") (; ";"))) (expression_statement "iVar6 = piVar4[3];" (assignment_expression "iVar6 = piVar4[3]" (identifier "iVar6") (= "=") (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*piVar4 = 1;" (assignment_expression "*piVar4 = 1" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3[2] = iVar6;" (assignment_expression "piVar3[2] = iVar6" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar3;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar3;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 4) = piVar3;" (assignment_expression "*(int **)(iVar6 + 4) = piVar3" (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 "piVar3")) (; ";")) (} "}"))) (expression_statement "iVar6 = piVar3[1];" (assignment_expression "iVar6 = piVar3[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar4[1] = iVar6;" (assignment_expression "piVar4[1] = iVar6" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (piVar3 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar4;\n        }\n        else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(param_2 + 4))" (( "(") (binary_expression "piVar3 == *(int **)(param_2 + 4)" (identifier "piVar3") (== "==") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar4;\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar4;" (assignment_expression "*(int **)(param_2 + 4) = piVar4" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" (else "else") (if_statement "if (piVar3 == *(int **)(iVar6 + 0xc)) {\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }\n        else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" (if "if") (parenthesized_expression "(piVar3 == *(int **)(iVar6 + 0xc))" (( "(") (binary_expression "piVar3 == *(int **)(iVar6 + 0xc)" (identifier "piVar3") (== "==") (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar4;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar4;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar4" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (} "}")) (else_clause "else {\n          *(int **)(iVar6 + 8) = piVar4;\n        }" (else "else") (compound_statement "{\n          *(int **)(iVar6 + 8) = piVar4;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar4;" (assignment_expression "*(int **)(iVar6 + 8) = piVar4" (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 "piVar4")) (; ";")) (} "}")))))) (expression_statement "piVar4[3] = (int)piVar3;" (assignment_expression "piVar4[3] = (int)piVar3" (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) (; ";")) (expression_statement "piVar3[1] = (int)piVar4;" (assignment_expression "piVar3[1] = (int)piVar4" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_14 = (int *)piVar5[3];" (assignment_expression "local_14 = (int *)piVar5[3]" (identifier "local_14") (= "=") (cast_expression "(int *)piVar5[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (local_14 != (int *)0x0) goto LAB_001e8981;" (if "if") (parenthesized_expression "(local_14 != (int *)0x0)" (( "(") (binary_expression "local_14 != (int *)0x0" (identifier "local_14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001e8981;" (goto "goto") (statement_identifier "LAB_001e8981") (; ";"))) (labeled_statement "LAB_001e898a:\n        iVar6 = piVar5[2];" (statement_identifier "LAB_001e898a") (: ":") (expression_statement "iVar6 = piVar5[2];" (assignment_expression "iVar6 = piVar5[2]" (identifier "iVar6") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (expression_statement "piVar2[3] = iVar6;" (assignment_expression "piVar2[3] = iVar6" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar6 != 0) {\n          *(int **)(iVar6 + 4) = piVar2;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(int **)(iVar6 + 4) = piVar2;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 4) = piVar2;" (assignment_expression "*(int **)(iVar6 + 4) = piVar2" (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 "piVar2")) (; ";")) (} "}"))) (expression_statement "iVar6 = piVar2[1];" (assignment_expression "iVar6 = piVar2[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (piVar2 == *(int **)(param_2 + 4)) {\n          *(int **)(param_2 + 4) = piVar5;\n        }\n        else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(param_2 + 4))" (( "(") (binary_expression "piVar2 == *(int **)(param_2 + 4)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n          *(int **)(param_2 + 4) = piVar5;\n        }" ({ "{") (expression_statement "*(int **)(param_2 + 4) = piVar5;" (assignment_expression "*(int **)(param_2 + 4) = piVar5" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}")) (else_clause "else if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" (else "else") (if_statement "if (piVar2 == *(int **)(iVar6 + 8)) {\n          *(int **)(iVar6 + 8) = piVar5;\n        }\n        else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(iVar6 + 8))" (( "(") (binary_expression "piVar2 == *(int **)(iVar6 + 8)" (identifier "piVar2") (== "==") (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) = piVar5;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 8) = piVar5;" (assignment_expression "*(int **)(iVar6 + 8) = piVar5" (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 "piVar5")) (; ";")) (} "}")) (else_clause "else {\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" (else "else") (compound_statement "{\n          *(int **)(iVar6 + 0xc) = piVar5;\n        }" ({ "{") (expression_statement "*(int **)(iVar6 + 0xc) = piVar5;" (assignment_expression "*(int **)(iVar6 + 0xc) = piVar5" (pointer_expression "*(int **)(iVar6 + 0xc)" (* "*") (cast_expression "(int **)(iVar6 + 0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (} "}")))))) (expression_statement "piVar5[2] = (int)piVar2;" (assignment_expression "piVar5[2] = (int)piVar2" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2"))) (; ";")) (expression_statement "piVar2[1] = (int)piVar5;" (assignment_expression "piVar2[1] = (int)piVar5" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "local_14 = (int *)piVar3[3];" (assignment_expression "local_14 = (int *)piVar3[3]" (identifier "local_14") (= "=") (cast_expression "(int *)piVar3[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if ((local_14 != (int *)0x0) && (*local_14 != 1)) {\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }" (if "if") (parenthesized_expression "((local_14 != (int *)0x0) && (*local_14 != 1))" (( "(") (binary_expression "(local_14 != (int *)0x0) && (*local_14 != 1)" (parenthesized_expression "(local_14 != (int *)0x0)" (( "(") (binary_expression "local_14 != (int *)0x0" (identifier "local_14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*local_14 != 1)" (( "(") (binary_expression "*local_14 != 1" (pointer_expression "*local_14" (* "*") (identifier "local_14")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\nLAB_001e8974:\n        piVar5 = (int *)piVar2[3];\n        *piVar3 = *piVar2;\n        *piVar2 = 1;\nLAB_001e8981:\n        *local_14 = 1;\n        goto LAB_001e898a;\n      }" ({ "{") (labeled_statement "LAB_001e8974:\n        piVar5 = (int *)piVar2[3];" (statement_identifier "LAB_001e8974") (: ":") (expression_statement "piVar5 = (int *)piVar2[3];" (assignment_expression "piVar5 = (int *)piVar2[3]" (identifier "piVar5") (= "=") (cast_expression "(int *)piVar2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")))) (; ";"))) (expression_statement "*piVar3 = *piVar2;" (assignment_expression "*piVar3 = *piVar2" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*piVar2 = 1;" (assignment_expression "*piVar2 = 1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_001e8981:\n        *local_14 = 1;" (statement_identifier "LAB_001e8981") (: ":") (expression_statement "*local_14 = 1;" (assignment_expression "*local_14 = 1" (pointer_expression "*local_14" (* "*") (identifier "local_14")) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_001e898a;" (goto "goto") (statement_identifier "LAB_001e898a") (; ";")) (} "}"))) (labeled_statement "LAB_001e88d6:\n      *piVar3 = 0;" (statement_identifier "LAB_001e88d6") (: ":") (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "piVar1 = piVar2;" (assignment_expression "piVar1 = piVar2" (identifier "piVar1") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (if_statement "if (piVar1 != (int *)0x0) {\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }" (if "if") (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_001e89c8:\n      *piVar1 = 1;\n      return;\n    }" ({ "{") (labeled_statement "LAB_001e89c8:\n      *piVar1 = 1;" (statement_identifier "LAB_001e89c8") (: ":") (expression_statement "*piVar1 = 1;" (assignment_expression "*piVar1 = 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (number_literal "1")) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) */

void std::function_1(type_1 *var_5,type_1 *param_2)

{
  type_1 *var_3;
  type_1 *p_Var2;
  type_2 var_2;
  type_2 var_10;
  type_1 *var_4;
  type_2 var_13;
  type_1 *var_1;
  type_2 var_12;
  type_2 var_6;
  type_3 var_7;
  type_2 var_11;
  
  var_1 = var_5->_M_left;
  var_3 = var_5->_M_right;
  var_2 = var_3;
  if (var_1 == (type_1 *)0x0) {
LAB_001e8a48:
    var_10 = var_5->_M_parent;
    if (var_2 != (type_1 *)0x0) goto LAB_001e87a6;
    var_2 = (type_1 *)0x0;
  }
  else {
    p_Var2 = var_3;
    if (var_3 != (type_1 *)0x0) {
      do {
        var_4 = p_Var2;
        p_Var2 = var_4->_M_left;
      } while (var_4->_M_left != (type_2)0x0);
      var_2 = var_4->_M_right;
      if (var_4 != var_5) {
        var_1->_M_parent = var_4;
        var_4->_M_left = var_1;
        var_10 = var_4;
        if (var_4 != var_3) {
          var_10 = var_4->_M_parent;
          var_6 = var_10;
          if (var_2 != (type_2)0x0) {
            var_2->_M_parent = var_10;
            var_6 = var_4->_M_parent;
          }
          var_6->_M_left = var_2;
          var_4->_M_right = var_3;
          var_5->_M_right->_M_parent = var_4;
        }
        if (param_2->_M_parent == var_5) {
          param_2->_M_parent = var_4;
          var_6 = var_5->_M_parent;
        }
        else {
          var_6 = var_5->_M_parent;
          if (var_6->_M_left == var_5) {
            var_6->_M_left = var_4;
          }
          else {
            var_6->_M_right = var_4;
          }
        }
        var_4->_M_parent = var_6;
        var_7 = var_4->_M_color;
        var_4->_M_color = var_5->_M_color;
        var_5->_M_color = var_7;
        goto LAB_001e885e;
      }
      goto LAB_001e8a48;
    }
    var_10 = var_5->_M_parent;
    var_2 = var_1;
LAB_001e87a6:
    var_2->_M_parent = var_10;
  }
  if (param_2->_M_parent == var_5) {
    param_2->_M_parent = var_2;
  }
  else {
    var_6 = var_5->_M_parent;
    if (var_6->_M_left == var_5) {
      var_6->_M_left = var_2;
    }
    else {
      var_6->_M_right = var_2;
    }
  }
  if (param_2->_M_left == var_5) {
    var_6 = var_2;
    if (var_5->_M_right == (type_2)0x0) {
      param_2->_M_left = var_5->_M_parent;
    }
    else {
      do {
        var_1 = var_6;
        var_6 = var_1->_M_left;
      } while (var_6 != (type_2)0x0);
      param_2->_M_left = var_1;
    }
  }
  var_7 = var_5->_M_color;
  if (param_2->_M_right == var_5) {
    var_6 = var_2;
    if (var_5->_M_left == (type_2)0x0) {
      param_2->_M_right = var_5->_M_parent;
    }
    else {
      do {
        var_1 = var_6;
        var_6 = var_1->_M_right;
      } while (var_6 != (type_2)0x0);
      param_2->_M_right = var_1;
    }
  }
LAB_001e885e:
  if (var_7 != var_8) {
    while (param_2->_M_parent != var_2) {
      if ((var_2 != (type_1 *)0x0) && (var_2->_M_color != var_9))
      goto LAB_001e89c8;
      var_1 = var_10->_M_left;
      if (var_1 != var_2) {
        var_6 = var_1->_M_right;
        var_13 = var_1;
        if (var_1->_M_color == var_8) {
          var_1->_M_color = var_9;
          var_10->_M_color = var_8;
          var_10->_M_left = var_6;
          if (var_6 != (type_2)0x0) {
            var_6->_M_parent = var_10;
          }
          var_13 = var_10->_M_parent;
          var_1->_M_parent = var_13;
          if (var_10 == param_2->_M_parent) {
            param_2->_M_parent = var_1;
            var_13 = var_10->_M_left;
          }
          else if (var_10 == var_13->_M_right) {
            var_13->_M_right = var_1;
            var_13 = var_6;
          }
          else {
            var_13->_M_left = var_1;
            var_13 = var_10->_M_left;
          }
          var_1->_M_right = var_10;
          var_6 = var_13->_M_right;
          var_10->_M_parent = var_1;
        }
        if ((var_6 == (type_2)0x0) || (var_6->_M_color == var_9)) {
          var_11 = var_13->_M_left;
          if ((var_11 == (type_2)0x0) || (var_11->_M_color == var_9)) goto LAB_001e88d6;
LAB_001e8af2:
          var_6 = var_10->_M_left;
          var_13->_M_color = var_10->_M_color;
          var_10->_M_color = var_9;
LAB_001e8aff:
          var_11->_M_color = var_9;
        }
        else {
          var_11 = var_13->_M_left;
          if ((var_11 != (type_2)0x0) && (var_11->_M_color != var_9)) goto LAB_001e8af2;
          var_12 = var_6->_M_left;
          var_6->_M_color = var_9;
          var_13->_M_color = var_8;
          var_13->_M_right = var_12;
          if (var_12 != (type_2)0x0) {
            var_12->_M_parent = var_13;
          }
          var_12 = var_13->_M_parent;
          var_6->_M_parent = var_12;
          if (var_13 == param_2->_M_parent) {
            param_2->_M_parent = var_6;
          }
          else if (var_13 == var_12->_M_left) {
            var_12->_M_left = var_6;
          }
          else {
            var_12->_M_right = var_6;
          }
          var_6->_M_left = var_13;
          var_13->_M_parent = var_6;
          var_6 = var_10->_M_left;
          var_11 = var_6->_M_left;
          var_6->_M_color = var_10->_M_color;
          var_10->_M_color = var_9;
          if (var_11 != (type_2)0x0) goto LAB_001e8aff;
        }
        var_13 = var_6->_M_right;
        var_10->_M_left = var_13;
        if (var_13 != (type_2)0x0) {
          var_13->_M_parent = var_10;
        }
        var_13 = var_10->_M_parent;
        var_6->_M_parent = var_13;
        if (var_10 == param_2->_M_parent) {
          param_2->_M_parent = var_6;
        }
        else if (var_10 == var_13->_M_right) {
          var_13->_M_right = var_6;
        }
        else {
          var_13->_M_left = var_6;
        }
        var_6->_M_right = var_10;
        var_10->_M_parent = var_6;
        break;
      }
      var_6 = var_10->_M_right;
      var_12 = var_6->_M_left;
      var_13 = var_6;
      if (var_6->_M_color == var_8) {
        var_6->_M_color = var_9;
        var_10->_M_color = var_8;
        var_10->_M_right = var_12;
        if (var_12 != (type_2)0x0) {
          var_12->_M_parent = var_10;
        }
        var_13 = var_10->_M_parent;
        var_6->_M_parent = var_13;
        if (var_10 == param_2->_M_parent) {
          param_2->_M_parent = var_6;
          var_13 = var_10->_M_right;
        }
        else if (var_10 == var_13->_M_left) {
          var_13->_M_left = var_6;
          var_13 = var_12;
        }
        else {
          var_13->_M_right = var_6;
          var_13 = var_10->_M_right;
        }
        var_6->_M_left = var_10;
        var_12 = var_13->_M_left;
        var_10->_M_parent = var_6;
      }
      if ((var_12 != (type_2)0x0) && (var_12->_M_color != var_9)) {
        var_11 = var_13->_M_right;
        if ((var_11 != (type_2)0x0) && (var_11->_M_color != var_9)) goto LAB_001e8974;
        var_6 = var_12->_M_right;
        var_12->_M_color = var_9;
        var_13->_M_color = var_8;
        var_13->_M_left = var_6;
        if (var_6 != (type_2)0x0) {
          var_6->_M_parent = var_13;
        }
        var_6 = var_13->_M_parent;
        var_12->_M_parent = var_6;
        if (var_13 == param_2->_M_parent) {
          param_2->_M_parent = var_12;
        }
        else if (var_13 == var_6->_M_right) {
          var_6->_M_right = var_12;
        }
        else {
          var_6->_M_left = var_12;
        }
        var_12->_M_right = var_13;
        var_13->_M_parent = var_12;
        var_6 = var_10->_M_right;
        var_11 = var_6->_M_right;
        var_6->_M_color = var_10->_M_color;
        var_10->_M_color = var_9;
        if (var_11 != (type_2)0x0) goto LAB_001e8981;
LAB_001e898a:
        var_13 = var_6->_M_left;
        var_10->_M_right = var_13;
        if (var_13 != (type_2)0x0) {
          var_13->_M_parent = var_10;
        }
        var_13 = var_10->_M_parent;
        var_6->_M_parent = var_13;
        if (var_10 == param_2->_M_parent) {
          param_2->_M_parent = var_6;
        }
        else if (var_10 == var_13->_M_left) {
          var_13->_M_left = var_6;
        }
        else {
          var_13->_M_right = var_6;
        }
        var_6->_M_left = var_10;
        var_10->_M_parent = var_6;
        break;
      }
      var_11 = var_13->_M_right;
      if ((var_11 != (type_2)0x0) && (var_11->_M_color != var_9)) {
LAB_001e8974:
        var_6 = var_10->_M_right;
        var_13->_M_color = var_10->_M_color;
        var_10->_M_color = var_9;
LAB_001e8981:
        var_11->_M_color = var_9;
        goto LAB_001e898a;
      }
LAB_001e88d6:
      var_13->_M_color = var_8;
      var_2 = var_10;
      var_10 = var_10->_M_parent;
    }
    if (var_2 != (type_1 *)0x0) {
LAB_001e89c8:
      var_2->_M_color = var_9;
      return;
    }
  }
  return;
}


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

void MASKED(int *param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  int *local_14;
  
  piVar5 = (int *)param_1[2];
  piVar4 = (int *)param_1[3];
  piVar1 = piVar4;
  if (piVar5 == (int *)0x0) {
LAB_001e8a48:
    piVar2 = (int *)param_1[1];
    if (piVar1 != (int *)0x0) goto LAB_001e87a6;
    piVar1 = (int *)0x0;
  }
  else {
    if (piVar4 != (int *)0x0) {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)piVar3[2];
      } while ((int *)piVar3[2] != (int *)0x0);
      piVar1 = (int *)piVar3[3];
      if (piVar3 != param_1) {
        piVar5[1] = (int)piVar3;
        piVar3[2] = (int)piVar5;
        piVar2 = piVar3;
        if (piVar3 != piVar4) {
          piVar2 = (int *)piVar3[1];
          piVar5 = piVar2;
          if (piVar1 != (int *)0x0) {
            piVar1[1] = (int)piVar2;
            piVar5 = (int *)piVar3[1];
          }
          piVar5[2] = (int)piVar1;
          piVar3[3] = (int)piVar4;
          *(int **)(param_1[3] + 4) = piVar3;
        }
        if (*(int **)(param_2 + 4) == param_1) {
          *(int **)(param_2 + 4) = piVar3;
          iVar6 = param_1[1];
        }
        else {
          iVar6 = param_1[1];
          if (*(int **)(iVar6 + 8) == param_1) {
            *(int **)(iVar6 + 8) = piVar3;
          }
          else {
            *(int **)(iVar6 + 0xc) = piVar3;
          }
        }
        piVar3[1] = iVar6;
        iVar6 = *piVar3;
        *piVar3 = *param_1;
        *param_1 = iVar6;
        goto LAB_001e885e;
      }
      goto LAB_001e8a48;
    }
    piVar2 = (int *)param_1[1];
    piVar1 = piVar5;
LAB_001e87a6:
    piVar1[1] = (int)piVar2;
  }
  if (*(int **)(param_2 + 4) == param_1) {
    *(int **)(param_2 + 4) = piVar1;
  }
  else {
    iVar6 = param_1[1];
    if (*(int **)(iVar6 + 8) == param_1) {
      *(int **)(iVar6 + 8) = piVar1;
    }
    else {
      *(int **)(iVar6 + 0xc) = piVar1;
    }
  }
  if (*(int **)(param_2 + 8) == param_1) {
    piVar5 = piVar1;
    if (param_1[3] == 0) {
      *(int *)(param_2 + 8) = param_1[1];
    }
    else {
      do {
        piVar4 = piVar5;
        piVar5 = (int *)piVar4[2];
      } while (piVar5 != (int *)0x0);
      *(int **)(param_2 + 8) = piVar4;
    }
  }
  iVar6 = *param_1;
  if (*(int **)(param_2 + 0xc) == param_1) {
    piVar5 = piVar1;
    if (param_1[2] == 0) {
      *(int *)(param_2 + 0xc) = param_1[1];
    }
    else {
      do {
        piVar4 = piVar5;
        piVar5 = (int *)piVar4[3];
      } while (piVar5 != (int *)0x0);
      *(int **)(param_2 + 0xc) = piVar4;
    }
  }
LAB_001e885e:
  if (iVar6 != 0) {
    while (*(int **)(param_2 + 4) != piVar1) {
      if ((piVar1 != (int *)0x0) && (*piVar1 != 1)) goto LAB_001e89c8;
      piVar5 = (int *)piVar2[2];
      if (piVar5 != piVar1) {
        piVar4 = (int *)piVar5[3];
        piVar3 = piVar5;
        if (*piVar5 == 0) {
          *piVar5 = 1;
          *piVar2 = 0;
          piVar2[2] = (int)piVar4;
          if (piVar4 != (int *)0x0) {
            piVar4[1] = (int)piVar2;
          }
          iVar6 = piVar2[1];
          piVar5[1] = iVar6;
          if (piVar2 == *(int **)(param_2 + 4)) {
            *(int **)(param_2 + 4) = piVar5;
            piVar3 = (int *)piVar2[2];
          }
          else if (piVar2 == *(int **)(iVar6 + 0xc)) {
            *(int **)(iVar6 + 0xc) = piVar5;
            piVar3 = piVar4;
          }
          else {
            *(int **)(iVar6 + 8) = piVar5;
            piVar3 = (int *)piVar2[2];
          }
          piVar5[3] = (int)piVar2;
          piVar4 = (int *)piVar3[3];
          piVar2[1] = (int)piVar5;
        }
        if ((piVar4 == (int *)0x0) || (*piVar4 == 1)) {
          local_14 = (int *)piVar3[2];
          if ((local_14 == (int *)0x0) || (*local_14 == 1)) goto LAB_001e88d6;
LAB_001e8af2:
          piVar5 = (int *)piVar2[2];
          *piVar3 = *piVar2;
          *piVar2 = 1;
LAB_001e8aff:
          *local_14 = 1;
        }
        else {
          local_14 = (int *)piVar3[2];
          if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8af2;
          iVar6 = piVar4[2];
          *piVar4 = 1;
          *piVar3 = 0;
          piVar3[3] = iVar6;
          if (iVar6 != 0) {
            *(int **)(iVar6 + 4) = piVar3;
          }
          iVar6 = piVar3[1];
          piVar4[1] = iVar6;
          if (piVar3 == *(int **)(param_2 + 4)) {
            *(int **)(param_2 + 4) = piVar4;
          }
          else if (piVar3 == *(int **)(iVar6 + 8)) {
            *(int **)(iVar6 + 8) = piVar4;
          }
          else {
            *(int **)(iVar6 + 0xc) = piVar4;
          }
          piVar4[2] = (int)piVar3;
          piVar3[1] = (int)piVar4;
          piVar5 = (int *)piVar2[2];
          local_14 = (int *)piVar5[2];
          *piVar5 = *piVar2;
          *piVar2 = 1;
          if (local_14 != (int *)0x0) goto LAB_001e8aff;
        }
        iVar6 = piVar5[3];
        piVar2[2] = iVar6;
        if (iVar6 != 0) {
          *(int **)(iVar6 + 4) = piVar2;
        }
        iVar6 = piVar2[1];
        piVar5[1] = iVar6;
        if (piVar2 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar5;
        }
        else if (piVar2 == *(int **)(iVar6 + 0xc)) {
          *(int **)(iVar6 + 0xc) = piVar5;
        }
        else {
          *(int **)(iVar6 + 8) = piVar5;
        }
        piVar5[3] = (int)piVar2;
        piVar2[1] = (int)piVar5;
        break;
      }
      piVar5 = (int *)piVar2[3];
      piVar4 = (int *)piVar5[2];
      piVar3 = piVar5;
      if (*piVar5 == 0) {
        *piVar5 = 1;
        *piVar2 = 0;
        piVar2[3] = (int)piVar4;
        if (piVar4 != (int *)0x0) {
          piVar4[1] = (int)piVar2;
        }
        iVar6 = piVar2[1];
        piVar5[1] = iVar6;
        if (piVar2 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar5;
          piVar3 = (int *)piVar2[3];
        }
        else if (piVar2 == *(int **)(iVar6 + 8)) {
          *(int **)(iVar6 + 8) = piVar5;
          piVar3 = piVar4;
        }
        else {
          *(int **)(iVar6 + 0xc) = piVar5;
          piVar3 = (int *)piVar2[3];
        }
        piVar5[2] = (int)piVar2;
        piVar4 = (int *)piVar3[2];
        piVar2[1] = (int)piVar5;
      }
      if ((piVar4 != (int *)0x0) && (*piVar4 != 1)) {
        local_14 = (int *)piVar3[3];
        if ((local_14 != (int *)0x0) && (*local_14 != 1)) goto LAB_001e8974;
        iVar6 = piVar4[3];
        *piVar4 = 1;
        *piVar3 = 0;
        piVar3[2] = iVar6;
        if (iVar6 != 0) {
          *(int **)(iVar6 + 4) = piVar3;
        }
        iVar6 = piVar3[1];
        piVar4[1] = iVar6;
        if (piVar3 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar4;
        }
        else if (piVar3 == *(int **)(iVar6 + 0xc)) {
          *(int **)(iVar6 + 0xc) = piVar4;
        }
        else {
          *(int **)(iVar6 + 8) = piVar4;
        }
        piVar4[3] = (int)piVar3;
        piVar3[1] = (int)piVar4;
        piVar5 = (int *)piVar2[3];
        local_14 = (int *)piVar5[3];
        *piVar5 = *piVar2;
        *piVar2 = 1;
        if (local_14 != (int *)0x0) goto LAB_001e8981;
LAB_001e898a:
        iVar6 = piVar5[2];
        piVar2[3] = iVar6;
        if (iVar6 != 0) {
          *(int **)(iVar6 + 4) = piVar2;
        }
        iVar6 = piVar2[1];
        piVar5[1] = iVar6;
        if (piVar2 == *(int **)(param_2 + 4)) {
          *(int **)(param_2 + 4) = piVar5;
        }
        else if (piVar2 == *(int **)(iVar6 + 8)) {
          *(int **)(iVar6 + 8) = piVar5;
        }
        else {
          *(int **)(iVar6 + 0xc) = piVar5;
        }
        piVar5[2] = (int)piVar2;
        piVar2[1] = (int)piVar5;
        break;
      }
      local_14 = (int *)piVar3[3];
      if ((local_14 != (int *)0x0) && (*local_14 != 1)) {
LAB_001e8974:
        piVar5 = (int *)piVar2[3];
        *piVar3 = *piVar2;
        *piVar2 = 1;
LAB_001e8981:
        *local_14 = 1;
        goto LAB_001e898a;
      }
LAB_001e88d6:
      *piVar3 = 0;
      piVar1 = piVar2;
      piVar2 = (int *)piVar2[1];
    }
    if (piVar1 != (int *)0x0) {
LAB_001e89c8:
      *piVar1 = 1;
      return;
    }
  }
  return;
}

